@logicplanes/kaeso-ui 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -0
- package/NOTICE.md +1 -1
- package/ai/component-guides.md +249 -24
- package/ai/component-registry.json +1044 -67
- package/ai/component-registry.md +238 -50
- package/ai/icons.md +1 -1
- package/ai/tokens.md +7 -3
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +5 -5
- package/dist/blocks/resource-list.js +4 -4
- package/dist/chunks/app-frame-B9vrgwaE.js +220 -0
- package/dist/chunks/app-frame-B9vrgwaE.js.map +1 -0
- package/dist/chunks/{avatar-D2nJNbtC.js → avatar-DOzOhYJr.js} +2 -2
- package/dist/chunks/{avatar-D2nJNbtC.js.map → avatar-DOzOhYJr.js.map} +1 -1
- package/dist/chunks/{badge-Dkyhs0_j.js → badge-wUHlj7m3.js} +2 -2
- package/dist/chunks/{badge-Dkyhs0_j.js.map → badge-wUHlj7m3.js.map} +1 -1
- package/dist/chunks/{banner-DxGBPQ7p.js → banner-BBlNFHd-.js} +4 -4
- package/dist/chunks/{banner-DxGBPQ7p.js.map → banner-BBlNFHd-.js.map} +1 -1
- package/dist/chunks/{button-DQvoOxVQ.js → button-CAPyW-v8.js} +8 -8
- package/dist/chunks/{button-DQvoOxVQ.js.map → button-CAPyW-v8.js.map} +1 -1
- package/dist/chunks/{calendar-CN3YJi2k.js → calendar-CBeptQFq.js} +2 -2
- package/dist/chunks/{calendar-CN3YJi2k.js.map → calendar-CBeptQFq.js.map} +1 -1
- package/dist/chunks/{checkbox-BgRdbfCE.js → checkbox-C5yvSS7O.js} +3 -3
- package/dist/chunks/{checkbox-BgRdbfCE.js.map → checkbox-C5yvSS7O.js.map} +1 -1
- package/dist/chunks/{cn-CidVUKMm.js → cn-DUDmdLpZ.js} +3 -1
- package/dist/chunks/cn-DUDmdLpZ.js.map +1 -0
- package/dist/chunks/{code-BADhvsgC.js → code-C49NzHUQ.js} +2 -2
- package/dist/chunks/{code-BADhvsgC.js.map → code-C49NzHUQ.js.map} +1 -1
- package/dist/chunks/{code-block-DxtladFW.js → code-block-DREsvJ-g.js} +24 -21
- package/dist/chunks/code-block-DREsvJ-g.js.map +1 -0
- package/dist/chunks/{collapsible-Cw_1aem5.js → collapsible-CDQq1Y9x.js} +6 -6
- package/dist/chunks/collapsible-CDQq1Y9x.js.map +1 -0
- package/dist/chunks/combobox-DqtzsAKG.js +314 -0
- package/dist/chunks/combobox-DqtzsAKG.js.map +1 -0
- package/dist/chunks/command-list-D5k0uvkR.js +417 -0
- package/dist/chunks/command-list-D5k0uvkR.js.map +1 -0
- package/dist/chunks/{copy-button-DXxn-YYZ.js → copy-button-CNpEnS04.js} +6 -6
- package/dist/chunks/{copy-button-DXxn-YYZ.js.map → copy-button-CNpEnS04.js.map} +1 -1
- package/dist/chunks/{core-K960A4OT.js → core-CqLWVMDI.js} +36 -36
- package/dist/chunks/core-CqLWVMDI.js.map +1 -0
- package/dist/chunks/{date-popup-B-6xhb-1.js → date-popup-BgDz6SUj.js} +4 -4
- package/dist/chunks/{date-popup-B-6xhb-1.js.map → date-popup-BgDz6SUj.js.map} +1 -1
- package/dist/chunks/{de-CTAo4KL7.js → de-CkXZKaBD.js} +37 -5
- package/dist/chunks/de-CkXZKaBD.js.map +1 -0
- package/dist/chunks/dialog-truWH0qe.js +353 -0
- package/dist/chunks/dialog-truWH0qe.js.map +1 -0
- package/dist/chunks/{empty-DIbBpytW.js → empty-YXmSkKzR.js} +2 -2
- package/dist/chunks/{empty-DIbBpytW.js.map → empty-YXmSkKzR.js.map} +1 -1
- package/dist/chunks/{field-d8V94bvZ.js → field-BZriODU7.js} +3 -3
- package/dist/chunks/field-BZriODU7.js.map +1 -0
- package/dist/chunks/{icon-CeNQtobn.js → icon-BqujXDUc.js} +2 -2
- package/dist/chunks/{icon-CeNQtobn.js.map → icon-BqujXDUc.js.map} +1 -1
- package/dist/chunks/{icon-button-_x1RUphC.js → icon-button-D4O4puwH.js} +3 -3
- package/dist/chunks/{icon-button-_x1RUphC.js.map → icon-button-D4O4puwH.js.map} +1 -1
- package/dist/chunks/identity-CsZvAUwu.js +361 -0
- package/dist/chunks/identity-CsZvAUwu.js.map +1 -0
- package/dist/chunks/{input-CNTfI6YE.js → input-B0wtkcNh.js} +5 -5
- package/dist/chunks/{input-CNTfI6YE.js.map → input-B0wtkcNh.js.map} +1 -1
- package/dist/chunks/{input-group-CYA1MEoZ.js → input-group-BQLw06B0.js} +33 -27
- package/dist/chunks/input-group-BQLw06B0.js.map +1 -0
- package/dist/chunks/{inset-BLMdxX4I.js → inset-BnBj8NJV.js} +12 -2
- package/dist/chunks/inset-BnBj8NJV.js.map +1 -0
- package/dist/chunks/{iso-field-1qmg7TP8.js → iso-field-BUXgY1dB.js} +5 -3
- package/dist/chunks/{iso-field-1qmg7TP8.js.map → iso-field-BUXgY1dB.js.map} +1 -1
- package/dist/chunks/{json-view-B6KHIWzh.js → json-view-BkG2hTXV.js} +11 -10
- package/dist/chunks/{json-view-B6KHIWzh.js.map → json-view-BkG2hTXV.js.map} +1 -1
- package/dist/chunks/{kbd-CBcBDvqU.js → kbd-DqWmbr_e.js} +2 -2
- package/dist/chunks/{kbd-CBcBDvqU.js.map → kbd-DqWmbr_e.js.map} +1 -1
- package/dist/chunks/{link-vz9aV8WX.js → link-YMcxM-BZ.js} +4 -4
- package/dist/chunks/{link-vz9aV8WX.js.map → link-YMcxM-BZ.js.map} +1 -1
- package/dist/chunks/{link-provider---9JdxTg.js → link-provider-BsUxhZKG.js} +2 -2
- package/dist/chunks/{link-provider---9JdxTg.js.map → link-provider-BsUxhZKG.js.map} +1 -1
- package/dist/chunks/list-wXZIZo_s.js +492 -0
- package/dist/chunks/list-wXZIZo_s.js.map +1 -0
- package/dist/chunks/{loader-CUehxvSZ.js → loader-ENBh2Fbt.js} +2 -2
- package/dist/chunks/{loader-CUehxvSZ.js.map → loader-ENBh2Fbt.js.map} +1 -1
- package/dist/chunks/{markdown-5NyaHHfN.js → markdown-DWyxjsSY.js} +10 -10
- package/dist/chunks/{markdown-5NyaHHfN.js.map → markdown-DWyxjsSY.js.map} +1 -1
- package/dist/chunks/{menu-DyVPwgfF.js → menu-Bnfi9P3t.js} +7 -7
- package/dist/chunks/{menu-DyVPwgfF.js.map → menu-Bnfi9P3t.js.map} +1 -1
- package/dist/chunks/{meter-DWhyzFGQ.js → meter-DhTnem4k.js} +2 -2
- package/dist/chunks/{meter-DWhyzFGQ.js.map → meter-DhTnem4k.js.map} +1 -1
- package/dist/chunks/nav-sheet-QqNRHo-y.js +60 -0
- package/dist/chunks/nav-sheet-QqNRHo-y.js.map +1 -0
- package/dist/chunks/{nav-wordmark-DLkItdvo.js → nav-wordmark-DmbT1Aiw.js} +2 -2
- package/dist/chunks/{nav-wordmark-DLkItdvo.js.map → nav-wordmark-DmbT1Aiw.js.map} +1 -1
- package/dist/chunks/option-checkbox-Df7WhGn4.js +25 -0
- package/dist/chunks/option-checkbox-Df7WhGn4.js.map +1 -0
- package/dist/chunks/over-sheet-B8vzr_zU.js +8 -0
- package/dist/chunks/over-sheet-B8vzr_zU.js.map +1 -0
- package/dist/chunks/{page-header-CEPZzhRp.js → page-header-Ccnrspbp.js} +5 -5
- package/dist/chunks/{page-header-CEPZzhRp.js.map → page-header-Ccnrspbp.js.map} +1 -1
- package/dist/chunks/{pagination-CCMxQ5pH.js → pagination-CEmWZNjp.js} +5 -4
- package/dist/chunks/{pagination-CCMxQ5pH.js.map → pagination-CEmWZNjp.js.map} +1 -1
- package/dist/chunks/picker-popover-C4ElNk7t.js +102 -0
- package/dist/chunks/picker-popover-C4ElNk7t.js.map +1 -0
- package/dist/chunks/{popover-BE7VO-a4.js → popover-bjxg020P.js} +3 -3
- package/dist/chunks/{popover-BE7VO-a4.js.map → popover-bjxg020P.js.map} +1 -1
- package/dist/chunks/{radio-CUxbLCvD.js → radio-DwYcXAzv.js} +2 -2
- package/dist/chunks/{radio-CUxbLCvD.js.map → radio-DwYcXAzv.js.map} +1 -1
- package/dist/chunks/range-popup-CG9Jo5B7.js +128 -0
- package/dist/chunks/range-popup-CG9Jo5B7.js.map +1 -0
- package/dist/chunks/release-art-Chd8l9Rf.js +555 -0
- package/dist/chunks/release-art-Chd8l9Rf.js.map +1 -0
- package/dist/chunks/{resize-motion-CMaidkwe.js → resize-motion-BWGMchyP.js} +27 -23
- package/dist/chunks/resize-motion-BWGMchyP.js.map +1 -0
- package/dist/chunks/{rights-BbiJ0AJB.js → rights-hMoaFasn.js} +12 -12
- package/dist/chunks/rights-hMoaFasn.js.map +1 -0
- package/dist/chunks/{section-DzOLLN1p.js → section-BsET7Fo-.js} +4 -4
- package/dist/chunks/{section-DzOLLN1p.js.map → section-BsET7Fo-.js.map} +1 -1
- package/dist/chunks/{segmented-MrinfDL8.js → segmented-DXKVF-nY.js} +4 -4
- package/dist/chunks/{segmented-MrinfDL8.js.map → segmented-DXKVF-nY.js.map} +1 -1
- package/dist/chunks/{select-Bc4kRiSG.js → select-Bbv2f5F8.js} +63 -80
- package/dist/chunks/select-Bbv2f5F8.js.map +1 -0
- package/dist/chunks/{separator-D5AzVFTS.js → separator-CpAUELNs.js} +2 -2
- package/dist/chunks/{separator-D5AzVFTS.js.map → separator-CpAUELNs.js.map} +1 -1
- package/dist/chunks/{sidebar-5IA18LuP.js → sidebar-Dey1ZfGt.js} +54 -51
- package/dist/chunks/sidebar-Dey1ZfGt.js.map +1 -0
- package/dist/chunks/{sidebar-menu-DRWRxcJ3.js → sidebar-menu-ct8IiL4z.js} +2 -2
- package/dist/chunks/{sidebar-menu-DRWRxcJ3.js.map → sidebar-menu-ct8IiL4z.js.map} +1 -1
- package/dist/chunks/{skeleton-kfuqdl1a.js → skeleton-BM797MAg.js} +2 -2
- package/dist/chunks/{skeleton-kfuqdl1a.js.map → skeleton-BM797MAg.js.map} +1 -1
- package/dist/chunks/{slider-DbhjJ3ML.js → slider-Ds-tqY-1.js} +2 -2
- package/dist/chunks/{slider-DbhjJ3ML.js.map → slider-Ds-tqY-1.js.map} +1 -1
- package/dist/chunks/status-dot-BqVOlShY.js +29 -0
- package/dist/chunks/status-dot-BqVOlShY.js.map +1 -0
- package/dist/chunks/{styles-Btvg2DCf.js → styles-CVJU9t9v.js} +2 -2
- package/dist/chunks/{styles-Btvg2DCf.js.map → styles-CVJU9t9v.js.map} +1 -1
- package/dist/chunks/{swap-text-BhPI8DOf.js → swap-text-Cica0pUr.js} +2 -2
- package/dist/chunks/{swap-text-BhPI8DOf.js.map → swap-text-Cica0pUr.js.map} +1 -1
- package/dist/chunks/{switch-XMY_CQE-.js → switch-CSKMEomo.js} +3 -3
- package/dist/chunks/{switch-XMY_CQE-.js.map → switch-CSKMEomo.js.map} +1 -1
- package/dist/chunks/{table-DYKa86af.js → table-D-36EM7f.js} +2 -2
- package/dist/chunks/{table-DYKa86af.js.map → table-D-36EM7f.js.map} +1 -1
- package/dist/chunks/{tag-Dg89uYpV.js → tag-CwDKXVHj.js} +4 -4
- package/dist/chunks/{tag-Dg89uYpV.js.map → tag-CwDKXVHj.js.map} +1 -1
- package/dist/chunks/{text--5MKh2G4.js → text-Dvvgg5Jt.js} +3 -3
- package/dist/chunks/{text--5MKh2G4.js.map → text-Dvvgg5Jt.js.map} +1 -1
- package/dist/chunks/{textarea-Cj8iR82R.js → textarea-2d373OyU.js} +35 -31
- package/dist/chunks/textarea-2d373OyU.js.map +1 -0
- package/dist/chunks/timeseries-LRDAZHV0.js +339 -0
- package/dist/chunks/timeseries-LRDAZHV0.js.map +1 -0
- package/dist/chunks/{toolbar-Dw3uxpsE.js → toolbar-nVLFWH2i.js} +3 -3
- package/dist/chunks/{toolbar-Dw3uxpsE.js.map → toolbar-nVLFWH2i.js.map} +1 -1
- package/dist/chunks/{tooltip-DEbCCsru.js → tooltip-S1DmyLVl.js} +4 -4
- package/dist/chunks/{tooltip-DEbCCsru.js.map → tooltip-S1DmyLVl.js.map} +1 -1
- package/dist/chunks/{tooltip-root-DRd4ciUv.js → tooltip-root-vjylFUqw.js} +4 -4
- package/dist/chunks/{tooltip-root-DRd4ciUv.js.map → tooltip-root-vjylFUqw.js.map} +1 -1
- package/dist/chunks/{virtual-rows-BZe49bKi.js → virtual-rows-yAMjeAwj.js} +4 -3
- package/dist/chunks/virtual-rows-yAMjeAwj.js.map +1 -0
- package/dist/chunks/{zh-CN-C7GmVswt.js → zh-CN-CqEA4PCM.js} +37 -5
- package/dist/chunks/zh-CN-CqEA4PCM.js.map +1 -0
- 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 +33 -32
- 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 +34 -31
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +2 -2
- package/dist/components/charts/gauge.js +2 -2
- package/dist/components/charts/heatmap.js +1 -1
- package/dist/components/charts/sankey.js +2 -2
- package/dist/components/charts/sparkline.js +1 -1
- package/dist/components/charts/timeseries.js +1 -252
- package/dist/components/charts.js +3 -3
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-block.js +2 -2
- package/dist/components/code.js +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +4 -0
- package/dist/components/command-palette.js +120 -171
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +251 -193
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +7 -7
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +7 -9
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +67 -53
- 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/filter-chip.js +138 -63
- package/dist/components/filter-chip.js.map +1 -1
- package/dist/components/filter-row.js +2 -2
- package/dist/components/flow.js +2 -2
- 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 +56 -54
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +88 -79
- package/dist/components/kaeso/conversation.js.map +1 -1
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +8 -8
- package/dist/components/kaeso/moments.js.map +1 -1
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +6 -6
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +212 -84
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/key-value.js +3 -3
- package/dist/components/label.js +1 -1
- package/dist/components/layout.js +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/loader.js +2 -2
- 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 +654 -381
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/qr-code.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/release-art.js +2 -0
- 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 +3 -3
- package/dist/components/sheet.js +69 -52
- 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 +88 -74
- 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 +48 -49
- 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 +2 -2
- package/dist/components/theme-select.js +1 -1
- package/dist/components/timeline.js +1 -1
- package/dist/components/toast.js +4 -4
- package/dist/components/toc.js +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/format.js +132 -79
- package/dist/format.js.map +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +115 -111
- package/dist/kaeso.css +43 -8
- package/dist/styles.css +1 -1
- package/dist/types/components/charts/bar.d.ts +6 -0
- package/dist/types/components/charts/core.d.ts +2 -2
- package/dist/types/components/charts/docs.d.ts +7 -0
- package/dist/types/components/charts/time-axis.d.ts +5 -0
- package/dist/types/components/charts/timeseries.d.ts +9 -0
- package/dist/types/components/code-block/highlighter.d.ts +2 -0
- package/dist/types/components/combobox/combobox.d.ts +2 -0
- package/dist/types/components/combobox/docs.d.ts +2 -4
- package/dist/types/components/command-list/command-list.d.ts +84 -0
- package/dist/types/components/command-list/docs.d.ts +52 -0
- package/dist/types/components/command-list/index.d.ts +3 -0
- package/dist/types/components/command-list/match.d.ts +1 -0
- package/dist/types/components/command-list/picker-popover.d.ts +44 -0
- package/dist/types/components/data-table/data-table.d.ts +3 -2
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/date-picker/docs.d.ts +0 -6
- package/dist/types/components/dialog/dialog.d.ts +24 -0
- package/dist/types/components/dialog/docs.d.ts +4 -0
- package/dist/types/components/display-options/display-options.d.ts +1 -0
- package/dist/types/components/filter-chip/docs.d.ts +4 -0
- package/dist/types/components/filter-chip/filter-chip.d.ts +7 -0
- package/dist/types/components/input/docs.d.ts +2 -12
- package/dist/types/components/input/number-input.d.ts +1 -0
- package/dist/types/components/input/tag-input.d.ts +1 -0
- package/dist/types/components/kaeso/docs.d.ts +34 -0
- package/dist/types/components/kaeso/identity.d.ts +10 -1
- package/dist/types/components/kaeso/index.d.ts +1 -0
- package/dist/types/components/kaeso/provider-marks.d.ts +5 -1
- package/dist/types/components/kaeso/provider-picker.d.ts +42 -0
- package/dist/types/components/list/docs.d.ts +2 -0
- package/dist/types/components/list/list.d.ts +2 -0
- package/dist/types/components/menu/styles.d.ts +1 -1
- package/dist/types/components/playground/docs.d.ts +32 -0
- package/dist/types/components/playground/index.d.ts +1 -0
- package/dist/types/components/playground/model-picker.d.ts +39 -4
- package/dist/types/components/playground/reasoning.d.ts +29 -0
- package/dist/types/components/playground/response-view.d.ts +7 -1
- package/dist/types/components/release-art/docs.d.ts +13 -0
- package/dist/types/components/release-art/drawing.d.ts +48 -0
- package/dist/types/components/release-art/index.d.ts +1 -0
- package/dist/types/components/release-art/release-art.d.ts +37 -0
- package/dist/types/components/select/docs.d.ts +0 -2
- package/dist/types/components/select/option-checkbox.d.ts +1 -0
- package/dist/types/components/sidebar/sidebar.d.ts +1 -0
- package/dist/types/components/stat/docs.d.ts +1 -0
- package/dist/types/components/stat/stat.d.ts +1 -0
- package/dist/types/components/status-dot/docs.d.ts +2 -0
- package/dist/types/components/status-dot/status-dot.d.ts +2 -0
- package/dist/types/format/index.d.ts +8 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/inset.d.ts +5 -0
- package/dist/types/utils/over-sheet.d.ts +1 -0
- package/dist/types/utils/restore-focus.d.ts +1 -1
- package/dist/utils.js +4 -4
- package/foundations/accessibility.md +1 -0
- package/foundations/layout.md +45 -0
- package/foundations/writing.md +1 -0
- package/package.json +2 -2
- package/dist/chunks/app-frame-BXh-06HL.js +0 -214
- package/dist/chunks/app-frame-BXh-06HL.js.map +0 -1
- package/dist/chunks/cn-CidVUKMm.js.map +0 -1
- package/dist/chunks/code-block-DxtladFW.js.map +0 -1
- package/dist/chunks/collapsible-Cw_1aem5.js.map +0 -1
- package/dist/chunks/combobox-D30Wt11R.js +0 -291
- package/dist/chunks/combobox-D30Wt11R.js.map +0 -1
- package/dist/chunks/core-K960A4OT.js.map +0 -1
- package/dist/chunks/de-CTAo4KL7.js.map +0 -1
- package/dist/chunks/dialog-LNKgPEsV.js +0 -319
- package/dist/chunks/dialog-LNKgPEsV.js.map +0 -1
- package/dist/chunks/field-d8V94bvZ.js.map +0 -1
- package/dist/chunks/field-press-DwzBFafd.js +0 -10
- package/dist/chunks/field-press-DwzBFafd.js.map +0 -1
- package/dist/chunks/identity-BtZC_d_Q.js +0 -342
- package/dist/chunks/identity-BtZC_d_Q.js.map +0 -1
- package/dist/chunks/input-group-CYA1MEoZ.js.map +0 -1
- package/dist/chunks/inset-BLMdxX4I.js.map +0 -1
- package/dist/chunks/list-CzaiyNja.js +0 -483
- package/dist/chunks/list-CzaiyNja.js.map +0 -1
- package/dist/chunks/nav-sheet-BIErlV74.js +0 -58
- package/dist/chunks/nav-sheet-BIErlV74.js.map +0 -1
- package/dist/chunks/range-popup-DGOnGGag.js +0 -111
- package/dist/chunks/range-popup-DGOnGGag.js.map +0 -1
- package/dist/chunks/resize-motion-CMaidkwe.js.map +0 -1
- package/dist/chunks/rights-BbiJ0AJB.js.map +0 -1
- package/dist/chunks/select-Bc4kRiSG.js.map +0 -1
- package/dist/chunks/sidebar-5IA18LuP.js.map +0 -1
- package/dist/chunks/status-dot-CBoQpyL4.js +0 -25
- package/dist/chunks/status-dot-CBoQpyL4.js.map +0 -1
- package/dist/chunks/textarea-Cj8iR82R.js.map +0 -1
- package/dist/chunks/virtual-rows-BZe49bKi.js.map +0 -1
- package/dist/chunks/zh-CN-C7GmVswt.js.map +0 -1
- package/dist/components/charts/timeseries.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","names":["__icon_ToolsIcon","__icon_Image01Icon","__icon_Pdf01Icon","cn","useUiText","Icon","Banner","JsonView","Badge","Collapsible","safeHref","LazyMarkdown","n","m","KAESO_CONVERSATION_VARIANTS","KAESO_CONVERSATION_DEFAULT_VARIANTS","roleNames","t","imageHref","src","isJson","s","Prose","plain","small","text","markdown","Suspense","Blocks","blocks","b","i","ToolsIcon","j","part","href","Image01Icon","Pdf01Icon","ConversationView","role","density","className","messages","footer"],"sources":["../../../src/components/kaeso/conversation.tsx"],"sourcesContent":["import { forwardRef, lazy, Suspense, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Banner } from \"../banner/banner.js\";\nimport { Collapsible } from \"../collapsible/collapsible.js\";\nimport { JsonView } from \"../code-block/json-view.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { safeHref } from \"../../utils/safe-href.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nconst LazyMarkdown = /* @__PURE__ */ lazy(() => import(\"../markdown/markdown.js\").then((m) => ({ default: m.Markdown })));\n\nexport const KAESO_CONVERSATION_VARIANTS = {\n density: {\n default: { classes: \"gap-24\" },\n compact: { classes: \"gap-16\" },\n },\n} as const;\nexport const KAESO_CONVERSATION_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport type ContentBlock =\n | { type: \"text\"; text: string }\n | { type: \"tool_call\"; id?: string | undefined; name: string; arguments: unknown }\n | { type: \"tool_result\"; tool_call_id?: string | undefined; content: string | ContentBlock[]; is_error?: boolean | undefined }\n | { type: \"reasoning\"; text: string; redacted?: boolean | undefined }\n | { type: \"image\"; src?: string | undefined; alt?: string | undefined; media_type?: string | undefined }\n | { type: \"document\"; name?: string | undefined; media_type?: string | undefined }\n | { type: \"refusal\"; text: string };\n\nexport interface ConversationMessage {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\" | \"developer\";\n content: string | ContentBlock[];\n}\n\nfunction roleNames(t: UiText): Record<ConversationMessage[\"role\"], string> {\n return {\n system: t(\"conversationView.system\", \"System\"),\n developer: t(\"conversationView.developer\", \"Developer\"),\n user: t(\"conversationView.user\", \"User\"),\n assistant: t(\"conversationView.assistant\", \"Assistant\"),\n tool: t(\"conversationView.tool\", \"Tool\"),\n };\n}\n\nconst imageHref = (src: string) => (/^data:image\\/[a-z0-9.+-]+;/i.test(src) ? src : safeHref(src));\n\nfunction isJson(s: string) {\n const t = s.trim();\n if (!/^[[{]/.test(t)) return false;\n try {\n JSON.parse(t);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction Prose({ text, markdown, small }: { text: string; markdown: boolean; small?: boolean | undefined }) {\n const plain = (\n <p className={cn(\"max-w-prose whitespace-pre-wrap wrap-break-word text-pretty\", small ? \"text-small text-fg-secondary\" : \"text-body text-fg\")}>{text}</p>\n );\n if (!markdown) return plain;\n return (\n <Suspense fallback={plain}>\n <LazyMarkdown text={text} {...(small ? { size: \"small\" as const, tone: \"secondary\" as const } : {})} />\n </Suspense>\n );\n}\n\nfunction Blocks({ blocks, markdown }: { blocks: ContentBlock[]; markdown: boolean }) {\n const t = useUiText();\n return (\n <div className=\"flex flex-col gap-12\">\n {blocks.map((b, i) => {\n switch (b.type) {\n case \"text\":\n return <Prose key={i} text={b.text} markdown={markdown} />;\n case \"tool_call\":\n return (\n <div key={i} className=\"flex flex-col gap-8\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n <Icon icon={__icon_ToolsIcon} size=\"xs\" />\n {t(\"conversationView.called\", \"Called **{name}**\", { name: b.name })\n .split(\"**\")\n .map((part, j) =>\n j % 2 ? (\n <span key={j} className=\"mono text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n )}\n {b.id && <span className=\"mono text-fg-tertiary\">{b.id}</span>}\n </span>\n <JsonView value={b.arguments} defaultDepth={3} />\n </div>\n );\n case \"tool_result\":\n return (\n <div key={i} className=\"flex flex-col gap-8 pl-16 hairline-l\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n {t(\"conversationView.result\", \"Result\")}\n {b.tool_call_id && <span className=\"mono text-fg-tertiary\">{b.tool_call_id}</span>}\n {b.is_error && <Badge tone=\"danger\">{t(\"conversationView.error\", \"Error\")}</Badge>}\n </span>\n {typeof b.content !== \"string\" ? (\n <Blocks blocks={b.content} markdown={markdown} />\n ) : markdown && !isJson(b.content) ? (\n <Prose text={b.content} markdown />\n ) : (\n <pre className=\"mono text-small whitespace-pre-wrap wrap-anywhere text-fg\">{b.content}</pre>\n )}\n </div>\n );\n case \"reasoning\":\n return (\n <Collapsible\n key={i}\n title={<span className=\"text-fg-secondary\">{t(\"conversationView.reasoning\", \"Reasoning\")}</span>}\n hint={b.redacted ? t(\"conversationView.redacted\", \"Redacted by the provider\") : undefined}\n >\n {b.redacted ? (\n <p className=\"max-w-prose text-small text-fg-secondary\">\n {t(\"conversationView.encrypted\", \"The provider returned this reasoning in encrypted form.\")}\n </p>\n ) : (\n <Prose text={b.text} markdown={markdown} small />\n )}\n </Collapsible>\n );\n case \"image\": {\n const href = b.src ? imageHref(b.src) : null;\n return href ? (\n <a\n key={i}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n className=\"block w-120 overflow-hidden rounded-well ring-over ring-over-line focus-ring\"\n >\n <img src={href} alt={b.alt ?? t(\"conversationView.imageInput\", \"Image input\")} className=\"block h-120 w-120 object-cover\" />\n </a>\n ) : (\n <span key={i} className=\"inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary\">\n <Icon icon={__icon_Image01Icon} size=\"xs\" /> {t(\"conversationView.image\", \"Image\")} {b.media_type && <span className=\"mono\">{b.media_type}</span>}\n </span>\n );\n }\n case \"document\":\n return (\n <span key={i} className=\"inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary\">\n <Icon icon={__icon_Pdf01Icon} size=\"xs\" /> {b.name ?? t(\"conversationView.document\", \"Document\")}\n </span>\n );\n case \"refusal\":\n return (\n <Banner key={i} tone=\"warning\" title={t(\"conversationView.refused\", \"The model refused.\")}>\n {b.text}\n </Banner>\n );\n }\n })}\n </div>\n );\n}\n\nexport interface ConversationViewProps {\n messages: ConversationMessage[];\n density?: keyof typeof KAESO_CONVERSATION_VARIANTS.density | undefined;\n markdown?: boolean | undefined;\n className?: string | undefined;\n footer?: ReactNode | undefined;\n}\n\nexport const ConversationView = /* @__PURE__ */ forwardRef<HTMLDivElement, ConversationViewProps>(function ConversationView(\n { messages, density = \"default\", markdown = false, className, footer },\n ref,\n) {\n const t = useUiText();\n const role = roleNames(t);\n return (\n <div ref={ref} className={cn(\"flex flex-col\", KAESO_CONVERSATION_VARIANTS.density[density].classes, className)}>\n {messages.map((m, i) => (\n <section key={i} aria-label={role[m.role]} className=\"flex flex-col gap-8\">\n <span className={cn(\"text-caption font-medium\", m.role === \"assistant\" ? \"text-fg\" : \"text-fg-secondary\")}>{role[m.role]}</span>\n <div className={cn(m.role === \"system\" || m.role === \"developer\" ? \"rounded-well bg-fill-1 px-16 py-12\" : \"\")}>\n <Blocks blocks={typeof m.content === \"string\" ? [{ type: \"text\", text: m.content }] : m.content} markdown={markdown} />\n </div>\n </section>\n ))}\n {footer}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ConversationView.displayName = \"ConversationView\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation.js","names":["__icon_ToolsIcon","__icon_Image01Icon","__icon_Pdf01Icon","cn","useUiText","Icon","Banner","JsonView","Badge","Collapsible","safeHref","LazyMarkdown","n","m","KAESO_CONVERSATION_VARIANTS","KAESO_CONVERSATION_DEFAULT_VARIANTS","roleNames","t","DATA_IMAGE","webHref","href","src","isJson","s","Prose","plain","small","text","markdown","Suspense","Blocks","blocks","b","i","ToolsIcon","j","part","Link","Image01Icon","Pdf01Icon","ConversationView","role","density","className","messages","footer"],"sources":["../../../src/components/kaeso/conversation.tsx"],"sourcesContent":["import { forwardRef, lazy, Suspense, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Banner } from \"../banner/banner.js\";\nimport { Collapsible } from \"../collapsible/collapsible.js\";\nimport { JsonView } from \"../code-block/json-view.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Link } from \"../link/link.js\";\nimport { safeHref } from \"../../utils/safe-href.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nconst LazyMarkdown = /* @__PURE__ */ lazy(() => import(\"../markdown/markdown.js\").then((m) => ({ default: m.Markdown })));\n\nexport const KAESO_CONVERSATION_VARIANTS = {\n density: {\n default: { classes: \"gap-24\" },\n compact: { classes: \"gap-16\" },\n },\n} as const;\nexport const KAESO_CONVERSATION_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport type ContentBlock =\n | { type: \"text\"; text: string }\n | { type: \"tool_call\"; id?: string | undefined; name: string; arguments: unknown }\n | { type: \"tool_result\"; tool_call_id?: string | undefined; content: string | ContentBlock[]; is_error?: boolean | undefined }\n | { type: \"reasoning\"; text: string; redacted?: boolean | undefined }\n | { type: \"image\"; src?: string | undefined; alt?: string | undefined; media_type?: string | undefined }\n | { type: \"document\"; name?: string | undefined; media_type?: string | undefined }\n | { type: \"refusal\"; text: string };\n\nexport interface ConversationMessage {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\" | \"developer\";\n content: string | ContentBlock[];\n}\n\nfunction roleNames(t: UiText): Record<ConversationMessage[\"role\"], string> {\n return {\n system: t(\"conversationView.system\", \"System\"),\n developer: t(\"conversationView.developer\", \"Developer\"),\n user: t(\"conversationView.user\", \"User\"),\n assistant: t(\"conversationView.assistant\", \"Assistant\"),\n tool: t(\"conversationView.tool\", \"Tool\"),\n };\n}\n\nconst DATA_IMAGE = /^data:image\\/[a-z0-9.+-]+;/i;\n\nfunction webHref(src: string): string | null {\n const href = safeHref(src);\n return href && /^https?:/.test(href) ? href : null;\n}\n\nfunction isJson(s: string) {\n const t = s.trim();\n if (!/^[[{]/.test(t)) return false;\n try {\n JSON.parse(t);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction Prose({ text, markdown, small }: { text: string; markdown: boolean; small?: boolean | undefined }) {\n const plain = (\n <p className={cn(\"max-w-prose whitespace-pre-wrap wrap-break-word text-pretty\", small ? \"text-small text-fg-secondary\" : \"text-body text-fg\")}>{text}</p>\n );\n if (!markdown) return plain;\n return (\n <Suspense fallback={plain}>\n <LazyMarkdown text={text} {...(small ? { size: \"small\" as const, tone: \"secondary\" as const } : {})} />\n </Suspense>\n );\n}\n\nfunction Blocks({ blocks, markdown }: { blocks: ContentBlock[]; markdown: boolean }) {\n const t = useUiText();\n return (\n <div className=\"flex flex-col gap-12\">\n {blocks.map((b, i) => {\n switch (b.type) {\n case \"text\":\n return <Prose key={i} text={b.text} markdown={markdown} />;\n case \"tool_call\":\n return (\n <div key={i} className=\"flex flex-col gap-8\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n <Icon icon={__icon_ToolsIcon} size=\"xs\" />\n {t(\"conversationView.called\", \"Called **{name}**\", { name: b.name })\n .split(\"**\")\n .map((part, j) =>\n j % 2 ? (\n <span key={j} className=\"mono text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n )}\n {b.id && <span className=\"mono text-fg-tertiary\">{b.id}</span>}\n </span>\n <JsonView value={b.arguments} defaultDepth={3} />\n </div>\n );\n case \"tool_result\":\n return (\n <div key={i} className=\"flex flex-col gap-8 pl-16 hairline-l\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n {t(\"conversationView.result\", \"Result\")}\n {b.tool_call_id && <span className=\"mono text-fg-tertiary\">{b.tool_call_id}</span>}\n {b.is_error && <Badge tone=\"danger\">{t(\"conversationView.error\", \"Error\")}</Badge>}\n </span>\n {typeof b.content !== \"string\" ? (\n <Blocks blocks={b.content} markdown={markdown} />\n ) : markdown && !isJson(b.content) ? (\n <Prose text={b.content} markdown />\n ) : (\n <pre className=\"mono text-small whitespace-pre-wrap wrap-anywhere text-fg\">{b.content}</pre>\n )}\n </div>\n );\n case \"reasoning\":\n return (\n <Collapsible\n key={i}\n title={<span className=\"text-fg-secondary\">{t(\"conversationView.reasoning\", \"Reasoning\")}</span>}\n hint={b.redacted ? t(\"conversationView.redacted\", \"Redacted by the provider\") : undefined}\n >\n {b.redacted ? (\n <p className=\"max-w-prose text-small text-fg-secondary\">\n {t(\"conversationView.encrypted\", \"The provider returned this reasoning in encrypted form.\")}\n </p>\n ) : (\n <Prose text={b.text} markdown={markdown} small />\n )}\n </Collapsible>\n );\n case \"image\": {\n if (b.src && DATA_IMAGE.test(b.src))\n return (\n <span key={i} className=\"block w-120 overflow-hidden rounded-well ring-over ring-over-line\">\n <img src={b.src} alt={b.alt ?? t(\"conversationView.imageInput\", \"Image input\")} className=\"block h-120 w-120 object-cover\" />\n </span>\n );\n const href = b.src ? webHref(b.src) : null;\n return href ? (\n <Link key={i} href={href} external rel=\"noopener noreferrer nofollow\" className=\"w-max max-w-full wrap-anywhere\">\n {t(\"conversationView.imageFrom\", \"Image from {host}\", { host: new URL(href).host })}\n </Link>\n ) : (\n <span key={i} className=\"inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary\">\n <Icon icon={__icon_Image01Icon} size=\"xs\" /> {t(\"conversationView.image\", \"Image\")} {b.media_type && <span className=\"mono\">{b.media_type}</span>}\n </span>\n );\n }\n case \"document\":\n return (\n <span key={i} className=\"inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary\">\n <Icon icon={__icon_Pdf01Icon} size=\"xs\" /> {b.name ?? t(\"conversationView.document\", \"Document\")}\n </span>\n );\n case \"refusal\":\n return (\n <Banner key={i} tone=\"warning\" title={t(\"conversationView.refused\", \"The model refused.\")}>\n {b.text}\n </Banner>\n );\n }\n })}\n </div>\n );\n}\n\nexport interface ConversationViewProps {\n messages: ConversationMessage[];\n density?: keyof typeof KAESO_CONVERSATION_VARIANTS.density | undefined;\n markdown?: boolean | undefined;\n className?: string | undefined;\n footer?: ReactNode | undefined;\n}\n\nexport const ConversationView = /* @__PURE__ */ forwardRef<HTMLDivElement, ConversationViewProps>(function ConversationView(\n { messages, density = \"default\", markdown = false, className, footer },\n ref,\n) {\n const t = useUiText();\n const role = roleNames(t);\n return (\n <div ref={ref} className={cn(\"flex flex-col\", KAESO_CONVERSATION_VARIANTS.density[density].classes, className)}>\n {messages.map((m, i) => (\n <section key={i} aria-label={role[m.role]} className=\"flex flex-col gap-8\">\n <span className={cn(\"text-caption font-medium\", m.role === \"assistant\" ? \"text-fg\" : \"text-fg-secondary\")}>{role[m.role]}</span>\n <div className={cn(m.role === \"system\" || m.role === \"developer\" ? \"rounded-well bg-fill-1 px-16 py-12\" : \"\")}>\n <Blocks blocks={typeof m.content === \"string\" ? [{ type: \"text\", text: m.content }] : m.content} markdown={markdown} />\n </div>\n </section>\n ))}\n {footer}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ConversationView.displayName = \"ConversationView\";\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as
|
|
2
|
+
export { t as CapabilityIcons, n as KAESO_IDENTITY_DEFAULT_VARIANTS, r as KAESO_IDENTITY_VARIANTS, i as KeyDisplay, a as ModelLabel, o as ProviderBadge, s as ProviderCard, c as RequestTimeline, l as StatusCode, u as providerName } from "../../chunks/identity-CsZvAUwu.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../../chunks/cn-
|
|
2
|
+
import { t as e } from "../../chunks/cn-DUDmdLpZ.js";
|
|
3
3
|
import { i as t } from "../../chunks/context-BELWW79w.js";
|
|
4
|
-
import { t as n } from "../../chunks/icon-
|
|
5
|
-
import { n as r } from "../../chunks/button-
|
|
4
|
+
import { t as n } from "../../chunks/icon-BqujXDUc.js";
|
|
5
|
+
import { n as r } from "../../chunks/button-CAPyW-v8.js";
|
|
6
6
|
import { t as i } from "../../chunks/use-copy-Dm2ncvMX.js";
|
|
7
|
-
import { t as a } from "../../chunks/copy-button-
|
|
8
|
-
import { t as o } from "../../chunks/code-block-
|
|
7
|
+
import { t as a } from "../../chunks/copy-button-CNpEnS04.js";
|
|
8
|
+
import { t as o } from "../../chunks/code-block-DREsvJ-g.js";
|
|
9
9
|
import { forwardRef as s } from "react";
|
|
10
10
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
11
11
|
import { Alert02Icon as u, Copy01Icon as d, Tick02Icon as f } from "@hugeicons/core-free-icons";
|
|
@@ -17,17 +17,17 @@ function h({ baseUrl: e, apiKey: t = "$KAESO_API_KEY", model: n = "gpt-5" }) {
|
|
|
17
17
|
{
|
|
18
18
|
label: "Python",
|
|
19
19
|
lang: "python",
|
|
20
|
-
code: `from openai import OpenAI\n${t.startsWith("$") ? "import os\n" : ""}\nclient = OpenAI(base_url="${e}/v1"
|
|
20
|
+
code: `from openai import OpenAI\n${t.startsWith("$") ? "import os\n" : ""}\nclient = OpenAI(\n base_url="${e}/v1",\n api_key=${r},\n)\n\nresponse = client.responses.create(\n model="${n}",\n input="Write one sentence about gateways.",\n)\nprint(response.output_text)`
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
label: "Node",
|
|
24
24
|
lang: "ts",
|
|
25
|
-
code: `import OpenAI from "openai";\n\nconst client = new OpenAI({
|
|
25
|
+
code: `import OpenAI from "openai";\n\nconst client = new OpenAI({\n baseURL: "${e}/v1",\n apiKey: ${i},\n});\n\nconst response = await client.responses.create({\n model: "${n}",\n input: "Write one sentence about gateways.",\n});\nconsole.log(response.output_text);`
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
label: "curl",
|
|
29
29
|
lang: "bash",
|
|
30
|
-
code: `curl ${e}/v1/responses \\\n -H "Authorization: Bearer ${t}" \\\n -H "Content-Type: application/json" \\\n -d '{"model": "${n}"
|
|
30
|
+
code: `${t.startsWith("$") ? "" : `KAESO_API_KEY=${t}\n`}curl ${e}/v1/responses \\\n -H "Authorization: Bearer ${t.startsWith("$") ? t : "$KAESO_API_KEY"}" \\\n -H "Content-Type: application/json" \\\n -d '{\n "model": "${n}",\n "input": "Write one sentence about gateways."\n }'`
|
|
31
31
|
}
|
|
32
32
|
];
|
|
33
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moments.js","names":["__icon_Tick02Icon","__icon_Copy01Icon","__icon_Alert02Icon","cn","useUiText","Icon","Button","useCopy","ClipboardText","CodeBlock","KAESO_MOMENTS_VARIANTS","KAESO_MOMENTS_DEFAULT_VARIANTS","sdkSnippets","envKey","apiKey","nodeKey","baseUrl","model","SecretReveal","t","copyKey","done","className","name","range","selection","secret","copied","Tick02Icon","Copy01Icon","copy","onCopied","Alert02Icon","snippets","EnvironmentSnippet"],"sources":["../../../src/components/kaeso/moments.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon, Copy01Icon as __icon_Copy01Icon, Alert02Icon as __icon_Alert02Icon } from \"@hugeicons/core-free-icons\";\nimport { useCopy } from \"../../hooks/use-copy.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\nimport { CodeBlock, type CodeTab } from \"../code-block/code-block.js\";\nimport { ClipboardText } from \"../copy-button/copy-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_MOMENTS_VARIANTS = {\n secret: { md: { classes: \"rounded-well bg-fill-1 px-20 py-16\" } },\n} as const;\nexport const KAESO_MOMENTS_DEFAULT_VARIANTS = { secret: \"md\" } as const;\n\nexport interface SnippetOptions {\n baseUrl: string;\n apiKey?: string | undefined;\n model?: string | undefined;\n}\n\nexport function sdkSnippets({ baseUrl, apiKey = \"$KAESO_API_KEY\", model = \"gpt-5\" }: SnippetOptions): CodeTab[] {\n const envKey = apiKey.startsWith(\"$\") ? `os.environ[\"${apiKey.slice(1)}\"]` : `\"${apiKey}\"`;\n const nodeKey = apiKey.startsWith(\"$\") ? `process.env.${apiKey.slice(1)}` : `\"${apiKey}\"`;\n return [\n {\n label: \"Python\",\n lang: \"python\",\n code: `from openai import OpenAI\\n${apiKey.startsWith(\"$\") ? \"import os\\n\" : \"\"}\\nclient = OpenAI(base_url=\"${baseUrl}/v1\"
|
|
1
|
+
{"version":3,"file":"moments.js","names":["__icon_Tick02Icon","__icon_Copy01Icon","__icon_Alert02Icon","cn","useUiText","Icon","Button","useCopy","ClipboardText","CodeBlock","KAESO_MOMENTS_VARIANTS","KAESO_MOMENTS_DEFAULT_VARIANTS","sdkSnippets","envKey","apiKey","nodeKey","baseUrl","model","SecretReveal","t","copyKey","done","className","name","range","selection","secret","copied","Tick02Icon","Copy01Icon","copy","onCopied","Alert02Icon","snippets","EnvironmentSnippet"],"sources":["../../../src/components/kaeso/moments.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon, Copy01Icon as __icon_Copy01Icon, Alert02Icon as __icon_Alert02Icon } from \"@hugeicons/core-free-icons\";\nimport { useCopy } from \"../../hooks/use-copy.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\nimport { CodeBlock, type CodeTab } from \"../code-block/code-block.js\";\nimport { ClipboardText } from \"../copy-button/copy-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_MOMENTS_VARIANTS = {\n secret: { md: { classes: \"rounded-well bg-fill-1 px-20 py-16\" } },\n} as const;\nexport const KAESO_MOMENTS_DEFAULT_VARIANTS = { secret: \"md\" } as const;\n\nexport interface SnippetOptions {\n baseUrl: string;\n apiKey?: string | undefined;\n model?: string | undefined;\n}\n\nexport function sdkSnippets({ baseUrl, apiKey = \"$KAESO_API_KEY\", model = \"gpt-5\" }: SnippetOptions): CodeTab[] {\n const envKey = apiKey.startsWith(\"$\") ? `os.environ[\"${apiKey.slice(1)}\"]` : `\"${apiKey}\"`;\n const nodeKey = apiKey.startsWith(\"$\") ? `process.env.${apiKey.slice(1)}` : `\"${apiKey}\"`;\n return [\n {\n label: \"Python\",\n lang: \"python\",\n code: `from openai import OpenAI\\n${apiKey.startsWith(\"$\") ? \"import os\\n\" : \"\"}\\nclient = OpenAI(\\n base_url=\"${baseUrl}/v1\",\\n api_key=${envKey},\\n)\\n\\nresponse = client.responses.create(\\n model=\"${model}\",\\n input=\"Write one sentence about gateways.\",\\n)\\nprint(response.output_text)`,\n },\n {\n label: \"Node\",\n lang: \"ts\",\n code: `import OpenAI from \"openai\";\\n\\nconst client = new OpenAI({\\n baseURL: \"${baseUrl}/v1\",\\n apiKey: ${nodeKey},\\n});\\n\\nconst response = await client.responses.create({\\n model: \"${model}\",\\n input: \"Write one sentence about gateways.\",\\n});\\nconsole.log(response.output_text);`,\n },\n {\n label: \"curl\",\n lang: \"bash\",\n code: `${apiKey.startsWith(\"$\") ? \"\" : `KAESO_API_KEY=${apiKey}\\n`}curl ${baseUrl}/v1/responses \\\\\\n -H \"Authorization: Bearer ${apiKey.startsWith(\"$\") ? apiKey : \"$KAESO_API_KEY\"}\" \\\\\\n -H \"Content-Type: application/json\" \\\\\\n -d '{\\n \"model\": \"${model}\",\\n \"input\": \"Write one sentence about gateways.\"\\n }'`,\n },\n ];\n}\n\nexport interface SecretRevealProps extends SnippetOptions {\n secret: string;\n name?: ReactNode | undefined;\n onCopied?: (() => void) | undefined;\n snippets?: CodeTab[] | false | undefined;\n className?: string | undefined;\n}\n\nexport const SecretReveal = /* @__PURE__ */ forwardRef<HTMLDivElement, SecretRevealProps>(function SecretReveal(\n { secret, name, baseUrl, model, onCopied, snippets, className },\n ref,\n) {\n const t = useUiText();\n const { copied, copy } = useCopy(2400);\n const copyKey = t(\"secretReveal.copyKey\", \"Copy key\");\n const done = t(\"secretReveal.copied\", \"Copied\");\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-24\", className)}>\n <div className=\"flex flex-col items-center gap-16 text-center\">\n <div\n tabIndex={0}\n role=\"textbox\"\n aria-readonly\n aria-label={typeof name === \"string\" ? t(\"secretReveal.secretFor\", \"Secret for {name}\", { name }) : t(\"secretReveal.secret\", \"Secret\")}\n onClick={(e) => {\n const range = document.createRange();\n range.selectNodeContents(e.currentTarget);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }}\n className=\"w-full cursor-text rounded-well bg-fill-1 px-20 py-16 mono text-body-lg leading-code break-all text-fg select-all focus-ring\"\n >\n {secret}\n </div>\n <Button\n variant=\"primary\"\n size=\"xl\"\n leadingIcon={copied ? __icon_Tick02Icon : __icon_Copy01Icon}\n reserveLabels={[copyKey, done]}\n onClick={async () => {\n if (await copy(secret)) onCopied?.();\n }}\n >\n {copied ? done : copyKey}\n </Button>\n <p className=\"inline-flex items-center gap-6 text-body text-warning-text\">\n <Icon icon={__icon_Alert02Icon} size=\"sm\" />\n {t(\"secretReveal.shownOnce\", \"Shown once. Store it now.\")}\n </p>\n </div>\n {snippets !== false && <CodeBlock tabs={snippets ?? sdkSnippets({ baseUrl, apiKey: secret, ...(model ? { model } : {}) })} copy />}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SecretReveal.displayName = \"SecretReveal\";\n\nexport const EnvironmentSnippet = /* @__PURE__ */ forwardRef<HTMLDivElement, SnippetOptions & { className?: string | undefined }>(function EnvironmentSnippet(\n { baseUrl, apiKey = \"$KAESO_API_KEY\", model, className },\n ref,\n) {\n const t = useUiText();\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-16\", className)}>\n <div className=\"grid gap-12 md:grid-cols-2\">\n <div className=\"flex min-w-0 flex-col gap-6\">\n <span className=\"text-small font-medium text-fg-secondary\">{t(\"environmentSnippet.baseUrl\", \"Base URL\")}</span>\n <ClipboardText value={`${baseUrl}/v1`} label={t(\"environmentSnippet.copyBaseUrl\", \"Copy base URL\")} />\n </div>\n <div className=\"flex min-w-0 flex-col gap-6\">\n <span className=\"text-small font-medium text-fg-secondary\">{t(\"environmentSnippet.apiKey\", \"API key\")}</span>\n <ClipboardText value={apiKey} label={t(\"environmentSnippet.copyVariableName\", \"Copy variable name\")} />\n </div>\n </div>\n <CodeBlock tabs={sdkSnippets({ baseUrl, apiKey, ...(model ? { model } : {}) })} />\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") EnvironmentSnippet.displayName = \"EnvironmentSnippet\";\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS, n as KAESO_RIGHTS_MATRIX_VARIANTS, r as RightsMatrix } from "../../chunks/rights-
|
|
2
|
+
export { t as KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS, n as KAESO_RIGHTS_MATRIX_VARIANTS, r as RightsMatrix } from "../../chunks/rights-hMoaFasn.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../../chunks/cn-
|
|
2
|
+
import { t as e } from "../../chunks/cn-DUDmdLpZ.js";
|
|
3
3
|
import { i as t } from "../../chunks/context-BELWW79w.js";
|
|
4
4
|
import { formatNumber as n, formatTokens as r } from "../../format.js";
|
|
5
|
-
import { t as i } from "../../chunks/icon-
|
|
6
|
-
import { a } from "../../chunks/meter-
|
|
7
|
-
import { t as o } from "../../chunks/badge-
|
|
8
|
-
import { C as s, c, l } from "../../chunks/core-
|
|
5
|
+
import { t as i } from "../../chunks/icon-BqujXDUc.js";
|
|
6
|
+
import { a } from "../../chunks/meter-DhTnem4k.js";
|
|
7
|
+
import { t as o } from "../../chunks/badge-wUHlj7m3.js";
|
|
8
|
+
import { C as s, c, l } from "../../chunks/core-CqLWVMDI.js";
|
|
9
9
|
import { forwardRef as u } from "react";
|
|
10
10
|
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
11
11
|
import { Layers01Icon as p, LeftToRightListBulletIcon as m, Wallet01Icon as h } from "@hugeicons/core-free-icons";
|
|
@@ -44,7 +44,7 @@ var b = /* @__PURE__ */ u(function({ tokens: i, className: a }, o) {
|
|
|
44
44
|
}, e))
|
|
45
45
|
}), /* @__PURE__ */ d("dl", {
|
|
46
46
|
className: "flex flex-wrap gap-x-24 gap-y-8",
|
|
47
|
-
children: v.map((e) => /* @__PURE__ */ f("div", {
|
|
47
|
+
children: v.filter((e) => i[e] !== void 0).map((e) => /* @__PURE__ */ f("div", {
|
|
48
48
|
className: "flex flex-col gap-2",
|
|
49
49
|
children: [/* @__PURE__ */ f("dt", {
|
|
50
50
|
className: "flex items-center gap-8 text-small text-fg-secondary",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","names":["__icon_LeftToRightListBulletIcon","__icon_Layers01Icon","__icon_Wallet01Icon","cn","useUiText","Icon","Badge","tokenKindColor","KAESO_USAGE_VARIANTS","KAESO_USAGE_DEFAULT_VARIANTS","ORDER","TOKEN_KIND_ORDER","kindLabels","t","UsageBreakdown","label","kinds","tokens","k","total","a","className","formatNumber","Swatch","formatTokens","KIND_ICON","LeftToRightListBulletIcon","Layers01Icon","Wallet01Icon","LimitMeter","win","Meter","limit","used","alerts","kind","scope","hard","valueLabel","resets"],"sources":["../../../src/components/kaeso/usage.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { LeftToRightListBulletIcon as __icon_LeftToRightListBulletIcon, Layers01Icon as __icon_Layers01Icon, Wallet01Icon as __icon_Wallet01Icon } from \"@hugeicons/core-free-icons\";\nimport { formatNumber, formatTokens } from \"../../format/index.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Meter } from \"../meter/meter.js\";\nimport { Swatch, TOKEN_KIND_ORDER, tokenKindColor, type TokenKind } from \"../charts/core.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_USAGE_VARIANTS = {\n limit: {\n hard: { classes: \"\" },\n soft: { classes: \"\" },\n },\n} as const;\nexport const KAESO_USAGE_DEFAULT_VARIANTS = { limit: \"hard\" } as const;\n\nconst ORDER = TOKEN_KIND_ORDER;\n\nfunction kindLabels(t: UiText): Record<TokenKind, string> {\n return {\n input: t(\"usageBreakdown.input\", \"Input\"),\n output: t(\"usageBreakdown.output\", \"Output\"),\n cacheRead: t(\"usageBreakdown.cacheRead\", \"Cache read\"),\n cacheWrite: t(\"usageBreakdown.cacheWrite\", \"Cache write\"),\n reasoning: t(\"usageBreakdown.reasoning\", \"Reasoning\"),\n };\n}\n\nexport const UsageBreakdown = /* @__PURE__ */ forwardRef<HTMLDivElement, { tokens: Partial<Record<TokenKind, number>>; className?: string | undefined }>(\n function UsageBreakdown({ tokens, className }, ref) {\n const t = useUiText();\n const label = kindLabels(t);\n const kinds = ORDER.filter((k) => (tokens[k] ?? 0) > 0);\n const total = kinds.reduce((a, k) => a + (tokens[k] ?? 0), 0) || 1;\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-12\", className)}>\n <div\n role=\"img\"\n aria-label={t(\"usageBreakdown.tokens\", \"Tokens: {list}\", {\n list: kinds\n .map((k) => t(\"usageBreakdown.kindCount\", \"{kind} {count}\", { kind: label[k], count: formatNumber(tokens[k] ?? 0) }))\n .join(t(\"usageBreakdown.listSeparator\", \", \")),\n })}\n className=\"flex h-8 w-full gap-2 overflow-hidden rounded-pill\"\n >\n {kinds.map((k) => (\n <span\n key={k}\n className=\"h-full min-w-2 first:rounded-l-pill last:rounded-r-pill width-motion\"\n style={{ width: `${((tokens[k] ?? 0) / total) * 100}%`, background: tokenKindColor(k) }}\n />\n ))}\n </div>\n <dl className=\"flex flex-wrap gap-x-24 gap-y-8\">\n {ORDER.map((k) => (\n <div key={k} className=\"flex flex-col gap-2\">\n <dt className=\"flex items-center gap-8 text-small text-fg-secondary\">\n <Swatch color={tokenKindColor(k)} />\n {label[k]}\n </dt>\n <dd\n className=\"pl-18 text-body font-medium text-fg tabular\"\n title={t(\"usageBreakdown.tokenCount\", \"{count} tokens\", { count: formatNumber(tokens[k] ?? 0) })}\n >\n {formatTokens(tokens[k] ?? 0)}\n </dd>\n </div>\n ))}\n </dl>\n </div>\n );\n },\n);\nif (process.env.NODE_ENV !== \"production\") UsageBreakdown.displayName = \"UsageBreakdown\";\n\nexport type LimitKind = \"requests\" | \"tokens\" | \"spend\";\nconst KIND_ICON: Record<LimitKind, IconData> = { requests: __icon_LeftToRightListBulletIcon, tokens: __icon_Layers01Icon, spend: __icon_Wallet01Icon };\n\nexport interface LimitMeterProps {\n kind: LimitKind;\n scope: ReactNode;\n window: ReactNode;\n used: number;\n limit: number;\n valueLabel: ReactNode;\n hard?: boolean | undefined;\n alerts?: number[] | undefined;\n resets?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const LimitMeter = /* @__PURE__ */ forwardRef<HTMLDivElement, LimitMeterProps>(function LimitMeter(\n { kind, scope, window: win, used, limit, valueLabel, hard = true, alerts = [0.8], resets, className },\n ref,\n) {\n const t = useUiText();\n return (\n <Meter\n ref={ref}\n className={className}\n value={limit > 0 ? used / limit : 0}\n thresholds={alerts}\n leading={<Icon icon={KIND_ICON[kind]} size=\"sm\" className=\"text-fg-secondary\" />}\n label={scope}\n trailing={<Badge tone={hard ? \"neutral\" : \"outline\"}>{hard ? t(\"limitMeter.hard\", \"Hard\") : t(\"limitMeter.soft\", \"Soft\")}</Badge>}\n caption={\n <span className=\"flex flex-wrap items-baseline justify-between gap-x-12 gap-y-2\">\n <span>\n <span className=\"font-medium text-fg-secondary tabular\">{valueLabel}</span> · {win}\n </span>\n {resets && <span>{resets}</span>}\n </span>\n }\n aria-label={t(\"limitMeter.label\", \"{kind, select, requests {requests limit} tokens {tokens limit} other {spend limit}}\", { kind })}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") LimitMeter.displayName = \"LimitMeter\";\n"],"mappings":";;;;;;;;;;;;AAUA,IAAaQ,IAAuB,EAClC,OAAO;CACL,MAAM,EAAE,SAAS,GAAG;CACpB,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,IAA+B,EAAE,OAAO,OAAO,GAEtDC,IAAQC;AAEd,SAASC,EAAW,GAAsC;CACxD,OAAO;EACL,OAAOC,EAAE,wBAAwB,OAAO;EACxC,QAAQA,EAAE,yBAAyB,QAAQ;EAC3C,WAAWA,EAAE,4BAA4B,YAAY;EACrD,YAAYA,EAAE,6BAA6B,aAAa;EACxD,WAAWA,EAAE,4BAA4B,WAAW;CACtD;AACF;AAEA,IAAaC,IAAiC,kBAC5C,SAAwB,EAAE,WAAQ,gBAAa,GAAK;CAClD,IAAMD,IAAIT,EAAU,GACdW,IAAQH,EAAWC,CAAC,GACpBG,IAAQN,EAAM,QAAQ,OAAOO,EAAOC,MAAM,KAAK,CAAC,GAChDC,IAAQH,EAAM,QAAQ,GAAG,MAAMI,KAAKH,EAAOC,MAAM,IAAI,CAAC,KAAK;CACjE,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWf,EAAG,wBAAwBkB,CAAS;EAA9D,UAAA,CACE,kBAAC,OAAD;GACE,MAAK;GACL,cAAYR,EAAE,yBAAyB,kBAAkB,EACvD,MAAMG,EACH,KAAK,MAAMH,EAAE,4BAA4B,kBAAkB;IAAE,MAAME,EAAMG;IAAI,OAAOI,EAAaL,EAAOC,MAAM,CAAC;GAAE,CAAC,CAAC,CAAC,CACpH,KAAKL,EAAE,gCAAgC,IAAI,CAAC,EACjD,CAAC;GACD,WAAU;GAET,UAAAG,EAAM,KAAK,MACV,kBAAC,QAAD;IAEE,WAAU;IACV,OAAO;KAAE,OAAO,IAAKC,EAAOC,MAAM,KAAKC,IAAS,IAAI;KAAI,YAAYZ,EAAeW,CAAC;IAAE;GACvF,GAHMA,CAGN,CACF;EACE,CAAA,GACL,kBAAC,MAAD;GAAI,WAAU;GACX,UAAAR,EAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"usage.js","names":["__icon_LeftToRightListBulletIcon","__icon_Layers01Icon","__icon_Wallet01Icon","cn","useUiText","Icon","Badge","tokenKindColor","KAESO_USAGE_VARIANTS","KAESO_USAGE_DEFAULT_VARIANTS","ORDER","TOKEN_KIND_ORDER","kindLabels","t","UsageBreakdown","label","kinds","tokens","k","total","a","className","formatNumber","Swatch","formatTokens","KIND_ICON","LeftToRightListBulletIcon","Layers01Icon","Wallet01Icon","LimitMeter","win","Meter","limit","used","alerts","kind","scope","hard","valueLabel","resets"],"sources":["../../../src/components/kaeso/usage.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { LeftToRightListBulletIcon as __icon_LeftToRightListBulletIcon, Layers01Icon as __icon_Layers01Icon, Wallet01Icon as __icon_Wallet01Icon } from \"@hugeicons/core-free-icons\";\nimport { formatNumber, formatTokens } from \"../../format/index.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Meter } from \"../meter/meter.js\";\nimport { Swatch, TOKEN_KIND_ORDER, tokenKindColor, type TokenKind } from \"../charts/core.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_USAGE_VARIANTS = {\n limit: {\n hard: { classes: \"\" },\n soft: { classes: \"\" },\n },\n} as const;\nexport const KAESO_USAGE_DEFAULT_VARIANTS = { limit: \"hard\" } as const;\n\nconst ORDER = TOKEN_KIND_ORDER;\n\nfunction kindLabels(t: UiText): Record<TokenKind, string> {\n return {\n input: t(\"usageBreakdown.input\", \"Input\"),\n output: t(\"usageBreakdown.output\", \"Output\"),\n cacheRead: t(\"usageBreakdown.cacheRead\", \"Cache read\"),\n cacheWrite: t(\"usageBreakdown.cacheWrite\", \"Cache write\"),\n reasoning: t(\"usageBreakdown.reasoning\", \"Reasoning\"),\n };\n}\n\nexport const UsageBreakdown = /* @__PURE__ */ forwardRef<HTMLDivElement, { tokens: Partial<Record<TokenKind, number>>; className?: string | undefined }>(\n function UsageBreakdown({ tokens, className }, ref) {\n const t = useUiText();\n const label = kindLabels(t);\n const kinds = ORDER.filter((k) => (tokens[k] ?? 0) > 0);\n const total = kinds.reduce((a, k) => a + (tokens[k] ?? 0), 0) || 1;\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-12\", className)}>\n <div\n role=\"img\"\n aria-label={t(\"usageBreakdown.tokens\", \"Tokens: {list}\", {\n list: kinds\n .map((k) => t(\"usageBreakdown.kindCount\", \"{kind} {count}\", { kind: label[k], count: formatNumber(tokens[k] ?? 0) }))\n .join(t(\"usageBreakdown.listSeparator\", \", \")),\n })}\n className=\"flex h-8 w-full gap-2 overflow-hidden rounded-pill\"\n >\n {kinds.map((k) => (\n <span\n key={k}\n className=\"h-full min-w-2 first:rounded-l-pill last:rounded-r-pill width-motion\"\n style={{ width: `${((tokens[k] ?? 0) / total) * 100}%`, background: tokenKindColor(k) }}\n />\n ))}\n </div>\n <dl className=\"flex flex-wrap gap-x-24 gap-y-8\">\n {ORDER.filter((k) => tokens[k] !== undefined).map((k) => (\n <div key={k} className=\"flex flex-col gap-2\">\n <dt className=\"flex items-center gap-8 text-small text-fg-secondary\">\n <Swatch color={tokenKindColor(k)} />\n {label[k]}\n </dt>\n <dd\n className=\"pl-18 text-body font-medium text-fg tabular\"\n title={t(\"usageBreakdown.tokenCount\", \"{count} tokens\", { count: formatNumber(tokens[k] ?? 0) })}\n >\n {formatTokens(tokens[k] ?? 0)}\n </dd>\n </div>\n ))}\n </dl>\n </div>\n );\n },\n);\nif (process.env.NODE_ENV !== \"production\") UsageBreakdown.displayName = \"UsageBreakdown\";\n\nexport type LimitKind = \"requests\" | \"tokens\" | \"spend\";\nconst KIND_ICON: Record<LimitKind, IconData> = { requests: __icon_LeftToRightListBulletIcon, tokens: __icon_Layers01Icon, spend: __icon_Wallet01Icon };\n\nexport interface LimitMeterProps {\n kind: LimitKind;\n scope: ReactNode;\n window: ReactNode;\n used: number;\n limit: number;\n valueLabel: ReactNode;\n hard?: boolean | undefined;\n alerts?: number[] | undefined;\n resets?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const LimitMeter = /* @__PURE__ */ forwardRef<HTMLDivElement, LimitMeterProps>(function LimitMeter(\n { kind, scope, window: win, used, limit, valueLabel, hard = true, alerts = [0.8], resets, className },\n ref,\n) {\n const t = useUiText();\n return (\n <Meter\n ref={ref}\n className={className}\n value={limit > 0 ? used / limit : 0}\n thresholds={alerts}\n leading={<Icon icon={KIND_ICON[kind]} size=\"sm\" className=\"text-fg-secondary\" />}\n label={scope}\n trailing={<Badge tone={hard ? \"neutral\" : \"outline\"}>{hard ? t(\"limitMeter.hard\", \"Hard\") : t(\"limitMeter.soft\", \"Soft\")}</Badge>}\n caption={\n <span className=\"flex flex-wrap items-baseline justify-between gap-x-12 gap-y-2\">\n <span>\n <span className=\"font-medium text-fg-secondary tabular\">{valueLabel}</span> · {win}\n </span>\n {resets && <span>{resets}</span>}\n </span>\n }\n aria-label={t(\"limitMeter.label\", \"{kind, select, requests {requests limit} tokens {tokens limit} other {spend limit}}\", { kind })}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") LimitMeter.displayName = \"LimitMeter\";\n"],"mappings":"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"}
|