@logicplanes/kaeso-ui 0.4.4 → 0.4.6
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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-B4G-sWwV.js","names":["__icon_Add01Icon","__icon_Cancel01Icon","cn","usePortalContainer","useInset","useGutterPadded","Icon","lazyModule","useLazyModuleRetried","Text","IconButton","useLayoutWidth","Skeleton","TruncatedText","scrollParent","useCoarsePointer","checkbox","n","RowCheckbox","ariaLabel","mod","retry","over","setOver","useState","pressed","setPressed","useEffect","timer","release","onToggle","checked","virtualRows","KAESO_LIST_VARIANTS","KAESO_LIST_DEFAULT_VARIANTS","ID_W","NARROW","FOCUSABLE","TEXT_ENTRY","removeWidgetsFromTabOrder","line","root","primary","widget","List","selectedProp","forceRow","inset","selectedInner","setSelectedInner","selected","setSelected","useCallback","s","onSelectedChange","collapsed","setCollapsed","groups","g","active","setActive","anchor","setAnchor","useRef","bar","width","narrow","flat","useMemo","rows","list","item","c","i","a","items","firstRow","f","none","virtual","virtualizeAbove","coarse","estimateSize","density","rowsModule","retryRows","VirtualRows","scrollTo","tabStop","focusLine","reach","el","clearOfBar","now","hadVirtualRows","useLayoutEffect","observer","toggle","id","enabledIds","lines","onKeyDown","target","onPrimary","index","row","selectable","moveTo","from","next","widgets","w","at","onOpen","selecting","focused","render","GroupHeader","ListRow","ref","loading","className","LoadingRows","empty","FirstRows","selectionBar","SelectionBar","selectionActions","rowTone","card","selectsText","selection","top","covered","view","total","extra","count","j","padded","grouped","force","t","useUiText","stacked","wraps","wrapSubtitle","off","trailing","onSelect","depth","lastChild","idWidth","first","indent","glyph","title","onAdd","Add01Icon","addLabel","container","createPortal","children","onClear","Cancel01Icon","SelectionAction","danger","icon"],"sources":["../../src/components/list/row-checkbox.tsx","../../src/components/list/list.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { lazyModule, useLazyModuleRetried } from \"../../utils/lazy-module.js\";\n\nconst checkbox = /* @__PURE__ */ lazyModule(() => import(\"../checkbox/checkbox.js\"), { base: () => import.meta.url });\n\nexport function RowCheckbox({ checked, onToggle, \"aria-label\": ariaLabel }: { checked: boolean; onToggle: () => void; \"aria-label\": string }) {\n const [mod, retry] = useLazyModuleRetried(checkbox, true);\n const [over, setOver] = useState(false);\n const [pressed, setPressed] = useState(false);\n useEffect(() => {\n if (!pressed) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const release = () => {\n timer = setTimeout(() => setPressed(false));\n };\n window.addEventListener(\"pointerup\", release, true);\n window.addEventListener(\"pointercancel\", release, true);\n return () => {\n clearTimeout(timer);\n window.removeEventListener(\"pointerup\", release, true);\n window.removeEventListener(\"pointercancel\", release, true);\n };\n }, [pressed]);\n if (mod && !over && !pressed) return <mod.CheckboxBox checked={checked} onCheckedChange={onToggle} aria-label={ariaLabel} />;\n return (\n <span\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n onPointerEnter={() => {\n setOver(true);\n retry();\n }}\n onPointerLeave={() => setOver(false)}\n onPointerDown={() => setPressed(true)}\n onClick={() => {\n onToggle();\n setOver(false);\n setPressed(false);\n }}\n className=\"relative -m-3 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-checkbox\"\n >\n <span aria-hidden className={cn(\"flex size-18 items-center justify-center rounded-checkbox\", checked ? \"bg-ink\" : \"bg-raised shadow-selector\")} />\n </span>\n );\n}\n","import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useGutterPadded, useInset } from \"../../utils/inset.js\";\nimport { Add01Icon as __icon_Add01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Text } from \"../text/text.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useCoarsePointer } from \"../../hooks/use-coarse-pointer.js\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModuleRetried } from \"../../utils/lazy-module.js\";\nimport { RowCheckbox } from \"./row-checkbox.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst virtualRows = /* @__PURE__ */ lazyModule(() => import(\"./virtual-rows.js\"), { base: () => import.meta.url });\n\nexport const KAESO_LIST_VARIANTS = {\n density: {\n default: { classes: \"h-44\" },\n compact: { classes: \"h-36 coarse:h-44\" },\n },\n} as const;\nexport const KAESO_LIST_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport interface ListItemData {\n id: string;\n title: ReactNode;\n textValue?: string | undefined;\n subtitle?: ReactNode | undefined;\n glyph?: ReactNode | undefined;\n leading?: ReactNode | undefined;\n displayId?: string | undefined;\n meta?: ReactNode | undefined;\n date?: ReactNode | undefined;\n avatar?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children?: ListItemData[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface ListGroup {\n id: string;\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n items: ListItemData[];\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n defaultCollapsed?: boolean | undefined;\n}\n\ntype Flat = { kind: \"header\"; group: ListGroup; key: string } | { kind: \"row\"; item: ListItemData; depth: 0 | 1; lastChild: boolean; key: string };\n\nexport interface ListProps {\n items?: ListItemData[] | undefined;\n groups?: ListGroup[] | undefined;\n onOpen?: ((item: ListItemData) => void) | undefined;\n selectable?: boolean | undefined;\n selected?: Set<string> | undefined;\n onSelectedChange?: ((selected: Set<string>) => void) | undefined;\n idWidth?: 48 | 64 | 80 | 96 | 120 | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n wrapSubtitle?: boolean | undefined;\n virtualizeAbove?: number | undefined;\n selectionActions?: ReactNode | undefined;\n selectionBar?: boolean | undefined;\n loading?: boolean | undefined;\n empty?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force-row\"?: string | undefined;\n}\n\nconst ID_W = { 48: \"w-48\", 64: \"w-64\", 80: \"w-80\", 96: \"w-96\", 120: \"w-120\" } as const;\n\nconst NARROW = 520;\nconst FOCUSABLE = \"a[href], button, input, select, textarea, [tabindex], [contenteditable=true]\";\nconst TEXT_ENTRY = \"input:not([type=checkbox]):not([type=radio]), textarea, select, [contenteditable=true]\";\n\nfunction removeWidgetsFromTabOrder(root: HTMLElement) {\n for (const line of root.querySelectorAll<HTMLElement>(\"[role=row]\")) {\n const primary = line.querySelector(\"[data-index]\");\n if (!primary) continue;\n for (const widget of line.querySelectorAll<HTMLElement>(FOCUSABLE)) {\n if (widget !== primary && widget.getAttribute(\"tabindex\") !== \"-1\") widget.setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n\nexport const List = /* @__PURE__ */ forwardRef<HTMLDivElement, ListProps>(function List(\n {\n items,\n groups,\n onOpen,\n selectable,\n selected: selectedProp,\n onSelectedChange,\n idWidth,\n density = \"default\",\n wrapSubtitle = false,\n virtualizeAbove = 100,\n selectionActions,\n selectionBar = true,\n loading,\n empty,\n className,\n \"aria-label\": ariaLabel,\n \"data-force-row\": forceRow,\n },\n ref,\n) {\n const inset = useInset();\n const [selectedInner, setSelectedInner] = useState<Set<string>>(new Set());\n const selected = selectedProp ?? selectedInner;\n const setSelected = useCallback(\n (s: Set<string>) => {\n if (!selectedProp) setSelectedInner(s);\n onSelectedChange?.(s);\n },\n [selectedProp, onSelectedChange],\n );\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set((groups ?? []).filter((g) => g.defaultCollapsed).map((g) => g.id)));\n const [active, setActive] = useState(-1);\n const [anchor, setAnchor] = useState<number | null>(null);\n const root = useRef<HTMLDivElement | null>(null);\n const bar = useRef<HTMLDivElement | null>(null);\n const width = useLayoutWidth(root);\n const narrow = !!width && width < NARROW;\n\n const flat = useMemo<Flat[]>(() => {\n const rows = (list: ListItemData[]): Flat[] =>\n list.flatMap((item) => [\n { kind: \"row\" as const, item, depth: 0 as const, lastChild: false, key: item.id },\n ...(item.children ?? []).map((c, i, a) => ({ kind: \"row\" as const, item: c, depth: 1 as const, lastChild: i === a.length - 1, key: c.id })),\n ]);\n if (groups) return groups.flatMap((g) => [{ kind: \"header\" as const, group: g, key: `h-${g.id}` }, ...(collapsed.has(g.id) ? [] : rows(g.items))]);\n return rows(items ?? []);\n }, [items, groups, collapsed]);\n const firstRow = flat.findIndex((f) => f.kind === \"row\");\n const none = groups ? groups.every((g) => g.items.length === 0) : (items ?? []).length === 0;\n\n const virtual = flat.length > virtualizeAbove;\n const coarse = useCoarsePointer();\n const estimateSize = (i: number) => (flat[i]?.kind === \"header\" ? (i === 0 ? 36 : 52) : narrow ? 64 : density === \"compact\" && !coarse ? 36 : 44);\n const [rowsModule, retryRows] = useLazyModuleRetried(virtualRows, virtual);\n const VirtualRows = rowsModule?.VirtualRows;\n const scrollTo = useRef<((index: number) => void) | null>(null);\n\n if (active >= flat.length) setActive(-1);\n const tabStop = active >= 0 ? active : flat.length ? 0 : -1;\n const focusLine = (i: number) => {\n setActive(i);\n if (virtual) scrollTo.current?.(i);\n const line = () => root.current?.querySelector<HTMLElement>(`[data-index=\"${i}\"]`);\n const reach = (el: HTMLElement | null | undefined) => {\n if (!el) return;\n el.focus();\n clearOfBar(el, bar.current);\n };\n const now = line();\n if (now) reach(now);\n else requestAnimationFrame(() => reach(line()));\n };\n const hadVirtualRows = useRef(!!VirtualRows);\n useLayoutEffect(() => {\n if (VirtualRows && !hadVirtualRows.current && active >= 0 && document.activeElement === document.body) {\n root.current?.querySelector<HTMLElement>(`[data-index=\"${active}\"]`)?.focus();\n }\n hadVirtualRows.current = !!VirtualRows;\n });\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n removeWidgetsFromTabOrder(el);\n const observer = new MutationObserver(() => removeWidgetsFromTabOrder(el));\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, []);\n const toggle = (id: string) => {\n const s = new Set(selected);\n if (s.has(id)) s.delete(id);\n else s.add(id);\n setSelected(s);\n };\n const enabledIds = (lines: Flat[]) => lines.flatMap((f) => (f.kind === \"row\" && !f.item.disabled ? [f.item.id] : []));\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (!e.currentTarget.contains(target) || target.closest(TEXT_ENTRY)) return;\n const line = target.closest<HTMLElement>(\"[role=row]\");\n const primary = line?.querySelector<HTMLElement>(\"[data-index]\");\n if (!line || !primary) return;\n const onPrimary = target === primary;\n // A tooltip trigger prevents Escape's default even while its tooltip is still closed; only an open popup keeps the key.\n if (e.key === \"Escape\" && !onPrimary && !e.altKey && !e.metaKey && !e.ctrlKey && !target.closest(\"[data-popup-open], [aria-expanded=true]\")) {\n e.preventDefault();\n primary.focus();\n return;\n }\n if (e.defaultPrevented) return;\n const index = Number(primary.dataset.index);\n const f = flat[index];\n const row = f?.kind === \"row\" ? f.item : undefined;\n if (e.altKey) return;\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === \"a\" && selectable && !e.shiftKey) {\n e.preventDefault();\n setSelected(new Set(enabledIds(flat)));\n }\n return;\n }\n const moveTo = (next: number) => {\n e.preventDefault();\n if (e.shiftKey && selectable) {\n const from = anchor ?? index;\n setAnchor(from);\n const s = new Set(selected);\n enabledIds(flat.slice(Math.min(from, next), Math.max(from, next) + 1)).forEach((id) => s.add(id));\n setSelected(s);\n } else setAnchor(null);\n focusLine(next);\n };\n const widgets = () =>\n [...line.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (w) => w !== primary && !w.closest(\"[role=checkbox], [aria-hidden=true], [hidden]\") && !w.matches(\":disabled, input[type=checkbox]\"),\n );\n if (e.key === \"ArrowDown\" || (e.key === \"j\" && !e.shiftKey)) moveTo(Math.min(flat.length - 1, index + 1));\n else if (e.key === \"ArrowUp\" || (e.key === \"k\" && !e.shiftKey)) moveTo(Math.max(0, index - 1));\n else if (e.key === \"Home\") moveTo(0);\n else if (e.key === \"End\") moveTo(flat.length - 1);\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n const list = widgets();\n const at = onPrimary ? -1 : list.indexOf(target);\n const next = e.key === \"ArrowRight\" ? list[at + 1] : at > 0 ? list[at - 1] : at === 0 ? primary : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n } else if (!onPrimary || !row || e.shiftKey) {\n return;\n } else if ((e.key === \" \" || e.key === \"x\") && selectable) {\n e.preventDefault();\n if (!row.disabled) toggle(row.id);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (!row.disabled) onOpen?.(row);\n } else if (e.key === \"Escape\" && selectable && selected.size) {\n setSelected(new Set());\n }\n };\n const selecting = selected.size > 0;\n useLayoutEffect(() => {\n const focused = document.activeElement;\n if (selecting && focused instanceof HTMLElement && root.current?.contains(focused)) clearOfBar(focused, bar.current);\n }, [selecting]);\n const render = (f: Flat, i: number) =>\n f.kind === \"header\" ? (\n <GroupHeader\n key={f.key}\n title={f.group.title}\n glyph={f.group.glyph}\n count={f.group.count ?? f.group.items.length}\n collapsed={collapsed.has(f.group.id)}\n onToggle={() => {\n const s = new Set(collapsed);\n if (s.has(f.group.id)) s.delete(f.group.id);\n else s.add(f.group.id);\n setCollapsed(s);\n }}\n onAdd={f.group.onAdd}\n addLabel={f.group.addLabel}\n indent={!!selectable}\n first={i === 0}\n index={i}\n active={i === tabStop}\n onFocus={() => setActive(i)}\n />\n ) : (\n <ListRow\n key={f.key}\n index={i}\n item={f.item}\n depth={f.depth}\n lastChild={f.lastChild}\n idWidth={idWidth}\n density={density}\n wrapSubtitle={wrapSubtitle}\n narrow={narrow}\n active={i === tabStop}\n selected={selected.has(f.item.id)}\n selectable={!!selectable}\n selecting={selecting}\n onSelect={() => toggle(f.item.id)}\n onOpen={() => onOpen?.(f.item)}\n onFocus={() => setActive(i)}\n {...(forceRow && i === firstRow ? { \"data-force\": forceRow } : {})}\n />\n );\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) ref.current = e;\n }}\n role=\"grid\"\n aria-label={ariaLabel}\n aria-rowcount={flat.length || undefined}\n aria-multiselectable={selectable || undefined}\n aria-busy={loading || undefined}\n onKeyDown={(e) => {\n retryRows();\n onKeyDown(e);\n }}\n onPointerEnter={retryRows}\n onPointerDown={retryRows}\n onFocus={retryRows}\n onWheel={retryRows}\n className={cn(\"relative flex flex-col outline-none\", inset && \"overflow-hidden rounded-group bg-raised shadow-xs\", className)}\n >\n {loading && (none || flat.length === 0) ? (\n <LoadingRows density={density} grouped={!!groups} />\n ) : none && empty ? (\n <div role=\"row\">\n <div role=\"gridcell\">{empty}</div>\n </div>\n ) : virtual && VirtualRows ? (\n <VirtualRows\n count={flat.length}\n estimateSize={estimateSize}\n getScrollElement={() => scrollParent(root.current)}\n scrollTo={scrollTo}\n row={(i) => render(flat[i]!, i)}\n measure={narrow}\n />\n ) : virtual ? (\n <FirstRows count={flat.length} estimateSize={estimateSize} row={(i) => render(flat[i]!, i)} />\n ) : (\n flat.map(render)\n )}\n {selectable && selecting && selectionBar && (\n <SelectionBar ref={bar} count={selected.size} onClear={() => setSelected(new Set())}>\n {selectionActions}\n </SelectionBar>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"List\";\n\nfunction rowTone(card: boolean, selected: boolean) {\n if (selected)\n return card\n ? \"bg-raised-pressed controls-on-fill hover:raised-selected-hover active:raised-selected-hover\"\n : \"bg-fill-2 controls-on-fill hover:bg-fill-3 active:bg-fill-3\";\n return card ? \"hover:bg-raised-hover hover:controls-on-fill active:bg-raised-pressed\" : \"hover:bg-fill-1 hover:controls-on-fill active:bg-fill-2\";\n}\n\nfunction selectsText(row: HTMLElement) {\n const selection = typeof window === \"undefined\" ? null : window.getSelection();\n return !!selection && !selection.isCollapsed && !!selection.anchorNode && row.contains(selection.anchorNode);\n}\n\nfunction clearOfBar(el: HTMLElement, bar: HTMLElement | null) {\n const top = bar?.firstElementChild?.getBoundingClientRect().top;\n if (top === undefined) return;\n const covered = el.getBoundingClientRect().bottom + 8 - top;\n if (covered > 0) scrollParent(el)?.scrollBy({ top: covered });\n}\n\nfunction FirstRows({ count, estimateSize, row }: { count: number; estimateSize: (index: number) => number; row: (index: number) => ReactNode }) {\n const view = typeof window === \"undefined\" ? 1024 : window.innerHeight;\n const rows: ReactNode[] = [];\n let total = 0;\n let extra = 12;\n for (let i = 0; i < count; i++) {\n if (total >= view && extra-- <= 0) {\n for (let j = i; j < count; j++) total += estimateSize(j);\n break;\n }\n rows.push(\n <div key={i} role=\"presentation\" className=\"absolute top-0 left-0 w-full\" style={{ transform: `translateY(${Math.round(total)}px)` }}>\n {row(i)}\n </div>,\n );\n total += estimateSize(i);\n }\n return (\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: total }}>\n {rows}\n </div>\n );\n}\n\nfunction LoadingRows({ density, grouped }: { density: keyof typeof KAESO_LIST_VARIANTS.density; grouped: boolean }) {\n const padded = useGutterPadded();\n return (\n <div role=\"presentation\">\n {grouped && (\n <div role=\"presentation\" className={padded ? \"px-0\" : \"px-24\"}>\n <div className=\"flex h-36 items-center px-12\">\n <Skeleton shape=\"line\" className=\"w-80\" />\n </div>\n </div>\n )}\n {[62, 48, 70, 54, 40, 58].map((w, i) => (\n <div key={i} role=\"presentation\" className={padded ? \"px-0\" : \"px-24\"}>\n <div className={cn(\"flex items-center gap-12 px-12\", KAESO_LIST_VARIANTS.density[density].classes)}>\n <Skeleton shape=\"line\" className=\"min-w-0\" style={{ width: `${w}%` }} />\n <span className=\"flex-1\" />\n <Skeleton shape=\"line\" className=\"w-64 shrink-0\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface ListRowProps {\n item: ListItemData;\n index?: number | undefined;\n depth?: 0 | 1 | undefined;\n lastChild?: boolean | undefined;\n idWidth?: keyof typeof ID_W | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n wrapSubtitle?: boolean | undefined;\n narrow?: boolean | undefined;\n active?: boolean | undefined;\n selected?: boolean | undefined;\n selectable?: boolean | undefined;\n selecting?: boolean | undefined;\n onSelect?: (() => void) | undefined;\n onOpen?: (() => void) | undefined;\n onFocus?: (() => void) | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const ListRow = /* @__PURE__ */ forwardRef<HTMLDivElement, ListRowProps>(function ListRow(\n {\n item,\n index,\n depth = 0,\n lastChild,\n idWidth,\n density = \"default\",\n wrapSubtitle = false,\n narrow = false,\n active,\n selected,\n selectable,\n selecting,\n onSelect,\n onOpen,\n onFocus,\n \"data-force\": force,\n },\n ref,\n) {\n const card = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n const lines = narrow && !!(item.meta || item.date);\n const stacked = (card || lines) && !!item.subtitle;\n const wraps = stacked && wrapSubtitle;\n const off = !!item.disabled;\n const trailing = item.avatar && <span className={cn(\"flex shrink-0\", off && \"opacity-50\")}>{item.avatar}</span>;\n return (\n <div\n role=\"row\"\n aria-rowindex={index !== undefined ? index + 1 : undefined}\n className={card ? cn(\"px-0\", index !== undefined && index > 0 && \"hairline-t\") : padded ? \"px-0\" : \"px-24\"}\n >\n <div\n ref={ref}\n role=\"gridcell\"\n aria-selected={selectable ? !!selected : undefined}\n aria-disabled={off || undefined}\n data-index={index}\n data-row=\"\"\n tabIndex={active === false ? -1 : 0}\n onFocus={onFocus}\n onClick={(e: MouseEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.target as Node) || (e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n if (selectsText(e.currentTarget)) return;\n if (selecting && selectable) onSelect?.();\n else onOpen?.();\n }}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/row relative flex cursor-pointer items-center gap-12 text-body transition-control focus-ring-inset\",\n card ? \"rounded-none px-20\" : \"rounded-item px-12\",\n stacked || lines || wraps ? \"min-h-56 py-8\" : card && density === \"default\" ? \"h-48\" : KAESO_LIST_VARIANTS.density[density].classes,\n rowTone(card, !!selected),\n off && \"pointer-events-none text-fg-disabled\",\n )}\n >\n {selectable && (\n <span\n className={cn(\n \"flex shrink-0 transition-control select-none\",\n selecting || selected ? \"opacity-100\" : \"opacity-0 group-hover/row:opacity-100 group-focus-visible/row:opacity-100 coarse:opacity-100\",\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <RowCheckbox\n checked={!!selected}\n onToggle={() => onSelect?.()}\n aria-label={t(\"list.selectItem\", \"Select {name}\", { name: item.textValue ?? (typeof item.title === \"string\" ? item.title : item.id) })}\n />\n </span>\n )}\n {depth === 1 && (\n <span aria-hidden className=\"relative -ml-4 h-full w-16 shrink-0 self-stretch\">\n <span className={cn(\"absolute left-6 w-1 bg-line-strong forced-line\", lastChild ? \"top-0 h-1/2\" : \"inset-y-0\")} />\n <span className=\"absolute top-1/2 left-6 h-1 w-10 bg-line-strong forced-line\" />\n </span>\n )}\n {item.glyph && <span className={cn(\"flex size-16 shrink-0 items-center justify-center\", off && \"opacity-50\")}>{item.glyph}</span>}\n {item.leading && <span className={cn(\"-mr-4 flex shrink-0\", stacked && \"self-start\", off && \"opacity-50\")}>{item.leading}</span>}\n {item.displayId && (\n <TruncatedText\n className={cn(\n \"shrink-0 mono text-small tabular\",\n off ? \"text-fg-disabled\" : selected ? \"text-fg-secondary\" : \"text-fg-tertiary\",\n idWidth && ID_W[idWidth],\n )}\n >\n {item.displayId}\n </TruncatedText>\n )}\n <span className={cn(\"flex min-w-0 flex-1\", lines ? \"flex-col items-stretch gap-4\" : \"contents\")}>\n <span className={cn(\"flex min-w-0\", lines ? \"w-full\" : \"flex-1\", stacked ? \"flex-col items-start gap-2\" : \"items-baseline gap-8\")}>\n {typeof item.title === \"string\" ? (\n <Text truncate weight=\"medium\" tone={off ? \"inherit\" : \"default\"} className={cn(\"min-w-0 shrink\", stacked && \"max-w-full\")}>\n {item.title}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate font-medium\", off ? \"text-inherit\" : \"text-fg\", stacked && \"max-w-full\")}>{item.title}</span>\n )}\n {item.subtitle && (\n <TruncatedText\n wrap={wraps}\n className={cn(\"min-w-0\", off ? \"text-fg-disabled\" : \"text-fg-secondary\", stacked ? \"max-w-full text-small\" : \"flex-1 basis-0\")}\n >\n {item.subtitle}\n </TruncatedText>\n )}\n </span>\n {lines && (\n <span className=\"flex h-24 min-w-0 items-center gap-8\">\n {item.meta && <span className={cn(\"flex min-w-0 items-center gap-6 overflow-hidden\", off && \"opacity-50\")}>{item.meta}</span>}\n {item.date && (\n <span className={cn(\"shrink-0 text-small whitespace-nowrap tabular\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>{item.date}</span>\n )}\n {trailing}\n {item.actions && <span className=\"ml-auto flex shrink-0 items-center gap-2\">{item.actions}</span>}\n </span>\n )}\n </span>\n {!lines && (item.meta || item.actions) && (\n <span className=\"relative flex shrink-0 items-center gap-6\">\n <span\n className={cn(\n \"flex items-center gap-6\",\n item.actions && \"transition-control group-hover/row:opacity-0 group-focus-within/row:opacity-0\",\n off && \"opacity-50\",\n )}\n >\n {item.meta}\n </span>\n {item.actions && (\n <span\n className={cn(\n \"flex items-center gap-2 opacity-0 transition-control group-hover/row:opacity-100 group-focus-within/row:opacity-100 coarse:opacity-100\",\n item.meta && \"absolute inset-y-0 right-0 coarse:static\",\n )}\n >\n {item.actions}\n </span>\n )}\n </span>\n )}\n {!lines && item.date && (\n <span className={cn(\"min-w-80 shrink-0 text-right text-small whitespace-nowrap tabular\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>\n {item.date}\n </span>\n )}\n {!lines && trailing}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ListRow.displayName = \"ListRow\";\n\nexport interface GroupHeaderProps {\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n collapsed?: boolean | undefined;\n onToggle?: (() => void) | undefined;\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n indent?: boolean | undefined;\n first?: boolean | undefined;\n index?: number | undefined;\n active?: boolean | undefined;\n onFocus?: (() => void) | undefined;\n}\n\nexport const GroupHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, GroupHeaderProps>(function GroupHeader(\n { title, glyph, count, collapsed, onToggle, onAdd, addLabel, indent, first, index, active, onFocus },\n ref,\n) {\n const card = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n return (\n <div\n ref={ref}\n role=\"row\"\n aria-rowindex={index !== undefined ? index + 1 : undefined}\n onFocus={onFocus}\n className={card ? cn(\"group/gh bg-fill-1\", !first && \"hairline-t\") : cn(\"group/gh\", !first && \"pt-16\", padded ? \"px-0\" : \"px-24\")}\n >\n <div role=\"gridcell\" className={cn(\"flex h-36 items-center gap-4\", card && \"pr-12 pl-8\")}>\n <button\n type=\"button\"\n aria-expanded={!collapsed}\n data-index={index}\n tabIndex={active === false ? -1 : 0}\n onClick={onToggle}\n className={cn(\n \"relative flex h-28 min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-small transition-control focus-ring tap-target\",\n card ? \"hover:bg-fill-2 active:bg-fill-3\" : \"hover:bg-fill-1 active:bg-fill-2\",\n )}\n >\n {indent && !card && <span aria-hidden className=\"w-22 shrink-0\" />}\n {glyph && <span className=\"flex size-16 items-center justify-center\">{glyph}</span>}\n <span className=\"truncate font-medium text-fg-secondary\">{title}</span>\n {count !== undefined && <span className=\"text-fg-tertiary tabular\">{count}</span>}\n <svg\n viewBox=\"0 0 8 8\"\n aria-hidden\n className={cn(\"size-10 text-fg-tertiary transition-transform duration-200 ease-standard\", !collapsed && \"rotate-90\")}\n >\n <path d=\"M2.5 1.5 5.5 4l-3 2.5z\" fill=\"currentColor\" />\n </svg>\n </button>\n <span className=\"flex-1\" />\n {onAdd && (\n <span className=\"flex opacity-0 transition-control group-hover/gh:opacity-100 group-focus-within/gh:opacity-100 coarse:opacity-100\">\n <IconButton icon={__icon_Add01Icon} aria-label={addLabel ?? t(\"list.add\", \"Add\")} size=\"xs\" onClick={onAdd} />\n </span>\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupHeader.displayName = \"GroupHeader\";\n\nexport interface SelectionBarProps {\n count: number;\n onClear: () => void;\n children?: ReactNode | undefined;\n}\n\nexport const SelectionBar = /* @__PURE__ */ forwardRef<HTMLDivElement, SelectionBarProps>(function SelectionBar({ count, onClear, children }, ref) {\n const container = usePortalContainer();\n const t = useUiText();\n if (typeof document === \"undefined\") return null;\n return createPortal(\n <div\n ref={ref}\n role=\"region\"\n aria-label={t(\"list.selection\", \"Selection\")}\n className=\"pointer-events-none fixed right-0 bottom-24 left-0 z-50 flex justify-center px-16\"\n >\n <div className=\"pointer-events-auto flex min-h-44 items-center gap-4 rounded-pill bg-toast py-6 pr-6 pl-16 text-body font-medium text-toast-fg shadow-toast popup-motion\">\n <span className=\"pr-8 tabular\">{t(\"list.selected\", \"{count} selected\", { count: String(count) })}</span>\n <span className=\"mr-4 h-20 w-1 bg-toast-action\" aria-hidden />\n {children}\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={t(\"list.clearSelection\", \"Clear selection\")}\n className=\"inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-toast-fg-secondary transition-control hover:bg-toast-action hover:text-toast-fg focus-ring\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"sm\" />\n </button>\n </div>\n </div>,\n container ?? document.body,\n );\n});\nif (process.env.NODE_ENV !== \"production\") SelectionBar.displayName = \"SelectionBar\";\n\nexport interface SelectionActionProps {\n children: ReactNode;\n onClick?: (() => void) | undefined;\n icon?: IconData | undefined;\n danger?: boolean | undefined;\n}\n\nexport const SelectionAction = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectionActionProps>(function SelectionAction({ children, onClick, icon, danger }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex h-32 cursor-pointer items-center gap-6 rounded-pill px-12 text-body font-medium transition-control hover:bg-toast-action focus-ring\",\n danger ? \"text-toast-danger\" : \"text-toast-fg\",\n icon && \"pl-10\",\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className={danger ? undefined : \"text-toast-fg-secondary\"} />}\n {children}\n </button>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SelectionAction.displayName = \"SelectionAction\";\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "./cn-
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
3
|
import { forwardRef as t, useEffect as n, useRef as r, useState as i } from "react";
|
|
4
4
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/loader/loader.tsx
|
|
@@ -54,4 +54,4 @@ function u(e, t = 300, a = 400) {
|
|
|
54
54
|
//#endregion
|
|
55
55
|
export { u as i, s as n, l as r, c as t };
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=loader-
|
|
57
|
+
//# sourceMappingURL=loader-zo8CCIGJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-
|
|
1
|
+
{"version":3,"file":"loader-zo8CCIGJ.js","names":["cn","KAESO_SPINNER_VARIANTS","KAESO_SPINNER_DEFAULT_VARIANTS","Spinner","props","size","className","label","useDelayedLoading","shown","setShown","useState","loading","delay","until","useRef","useEffect","t","minDuration"],"sources":["../../src/components/loader/loader.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef, useState, type SVGAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_SPINNER_VARIANTS = {\n size: {\n xs: { classes: \"size-14\" },\n sm: { classes: \"size-16\" },\n md: { classes: \"size-20\" },\n lg: { classes: \"size-24\" },\n xl: { classes: \"size-32\" },\n },\n} as const;\nexport const KAESO_SPINNER_DEFAULT_VARIANTS = { size: \"sm\" } as const;\n\nexport type SpinnerSize = keyof typeof KAESO_SPINNER_VARIANTS.size;\n\nexport interface SpinnerProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\"> {\n size?: SpinnerSize | undefined;\n label?: string | undefined;\n}\n\nexport const Spinner = /* @__PURE__ */ forwardRef<SVGSVGElement, SpinnerProps>(function Spinner({ size = \"sm\", label, className, ...props }, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 16 16\"\n className={cn(\"k-spinner shrink-0\", KAESO_SPINNER_VARIANTS.size[size].classes, className)}\n {...(label ? { role: \"status\", \"aria-label\": label } : { \"aria-hidden\": true })}\n {...props}\n >\n <path className=\"k-spinner-route\" d=\"M9.931 2.056A6.25 6.25 0 0 1 14.113 9.299\" />\n <path className=\"k-spinner-route\" d=\"M9.931 2.056A6.25 6.25 0 0 1 14.113 9.299\" />\n <path className=\"k-spinner-route\" d=\"M9.931 2.056A6.25 6.25 0 0 1 14.113 9.299\" />\n </svg>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Spinner.displayName = \"Spinner\";\n\nexport function useDelayedLoading(loading: boolean, delay = 300, minDuration = 400): boolean {\n const [shown, setShown] = useState(loading && !delay);\n const until = useRef(0);\n useEffect(() => {\n if (loading === shown) return;\n const t = setTimeout(\n () => {\n until.current = Date.now() + minDuration;\n setShown(loading);\n },\n loading ? delay : until.current - Date.now(),\n );\n return () => clearTimeout(t);\n }, [loading, shown, delay, minDuration]);\n return shown;\n}\n"],"mappings":";;;;;AAGA,IAAaC,IAAyB,EACpC,MAAM;CACJ,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;AAC3B,EACF,GACaC,IAAiC,EAAE,MAAM,KAAK,GAS9CC,IAA0B,kBAAwC,SAAiB,EAAE,UAAO,MAAM,UAAO,cAAW,GAAGC,KAAS,GAAK;CAChJ,OACE,kBAAC,OAAD;EACO;EACL,SAAQ;EACR,WAAWJ,EAAG,sBAAsBC,EAAuB,KAAKI,EAAK,CAAC,SAASC,CAAS;EACxF,GAAKC,IAAQ;GAAE,MAAM;GAAU,cAAcA;EAAM,IAAI,EAAE,eAAe,GAAK;EAC7E,GAAIH;EALN,UAAA;GAOE,kBAAC,QAAD;IAAM,WAAU;IAAkB,GAAE;GAA6C,CAAA;GACjF,kBAAC,QAAD;IAAM,WAAU;IAAkB,GAAE;GAA6C,CAAA;GACjF,kBAAC,QAAD;IAAM,WAAU;IAAkB,GAAE;GAA6C,CAAA;EAC9E;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAQ,cAAc;AAEjE,SAAgBI,EAAkB,GAAkB,IAAQ,KAAK,IAAc,KAAc;CAC3F,IAAM,CAACC,GAAOC,KAAYC,EAASC,KAAW,CAACC,CAAK,GAC9CC,IAAQC,EAAO,CAAC;CAYtB,OAXAC,QAAgB;EACd,IAAIJ,MAAYH,GAAO;EACvB,IAAMQ,IAAI,iBACF;GAEJ,AADA,EAAM,UAAU,KAAK,IAAI,IAAIC,GAC7BR,EAASE,CAAO;EAClB,GACAA,IAAUC,IAAQC,EAAM,UAAU,KAAK,IAAI,CAC7C;EACA,aAAa,aAAaG,CAAC;CAC7B,GAAG;EAACL;EAASH;EAAOI;EAAOK;CAAW,CAAC,GAChCT;AACT"}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { l as e } from "./styles-hkFkoBbi.js";
|
|
3
|
+
import { t } from "./cn-BjnOAUrA.js";
|
|
4
|
+
import { i as n } from "./context-BELWW79w.js";
|
|
5
|
+
import { t as r } from "./icon-CBzOwqrX.js";
|
|
6
|
+
import { r as i } from "./text-DkKdTVUf.js";
|
|
7
|
+
import { r as a } from "./link-CMjkcLQK.js";
|
|
8
|
+
import { t as o } from "./code-xqjww4Pv.js";
|
|
9
|
+
import { r as s } from "./separator-BNWf6BBj.js";
|
|
10
|
+
import { n as c } from "./button-IblhXUyZ.js";
|
|
11
|
+
import { t as l } from "./code-block-64e-Cy1S.js";
|
|
12
|
+
import { r as u } from "./table-CTK5E0J7.js";
|
|
13
|
+
import { t as d } from "./safe-href-G5DBNVwm.js";
|
|
14
|
+
import { forwardRef as f, memo as p, useMemo as m, useState as h } from "react";
|
|
15
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
16
|
+
import { Tick02Icon as y } from "@hugeicons/core-free-icons";
|
|
17
|
+
import { Lexer as b, Tokenizer as x } from "marked";
|
|
18
|
+
//#region src/components/markdown/markdown.tsx
|
|
19
|
+
var S = /* @__PURE__ */ e({
|
|
20
|
+
KAESO_MARKDOWN_DEFAULT_VARIANTS: () => w,
|
|
21
|
+
KAESO_MARKDOWN_VARIANTS: () => C,
|
|
22
|
+
Markdown: () => B,
|
|
23
|
+
lexMarkdown: () => D,
|
|
24
|
+
markdownCodeLang: () => k,
|
|
25
|
+
previewMarkdown: () => O,
|
|
26
|
+
safeHref: () => d
|
|
27
|
+
}), C = {
|
|
28
|
+
size: {
|
|
29
|
+
lg: { classes: "gap-16" },
|
|
30
|
+
body: { classes: "gap-12" },
|
|
31
|
+
small: { classes: "gap-8" }
|
|
32
|
+
},
|
|
33
|
+
tone: {
|
|
34
|
+
default: { classes: "text-fg" },
|
|
35
|
+
secondary: { classes: "text-fg-secondary" }
|
|
36
|
+
}
|
|
37
|
+
}, w = {
|
|
38
|
+
size: "body",
|
|
39
|
+
tone: "default"
|
|
40
|
+
};
|
|
41
|
+
function T() {
|
|
42
|
+
let e = new x();
|
|
43
|
+
return e.html = () => void 0, e.tag = () => void 0, e.def = () => void 0, new b({
|
|
44
|
+
gfm: !0,
|
|
45
|
+
breaks: !0,
|
|
46
|
+
tokenizer: e
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
var E;
|
|
50
|
+
function D(e, t = {}) {
|
|
51
|
+
if (t.cache === !1) return T().lex(e);
|
|
52
|
+
E ??= /* @__PURE__ */ new Map();
|
|
53
|
+
let n = E.get(e);
|
|
54
|
+
if (n) return n;
|
|
55
|
+
let r = T().lex(e);
|
|
56
|
+
return E.size >= 64 && E.delete(E.keys().next().value ?? ""), E.set(e, r), r;
|
|
57
|
+
}
|
|
58
|
+
function O(e, t) {
|
|
59
|
+
if (e.length <= t) return e;
|
|
60
|
+
for (let n of ["\n\n", "\n"]) {
|
|
61
|
+
let r = e.lastIndexOf(n, t);
|
|
62
|
+
if (r > t / 2) return e.slice(0, r);
|
|
63
|
+
}
|
|
64
|
+
let n = e.lastIndexOf(" ", t);
|
|
65
|
+
return `${e.slice(0, n > t / 2 ? n : t).trimEnd()}…`;
|
|
66
|
+
}
|
|
67
|
+
function k(e) {
|
|
68
|
+
switch ((e ?? "").trim().split(/\s/)[0]?.toLowerCase() ?? "") {
|
|
69
|
+
case "ts":
|
|
70
|
+
case "typescript": return "ts";
|
|
71
|
+
case "tsx":
|
|
72
|
+
case "jsx": return "tsx";
|
|
73
|
+
case "js":
|
|
74
|
+
case "javascript":
|
|
75
|
+
case "mjs":
|
|
76
|
+
case "cjs": return "js";
|
|
77
|
+
case "json":
|
|
78
|
+
case "jsonc":
|
|
79
|
+
case "json5": return "json";
|
|
80
|
+
case "bash":
|
|
81
|
+
case "sh":
|
|
82
|
+
case "shell":
|
|
83
|
+
case "zsh":
|
|
84
|
+
case "console": return "bash";
|
|
85
|
+
case "python":
|
|
86
|
+
case "py": return "python";
|
|
87
|
+
case "yaml":
|
|
88
|
+
case "yml": return "yaml";
|
|
89
|
+
case "diff":
|
|
90
|
+
case "patch": return "diff";
|
|
91
|
+
default: return "text";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function A({ href: e, title: t, children: n }) {
|
|
95
|
+
return /* @__PURE__ */ _(a, {
|
|
96
|
+
href: e,
|
|
97
|
+
external: !0,
|
|
98
|
+
target: "_blank",
|
|
99
|
+
rel: "noopener noreferrer nofollow",
|
|
100
|
+
...t ? { title: t } : {},
|
|
101
|
+
className: "max-w-full wrap-anywhere",
|
|
102
|
+
children: n
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function j(e) {
|
|
106
|
+
return (e ?? []).map((e, t) => {
|
|
107
|
+
switch (e.type) {
|
|
108
|
+
case "text": return "tokens" in e && e.tokens ? /* @__PURE__ */ _("span", { children: j(e.tokens) }, t) : e.text;
|
|
109
|
+
case "escape": return e.text;
|
|
110
|
+
case "strong": return /* @__PURE__ */ _("strong", {
|
|
111
|
+
className: "font-semibold",
|
|
112
|
+
children: j(e.tokens)
|
|
113
|
+
}, t);
|
|
114
|
+
case "em": return /* @__PURE__ */ _("em", { children: j(e.tokens) }, t);
|
|
115
|
+
case "del": return /* @__PURE__ */ _("del", { children: j(e.tokens) }, t);
|
|
116
|
+
case "codespan": return /* @__PURE__ */ _(o, {
|
|
117
|
+
flow: "text",
|
|
118
|
+
className: "wrap-anywhere",
|
|
119
|
+
children: e.text
|
|
120
|
+
}, t);
|
|
121
|
+
case "br": return /* @__PURE__ */ _("br", {}, t);
|
|
122
|
+
case "link": {
|
|
123
|
+
let n = e, r = d(n.href);
|
|
124
|
+
return r ? /* @__PURE__ */ _(A, {
|
|
125
|
+
href: r,
|
|
126
|
+
title: n.title,
|
|
127
|
+
children: j(n.tokens)
|
|
128
|
+
}, t) : /* @__PURE__ */ _("span", { children: j(n.tokens) }, t);
|
|
129
|
+
}
|
|
130
|
+
case "image": {
|
|
131
|
+
let n = e, r = d(n.href), i = n.text || n.href;
|
|
132
|
+
return r ? /* @__PURE__ */ _(A, {
|
|
133
|
+
href: r,
|
|
134
|
+
title: n.title,
|
|
135
|
+
children: i
|
|
136
|
+
}, t) : i;
|
|
137
|
+
}
|
|
138
|
+
case "checkbox": return null;
|
|
139
|
+
default: return e.raw;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function M({ done: e }) {
|
|
144
|
+
let i = n();
|
|
145
|
+
return /* @__PURE__ */ _("span", {
|
|
146
|
+
role: "img",
|
|
147
|
+
"aria-label": e ? i("markdown.taskDone", "Done") : i("markdown.taskOpen", "Not done"),
|
|
148
|
+
className: t("mt-3 inline-flex size-14 shrink-0 items-center justify-center rounded-checkbox", e ? "bg-ink text-on-ink" : "shadow-ring"),
|
|
149
|
+
children: e && /* @__PURE__ */ _(r, {
|
|
150
|
+
icon: y,
|
|
151
|
+
size: "xs",
|
|
152
|
+
className: "size-12"
|
|
153
|
+
})
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function N({ list: e, ctx: t }) {
|
|
157
|
+
let n = e.ordered ? "ol" : "ul", r = typeof e.start == "number" ? e.start : 1, a = e.items.length - 1, o = String(r + a).length;
|
|
158
|
+
return /* @__PURE__ */ _(n, {
|
|
159
|
+
className: "flex flex-col gap-4",
|
|
160
|
+
children: e.items.map((n, s) => /* @__PURE__ */ v("li", {
|
|
161
|
+
className: "flex gap-8",
|
|
162
|
+
children: [n.task ? /* @__PURE__ */ _(M, { done: !!n.checked }) : /* @__PURE__ */ _(i, {
|
|
163
|
+
as: "span",
|
|
164
|
+
"aria-hidden": !0,
|
|
165
|
+
variant: F[t.size],
|
|
166
|
+
weight: "regular",
|
|
167
|
+
tone: "tertiary",
|
|
168
|
+
tabular: !0,
|
|
169
|
+
className: e.ordered ? "shrink-0 text-right" : "w-8 shrink-0 text-center",
|
|
170
|
+
...e.ordered ? { style: { minWidth: `${o + .5}ch` } } : {},
|
|
171
|
+
children: e.ordered ? `${r + s}.` : "•"
|
|
172
|
+
}), /* @__PURE__ */ _("div", {
|
|
173
|
+
className: "flex min-w-0 flex-1 flex-col gap-4",
|
|
174
|
+
children: z(n.tokens.filter((e) => e.type !== "checkbox"), s === a ? t : {
|
|
175
|
+
...t,
|
|
176
|
+
trailing: null
|
|
177
|
+
}, !n.loose)
|
|
178
|
+
})]
|
|
179
|
+
}, s))
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
var P = "max-w-prose wrap-break-word", F = {
|
|
183
|
+
lg: "body-lg",
|
|
184
|
+
body: "body",
|
|
185
|
+
small: "small"
|
|
186
|
+
}, I = {
|
|
187
|
+
lg: [
|
|
188
|
+
"title",
|
|
189
|
+
"title-sm",
|
|
190
|
+
"body-lg",
|
|
191
|
+
"body-lg"
|
|
192
|
+
],
|
|
193
|
+
body: [
|
|
194
|
+
"title-sm",
|
|
195
|
+
"body-lg",
|
|
196
|
+
"body",
|
|
197
|
+
"body"
|
|
198
|
+
],
|
|
199
|
+
small: [
|
|
200
|
+
"body-lg",
|
|
201
|
+
"body",
|
|
202
|
+
"small",
|
|
203
|
+
"small"
|
|
204
|
+
]
|
|
205
|
+
};
|
|
206
|
+
function L(e, n, r) {
|
|
207
|
+
let a = n.trailing;
|
|
208
|
+
switch (e.type) {
|
|
209
|
+
case "space": return null;
|
|
210
|
+
case "heading": {
|
|
211
|
+
let t = e, r = Math.min(3, t.depth - 1), o = I[n.size][r], s = Math.min(6, t.depth + n.level - 1);
|
|
212
|
+
return /* @__PURE__ */ v(i, {
|
|
213
|
+
as: `h${s}`,
|
|
214
|
+
variant: o,
|
|
215
|
+
weight: r === 3 ? "medium" : "semibold",
|
|
216
|
+
tone: "inherit",
|
|
217
|
+
className: "mt-4 first:mt-0 wrap-break-word",
|
|
218
|
+
children: [j(t.tokens), a]
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
case "paragraph": return /* @__PURE__ */ v(i, {
|
|
222
|
+
as: "p",
|
|
223
|
+
variant: F[n.size],
|
|
224
|
+
weight: "regular",
|
|
225
|
+
tone: "inherit",
|
|
226
|
+
className: P,
|
|
227
|
+
children: [j(e.tokens), a]
|
|
228
|
+
});
|
|
229
|
+
case "text": {
|
|
230
|
+
let t = e;
|
|
231
|
+
return /* @__PURE__ */ v(i, {
|
|
232
|
+
as: r ? "div" : "p",
|
|
233
|
+
variant: F[n.size],
|
|
234
|
+
weight: "regular",
|
|
235
|
+
tone: "inherit",
|
|
236
|
+
className: P,
|
|
237
|
+
children: [t.tokens ? j(t.tokens) : t.text, a]
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
case "list": return /* @__PURE__ */ _(N, {
|
|
241
|
+
list: e,
|
|
242
|
+
ctx: n
|
|
243
|
+
});
|
|
244
|
+
case "code": return /* @__PURE__ */ _(g, { children: /* @__PURE__ */ _(l, {
|
|
245
|
+
code: e.text,
|
|
246
|
+
lang: k(e.lang),
|
|
247
|
+
wrap: n.wrap
|
|
248
|
+
}) });
|
|
249
|
+
case "blockquote": return /* @__PURE__ */ v("blockquote", {
|
|
250
|
+
className: "flex gap-12",
|
|
251
|
+
children: [/* @__PURE__ */ _(s, {
|
|
252
|
+
orientation: "vertical",
|
|
253
|
+
tone: "default"
|
|
254
|
+
}), /* @__PURE__ */ _("div", {
|
|
255
|
+
className: "flex min-w-0 flex-1 flex-col gap-8 text-fg-secondary",
|
|
256
|
+
children: z(e.tokens, n)
|
|
257
|
+
})]
|
|
258
|
+
});
|
|
259
|
+
case "hr": return /* @__PURE__ */ _(g, { children: /* @__PURE__ */ _(s, { className: "my-4" }) });
|
|
260
|
+
case "table": {
|
|
261
|
+
let t = e, r = (e) => e === "right" ? "end" : "start";
|
|
262
|
+
return /* @__PURE__ */ v(u, {
|
|
263
|
+
className: n.size === "small" ? "text-small" : void 0,
|
|
264
|
+
children: [/* @__PURE__ */ _(u.Head, { children: /* @__PURE__ */ _(u.Row, { children: t.header.map((e, t) => /* @__PURE__ */ _(u.HeaderCell, {
|
|
265
|
+
align: r(e.align),
|
|
266
|
+
children: j(e.tokens)
|
|
267
|
+
}, t)) }) }), /* @__PURE__ */ _(u.Body, { children: t.rows.map((e, t) => /* @__PURE__ */ _(u.Row, { children: e.map((e, t) => /* @__PURE__ */ _(u.Cell, {
|
|
268
|
+
align: r(e.align),
|
|
269
|
+
className: e.text.length <= 24 ? "whitespace-nowrap" : void 0,
|
|
270
|
+
children: j(e.tokens)
|
|
271
|
+
}, t)) }, t)) })]
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
default: return /* @__PURE__ */ v(i, {
|
|
275
|
+
as: "p",
|
|
276
|
+
variant: F[n.size],
|
|
277
|
+
weight: "regular",
|
|
278
|
+
tone: "inherit",
|
|
279
|
+
className: t(P, "whitespace-pre-wrap"),
|
|
280
|
+
children: [e.raw, a]
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
var R = /* @__PURE__ */ p(function({ token: e, ctx: t, tight: n }) {
|
|
285
|
+
return /* @__PURE__ */ _(g, { children: L(e, t, n) });
|
|
286
|
+
}, (e, t) => e.token.raw === t.token.raw && e.tight === t.tight && e.ctx.size === t.ctx.size && e.ctx.wrap === t.ctx.wrap && e.ctx.level === t.ctx.level && e.ctx.trailing === t.ctx.trailing);
|
|
287
|
+
function z(e, t, n = !1) {
|
|
288
|
+
let r = e.length - 1;
|
|
289
|
+
for (; r > 0 && e[r]?.type === "space";) r--;
|
|
290
|
+
return e.map((e, i) => /* @__PURE__ */ _(R, {
|
|
291
|
+
token: e,
|
|
292
|
+
tight: n,
|
|
293
|
+
ctx: i === r || !t.trailing ? t : {
|
|
294
|
+
...t,
|
|
295
|
+
trailing: null
|
|
296
|
+
}
|
|
297
|
+
}, i));
|
|
298
|
+
}
|
|
299
|
+
var B = /* @__PURE__ */ f(function({ text: e, size: r = "body", tone: i = "default", headingLevel: a = 3, collapseAfter: o = 24e3, streaming: s = !1, wrapCode: l = !1, trailing: u, className: d }, f) {
|
|
300
|
+
let [p, g] = h(!1), y = n(), b = !s && o > 0 && e.length > o, x = b && !p ? O(e, Math.round(o * .66)) : e, S = m(() => {
|
|
301
|
+
let t = D(x, { cache: !s }), n = t.length;
|
|
302
|
+
if (x !== e) for (; n > 1 && [
|
|
303
|
+
"space",
|
|
304
|
+
"heading",
|
|
305
|
+
"hr"
|
|
306
|
+
].includes(t[n - 1]?.type ?? "");) n--;
|
|
307
|
+
return t.slice(0, n);
|
|
308
|
+
}, [
|
|
309
|
+
x,
|
|
310
|
+
e,
|
|
311
|
+
s
|
|
312
|
+
]), w = m(() => ({
|
|
313
|
+
size: r,
|
|
314
|
+
wrap: l,
|
|
315
|
+
level: a,
|
|
316
|
+
trailing: u ?? null
|
|
317
|
+
}), [
|
|
318
|
+
r,
|
|
319
|
+
l,
|
|
320
|
+
a,
|
|
321
|
+
u
|
|
322
|
+
]);
|
|
323
|
+
return /* @__PURE__ */ v("div", {
|
|
324
|
+
ref: f,
|
|
325
|
+
className: t("flex min-w-0 flex-col", C.size[r].classes, C.tone[i].classes, d),
|
|
326
|
+
children: [z(S, w), b && !p && /* @__PURE__ */ _("div", { children: /* @__PURE__ */ _(c, {
|
|
327
|
+
size: "sm",
|
|
328
|
+
variant: "secondary",
|
|
329
|
+
onClick: () => g(!0),
|
|
330
|
+
children: y("markdown.showAllCharacters", "Show all {count} characters", { count: e.length })
|
|
331
|
+
}) })]
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
process.env.NODE_ENV !== "production" && (B.displayName = "Markdown");
|
|
335
|
+
//#endregion
|
|
336
|
+
export { k as a, D as i, C as n, S as o, B as r, O as s, w as t };
|
|
337
|
+
|
|
338
|
+
//# sourceMappingURL=markdown-C565aBR7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-C565aBR7.js","names":["__icon_Tick02Icon","_Fragment","__exportAll","useUiText","Icon","Text","Link","Code","Separator","Button","CodeBlock","Table","safeHref","Fragment$1","markdown_exports","KAESO_MARKDOWN_DEFAULT_VARIANTS","KAESO_MARKDOWN_VARIANTS","Markdown","lexMarkdown","markdownCodeLang","previewMarkdown","lexer","tokenizer","Tokenizer","Lexer","cache","options","text","hit","tokens","limit","at","cut","space","lang","ExternalLink","title","inline","t","i","link","href","image","label","Task","done","cn","Tick02Icon","List","Tag","list","start","last","digits","item","TEXT","ctx","blocks","PROSE","HEADING","block","tail","h","step","variant","level","x","tight","table","align","a","c","j","row","r","Block","token","b","all","setAll","useState","long","streaming","collapseAfter","shown","useMemo","out","end","wrapCode","headingLevel","trailing","size","tone","className"],"sources":["../../src/components/markdown/markdown.tsx"],"sourcesContent":["import { forwardRef, memo, useMemo, useState, type ReactNode } from \"react\";\nimport { Lexer, Tokenizer, type Token, type Tokens } from \"marked\";\nimport { cn } from \"../../utils/cn.js\";\nimport { safeHref } from \"../../utils/safe-href.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\nimport { Code } from \"../code/code.js\";\nimport { CodeBlock } from \"../code-block/code-block.js\";\nimport type { CodeLang } from \"../code-block/highlighter.js\";\nimport { Link } from \"../link/link.js\";\nimport { Separator } from \"../separator/separator.js\";\nimport { Table } from \"../table/table.js\";\nimport { Text } from \"../text/text.js\";\n\nexport { safeHref };\n\nexport const KAESO_MARKDOWN_VARIANTS = {\n size: {\n lg: { classes: \"gap-16\" },\n body: { classes: \"gap-12\" },\n small: { classes: \"gap-8\" },\n },\n tone: {\n default: { classes: \"text-fg\" },\n secondary: { classes: \"text-fg-secondary\" },\n },\n} as const;\nexport const KAESO_MARKDOWN_DEFAULT_VARIANTS = { size: \"body\", tone: \"default\" } as const;\n\nexport type MarkdownSize = keyof typeof KAESO_MARKDOWN_VARIANTS.size;\nexport type MarkdownTone = keyof typeof KAESO_MARKDOWN_VARIANTS.tone;\n\nexport interface MarkdownProps {\n text: string;\n size?: MarkdownSize | undefined;\n tone?: MarkdownTone | undefined;\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6 | undefined;\n collapseAfter?: number | undefined;\n streaming?: boolean | undefined;\n wrapCode?: boolean | undefined;\n trailing?: ReactNode | undefined;\n className?: string | undefined;\n}\n\ninterface Ctx {\n wrap: boolean;\n size: MarkdownSize;\n level: number;\n trailing: ReactNode;\n}\n\nfunction lexer() {\n const tokenizer = new Tokenizer();\n tokenizer.html = () => undefined;\n tokenizer.tag = () => undefined;\n tokenizer.def = () => undefined;\n return new Lexer({ gfm: true, breaks: true, tokenizer });\n}\n\nlet cache: Map<string, Token[]> | undefined;\n\nexport function lexMarkdown(text: string, options: { cache?: boolean | undefined } = {}): Token[] {\n if (options.cache === false) return lexer().lex(text);\n cache ??= new Map();\n const hit = cache.get(text);\n if (hit) return hit;\n const tokens = lexer().lex(text);\n if (cache.size >= 64) cache.delete(cache.keys().next().value ?? \"\");\n cache.set(text, tokens);\n return tokens;\n}\n\nexport function previewMarkdown(text: string, limit: number): string {\n if (text.length <= limit) return text;\n for (const at of [\"\\n\\n\", \"\\n\"]) {\n const cut = text.lastIndexOf(at, limit);\n if (cut > limit / 2) return text.slice(0, cut);\n }\n const space = text.lastIndexOf(\" \", limit);\n return `${text.slice(0, space > limit / 2 ? space : limit).trimEnd()}…`;\n}\n\nexport function markdownCodeLang(lang: string | undefined): CodeLang {\n const name = (lang ?? \"\").trim().split(/\\s/)[0]?.toLowerCase() ?? \"\";\n switch (name) {\n case \"ts\":\n case \"typescript\":\n return \"ts\";\n case \"tsx\":\n case \"jsx\":\n return \"tsx\";\n case \"js\":\n case \"javascript\":\n case \"mjs\":\n case \"cjs\":\n return \"js\";\n case \"json\":\n case \"jsonc\":\n case \"json5\":\n return \"json\";\n case \"bash\":\n case \"sh\":\n case \"shell\":\n case \"zsh\":\n case \"console\":\n return \"bash\";\n case \"python\":\n case \"py\":\n return \"python\";\n case \"yaml\":\n case \"yml\":\n return \"yaml\";\n case \"diff\":\n case \"patch\":\n return \"diff\";\n default:\n return \"text\";\n }\n}\n\nfunction ExternalLink({ href, title, children }: { href: string; title?: string | null | undefined; children: ReactNode }) {\n return (\n <Link href={href} external target=\"_blank\" rel=\"noopener noreferrer nofollow\" {...(title ? { title } : {})} className=\"max-w-full wrap-anywhere\">\n {children}\n </Link>\n );\n}\n\nfunction inline(tokens: Token[] | undefined): ReactNode[] {\n return (tokens ?? []).map((t, i) => {\n switch (t.type) {\n case \"text\":\n return \"tokens\" in t && t.tokens ? <span key={i}>{inline(t.tokens)}</span> : t.text;\n case \"escape\":\n return t.text;\n case \"strong\":\n return (\n <strong key={i} className=\"font-semibold\">\n {inline(t.tokens)}\n </strong>\n );\n case \"em\":\n return <em key={i}>{inline(t.tokens)}</em>;\n case \"del\":\n return <del key={i}>{inline(t.tokens)}</del>;\n case \"codespan\":\n return (\n <Code key={i} flow=\"text\" className=\"wrap-anywhere\">\n {t.text}\n </Code>\n );\n case \"br\":\n return <br key={i} />;\n case \"link\": {\n const link = t as Tokens.Link;\n const href = safeHref(link.href);\n return href ? (\n <ExternalLink key={i} href={href} title={link.title}>\n {inline(link.tokens)}\n </ExternalLink>\n ) : (\n <span key={i}>{inline(link.tokens)}</span>\n );\n }\n case \"image\": {\n const image = t as Tokens.Image;\n const href = safeHref(image.href);\n const label = image.text || image.href;\n return href ? (\n <ExternalLink key={i} href={href} title={image.title}>\n {label}\n </ExternalLink>\n ) : (\n label\n );\n }\n case \"checkbox\":\n return null;\n default:\n return t.raw;\n }\n });\n}\n\nfunction Task({ done }: { done: boolean }) {\n const t = useUiText();\n return (\n <span\n role=\"img\"\n aria-label={done ? t(\"markdown.taskDone\", \"Done\") : t(\"markdown.taskOpen\", \"Not done\")}\n className={cn(\"mt-3 inline-flex size-14 shrink-0 items-center justify-center rounded-checkbox\", done ? \"bg-ink text-on-ink\" : \"shadow-ring\")}\n >\n {done && <Icon icon={__icon_Tick02Icon} size=\"xs\" className=\"size-12\" />}\n </span>\n );\n}\n\nfunction List({ list, ctx }: { list: Tokens.List; ctx: Ctx }) {\n const Tag = list.ordered ? \"ol\" : \"ul\";\n const start = typeof list.start === \"number\" ? list.start : 1;\n const last = list.items.length - 1;\n const digits = String(start + last).length;\n return (\n <Tag className=\"flex flex-col gap-4\">\n {list.items.map((item, i) => (\n <li key={i} className=\"flex gap-8\">\n {item.task ? (\n <Task done={!!item.checked} />\n ) : (\n <Text\n as=\"span\"\n aria-hidden\n variant={TEXT[ctx.size]}\n weight=\"regular\"\n tone=\"tertiary\"\n tabular\n className={list.ordered ? \"shrink-0 text-right\" : \"w-8 shrink-0 text-center\"}\n {...(list.ordered ? { style: { minWidth: `${digits + 0.5}ch` } } : {})}\n >\n {list.ordered ? `${start + i}.` : \"•\"}\n </Text>\n )}\n <div className=\"flex min-w-0 flex-1 flex-col gap-4\">\n {blocks(\n item.tokens.filter((t) => t.type !== \"checkbox\"),\n i === last ? ctx : { ...ctx, trailing: null },\n !item.loose,\n )}\n </div>\n </li>\n ))}\n </Tag>\n );\n}\n\nconst PROSE = \"max-w-prose wrap-break-word\";\n\nconst TEXT = { lg: \"body-lg\", body: \"body\", small: \"small\" } as const;\nconst HEADING = {\n lg: [\"title\", \"title-sm\", \"body-lg\", \"body-lg\"],\n body: [\"title-sm\", \"body-lg\", \"body\", \"body\"],\n small: [\"body-lg\", \"body\", \"small\", \"small\"],\n} as const;\n\nfunction block(t: Token, ctx: Ctx, tight: boolean): ReactNode {\n const tail = ctx.trailing;\n switch (t.type) {\n case \"space\":\n return null;\n case \"heading\": {\n const h = t as Tokens.Heading;\n const step = Math.min(3, h.depth - 1);\n const variant = HEADING[ctx.size][step]!;\n const level = Math.min(6, h.depth + ctx.level - 1) as 1 | 2 | 3 | 4 | 5 | 6;\n return (\n <Text as={`h${level}`} variant={variant} weight={step === 3 ? \"medium\" : \"semibold\"} tone=\"inherit\" className=\"mt-4 first:mt-0 wrap-break-word\">\n {inline(h.tokens)}\n {tail}\n </Text>\n );\n }\n case \"paragraph\":\n return (\n <Text as=\"p\" variant={TEXT[ctx.size]} weight=\"regular\" tone=\"inherit\" className={PROSE}>\n {inline((t as Tokens.Paragraph).tokens)}\n {tail}\n </Text>\n );\n case \"text\": {\n const x = t as Tokens.Text;\n return (\n <Text as={tight ? \"div\" : \"p\"} variant={TEXT[ctx.size]} weight=\"regular\" tone=\"inherit\" className={PROSE}>\n {x.tokens ? inline(x.tokens) : x.text}\n {tail}\n </Text>\n );\n }\n case \"list\":\n return <List list={t as Tokens.List} ctx={ctx} />;\n case \"code\":\n return (\n <>\n <CodeBlock code={(t as Tokens.Code).text} lang={markdownCodeLang((t as Tokens.Code).lang)} wrap={ctx.wrap} />\n </>\n );\n case \"blockquote\":\n return (\n <blockquote className=\"flex gap-12\">\n <Separator orientation=\"vertical\" tone=\"default\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-8 text-fg-secondary\">{blocks((t as Tokens.Blockquote).tokens, ctx)}</div>\n </blockquote>\n );\n case \"hr\":\n return (\n <>\n <Separator className=\"my-4\" />\n </>\n );\n case \"table\": {\n const table = t as Tokens.Table;\n const align = (a: Tokens.TableCell[\"align\"]) => (a === \"right\" ? \"end\" : \"start\");\n return (\n <Table className={ctx.size === \"small\" ? \"text-small\" : undefined}>\n <Table.Head>\n <Table.Row>\n {table.header.map((c, j) => (\n <Table.HeaderCell key={j} align={align(c.align)}>\n {inline(c.tokens)}\n </Table.HeaderCell>\n ))}\n </Table.Row>\n </Table.Head>\n <Table.Body>\n {table.rows.map((row, r) => (\n <Table.Row key={r}>\n {row.map((c, j) => (\n <Table.Cell key={j} align={align(c.align)} className={c.text.length <= 24 ? \"whitespace-nowrap\" : undefined}>\n {inline(c.tokens)}\n </Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n );\n }\n default:\n return (\n <Text as=\"p\" variant={TEXT[ctx.size]} weight=\"regular\" tone=\"inherit\" className={cn(PROSE, \"whitespace-pre-wrap\")}>\n {t.raw}\n {tail}\n </Text>\n );\n }\n}\n\nconst Block = /* @__PURE__ */ memo(\n function Block({ token, ctx, tight }: { token: Token; ctx: Ctx; tight: boolean }) {\n return <>{block(token, ctx, tight)}</>;\n },\n (a, b) =>\n a.token.raw === b.token.raw &&\n a.tight === b.tight &&\n a.ctx.size === b.ctx.size &&\n a.ctx.wrap === b.ctx.wrap &&\n a.ctx.level === b.ctx.level &&\n a.ctx.trailing === b.ctx.trailing,\n);\n\nfunction blocks(tokens: Token[], ctx: Ctx, tight = false): ReactNode[] {\n let last = tokens.length - 1;\n while (last > 0 && tokens[last]?.type === \"space\") last--;\n return tokens.map((t, i) => <Block key={i} token={t} tight={tight} ctx={i === last || !ctx.trailing ? ctx : { ...ctx, trailing: null }} />);\n}\n\nexport const Markdown = /* @__PURE__ */ forwardRef<HTMLDivElement, MarkdownProps>(function Markdown(\n { text, size = \"body\", tone = \"default\", headingLevel = 3, collapseAfter = 24_000, streaming = false, wrapCode = false, trailing, className },\n ref,\n) {\n const [all, setAll] = useState(false);\n const t = useUiText();\n const long = !streaming && collapseAfter > 0 && text.length > collapseAfter;\n const shown = long && !all ? previewMarkdown(text, Math.round(collapseAfter * 0.66)) : text;\n const tokens = useMemo(() => {\n const out = lexMarkdown(shown, { cache: !streaming });\n let end = out.length;\n if (shown !== text) while (end > 1 && [\"space\", \"heading\", \"hr\"].includes(out[end - 1]?.type ?? \"\")) end--;\n return out.slice(0, end);\n }, [shown, text, streaming]);\n const ctx = useMemo<Ctx>(() => ({ size, wrap: wrapCode, level: headingLevel, trailing: trailing ?? null }), [size, wrapCode, headingLevel, trailing]);\n return (\n <div ref={ref} className={cn(\"flex min-w-0 flex-col\", KAESO_MARKDOWN_VARIANTS.size[size].classes, KAESO_MARKDOWN_VARIANTS.tone[tone].classes, className)}>\n {blocks(tokens, ctx)}\n {long && !all && (\n <div>\n <Button size=\"sm\" variant=\"secondary\" onClick={() => setAll(true)}>\n {t(\"markdown.showAllCharacters\", \"Show all {count} characters\", { count: text.length })}\n </Button>\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Markdown.displayName = \"Markdown\";\n"],"mappings":"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"}
|