@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,253 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
|
+
import { i as t } from "./context-BELWW79w.js";
|
|
4
|
+
import { t as n } from "./icon-CBzOwqrX.js";
|
|
5
|
+
import { t as r } from "./use-copy-Dm2ncvMX.js";
|
|
6
|
+
import { createContext as i, forwardRef as a, useContext as o, useLayoutEffect as s, useMemo as c, useRef as l, useState as u } from "react";
|
|
7
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
8
|
+
import { ArrowRight01Icon as m, Copy01Icon as h, Tick02Icon as g } from "@hugeicons/core-free-icons";
|
|
9
|
+
//#region src/components/code-block/json-view.tsx
|
|
10
|
+
var _ = { surface: {
|
|
11
|
+
well: { classes: "rounded-well bg-fill-1 p-16" },
|
|
12
|
+
plain: { classes: "" }
|
|
13
|
+
} }, v = { surface: "well" }, y = /* @__PURE__ */ i({
|
|
14
|
+
active: "",
|
|
15
|
+
setActive: () => void 0,
|
|
16
|
+
announce: () => void 0
|
|
17
|
+
});
|
|
18
|
+
function b({ text: e, query: t }) {
|
|
19
|
+
if (!t) return /* @__PURE__ */ f(d, { children: e });
|
|
20
|
+
let n = e.toLowerCase().indexOf(t.toLowerCase());
|
|
21
|
+
return n < 0 ? /* @__PURE__ */ f(d, { children: e }) : /* @__PURE__ */ p(d, { children: [
|
|
22
|
+
e.slice(0, n),
|
|
23
|
+
/* @__PURE__ */ f("mark", {
|
|
24
|
+
className: "rounded-cell bg-warning-tint text-inherit ring-mark",
|
|
25
|
+
children: e.slice(n, n + t.length)
|
|
26
|
+
}),
|
|
27
|
+
e.slice(n + t.length)
|
|
28
|
+
] });
|
|
29
|
+
}
|
|
30
|
+
function x({ v: e, query: t }) {
|
|
31
|
+
return e === null ? /* @__PURE__ */ f("span", {
|
|
32
|
+
className: "font-semibold text-fg",
|
|
33
|
+
children: "null"
|
|
34
|
+
}) : typeof e == "boolean" ? /* @__PURE__ */ f("span", {
|
|
35
|
+
className: "font-semibold text-fg",
|
|
36
|
+
children: String(e)
|
|
37
|
+
}) : typeof e == "number" ? /* @__PURE__ */ f("span", {
|
|
38
|
+
className: "text-warning-text tabular",
|
|
39
|
+
children: e
|
|
40
|
+
}) : /* @__PURE__ */ p("span", {
|
|
41
|
+
className: "text-info-text wrap-anywhere",
|
|
42
|
+
children: [
|
|
43
|
+
"\"",
|
|
44
|
+
/* @__PURE__ */ f(b, {
|
|
45
|
+
text: String(e),
|
|
46
|
+
query: t
|
|
47
|
+
}),
|
|
48
|
+
"\""
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function S(e) {
|
|
53
|
+
let { copied: n, copy: i } = r(), { announce: a } = o(y), s = t();
|
|
54
|
+
return {
|
|
55
|
+
copied: n,
|
|
56
|
+
copyPath: () => {
|
|
57
|
+
i(e).then((e) => e && a(s("jsonView.pathCopied", "Path copied")));
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function C({ path: r, copied: i, onCopy: a }) {
|
|
62
|
+
let o = t();
|
|
63
|
+
return /* @__PURE__ */ f("button", {
|
|
64
|
+
type: "button",
|
|
65
|
+
tabIndex: -1,
|
|
66
|
+
"aria-hidden": !0,
|
|
67
|
+
title: i ? o("jsonView.pathCopied", "Path copied") : o("jsonView.copyPath", "Copy path {path}", { path: r }),
|
|
68
|
+
onClick: (e) => {
|
|
69
|
+
e.stopPropagation(), a();
|
|
70
|
+
},
|
|
71
|
+
className: e("relative ml-8 inline-flex size-20 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target transition-control hover:bg-fill-2 hover:text-fg group-hover/row:opacity-100 group-focus-within/row:opacity-100", i ? "text-fg opacity-100" : "opacity-0"),
|
|
72
|
+
children: /* @__PURE__ */ f(n, {
|
|
73
|
+
icon: i ? g : h,
|
|
74
|
+
size: "xs"
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
var w = (e, t) => e !== t && (t === "" || e.startsWith(`${t}.`) || e.startsWith(`${t}[`));
|
|
79
|
+
function T(e, t) {
|
|
80
|
+
let n = e.closest("[role=tree]");
|
|
81
|
+
if (!n) return !1;
|
|
82
|
+
let r = [...n.querySelectorAll("[role=treeitem]")], i = r.indexOf(e), a = t === "ArrowDown" ? r[i + 1] : t === "ArrowUp" ? r[i - 1] : t === "Home" ? r[0] : t === "End" ? r[r.length - 1] : void 0;
|
|
83
|
+
return a ? (a.focus(), !0) : t === "ArrowDown" || t === "ArrowUp" || t === "Home" || t === "End";
|
|
84
|
+
}
|
|
85
|
+
function E({ name: r, value: i, path: a, depth: s, open: c, query: l, last: h }) {
|
|
86
|
+
let [g, _] = u(s < c), v = t(), D = o(y), { copied: O, copyPath: k } = S(a), A = typeof i == "object" && !!i, j = A ? Array.isArray(i) ? i.map((e, t) => [t, e]) : Object.entries(i) : [], M = r === void 0 ? null : typeof r == "number" ? /* @__PURE__ */ p("span", {
|
|
87
|
+
className: "text-fg-tertiary tabular",
|
|
88
|
+
children: [r, ": "]
|
|
89
|
+
}) : /* @__PURE__ */ p("span", {
|
|
90
|
+
className: "text-fg",
|
|
91
|
+
children: [
|
|
92
|
+
"\"",
|
|
93
|
+
/* @__PURE__ */ f(b, {
|
|
94
|
+
text: r,
|
|
95
|
+
query: l
|
|
96
|
+
}),
|
|
97
|
+
"\"",
|
|
98
|
+
/* @__PURE__ */ f("span", {
|
|
99
|
+
className: "text-fg-tertiary",
|
|
100
|
+
children: ": "
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
}), N = h ? "" : ",", P = (e) => {
|
|
104
|
+
_(e), !e && w(D.active, a) && D.setActive(a);
|
|
105
|
+
}, F = {
|
|
106
|
+
role: "treeitem",
|
|
107
|
+
"aria-level": s + 1,
|
|
108
|
+
tabIndex: D.active === a ? 0 : -1,
|
|
109
|
+
onKeyDown: (e) => {
|
|
110
|
+
e.target === e.currentTarget && ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "c" && a ? (e.preventDefault(), k()) : A && (e.key === "Enter" || e.key === " ") ? (e.preventDefault(), P(!g)) : A && e.key === "ArrowRight" ? (e.preventDefault(), g ? j.length && T(e.currentTarget, "ArrowDown") : _(!0)) : e.key === "ArrowLeft" ? (e.preventDefault(), A && g ? P(!1) : e.currentTarget.parentElement?.parentElement?.closest("[data-json-node]")?.querySelector("[role=treeitem]")?.focus()) : T(e.currentTarget, e.key) && e.preventDefault());
|
|
111
|
+
},
|
|
112
|
+
onFocus: (e) => {
|
|
113
|
+
e.target === e.currentTarget && D.setActive(a);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
if (!A) return /* @__PURE__ */ f("div", {
|
|
117
|
+
"data-json-node": "",
|
|
118
|
+
children: /* @__PURE__ */ p("div", {
|
|
119
|
+
...F,
|
|
120
|
+
className: "group/row flex min-h-20 items-start rounded-cell focus-ring-inset",
|
|
121
|
+
style: { paddingLeft: s * 16 + 20 },
|
|
122
|
+
children: [/* @__PURE__ */ p("span", {
|
|
123
|
+
className: "min-w-0",
|
|
124
|
+
children: [
|
|
125
|
+
M,
|
|
126
|
+
/* @__PURE__ */ f(x, {
|
|
127
|
+
v: i,
|
|
128
|
+
query: l
|
|
129
|
+
}),
|
|
130
|
+
/* @__PURE__ */ f("span", {
|
|
131
|
+
className: "text-fg-tertiary",
|
|
132
|
+
children: N
|
|
133
|
+
})
|
|
134
|
+
]
|
|
135
|
+
}), a && /* @__PURE__ */ f(C, {
|
|
136
|
+
path: a,
|
|
137
|
+
copied: O,
|
|
138
|
+
onCopy: k
|
|
139
|
+
})]
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
let [I, L] = Array.isArray(i) ? ["[", "]"] : ["{", "}"];
|
|
143
|
+
return /* @__PURE__ */ p("div", {
|
|
144
|
+
"data-json-node": "",
|
|
145
|
+
children: [/* @__PURE__ */ p("div", {
|
|
146
|
+
...F,
|
|
147
|
+
"aria-expanded": g,
|
|
148
|
+
className: "group/row flex min-h-24 items-center rounded-cell focus-ring-inset",
|
|
149
|
+
style: { paddingLeft: s * 16 },
|
|
150
|
+
children: [
|
|
151
|
+
/* @__PURE__ */ f("button", {
|
|
152
|
+
type: "button",
|
|
153
|
+
tabIndex: -1,
|
|
154
|
+
"aria-hidden": !0,
|
|
155
|
+
onClick: () => P(!g),
|
|
156
|
+
className: "relative -ml-4 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg",
|
|
157
|
+
children: /* @__PURE__ */ f(n, {
|
|
158
|
+
icon: m,
|
|
159
|
+
size: "xs",
|
|
160
|
+
className: e("transition-transform duration-180", g && "rotate-90")
|
|
161
|
+
})
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ p("span", {
|
|
164
|
+
className: "min-w-0",
|
|
165
|
+
children: [
|
|
166
|
+
M,
|
|
167
|
+
/* @__PURE__ */ f("span", {
|
|
168
|
+
className: "text-fg-tertiary",
|
|
169
|
+
children: I
|
|
170
|
+
}),
|
|
171
|
+
!g && /* @__PURE__ */ f("button", {
|
|
172
|
+
type: "button",
|
|
173
|
+
tabIndex: -1,
|
|
174
|
+
onClick: () => _(!0),
|
|
175
|
+
className: "relative mx-4 cursor-pointer rounded-code px-4 text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg",
|
|
176
|
+
children: Array.isArray(i) ? v("jsonView.items", "{count, plural, one {{n} item} other {{n} items}}", {
|
|
177
|
+
count: j.length,
|
|
178
|
+
n: String(j.length)
|
|
179
|
+
}) : v("jsonView.keys", "{count, plural, one {{n} key} other {{n} keys}}", {
|
|
180
|
+
count: j.length,
|
|
181
|
+
n: String(j.length)
|
|
182
|
+
})
|
|
183
|
+
}),
|
|
184
|
+
!g && /* @__PURE__ */ p("span", {
|
|
185
|
+
className: "text-fg-tertiary",
|
|
186
|
+
children: [L, N]
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
}),
|
|
190
|
+
a && /* @__PURE__ */ f(C, {
|
|
191
|
+
path: a,
|
|
192
|
+
copied: O,
|
|
193
|
+
onCopy: k
|
|
194
|
+
})
|
|
195
|
+
]
|
|
196
|
+
}), g && /* @__PURE__ */ p(d, { children: [j.map(([e, t], n) => /* @__PURE__ */ f(E, {
|
|
197
|
+
name: e,
|
|
198
|
+
value: t,
|
|
199
|
+
path: typeof e == "number" ? `${a}[${e}]` : a ? `${a}.${e}` : String(e),
|
|
200
|
+
depth: s + 1,
|
|
201
|
+
open: c,
|
|
202
|
+
query: l,
|
|
203
|
+
last: n === j.length - 1
|
|
204
|
+
}, e)), /* @__PURE__ */ p("div", {
|
|
205
|
+
"aria-hidden": !0,
|
|
206
|
+
className: "min-h-20 text-fg-tertiary",
|
|
207
|
+
style: { paddingLeft: s * 16 + 20 },
|
|
208
|
+
children: [L, N]
|
|
209
|
+
})] })]
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
var D = /* @__PURE__ */ a(function({ value: n, defaultDepth: r = 2, query: i, surface: a = "well", className: o }, d) {
|
|
213
|
+
let m = t(), [h, g] = u(""), [v, b] = u(""), x = l(void 0), S = l(null);
|
|
214
|
+
s(() => {
|
|
215
|
+
S.current?.querySelector("[role=treeitem][tabindex=\"0\"]") || g("");
|
|
216
|
+
}, [n]);
|
|
217
|
+
let C = c(() => ({
|
|
218
|
+
active: h,
|
|
219
|
+
setActive: g,
|
|
220
|
+
announce: (e) => {
|
|
221
|
+
b(""), clearTimeout(x.current), x.current = setTimeout(() => b(e), 50);
|
|
222
|
+
}
|
|
223
|
+
}), [h]);
|
|
224
|
+
return /* @__PURE__ */ p("div", {
|
|
225
|
+
ref: d,
|
|
226
|
+
className: e("mono overflow-x-auto text-small leading-code text-fg scrollbar-quiet", _.surface[a].classes, o),
|
|
227
|
+
children: [/* @__PURE__ */ f(y.Provider, {
|
|
228
|
+
value: C,
|
|
229
|
+
children: /* @__PURE__ */ f("div", {
|
|
230
|
+
ref: S,
|
|
231
|
+
role: "tree",
|
|
232
|
+
"aria-label": m("jsonView.label", "JSON"),
|
|
233
|
+
children: /* @__PURE__ */ f(E, {
|
|
234
|
+
value: n,
|
|
235
|
+
path: "",
|
|
236
|
+
depth: 0,
|
|
237
|
+
open: r,
|
|
238
|
+
query: i,
|
|
239
|
+
last: !0
|
|
240
|
+
})
|
|
241
|
+
})
|
|
242
|
+
}), /* @__PURE__ */ f("div", {
|
|
243
|
+
role: "status",
|
|
244
|
+
className: "sr-only",
|
|
245
|
+
children: v
|
|
246
|
+
})]
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
process.env.NODE_ENV !== "production" && (D.displayName = "JsonView");
|
|
250
|
+
//#endregion
|
|
251
|
+
export { v as n, _ as r, D as t };
|
|
252
|
+
|
|
253
|
+
//# sourceMappingURL=json-view-DZ2nL2Ir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-view-DZ2nL2Ir.js","names":["_Fragment","__icon_Tick02Icon","__icon_Copy01Icon","__icon_ArrowRight01Icon","cn","useUiText","Icon","useCopy","Fragment$1","KAESO_JSON_VIEW_VARIANTS","KAESO_JSON_VIEW_DEFAULT_VARIANTS","TreeContext","Mark","query","text","i","Scalar","v","useCopyPath","useContext","t","path","ok","announce","CopyPath","copied","onCopy","Tick02Icon","Copy01Icon","isInside","branch","moveFocus","tree","from","items","next","key","Node","initialOpen","open","setOpen","useState","depth","isObj","value","entries","keyLabel","name","comma","last","toggle","item","copyPath","o","c","ArrowRight01Icon","k","JsonView","active","setActive","said","setSaid","timer","useRef","root","useMemo","surface","className","defaultDepth"],"sources":["../../src/components/code-block/json-view.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { createContext, forwardRef, useContext, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon, Copy01Icon as __icon_Copy01Icon, ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { useCopy } from \"../../hooks/use-copy.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_JSON_VIEW_VARIANTS = {\n surface: {\n well: { classes: \"rounded-well bg-fill-1 p-16\" },\n plain: { classes: \"\" },\n },\n} as const;\nexport const KAESO_JSON_VIEW_DEFAULT_VARIANTS = { surface: \"well\" } as const;\n\ntype Json = string | number | boolean | null | Json[] | { [k: string]: Json };\n\nexport interface JsonViewProps {\n value: unknown;\n defaultDepth?: number | undefined;\n query?: string | undefined;\n surface?: keyof typeof KAESO_JSON_VIEW_VARIANTS.surface | undefined;\n className?: string | undefined;\n}\n\ninterface Tree {\n active: string;\n setActive: (path: string) => void;\n announce: (text: string) => void;\n}\nconst TreeContext = /* @__PURE__ */ createContext<Tree>({ active: \"\", setActive: () => undefined, announce: () => undefined });\n\nfunction Mark({ text, query }: { text: string; query?: string | undefined }) {\n if (!query) return <>{text}</>;\n const i = text.toLowerCase().indexOf(query.toLowerCase());\n if (i < 0) return <>{text}</>;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-cell bg-warning-tint text-inherit ring-mark\">{text.slice(i, i + query.length)}</mark>\n {text.slice(i + query.length)}\n </>\n );\n}\n\nfunction Scalar({ v, query }: { v: Json; query?: string | undefined }) {\n if (v === null) return <span className=\"font-semibold text-fg\">null</span>;\n if (typeof v === \"boolean\") return <span className=\"font-semibold text-fg\">{String(v)}</span>;\n if (typeof v === \"number\") return <span className=\"text-warning-text tabular\">{v}</span>;\n return (\n <span className=\"text-info-text wrap-anywhere\">\n \"<Mark text={String(v)} query={query} />\"\n </span>\n );\n}\n\nfunction useCopyPath(path: string) {\n const { copied, copy } = useCopy();\n const { announce } = useContext(TreeContext);\n const t = useUiText();\n return {\n copied,\n copyPath: () => {\n void copy(path).then((ok) => ok && announce(t(\"jsonView.pathCopied\", \"Path copied\")));\n },\n };\n}\n\nfunction CopyPath({ path, copied, onCopy }: { path: string; copied: boolean; onCopy: () => void }) {\n const t = useUiText();\n return (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n title={copied ? t(\"jsonView.pathCopied\", \"Path copied\") : t(\"jsonView.copyPath\", \"Copy path {path}\", { path })}\n onClick={(e) => {\n e.stopPropagation();\n onCopy();\n }}\n className={cn(\n \"relative ml-8 inline-flex size-20 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target transition-control hover:bg-fill-2 hover:text-fg group-hover/row:opacity-100 group-focus-within/row:opacity-100\",\n copied ? \"text-fg opacity-100\" : \"opacity-0\",\n )}\n >\n <Icon icon={copied ? __icon_Tick02Icon : __icon_Copy01Icon} size=\"xs\" />\n </button>\n );\n}\n\nconst isInside = (path: string, branch: string) => path !== branch && (branch === \"\" || path.startsWith(`${branch}.`) || path.startsWith(`${branch}[`));\n\nfunction moveFocus(from: HTMLElement, key: string): boolean {\n const tree = from.closest(\"[role=tree]\");\n if (!tree) return false;\n const items = [...tree.querySelectorAll<HTMLElement>(\"[role=treeitem]\")];\n const i = items.indexOf(from);\n const next =\n key === \"ArrowDown\" ? items[i + 1] : key === \"ArrowUp\" ? items[i - 1] : key === \"Home\" ? items[0] : key === \"End\" ? items[items.length - 1] : undefined;\n if (!next) return key === \"ArrowDown\" || key === \"ArrowUp\" || key === \"Home\" || key === \"End\";\n next.focus();\n return true;\n}\n\nfunction Node({\n name,\n value,\n path,\n depth,\n open: initialOpen,\n query,\n last,\n}: {\n name?: string | number | undefined;\n value: Json;\n path: string;\n depth: number;\n open: number;\n query?: string | undefined;\n last: boolean;\n}) {\n const [open, setOpen] = useState(depth < initialOpen);\n const t = useUiText();\n const tree = useContext(TreeContext);\n const { copied, copyPath } = useCopyPath(path);\n const isObj = value !== null && typeof value === \"object\";\n const entries: [string | number, Json][] = isObj ? (Array.isArray(value) ? value.map((v, i) => [i, v]) : Object.entries(value)) : [];\n const keyLabel: ReactNode =\n name === undefined ? null : typeof name === \"number\" ? (\n <span className=\"text-fg-tertiary tabular\">{name}: </span>\n ) : (\n <span className=\"text-fg\">\n \"<Mark text={name} query={query} />\"<span className=\"text-fg-tertiary\">: </span>\n </span>\n );\n const comma = last ? \"\" : \",\";\n const toggle = (next: boolean) => {\n setOpen(next);\n if (!next && isInside(tree.active, path)) tree.setActive(path);\n };\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.target !== e.currentTarget) return;\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"c\" && path) {\n e.preventDefault();\n copyPath();\n return;\n }\n if (isObj && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n toggle(!open);\n return;\n }\n if (isObj && e.key === \"ArrowRight\") {\n e.preventDefault();\n if (!open) setOpen(true);\n else if (entries.length) moveFocus(e.currentTarget, \"ArrowDown\");\n return;\n }\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n if (isObj && open) toggle(false);\n else e.currentTarget.parentElement?.parentElement?.closest<HTMLElement>(\"[data-json-node]\")?.querySelector<HTMLElement>(\"[role=treeitem]\")?.focus();\n return;\n }\n if (moveFocus(e.currentTarget, e.key)) e.preventDefault();\n };\n const item = {\n role: \"treeitem\",\n \"aria-level\": depth + 1,\n tabIndex: tree.active === path ? 0 : -1,\n onKeyDown,\n onFocus: (e: React.FocusEvent<HTMLDivElement>) => {\n if (e.target === e.currentTarget) tree.setActive(path);\n },\n } as const;\n if (!isObj) {\n return (\n <div data-json-node=\"\">\n <div {...item} className=\"group/row flex min-h-20 items-start rounded-cell focus-ring-inset\" style={{ paddingLeft: depth * 16 + 20 }}>\n <span className=\"min-w-0\">\n {keyLabel}\n <Scalar v={value} query={query} />\n <span className=\"text-fg-tertiary\">{comma}</span>\n </span>\n {path && <CopyPath path={path} copied={copied} onCopy={copyPath} />}\n </div>\n </div>\n );\n }\n const [o, c] = Array.isArray(value) ? [\"[\", \"]\"] : [\"{\", \"}\"];\n return (\n <div data-json-node=\"\">\n <div {...item} aria-expanded={open} className=\"group/row flex min-h-24 items-center rounded-cell focus-ring-inset\" style={{ paddingLeft: depth * 16 }}>\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n onClick={() => toggle(!open)}\n className=\"relative -ml-4 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg\"\n >\n <Icon icon={__icon_ArrowRight01Icon} size=\"xs\" className={cn(\"transition-transform duration-180\", open && \"rotate-90\")} />\n </button>\n <span className=\"min-w-0\">\n {keyLabel}\n <span className=\"text-fg-tertiary\">{o}</span>\n {!open && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setOpen(true)}\n className=\"relative mx-4 cursor-pointer rounded-code px-4 text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg\"\n >\n {Array.isArray(value)\n ? t(\"jsonView.items\", \"{count, plural, one {{n} item} other {{n} items}}\", { count: entries.length, n: String(entries.length) })\n : t(\"jsonView.keys\", \"{count, plural, one {{n} key} other {{n} keys}}\", { count: entries.length, n: String(entries.length) })}\n </button>\n )}\n {!open && (\n <span className=\"text-fg-tertiary\">\n {c}\n {comma}\n </span>\n )}\n </span>\n {path && <CopyPath path={path} copied={copied} onCopy={copyPath} />}\n </div>\n {open && (\n <>\n {entries.map(([k, v], i) => (\n <Node\n key={k}\n name={k}\n value={v}\n path={typeof k === \"number\" ? `${path}[${k}]` : path ? `${path}.${k}` : String(k)}\n depth={depth + 1}\n open={initialOpen}\n query={query}\n last={i === entries.length - 1}\n />\n ))}\n <div aria-hidden className=\"min-h-20 text-fg-tertiary\" style={{ paddingLeft: depth * 16 + 20 }}>\n {c}\n {comma}\n </div>\n </>\n )}\n </div>\n );\n}\n\nexport const JsonView = /* @__PURE__ */ forwardRef<HTMLDivElement, JsonViewProps>(function JsonView({ value, defaultDepth = 2, query, surface = \"well\", className }, ref) {\n const t = useUiText();\n const [active, setActive] = useState(\"\");\n const [said, setSaid] = useState(\"\");\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const root = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n if (!root.current?.querySelector('[role=treeitem][tabindex=\"0\"]')) setActive(\"\");\n }, [value]);\n const tree = useMemo<Tree>(\n () => ({\n active,\n setActive,\n announce: (text) => {\n setSaid(\"\");\n clearTimeout(timer.current);\n timer.current = setTimeout(() => setSaid(text), 50);\n },\n }),\n [active],\n );\n return (\n <div\n ref={ref}\n className={cn(\"mono overflow-x-auto text-small leading-code text-fg scrollbar-quiet\", KAESO_JSON_VIEW_VARIANTS.surface[surface].classes, className)}\n >\n <TreeContext.Provider value={tree}>\n <div ref={root} role=\"tree\" aria-label={t(\"jsonView.label\", \"JSON\")}>\n <Node value={value as Json} path=\"\" depth={0} open={defaultDepth} query={query} last />\n </div>\n </TreeContext.Provider>\n <div role=\"status\" className=\"sr-only\">\n {said}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") JsonView.displayName = \"JsonView\";\n"],"mappings":";;;;;;;;;AAQA,IAAaS,IAA2B,EACtC,SAAS;CACP,MAAM,EAAE,SAAS,8BAA8B;CAC/C,OAAO,EAAE,SAAS,GAAG;AACvB,EACF,GACaC,IAAmC,EAAE,SAAS,OAAO,GAiB5DC,IAA8B,kBAAoB;CAAE,QAAQ;CAAI,iBAAiB,KAAA;CAAW,gBAAgB,KAAA;AAAU,CAAC;AAE7H,SAASC,EAAK,EAAE,SAAM,YAAuD;CAC3E,IAAI,CAACC,GAAO,OAAO,kBAAAb,GAAA,EAAA,UAAGc,EAAO,CAAA;CAC7B,IAAMC,IAAID,EAAK,YAAY,CAAC,CAAC,QAAQD,EAAM,YAAY,CAAC;CAExD,OADIE,IAAI,IAAU,kBAAAf,GAAA,EAAA,UAAGc,EAAO,CAAA,IAE1B,kBAAAd,GAAA,EAAA,UAAA;EACGc,EAAK,MAAM,GAAGC,CAAC;EAChB,kBAAC,QAAD;GAAM,WAAU;GAAuD,UAAAD,EAAK,MAAMC,GAAGA,IAAIF,EAAM,MAAM;EAAQ,CAAA;EAC5GC,EAAK,MAAMC,IAAIF,EAAM,MAAM;CAC5B,EAAA,CAAA;AAEN;AAEA,SAASG,EAAO,EAAE,MAAG,YAAkD;CAIrE,OAHIC,MAAM,OAAa,kBAAC,QAAD;EAAM,WAAU;EAAwB,UAAA;CAAU,CAAA,IACrE,OAAOA,KAAM,YAAkB,kBAAC,QAAD;EAAM,WAAU;EAAyB,UAAA,OAAOA,CAAC;CAAQ,CAAA,IACxF,OAAOA,KAAM,WAAiB,kBAAC,QAAD;EAAM,WAAU;EAA6B,UAAAA;CAAQ,CAAA,IAErF,kBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA;GAA+C;GAC5C,kBAACL,GAAD;IAAM,MAAM,OAAOK,CAAC;IAAU;GAAQ,CAAA;GAAC;EACpC;;AAEV;AAEA,SAASC,EAAY,GAAc;CACjC,IAAM,EAAE,WAAQ,YAASX,EAAQ,GAC3B,EAAE,gBAAaY,EAAWR,CAAW,GACrCS,IAAIf,EAAU;CACpB,OAAO;EACL;EACA,gBAAgB;GACd,EAAUgB,CAAI,CAAC,CAAC,MAAM,MAAOC,KAAMC,EAASH,EAAE,uBAAuB,aAAa,CAAC,CAAC;EACtF;CACF;AACF;AAEA,SAASI,EAAS,EAAE,SAAM,WAAQ,aAAiE;CACjG,IAAMJ,IAAIf,EAAU;CACpB,OACE,kBAAC,UAAD;EACE,MAAK;EACL,UAAU;EACV,eAAA;EACA,OAAOoB,IAASL,EAAE,uBAAuB,aAAa,IAAIA,EAAE,qBAAqB,oBAAoB,EAAE,QAAK,CAAC;EAC7G,UAAU,MAAM;GAEd,AADA,EAAE,gBAAgB,GAClBM,EAAO;EACT;EACA,WAAWtB,EACT,kPACAqB,IAAS,wBAAwB,WACnC;EAEA,UAAA,kBAACnB,GAAD;GAAM,MAAMmB,IAASxB,IAAoBC;GAAmB,MAAK;EAAM,CAAA;CACjE,CAAA;AAEZ;AAEA,IAAM2B,KAAY,GAAc,MAAmBR,MAASS,MAAWA,MAAW,MAAMT,EAAK,WAAW,GAAGS,EAAO,EAAE,KAAKT,EAAK,WAAW,GAAGS,EAAO,EAAE;AAErJ,SAASC,EAAU,GAAmB,GAAsB;CAC1D,IAAMC,IAAOC,EAAK,QAAQ,aAAa;CACvC,IAAI,CAACD,GAAM,OAAO;CAClB,IAAME,IAAQ,CAAC,GAAGF,EAAK,iBAA8B,iBAAiB,CAAC,GACjE,IAAIE,EAAM,QAAQD,CAAI,GACtBE,IACJC,MAAQ,cAAcF,EAAM,IAAI,KAAKE,MAAQ,YAAYF,EAAM,IAAI,KAAKE,MAAQ,SAASF,EAAM,KAAKE,MAAQ,QAAQF,EAAMA,EAAM,SAAS,KAAK,KAAA;CAGhJ,OAFKC,KACLA,EAAK,MAAM,GACJ,MAFWC,MAAQ,eAAeA,MAAQ,aAAaA,MAAQ,UAAUA,MAAQ;AAG1F;AAEA,SAASC,EAAK,EACZ,SACA,UACA,SACA,UACA,MAAMC,GACN,UACA,WASC;CACD,IAAM,CAACC,GAAMC,KAAWC,EAASC,IAAQJ,CAAW,GAC9ClB,IAAIf,EAAU,GACd2B,IAAOb,EAAWR,CAAW,GAC7B,EAAE,WAAQ,gBAAaO,EAAYG,CAAI,GACvCsB,IAA0B,OAAOC,KAAU,cAAnCA,GACRC,IAAqCF,IAAS,MAAM,QAAQC,CAAK,IAAIA,EAAM,KAAK,GAAG,MAAM,CAAC7B,GAAGE,CAAC,CAAC,IAAI,OAAO,QAAQ2B,CAAK,IAAK,CAAC,GAC7HE,IACJC,MAAS,KAAA,IAAY,OAAO,OAAOA,KAAS,WAC1C,kBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CAA4CA,GAAK,IAAQ;CAEzD,CAAA,IAAA,kBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA;GAA0B;GACvB,kBAACnC,GAAD;IAAM,MAAMmC;IAAa;GAAQ,CAAA;GAAC;GAAC,kBAAC,QAAD;IAAM,WAAU;IAAmB,UAAA;GAAQ,CAAA;EAC3E;C,IAEJC,IAAQC,IAAO,KAAK,KACpBC,KAAU,MAAkB;EAEhC,AADAV,EAAQL,CAAI,GACR,CAACA,KAAQN,EAASG,EAAK,QAAQX,CAAI,KAAGW,EAAK,UAAUX,CAAI;CAC/D,GA2BM8B,IAAO;EACX,MAAM;EACN,cAAcT,IAAQ;EACtB,UAAUV,EAAK,WAAWX,IAAO,IAAI;EACrC,YA9BiB,MAA2C;GAC5D,AAAI,EAAE,WAAW,EAAE,mBACd,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,YAAY,MAAM,OAAOA,KAC7D,EAAE,eAAe,GACjB+B,EAAS,KAGPT,MAAU,EAAE,QAAQ,WAAW,EAAE,QAAQ,QAC3C,EAAE,eAAe,GACjBO,EAAO,CAACX,CAAI,KAGVI,KAAS,EAAE,QAAQ,gBACrB,EAAE,eAAe,GACZJ,IACIM,EAAQ,UAAQd,EAAU,EAAE,eAAe,WAAW,IADpDS,EAAQ,EAAI,KAIrB,EAAE,QAAQ,eACZ,EAAE,eAAe,GACbG,KAASJ,IAAMW,EAAO,EAAK,IAC1B,EAAE,cAAc,eAAe,eAAe,QAAqB,kBAAkB,CAAC,EAAE,cAA2B,iBAAiB,CAAC,EAAE,MAAM,KAGhJnB,EAAU,EAAE,eAAe,EAAE,GAAG,KAAG,EAAE,eAAe;EAC1D;EAME,UAAU,MAAwC;GAChD,AAAI,EAAE,WAAW,EAAE,iBAAeC,EAAK,UAAUX,CAAI;EACvD;CACF;CACA,IAAI,CAACsB,GACH,OACE,kBAAC,OAAD;EAAK,kBAAe;EAClB,UAAA,kBAAC,OAAD;GAAK,GAAIQ;GAAM,WAAU;GAAoE,OAAO,EAAE,aAAaT,IAAQ,KAAK,GAAG;GAAnI,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA;KACGI;KACD,kBAAC9B,GAAD;MAAQ,GAAG4B;MAAc;KAAQ,CAAA;KACjC,kBAAC,QAAD;MAAM,WAAU;MAAoB,UAAAI;KAAY,CAAA;IAC5C;GACL,CAAA,GAAA3B,KAAQ,kBAACG,GAAD;IAAgB;IAAc;IAAQ,QAAQ4B;GAAW,CAAA,CAC/D;;CACF,CAAA;CAGT,IAAM,CAACC,GAAGC,KAAK,MAAM,QAAQV,CAAK,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;CAC5D,OACE,kBAAC,OAAD;EAAK,kBAAe;EAApB,UAAA,CACE,kBAAC,OAAD;GAAK,GAAIO;GAAM,iBAAeZ;GAAM,WAAU;GAAqE,OAAO,EAAE,aAAaG,IAAQ,GAAG;GAApJ,UAAA;IACE,kBAAC,UAAD;KACE,MAAK;KACL,UAAU;KACV,eAAA;KACA,eAAeQ,EAAO,CAACX,CAAI;KAC3B,WAAU;KAEV,UAAA,kBAACjC,GAAD;MAAM,MAAMH;MAAyB,MAAK;MAAK,WAAWC,EAAG,qCAAqCmC,KAAQ,WAAW;KAAI,CAAA;IACnH,CAAA;IACR,kBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA;MACGO;MACD,kBAAC,QAAD;OAAM,WAAU;OAAoB,UAAAO;MAAQ,CAAA;MAC3C,CAACd,KACA,kBAAC,UAAD;OACE,MAAK;OACL,UAAU;OACV,eAAeC,EAAQ,EAAI;OAC3B,WAAU;OAET,UAAA,MAAM,QAAQI,CAAK,IAChBxB,EAAE,kBAAkB,qDAAqD;QAAE,OAAOyB,EAAQ;QAAQ,GAAG,OAAOA,EAAQ,MAAM;OAAE,CAAC,IAC7HzB,EAAE,iBAAiB,mDAAmD;QAAE,OAAOyB,EAAQ;QAAQ,GAAG,OAAOA,EAAQ,MAAM;OAAE,CAAC;MACxH,CAAA;MAET,CAACN,KACA,kBAAC,QAAD;OAAM,WAAU;OAAhB,UAAA,CACGe,GACAN,CACG;;KAEJ;;IACL3B,KAAQ,kBAACG,GAAD;KAAgB;KAAc;KAAQ,QAAQ4B;IAAW,CAAA;GAC/D;EACJ,CAAA,GAAAb,KACC,kBAAAvC,GAAA,EAAA,UAAA,CACG6C,EAAQ,KAAK,CAACW,GAAGvC,IAAI,MACpB,kBAACoB,GAAD;GAEE,MAAMmB;GACN,OAAOvC;GACP,MAAM,OAAOuC,KAAM,WAAW,GAAGnC,EAAK,GAAGmC,EAAE,KAAKnC,IAAO,GAAGA,EAAK,GAAGmC,MAAM,OAAOA,CAAC;GAChF,OAAOd,IAAQ;GACf,MAAMJ;GACC;GACP,MAAMvB,MAAM8B,EAAQ,SAAS;EAC9B,GARMW,CAQN,CACF,GACD,kBAAC,OAAD;GAAK,eAAA;GAAY,WAAU;GAA4B,OAAO,EAAE,aAAad,IAAQ,KAAK,GAAG;GAA7F,UAAA,CACGY,GACAN,CACE;EACL,CAAA,CAAA,EAAA,CAAA,CAED;;AAET;AAEA,IAAaS,IAA2B,kBAA0C,SAAkB,EAAE,UAAO,kBAAe,GAAG,UAAO,aAAU,QAAQ,gBAAa,GAAK;CACxK,IAAMrC,IAAIf,EAAU,GACd,CAACqD,GAAQC,KAAalB,EAAS,EAAE,GACjC,CAACmB,GAAMC,KAAWpB,EAAS,EAAE,GAC7BqB,IAAQC,EAAkD,KAAA,CAAS,GACnEC,IAAOD,EAAuB,IAAI;CACxC,QAAsB;EACpB,AAAKC,EAAK,SAAS,cAAc,iCAA+B,KAAGL,EAAU,EAAE;CACjF,GAAG,CAACf,CAAK,CAAC;CACV,IAAMZ,IAAOiC,SACJ;EACL;EACA;EACA,WAAW,MAAS;GAGlB,AAFAJ,EAAQ,EAAE,GACV,aAAaC,EAAM,OAAO,GAC1B,EAAM,UAAU,iBAAiBD,EAAQ/C,CAAI,GAAG,EAAE;EACpD;CACF,IACA,CAAC4C,CAAM,CACT;CACA,OACE,kBAAC,OAAD;EACO;EACL,WAAWtD,EAAG,wEAAwEK,EAAyB,QAAQyD,EAAQ,CAAC,SAASC,CAAS;EAFpJ,UAAA,CAIE,kBAACxD,EAAY,UAAb;GAAsB,OAAOqB;GAC3B,UAAA,kBAAC,OAAD;IAAK,KAAKgC;IAAM,MAAK;IAAO,cAAY5C,EAAE,kBAAkB,MAAM;IAChE,UAAA,kBAACiB,GAAD;KAAa;KAAe,MAAK;KAAG,OAAO;KAAG,MAAM+B;KAAqB;KAAO,MAAA;IAAM,CAAA;GACnF,CAAA;EACe,CAAA,GACtB,kBAAC,OAAD;GAAK,MAAK;GAAS,WAAU;GAC1B,UAAAR;EACE,CAAA,CACF;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "./cn-
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
3
|
import { i as t, n } from "./context-BELWW79w.js";
|
|
4
4
|
import { Fragment as r, forwardRef as i, useSyncExternalStore as a } from "react";
|
|
5
|
-
import {
|
|
5
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/kbd/kbd.tsx
|
|
7
|
-
var
|
|
7
|
+
var l = { tone: {
|
|
8
8
|
default: { classes: "bg-fill-1 text-fg-secondary shadow-ring" },
|
|
9
9
|
onInk: { classes: "bg-on-ink/15 text-on-ink/80 shadow-none" }
|
|
10
|
-
} },
|
|
11
|
-
function
|
|
10
|
+
} }, u = { tone: "default" }, d = () => typeof navigator < "u" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent), f = () => () => void 0, p = () => a(f, d, () => !1);
|
|
11
|
+
function m(e) {
|
|
12
12
|
let t = e("kbd.ctrl", "Ctrl"), n = e("kbd.optionName", "Option");
|
|
13
13
|
return {
|
|
14
14
|
mod: [
|
|
@@ -83,8 +83,8 @@ function p(e) {
|
|
|
83
83
|
]
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
-
function
|
|
87
|
-
let i =
|
|
86
|
+
function h(e, t = n, r = d()) {
|
|
87
|
+
let i = m(t)[e.toLowerCase()];
|
|
88
88
|
return i ? {
|
|
89
89
|
visual: r ? i[0] : i[1],
|
|
90
90
|
spoken: i[2]
|
|
@@ -93,40 +93,42 @@ function m(e, t = n, r = u()) {
|
|
|
93
93
|
spoken: e
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
|
-
var
|
|
97
|
-
let
|
|
98
|
-
return /* @__PURE__ */
|
|
99
|
-
ref:
|
|
100
|
-
className: e("inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-
|
|
101
|
-
...d && d.spoken !== d.visual ? {
|
|
102
|
-
"aria-label": d.spoken,
|
|
103
|
-
title: d.spoken
|
|
104
|
-
} : {},
|
|
96
|
+
var g = /* @__PURE__ */ i(function({ children: n, tone: r = "default", className: i, ...a }, u) {
|
|
97
|
+
let d = t(), f = p(), m = typeof n == "string" ? h(n, d, f) : null, g = m && m.spoken.toLowerCase() !== m.visual.toLowerCase() ? m.spoken : null;
|
|
98
|
+
return /* @__PURE__ */ s("kbd", {
|
|
99
|
+
ref: u,
|
|
100
|
+
className: e("relative inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-caption font-medium tabular", l.tone[r].classes, i),
|
|
105
101
|
...a,
|
|
106
|
-
children:
|
|
102
|
+
children: g ? /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("span", {
|
|
103
|
+
"aria-hidden": "true",
|
|
104
|
+
children: m?.visual
|
|
105
|
+
}), /* @__PURE__ */ s("span", {
|
|
106
|
+
className: "sr-only",
|
|
107
|
+
children: g
|
|
108
|
+
})] }) : m ? m.visual : n
|
|
107
109
|
});
|
|
108
110
|
});
|
|
109
|
-
process.env.NODE_ENV !== "production" && (
|
|
110
|
-
var
|
|
111
|
+
process.env.NODE_ENV !== "production" && (g.displayName = "Kbd");
|
|
112
|
+
var _ = /* @__PURE__ */ i(function({ keys: n, tone: i = "default", className: a, ...o }, l) {
|
|
111
113
|
let u = t(), d = n.length > 0 && Array.isArray(n[0]) ? n : [n];
|
|
112
|
-
return /* @__PURE__ */
|
|
114
|
+
return /* @__PURE__ */ s("span", {
|
|
113
115
|
ref: l,
|
|
114
116
|
className: e("inline-flex items-center gap-4 align-middle", a),
|
|
115
|
-
...
|
|
116
|
-
children: d.map((t, n) => /* @__PURE__ */
|
|
117
|
+
...o,
|
|
118
|
+
children: d.map((t, n) => /* @__PURE__ */ c(r, { children: [n > 0 && /* @__PURE__ */ s("span", {
|
|
117
119
|
className: e("text-caption font-medium", i === "onInk" ? "text-on-ink/70" : "text-fg-secondary"),
|
|
118
120
|
children: u("kbd.then", "then")
|
|
119
|
-
}), /* @__PURE__ */
|
|
121
|
+
}), /* @__PURE__ */ s("span", {
|
|
120
122
|
className: "inline-flex items-center gap-2",
|
|
121
|
-
children: t.map((e) => /* @__PURE__ */
|
|
123
|
+
children: t.map((e, t) => /* @__PURE__ */ s(g, {
|
|
122
124
|
tone: i,
|
|
123
125
|
children: e
|
|
124
|
-
}, e))
|
|
126
|
+
}, `${e}-${t}`))
|
|
125
127
|
})] }, n))
|
|
126
128
|
});
|
|
127
129
|
});
|
|
128
|
-
process.env.NODE_ENV !== "production" && (
|
|
130
|
+
process.env.NODE_ENV !== "production" && (_.displayName = "KbdSequence");
|
|
129
131
|
//#endregion
|
|
130
|
-
export {
|
|
132
|
+
export { h as a, _ as i, l as n, g as r, u as t };
|
|
131
133
|
|
|
132
|
-
//# sourceMappingURL=kbd-
|
|
134
|
+
//# sourceMappingURL=kbd-8A0ML_up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbd-8A0ML_up.js","names":["_Fragment","cn","useUiText","Fragment$1","KAESO_KBD_VARIANTS","KAESO_KBD_DEFAULT_VARIANTS","isMac","subscribePlatform","useMac","useSyncExternalStore","modifiers","ctrl","t","option","keyLabel","englishText","m","key","mac","Kbd","props","label","children","spoken","tone","className","KbdSequence","steps","keys","Fragment","i","chord","k","j"],"sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import { forwardRef, Fragment, useSyncExternalStore, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { englishText, useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_KBD_VARIANTS = {\n tone: {\n default: { classes: \"bg-fill-1 text-fg-secondary shadow-ring\" },\n onInk: { classes: \"bg-on-ink/15 text-on-ink/80 shadow-none\" },\n },\n} as const;\nexport const KAESO_KBD_DEFAULT_VARIANTS = { tone: \"default\" } as const;\n\nconst isMac = () => typeof navigator !== \"undefined\" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent);\nconst subscribePlatform = () => () => undefined;\nconst useMac = () => useSyncExternalStore(subscribePlatform, isMac, () => false);\n\nfunction modifiers(t: UiText): Record<string, [mac: string, other: string, name: string]> {\n const ctrl = t(\"kbd.ctrl\", \"Ctrl\");\n const option = t(\"kbd.optionName\", \"Option\");\n return {\n mod: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n cmd: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n ctrl: [\"⌃\", ctrl, t(\"kbd.controlName\", \"Control\")],\n alt: [\"⌥\", \"Alt\", option],\n option: [\"⌥\", \"Alt\", option],\n shift: [\"⇧\", t(\"kbd.shift\", \"Shift\"), t(\"kbd.shiftName\", \"Shift\")],\n enter: [\"↵\", \"Enter\", t(\"kbd.enterName\", \"Enter\")],\n esc: [\"esc\", \"Esc\", t(\"kbd.escapeName\", \"Escape\")],\n backspace: [\"⌫\", t(\"kbd.backspace\", \"Backspace\"), t(\"kbd.backspaceName\", \"Backspace\")],\n up: [\"↑\", \"↑\", t(\"kbd.upName\", \"Up\")],\n down: [\"↓\", \"↓\", t(\"kbd.downName\", \"Down\")],\n left: [\"←\", \"←\", t(\"kbd.leftName\", \"Left\")],\n right: [\"→\", \"→\", t(\"kbd.rightName\", \"Right\")],\n tab: [\"⇥\", \"Tab\", t(\"kbd.tabName\", \"Tab\")],\n };\n}\n\nexport function keyLabel(key: string, t: UiText = englishText, mac: boolean = isMac()): { visual: string; spoken: string } {\n const m = modifiers(t)[key.toLowerCase()];\n if (!m) return { visual: key.length === 1 ? key.toUpperCase() : key, spoken: key };\n return { visual: mac ? m[0] : m[1], spoken: m[2] };\n}\n\nexport interface KbdProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const Kbd = /* @__PURE__ */ forwardRef<HTMLElement, KbdProps>(function Kbd({ children, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const mac = useMac();\n const label = typeof children === \"string\" ? keyLabel(children, t, mac) : null;\n const spoken = label && label.spoken.toLowerCase() !== label.visual.toLowerCase() ? label.spoken : null;\n return (\n <kbd\n ref={ref}\n className={cn(\n \"relative inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-caption font-medium tabular\",\n KAESO_KBD_VARIANTS.tone[tone].classes,\n className,\n )}\n {...props}\n >\n {spoken ? (\n <>\n <span aria-hidden=\"true\">{label?.visual}</span>\n <span className=\"sr-only\">{spoken}</span>\n </>\n ) : label ? (\n label.visual\n ) : (\n children\n )}\n </kbd>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Kbd.displayName = \"Kbd\";\n\nexport interface KbdSequenceProps extends HTMLAttributes<HTMLSpanElement> {\n keys: string[][] | string[];\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const KbdSequence = /* @__PURE__ */ forwardRef<HTMLSpanElement, KbdSequenceProps>(function KbdSequence({ keys, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const steps: string[][] = keys.length > 0 && Array.isArray(keys[0]) ? (keys as string[][]) : [keys as string[]];\n return (\n <span ref={ref} className={cn(\"inline-flex items-center gap-4 align-middle\", className)} {...props}>\n {steps.map((chord, i) => (\n <Fragment key={i}>\n {i > 0 && <span className={cn(\"text-caption font-medium\", tone === \"onInk\" ? \"text-on-ink/70\" : \"text-fg-secondary\")}>{t(\"kbd.then\", \"then\")}</span>}\n <span className=\"inline-flex items-center gap-2\">\n {chord.map((k, j) => (\n <Kbd key={`${k}-${j}`} tone={tone}>\n {k}\n </Kbd>\n ))}\n </span>\n </Fragment>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KbdSequence.displayName = \"KbdSequence\";\n"],"mappings":";;;;;;AAIA,IAAaI,IAAqB,EAChC,MAAM;CACJ,SAAS,EAAE,SAAS,0CAA0C;CAC9D,OAAO,EAAE,SAAS,0CAA0C;AAC9D,EACF,GACaC,IAA6B,EAAE,MAAM,UAAU,GAEtDC,UAAc,OAAO,YAAc,OAAe,kBAAkB,KAAK,UAAU,YAAY,UAAU,SAAS,GAClHC,gBAAgC,KAAA,GAChCC,UAAeC,EAAqBF,GAAmBD,SAAa,EAAK;AAE/E,SAASI,EAAU,GAAuE;CACxF,IAAMC,IAAOC,EAAE,YAAY,MAAM,GAC3BC,IAASD,EAAE,kBAAkB,QAAQ;CAC3C,OAAO;EACL,KAAK;GAAC;GAAKD;GAAMC,EAAE,mBAAmB,SAAS;EAAC;EAChD,KAAK;GAAC;GAAKD;GAAMC,EAAE,mBAAmB,SAAS;EAAC;EAChD,MAAM;GAAC;GAAKD;GAAMC,EAAE,mBAAmB,SAAS;EAAC;EACjD,KAAK;GAAC;GAAK;GAAOC;EAAM;EACxB,QAAQ;GAAC;GAAK;GAAOA;EAAM;EAC3B,OAAO;GAAC;GAAKD,EAAE,aAAa,OAAO;GAAGA,EAAE,iBAAiB,OAAO;EAAC;EACjE,OAAO;GAAC;GAAK;GAASA,EAAE,iBAAiB,OAAO;EAAC;EACjD,KAAK;GAAC;GAAO;GAAOA,EAAE,kBAAkB,QAAQ;EAAC;EACjD,WAAW;GAAC;GAAKA,EAAE,iBAAiB,WAAW;GAAGA,EAAE,qBAAqB,WAAW;EAAC;EACrF,IAAI;GAAC;GAAK;GAAKA,EAAE,cAAc,IAAI;EAAC;EACpC,MAAM;GAAC;GAAK;GAAKA,EAAE,gBAAgB,MAAM;EAAC;EAC1C,MAAM;GAAC;GAAK;GAAKA,EAAE,gBAAgB,MAAM;EAAC;EAC1C,OAAO;GAAC;GAAK;GAAKA,EAAE,iBAAiB,OAAO;EAAC;EAC7C,KAAK;GAAC;GAAK;GAAOA,EAAE,eAAe,KAAK;EAAC;CAC3C;AACF;AAEA,SAAgBE,EAAS,GAAa,IAAYC,GAAa,IAAeT,EAAM,GAAuC;CACzH,IAAMU,IAAIN,EAAU,CAAC,CAAC,CAACO,EAAI,YAAY;CAEvC,OADKD,IACE;EAAE,QAAQE,IAAMF,EAAE,KAAKA,EAAE;EAAI,QAAQA,EAAE;CAAG,IADlC;EAAE,QAAQC,EAAI,WAAW,IAAIA,EAAI,YAAY,IAAIA;EAAK,QAAQA;CAAI;AAEnF;AAOA,IAAaE,IAAsB,kBAAkC,SAAa,EAAE,aAAU,UAAO,WAAW,cAAW,GAAGC,KAAS,GAAK;CAC1I,IAAMR,IAAIV,EAAU,GACdgB,IAAMV,EAAO,GACba,IAAQ,OAAOC,KAAa,WAAWR,EAASQ,GAAUV,GAAGM,CAAG,IAAI,MACpEK,IAASF,KAASA,EAAM,OAAO,YAAY,MAAMA,EAAM,OAAO,YAAY,IAAIA,EAAM,SAAS;CACnG,OACE,kBAAC,OAAD;EACO;EACL,WAAWpB,EACT,uIACAG,EAAmB,KAAKoB,EAAK,CAAC,SAC9BC,CACF;EACA,GAAIL;EAEH,UAAAG,IACC,kBAAAvB,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;GAAM,eAAY;GAAQ,UAAAqB,GAAO;EAAa,CAAA,GAC9C,kBAAC,QAAD;GAAM,WAAU;GAAW,UAAAE;EAAa,CAAA,CACxC,EAAA,CAAA,IACAF,IACFA,EAAM,SAENC;CAEC,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAI,cAAc;AAO7D,IAAaI,IAA8B,kBAA8C,SAAqB,EAAE,SAAM,UAAO,WAAW,cAAW,GAAGN,KAAS,GAAK;CAClK,IAAMR,IAAIV,EAAU,GACdyB,IAAoBC,EAAK,SAAS,KAAK,MAAM,QAAQA,EAAK,EAAE,IAAKA,IAAsB,CAACA,CAAgB;CAC9G,OACE,kBAAC,QAAD;EAAW;EAAK,WAAW3B,EAAG,+CAA+CwB,CAAS;EAAG,GAAIL;EAC1F,UAAAO,EAAM,KAAK,GAAO,MACjB,kBAACE,GAAD,EAAA,UAAA,CACGC,IAAI,KAAK,kBAAC,QAAD;GAAM,WAAW7B,EAAG,4BAA4BuB,MAAS,UAAU,mBAAmB,mBAAmB;GAAI,UAAAZ,EAAE,YAAY,MAAM;EAAQ,CAAA,GACnJ,kBAAC,QAAD;GAAM,WAAU;GACb,UAAAmB,EAAM,KAAK,GAAG,MACb,kBAACZ,GAAD;IAA6B;IAC1B,UAAAa;GACE,GAFK,GAAGA,EAAE,GAAGC,GAEb,CACN;EACG,CAAA,CACE,EAAA,GATKH,CASL,CACX;CACG,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
|
+
import { i as t } from "./context-BELWW79w.js";
|
|
4
|
+
import { forwardRef as n } from "react";
|
|
5
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/label/label.tsx
|
|
7
|
+
var a = { size: {
|
|
8
|
+
md: { classes: "text-body font-medium" },
|
|
9
|
+
sm: { classes: "text-small font-medium" }
|
|
10
|
+
} }, o = { size: "md" }, s = /* @__PURE__ */ n(function({ size: n = "md", optional: o, className: s, children: c, ...l }, u) {
|
|
11
|
+
let d = t();
|
|
12
|
+
return /* @__PURE__ */ i("label", {
|
|
13
|
+
ref: u,
|
|
14
|
+
className: e("inline-flex items-baseline gap-6 text-fg disabled:text-fg-disabled", a.size[n].classes, s),
|
|
15
|
+
...l,
|
|
16
|
+
children: [c, o && /* @__PURE__ */ r("span", {
|
|
17
|
+
className: e("font-regular text-fg-tertiary", n === "sm" ? "text-caption" : "text-small"),
|
|
18
|
+
children: d("label.optional", "Optional")
|
|
19
|
+
})]
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
process.env.NODE_ENV !== "production" && (s.displayName = "Label");
|
|
23
|
+
//#endregion
|
|
24
|
+
export { a as n, s as r, o as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=label-DW24Aj0Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-DW24Aj0Z.js","names":["cn","useUiText","KAESO_LABEL_VARIANTS","KAESO_LABEL_DEFAULT_VARIANTS","Label","props","t","size","className","children","optional"],"sources":["../../src/components/label/label.tsx"],"sourcesContent":["import { forwardRef, type LabelHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LABEL_VARIANTS = {\n size: {\n md: { classes: \"text-body font-medium\" },\n sm: { classes: \"text-small font-medium\" },\n },\n} as const;\nexport const KAESO_LABEL_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n size?: keyof typeof KAESO_LABEL_VARIANTS.size | undefined;\n optional?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Label = /* @__PURE__ */ forwardRef<HTMLLabelElement, LabelProps>(function Label({ size = \"md\", optional, className, children, ...props }, ref) {\n const t = useUiText();\n return (\n <label\n ref={ref}\n className={cn(\"inline-flex items-baseline gap-6 text-fg disabled:text-fg-disabled\", KAESO_LABEL_VARIANTS.size[size].classes, className)}\n {...props}\n >\n {children}\n {optional && (\n <span className={cn(\"font-regular text-fg-tertiary\", size === \"sm\" ? \"text-caption\" : \"text-small\")}>{t(\"label.optional\", \"Optional\")}</span>\n )}\n </label>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Label.displayName = \"Label\";\n"],"mappings":";;;;;;AAIA,IAAaE,IAAuB,EAClC,MAAM;CACJ,IAAI,EAAE,SAAS,wBAAwB;CACvC,IAAI,EAAE,SAAS,yBAAyB;AAC1C,EACF,GACaC,IAA+B,EAAE,MAAM,KAAK,GAQ5CC,IAAwB,kBAAyC,SAAe,EAAE,UAAO,MAAM,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CAC1J,IAAMC,IAAIL,EAAU;CACpB,OACE,kBAAC,SAAD;EACO;EACL,WAAWD,EAAG,sEAAsEE,EAAqB,KAAKK,EAAK,CAAC,SAASC,CAAS;EACtI,GAAIH;EAHN,UAAA,CAKGI,GACAC,KACC,kBAAC,QAAD;GAAM,WAAWV,EAAG,iCAAiCO,MAAS,OAAO,iBAAiB,YAAY;GAAI,UAAAD,EAAE,kBAAkB,UAAU;EAAQ,CAAA,CAEzI;;AAEX,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "./cn-
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
3
|
import { n as t, r as n } from "./link-provider-cvl8lSTT.js";
|
|
4
4
|
import { i as r } from "./context-BELWW79w.js";
|
|
5
|
-
import { t as i } from "./icon-
|
|
5
|
+
import { t as i } from "./icon-CBzOwqrX.js";
|
|
6
6
|
import { forwardRef as a } from "react";
|
|
7
7
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
8
|
import { ArrowUpRight01Icon as c } from "@hugeicons/core-free-icons";
|
|
9
9
|
//#region src/components/link/link.tsx
|
|
10
10
|
var l = { variant: {
|
|
11
|
-
inline: { classes: "text-inherit underline decoration-
|
|
11
|
+
inline: { classes: "text-inherit underline decoration-fg-tertiary decoration-1 underline-offset-3 hover:decoration-current" },
|
|
12
12
|
quiet: { classes: "text-fg-secondary no-underline hover:text-fg" },
|
|
13
|
-
standalone: { classes: "font-medium text-fg no-underline hover:underline hover:decoration-
|
|
13
|
+
standalone: { classes: "font-medium text-fg no-underline hover:underline hover:decoration-fg-tertiary hover:underline-offset-3" },
|
|
14
14
|
heading: { classes: "group/heading text-inherit no-underline" },
|
|
15
|
-
card: { classes: "mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline hover:bg-fill-2" }
|
|
15
|
+
card: { classes: "mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline outline-offset-2 hover:bg-fill-2" }
|
|
16
16
|
} }, u = { variant: "inline" }, d = /* @__PURE__ */ a(function({ href: a, variant: u = "inline", external: d, className: f, children: p, ...m }, h) {
|
|
17
17
|
let g = n(), _ = r(), v = d ?? t(a);
|
|
18
18
|
return /* @__PURE__ */ s(g, {
|
|
19
19
|
ref: h,
|
|
20
20
|
href: a,
|
|
21
|
-
className: e("relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target", l.variant[u].classes, f),
|
|
21
|
+
className: e("relative -mx-2 box-decoration-clone rounded-code px-2 outline-offset-0 transition-control focus-ring tap-target", l.variant[u].classes, u === "card" && v && "pe-36", f),
|
|
22
22
|
...v ? {
|
|
23
23
|
target: "_blank",
|
|
24
24
|
rel: "noopener noreferrer"
|
|
@@ -26,20 +26,20 @@ var l = { variant: {
|
|
|
26
26
|
...m,
|
|
27
27
|
children: [
|
|
28
28
|
p,
|
|
29
|
-
u === "heading" && /* @__PURE__ */ o("span", {
|
|
30
|
-
"aria-hidden": "true",
|
|
31
|
-
className: "ml-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100",
|
|
32
|
-
children: "#"
|
|
33
|
-
}),
|
|
34
29
|
v && /* @__PURE__ */ s("span", {
|
|
35
30
|
"aria-hidden": "true",
|
|
36
|
-
className: "whitespace-nowrap",
|
|
31
|
+
className: e("whitespace-nowrap", u === "card" && "absolute end-16 top-12"),
|
|
37
32
|
children: ["", /* @__PURE__ */ o(i, {
|
|
38
33
|
icon: c,
|
|
39
34
|
size: "xs",
|
|
40
|
-
className: "
|
|
35
|
+
className: "ms-2 inline-block align-middle"
|
|
41
36
|
})]
|
|
42
37
|
}),
|
|
38
|
+
u === "heading" && /* @__PURE__ */ o("span", {
|
|
39
|
+
"aria-hidden": "true",
|
|
40
|
+
className: "ms-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100",
|
|
41
|
+
children: "#"
|
|
42
|
+
}),
|
|
43
43
|
v && /* @__PURE__ */ o("span", {
|
|
44
44
|
className: "sr-only",
|
|
45
45
|
children: _("link.opensInNewTab", " (opens in a new tab)")
|
|
@@ -51,4 +51,4 @@ process.env.NODE_ENV !== "production" && (d.displayName = "Link");
|
|
|
51
51
|
//#endregion
|
|
52
52
|
export { l as n, d as r, u as t };
|
|
53
53
|
|
|
54
|
-
//# sourceMappingURL=link-
|
|
54
|
+
//# sourceMappingURL=link-CMjkcLQK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-CMjkcLQK.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-fg-tertiary decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-fg-tertiary hover:underline-offset-3\",\n },\n heading: {\n classes: \"group/heading text-inherit no-underline\",\n },\n card: {\n classes: \"mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline outline-offset-2 hover:bg-fill-2\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 outline-offset-0 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n variant === \"card\" && isExternal && \"pe-36\",\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {isExternal && (\n <span aria-hidden=\"true\" className={cn(\"whitespace-nowrap\", variant === \"card\" && \"absolute end-16 top-12\")}>\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ms-2 inline-block align-middle\" />\n </span>\n )}\n {variant === \"heading\" && (\n <span\n aria-hidden=\"true\"\n className=\"ms-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100\"\n >\n #\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;CACA,SAAS,EACP,SAAS,0CACX;CACA,MAAM,EACJ,SAAS,oHACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,mHACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCA,MAAY,UAAUH,KAAc,SACpCI,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EAVN,UAAA;GAYGQ;GACAL,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAWX,EAAG,qBAAqBc,MAAY,UAAU,wBAAwB;IAA1G,UAAA,CACG,KACD,kBAACV,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPe,MAAY,aACX,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;IACX,UAAA;GAEK,CAAA;GAEPH,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
|