@logicplanes/kaeso-ui 0.4.1 → 0.4.3
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/NOTICE.md +1 -1
- package/ai/component-guides.md +333 -21
- package/ai/component-registry.json +631 -32
- package/ai/component-registry.md +164 -28
- package/ai/icons.md +3 -3
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +15 -14
- package/dist/blocks/delete-resource.js.map +1 -1
- package/dist/blocks/pages.js +5 -5
- package/dist/blocks/resource-list.js +42 -41
- package/dist/blocks/resource-list.js.map +1 -1
- package/dist/chunks/agent-avatar-0pdBTWkR.js +171 -0
- package/dist/chunks/agent-avatar-0pdBTWkR.js.map +1 -0
- package/dist/chunks/{app-frame-DZPEf2NQ.js → app-frame-DogGRmsu.js} +23 -22
- package/dist/chunks/app-frame-DogGRmsu.js.map +1 -0
- package/dist/chunks/{avatar-HnvBUoe5.js → avatar-CWbdwbJv.js} +2 -2
- package/dist/chunks/{avatar-HnvBUoe5.js.map → avatar-CWbdwbJv.js.map} +1 -1
- package/dist/chunks/{badge-CM8ahjDR.js → badge-C2KtxCLB.js} +2 -2
- package/dist/chunks/{badge-CM8ahjDR.js.map → badge-C2KtxCLB.js.map} +1 -1
- package/dist/chunks/{banner-CvYgPwCc.js → banner-BA2ALw9M.js} +4 -4
- package/dist/chunks/{banner-CvYgPwCc.js.map → banner-BA2ALw9M.js.map} +1 -1
- package/dist/chunks/{button-9q66Ta23.js → button-CzuxqawA.js} +8 -8
- package/dist/chunks/{button-9q66Ta23.js.map → button-CzuxqawA.js.map} +1 -1
- package/dist/chunks/{calendar-CeNcqLFd.js → calendar-BWaf2MXc.js} +58 -42
- package/dist/chunks/calendar-BWaf2MXc.js.map +1 -0
- package/dist/chunks/{checkbox-C_DrNA2N.js → checkbox-CQjwCPkc.js} +12 -10
- package/dist/chunks/checkbox-CQjwCPkc.js.map +1 -0
- package/dist/chunks/{cn-Isw2DnQX.js → cn-Dj6sRgkF.js} +8 -1
- package/dist/chunks/cn-Dj6sRgkF.js.map +1 -0
- package/dist/chunks/{code-block-mEH6Sy3h.js → code-block-D5A-CGXG.js} +75 -54
- package/dist/chunks/code-block-D5A-CGXG.js.map +1 -0
- package/dist/chunks/{code-Bp2p9AuD.js → code-tqj0uhBL.js} +2 -2
- package/dist/chunks/{code-Bp2p9AuD.js.map → code-tqj0uhBL.js.map} +1 -1
- package/dist/chunks/{collapsible-CtQNJn9b.js → collapsible-CKrCX_T9.js} +3 -3
- package/dist/chunks/{collapsible-CtQNJn9b.js.map → collapsible-CKrCX_T9.js.map} +1 -1
- package/dist/chunks/combobox-DjDI7SUC.js +319 -0
- package/dist/chunks/combobox-DjDI7SUC.js.map +1 -0
- package/dist/chunks/{command-list-CzMbdtJs.js → command-list-C2Y7V_lt.js} +54 -54
- package/dist/chunks/command-list-C2Y7V_lt.js.map +1 -0
- package/dist/chunks/{copy-button-Cdea0wKl.js → copy-button-FJvPJn72.js} +5 -5
- package/dist/chunks/{copy-button-Cdea0wKl.js.map → copy-button-FJvPJn72.js.map} +1 -1
- package/dist/chunks/{core-FtMDNELx.js → core-BYns5ytV.js} +146 -140
- package/dist/chunks/core-BYns5ytV.js.map +1 -0
- package/dist/chunks/{date-popup-NytWvSNh.js → date-popup-CPA_zt6o.js} +4 -4
- package/dist/chunks/{date-popup-NytWvSNh.js.map → date-popup-CPA_zt6o.js.map} +1 -1
- package/dist/chunks/{de-BnNQtBSV.js → de-CPXJh9cq.js} +3 -1
- package/dist/chunks/de-CPXJh9cq.js.map +1 -0
- package/dist/chunks/dialog-Cg9A_6SF.js +383 -0
- package/dist/chunks/dialog-Cg9A_6SF.js.map +1 -0
- package/dist/chunks/{empty-By1qTJr6.js → empty-DvhyMXQq.js} +2 -2
- package/dist/chunks/{empty-By1qTJr6.js.map → empty-DvhyMXQq.js.map} +1 -1
- package/dist/chunks/{field-DfITT6Jm.js → field-TviMvYa2.js} +2 -2
- package/dist/chunks/{field-DfITT6Jm.js.map → field-TviMvYa2.js.map} +1 -1
- package/dist/chunks/{icon-D5uD_mnL.js → icon-D7ja-_Yk.js} +2 -2
- package/dist/chunks/{icon-D5uD_mnL.js.map → icon-D7ja-_Yk.js.map} +1 -1
- package/dist/chunks/icon-DVooQfk4.js +94 -0
- package/dist/chunks/icon-DVooQfk4.js.map +1 -0
- package/dist/chunks/{icon-button-C7Du4pvb.js → icon-button-CrdF_eMG.js} +3 -3
- package/dist/chunks/{icon-button-C7Du4pvb.js.map → icon-button-CrdF_eMG.js.map} +1 -1
- package/dist/chunks/{identity-BcVQd-7H.js → identity-BmhQ6BQ-.js} +18 -18
- package/dist/chunks/identity-BmhQ6BQ-.js.map +1 -0
- package/dist/chunks/{input-B6Docqrk.js → input-2VJuj_M4.js} +13 -8
- package/dist/chunks/input-2VJuj_M4.js.map +1 -0
- package/dist/chunks/{input-group-Dgdb0JpZ.js → input-group-DQ_4DoXg.js} +4 -4
- package/dist/chunks/{input-group-Dgdb0JpZ.js.map → input-group-DQ_4DoXg.js.map} +1 -1
- package/dist/chunks/{inset-BnBj8NJV.js → inset-BUzyXLK4.js} +14 -4
- package/dist/chunks/inset-BUzyXLK4.js.map +1 -0
- package/dist/chunks/{iso-field-SOZ7Z-yE.js → iso-field-B2rTwiBo.js} +2 -2
- package/dist/chunks/{iso-field-SOZ7Z-yE.js.map → iso-field-B2rTwiBo.js.map} +1 -1
- package/dist/chunks/{json-view-DCTMY_j4.js → json-view-Dqd2TDkc.js} +3 -3
- package/dist/chunks/{json-view-DCTMY_j4.js.map → json-view-Dqd2TDkc.js.map} +1 -1
- package/dist/chunks/{kbd-9A9rX60U.js → kbd-BF1vKXJf.js} +2 -2
- package/dist/chunks/{kbd-9A9rX60U.js.map → kbd-BF1vKXJf.js.map} +1 -1
- package/dist/chunks/{link-CtII7u3h.js → link-KWI7PevW.js} +4 -4
- package/dist/chunks/{link-CtII7u3h.js.map → link-KWI7PevW.js.map} +1 -1
- package/dist/chunks/link-provider-cvl8lSTT.js +29 -0
- package/dist/chunks/link-provider-cvl8lSTT.js.map +1 -0
- package/dist/chunks/{list-CMXBTVkI.js → list-M1csq-d4.js} +21 -19
- package/dist/chunks/{list-CMXBTVkI.js.map → list-M1csq-d4.js.map} +1 -1
- package/dist/chunks/{loader-DqOUwS1j.js → loader-DCfPndXa.js} +2 -2
- package/dist/chunks/{loader-DqOUwS1j.js.map → loader-DCfPndXa.js.map} +1 -1
- package/dist/chunks/{markdown-CwVQ0niB.js → markdown-DULktoTK.js} +9 -9
- package/dist/chunks/{markdown-CwVQ0niB.js.map → markdown-DULktoTK.js.map} +1 -1
- package/dist/chunks/{menu-Cjg4RggA.js → menu-DEmBfdPm.js} +32 -29
- package/dist/chunks/menu-DEmBfdPm.js.map +1 -0
- package/dist/chunks/{meter-VrC2J2GF.js → meter-Bj4N3Xuh.js} +2 -2
- package/dist/chunks/{meter-VrC2J2GF.js.map → meter-Bj4N3Xuh.js.map} +1 -1
- package/dist/chunks/nav-sheet-CzgIwgAm.js +60 -0
- package/dist/chunks/nav-sheet-CzgIwgAm.js.map +1 -0
- package/dist/chunks/{nav-wordmark-CjWM3NYa.js → nav-wordmark-_pjheAsZ.js} +2 -2
- package/dist/chunks/{nav-wordmark-CjWM3NYa.js.map → nav-wordmark-_pjheAsZ.js.map} +1 -1
- package/dist/chunks/{page-header-CZCQVHYE.js → page-header-DL2y2iZp.js} +4 -4
- package/dist/chunks/{page-header-CZCQVHYE.js.map → page-header-DL2y2iZp.js.map} +1 -1
- package/dist/chunks/{pagination-BStrMDqM.js → pagination-Cn_qF4cg.js} +4 -4
- package/dist/chunks/{pagination-BStrMDqM.js.map → pagination-Cn_qF4cg.js.map} +1 -1
- package/dist/chunks/{picker-popover-BerQAEBT.js → picker-popover-BxyU1U9F.js} +17 -16
- package/dist/chunks/{picker-popover-BerQAEBT.js.map → picker-popover-BxyU1U9F.js.map} +1 -1
- package/dist/chunks/{popover-CgLt_4yG.js → popover-DNN4S47w.js} +3 -3
- package/dist/chunks/{popover-CgLt_4yG.js.map → popover-DNN4S47w.js.map} +1 -1
- package/dist/chunks/portal-context-BBbzDKmY.js.map +1 -1
- package/dist/chunks/{radio-07Muf4cX.js → radio-CDDFpdtL.js} +5 -5
- package/dist/chunks/{radio-07Muf4cX.js.map → radio-CDDFpdtL.js.map} +1 -1
- package/dist/chunks/{range-popup-BCov1iPe.js → range-popup-CRyWYUB1.js} +6 -6
- package/dist/chunks/{range-popup-BCov1iPe.js.map → range-popup-CRyWYUB1.js.map} +1 -1
- package/dist/chunks/{release-art-69WpgVik.js → release-art-ZwfFQImt.js} +2 -2
- package/dist/chunks/{release-art-69WpgVik.js.map → release-art-ZwfFQImt.js.map} +1 -1
- package/dist/chunks/{rights-UVngOX_4.js → rights-Cyp0Pzp-.js} +9 -9
- package/dist/chunks/{rights-UVngOX_4.js.map → rights-Cyp0Pzp-.js.map} +1 -1
- package/dist/chunks/scroll-area-D8MD7Vpo.js +42 -0
- package/dist/chunks/scroll-area-D8MD7Vpo.js.map +1 -0
- package/dist/chunks/{section-Bvg0EUnr.js → section-Ce1efbsP.js} +3 -3
- package/dist/chunks/{section-Bvg0EUnr.js.map → section-Ce1efbsP.js.map} +1 -1
- package/dist/chunks/{segmented-DRLDN8EW.js → segmented-CErcoxwi.js} +4 -4
- package/dist/chunks/{segmented-DRLDN8EW.js.map → segmented-CErcoxwi.js.map} +1 -1
- package/dist/chunks/{select-eFTHLeYG.js → select-x4XVsdCI.js} +4 -4
- package/dist/chunks/{select-eFTHLeYG.js.map → select-x4XVsdCI.js.map} +1 -1
- package/dist/chunks/{separator-D86IW7Ge.js → separator-D7TzNHmX.js} +2 -2
- package/dist/chunks/{separator-D86IW7Ge.js.map → separator-D7TzNHmX.js.map} +1 -1
- package/dist/chunks/{sidebar-DifJ5KgE.js → sidebar-3r1ZRXlN.js} +255 -237
- package/dist/chunks/sidebar-3r1ZRXlN.js.map +1 -0
- package/dist/chunks/{sidebar-menu-XKOiwrQp.js → sidebar-menu-BN3jkTlK.js} +2 -2
- package/dist/chunks/{sidebar-menu-XKOiwrQp.js.map → sidebar-menu-BN3jkTlK.js.map} +1 -1
- package/dist/chunks/{skeleton-Cu74kGJA.js → skeleton-Dcz57Zyp.js} +2 -2
- package/dist/chunks/{skeleton-Cu74kGJA.js.map → skeleton-Dcz57Zyp.js.map} +1 -1
- package/dist/chunks/{slider-Dh0qq1wa.js → slider-Ci83PGtj.js} +2 -2
- package/dist/chunks/{slider-Dh0qq1wa.js.map → slider-Ci83PGtj.js.map} +1 -1
- package/dist/chunks/{status-dot-u4Izk-uC.js → status-dot-QJTF0Yv4.js} +3 -3
- package/dist/chunks/{status-dot-u4Izk-uC.js.map → status-dot-QJTF0Yv4.js.map} +1 -1
- package/dist/chunks/{swap-text-CC77iKJF.js → swap-text-Dr0Irxz6.js} +2 -2
- package/dist/chunks/{swap-text-CC77iKJF.js.map → swap-text-Dr0Irxz6.js.map} +1 -1
- package/dist/chunks/{switch-CbU9m9gi.js → switch-BNMq_kGt.js} +3 -3
- package/dist/chunks/{switch-CbU9m9gi.js.map → switch-BNMq_kGt.js.map} +1 -1
- package/dist/chunks/table-BeOSKl_3.js +84 -0
- package/dist/chunks/table-BeOSKl_3.js.map +1 -0
- package/dist/chunks/{tag-CqSk8F7M.js → tag-D_M1s2qS.js} +4 -4
- package/dist/chunks/{tag-CqSk8F7M.js.map → tag-D_M1s2qS.js.map} +1 -1
- package/dist/chunks/{text-hFc6TDp9.js → text-CIXH8rmT.js} +3 -3
- package/dist/chunks/{text-hFc6TDp9.js.map → text-CIXH8rmT.js.map} +1 -1
- package/dist/chunks/{textarea-17Ftvph_.js → textarea--4FRL3Pb.js} +5 -5
- package/dist/chunks/{textarea-17Ftvph_.js.map → textarea--4FRL3Pb.js.map} +1 -1
- package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -1
- package/dist/chunks/{timeseries-CbnSFD5q.js → timeseries-D1xjRXfk.js} +3 -3
- package/dist/chunks/{timeseries-CbnSFD5q.js.map → timeseries-D1xjRXfk.js.map} +1 -1
- package/dist/chunks/{toolbar-B_960Ttx.js → toolbar-WA_oZgu-.js} +6 -5
- package/dist/chunks/{toolbar-B_960Ttx.js.map → toolbar-WA_oZgu-.js.map} +1 -1
- package/dist/chunks/tooltip-OcwO0VUT.js +154 -0
- package/dist/chunks/tooltip-OcwO0VUT.js.map +1 -0
- package/dist/chunks/{tooltip-root-Dssjjp-E.js → tooltip-root-DzahJDVj.js} +4 -4
- package/dist/chunks/{tooltip-root-Dssjjp-E.js.map → tooltip-root-DzahJDVj.js.map} +1 -1
- package/dist/chunks/{use-scroll-margin-DfdTc_5D.js → use-scroll-margin-atRtf0v_.js} +14 -10
- package/dist/chunks/use-scroll-margin-atRtf0v_.js.map +1 -0
- package/dist/chunks/{virtual-rows-yAMjeAwj.js → virtual-rows-CC_kc2PR.js} +2 -2
- package/dist/chunks/{virtual-rows-yAMjeAwj.js.map → virtual-rows-CC_kc2PR.js.map} +1 -1
- package/dist/chunks/{zh-CN-CKffAT7j.js → zh-CN-29X4CDLE.js} +3 -1
- package/dist/chunks/zh-CN-29X4CDLE.js.map +1 -0
- package/dist/components/agent-avatar.js +2 -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 +4 -4
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +2 -2
- 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 -1
- package/dist/components/charts.js +2 -2
- 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 +2 -2
- package/dist/components/command-palette.js +89 -84
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +193 -189
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +9 -7
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +125 -91
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +52 -49
- 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 +60 -0
- package/dist/components/figure.js.map +1 -0
- package/dist/components/filter-chip.js +5 -5
- 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 +2 -2
- package/dist/components/input.js +51 -51
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +8 -8
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +5 -5
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +12 -12
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +264 -96
- 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 +32 -31
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +13 -12
- package/dist/components/popover.js.map +1 -1
- package/dist/components/qr-code.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/release-art.js +1 -1
- package/dist/components/scroll-area.js +1 -41
- 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 +10 -10
- package/dist/components/settings.js.map +1 -1
- package/dist/components/sheet.js +3 -3
- 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 +3 -3
- 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 +24 -24
- 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 +33 -30
- package/dist/components/theme-menu.js.map +1 -1
- package/dist/components/theme-select.js +1 -1
- package/dist/components/thumbnail.js +41 -0
- package/dist/components/thumbnail.js.map +1 -0
- package/dist/components/timeline.js +1 -1
- package/dist/components/toast.js +100 -91
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toc.js +37 -22
- 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/format.js.map +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +99 -95
- package/dist/kaeso.css +3 -0
- package/dist/styles.css +1 -1
- package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -5
- package/dist/types/blocks/resource-list/resource-list.d.ts +1 -4
- package/dist/types/component-docs.d.ts +1 -1
- package/dist/types/components/agent-avatar/agent-avatar.d.ts +94 -0
- package/dist/types/components/agent-avatar/docs.d.ts +19 -0
- package/dist/types/components/agent-avatar/index.d.ts +3 -0
- package/dist/types/components/agent-avatar/model-name.d.ts +9 -0
- package/dist/types/components/agent-avatar/models.d.ts +4 -0
- package/dist/types/components/app-frame/app-frame.d.ts +3 -8
- package/dist/types/components/app-frame/nav-sheet.d.ts +2 -4
- package/dist/types/components/calendar/calendar.d.ts +1 -4
- package/dist/types/components/charts/core.d.ts +11 -18
- package/dist/types/components/checkbox/checkbox.d.ts +2 -0
- package/dist/types/components/code-block/code-block.d.ts +1 -1
- package/dist/types/components/code-block/indent.d.ts +3 -0
- package/dist/types/components/combobox/combobox.d.ts +26 -2
- package/dist/types/components/command-list/command-list.d.ts +1 -0
- package/dist/types/components/command-list/docs.d.ts +1 -0
- package/dist/types/components/command-list/picker-popover.d.ts +1 -4
- package/dist/types/components/command-palette/command-palette.d.ts +2 -4
- package/dist/types/components/command-palette/docs.d.ts +1 -0
- package/dist/types/components/data-table/data-table.d.ts +2 -1
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/dialog/dialog.d.ts +7 -9
- package/dist/types/components/dialog/docs.d.ts +2 -0
- package/dist/types/components/dialog/scope.d.ts +2 -0
- package/dist/types/components/dialog/step-dialog.d.ts +38 -5
- package/dist/types/components/display-options/display-options.d.ts +2 -5
- package/dist/types/components/figure/docs.d.ts +12 -0
- package/dist/types/components/figure/figure.d.ts +25 -0
- package/dist/types/components/figure/index.d.ts +1 -0
- package/dist/types/components/input/input.d.ts +23 -0
- package/dist/types/components/kaeso/client-button.d.ts +17 -0
- package/dist/types/components/kaeso/docs.d.ts +18 -0
- package/dist/types/components/kaeso/grant-summary.d.ts +12 -0
- package/dist/types/components/kaeso/identity.d.ts +2 -0
- package/dist/types/components/kaeso/index.d.ts +2 -0
- package/dist/types/components/kaeso/provider-picker.d.ts +5 -0
- package/dist/types/components/kaeso/usage.d.ts +2 -0
- package/dist/types/components/list/list.d.ts +4 -8
- package/dist/types/components/menu/docs.d.ts +8 -1
- package/dist/types/components/menu/menu.d.ts +19 -31
- package/dist/types/components/playground/parameter-panel.d.ts +1 -4
- package/dist/types/components/popover/hover-card.d.ts +2 -0
- package/dist/types/components/radio/docs.d.ts +15 -0
- package/dist/types/components/radio/radio.d.ts +2 -4
- package/dist/types/components/settings/settings.d.ts +2 -0
- package/dist/types/components/sidebar/sidebar.d.ts +13 -35
- package/dist/types/components/table/docs.d.ts +3 -1
- package/dist/types/components/table/table.d.ts +18 -1
- package/dist/types/components/tabs/tabs.d.ts +15 -0
- package/dist/types/components/theme-menu/docs.d.ts +2 -0
- package/dist/types/components/theme-menu/theme-menu.d.ts +6 -5
- package/dist/types/components/thumbnail/docs.d.ts +10 -0
- package/dist/types/components/thumbnail/index.d.ts +1 -0
- package/dist/types/components/thumbnail/thumbnail.d.ts +26 -0
- package/dist/types/components/toast/toast.d.ts +5 -12
- package/dist/types/components/toolbar/toolbar.d.ts +1 -6
- package/dist/types/components/tooltip/tooltip.d.ts +2 -4
- package/dist/types/components/tooltip/trigger-props.d.ts +0 -1
- package/dist/types/format/index.d.ts +5 -5
- package/dist/types/hooks/use-scroll-margin.d.ts +1 -1
- package/dist/types/icons/groups.d.ts +2 -2
- package/dist/types/icons/vocabulary.d.ts +15 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/utils/cn.d.ts +4 -0
- package/dist/types/utils/inset.d.ts +4 -0
- package/dist/types/utils/link-provider.d.ts +1 -1
- package/dist/types/utils/merge-refs.d.ts +3 -0
- package/dist/types/utils/portal-context.d.ts +1 -1
- package/dist/utils.js +4 -4
- package/foundations/shape.md +1 -1
- package/package.json +3 -3
- package/dist/chunks/app-frame-DZPEf2NQ.js.map +0 -1
- package/dist/chunks/calendar-CeNcqLFd.js.map +0 -1
- package/dist/chunks/checkbox-C_DrNA2N.js.map +0 -1
- package/dist/chunks/cn-Isw2DnQX.js.map +0 -1
- package/dist/chunks/code-block-mEH6Sy3h.js.map +0 -1
- package/dist/chunks/combobox-D8ZOm8uT.js +0 -314
- package/dist/chunks/combobox-D8ZOm8uT.js.map +0 -1
- package/dist/chunks/command-list-CzMbdtJs.js.map +0 -1
- package/dist/chunks/core-FtMDNELx.js.map +0 -1
- package/dist/chunks/de-BnNQtBSV.js.map +0 -1
- package/dist/chunks/dialog-BZCVFmGF.js +0 -353
- package/dist/chunks/dialog-BZCVFmGF.js.map +0 -1
- package/dist/chunks/icon-CBzvyEqC.js +0 -91
- package/dist/chunks/icon-CBzvyEqC.js.map +0 -1
- package/dist/chunks/identity-BcVQd-7H.js.map +0 -1
- package/dist/chunks/input-B6Docqrk.js.map +0 -1
- package/dist/chunks/inset-BnBj8NJV.js.map +0 -1
- package/dist/chunks/link-provider-BsUxhZKG.js +0 -27
- package/dist/chunks/link-provider-BsUxhZKG.js.map +0 -1
- package/dist/chunks/menu-Cjg4RggA.js.map +0 -1
- package/dist/chunks/nav-sheet-Y2Ite-iF.js +0 -60
- package/dist/chunks/nav-sheet-Y2Ite-iF.js.map +0 -1
- package/dist/chunks/sidebar-DifJ5KgE.js.map +0 -1
- package/dist/chunks/table-CTxDp7zC.js +0 -67
- package/dist/chunks/table-CTxDp7zC.js.map +0 -1
- package/dist/chunks/tooltip-CRApbLF6.js +0 -151
- package/dist/chunks/tooltip-CRApbLF6.js.map +0 -1
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +0 -1
- package/dist/chunks/zh-CN-CKffAT7j.js.map +0 -1
- package/dist/components/scroll-area.js.map +0 -1
package/NOTICE.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Notices
|
|
2
2
|
|
|
3
|
-
Fonts: Inter (SIL Open Font License 1.1) and Geist Mono (SIL Open Font License 1.1), self-hosted as unmodified subsets of their Fontsource builds and shipped in `dist/fonts/` with `LICENSE-Inter.txt` and `LICENSE-GeistMono.txt`. Icons: Hugeicons free, Stroke Rounded (MIT). Provider marks: the trademarks of the providers they name, shown only to identify each provider, from each provider's own vector in one colour. The repository's `NOTICE.md` lists the source of each.
|
|
3
|
+
Fonts: Inter (SIL Open Font License 1.1) and Geist Mono (SIL Open Font License 1.1), self-hosted as unmodified subsets of their Fontsource builds and shipped in `dist/fonts/` with `LICENSE-Inter.txt` and `LICENSE-GeistMono.txt`. Icons: Hugeicons free, Stroke Rounded (MIT). Provider marks: the trademarks of the providers they name, shown only to identify each provider, from each provider's own vector in one colour. Client marks: the trademarks of the agent clients they name, from Simple Icons (CC0 1.0), in one colour. The repository's `NOTICE.md` lists the source of each.
|
|
4
4
|
|
|
5
5
|
The runtime dependencies are listed in `package.json`; each is MIT, ISC, BSD-2-Clause, BSD-3-Clause, Apache-2.0 or 0BSD licensed.
|
package/ai/component-guides.md
CHANGED
|
@@ -1,6 +1,85 @@
|
|
|
1
1
|
# @logicplanes/kaeso-ui component guides
|
|
2
2
|
|
|
3
|
-
Version 0.4.
|
|
3
|
+
Version 0.4.3. Generated from the showcase's demo modules (apps/showcase/src/demos); do not edit. For each component: what it is for, its import, keyboard, accessibility, do and don't, and every example's code. Props and variants: `component-registry.md`.
|
|
4
|
+
|
|
5
|
+
## AgentAttribution
|
|
6
|
+
|
|
7
|
+
A person's avatar with the agent that acted for them as a badge on its corner, for audit rows and activity.
|
|
8
|
+
|
|
9
|
+
`import { AgentAttribution } from "@logicplanes/kaeso-ui";`
|
|
10
|
+
|
|
11
|
+
### Accessibility
|
|
12
|
+
|
|
13
|
+
- One role=img named after both, such as “Ada Okafor via Release helper (Claude)”, in the page's language.
|
|
14
|
+
|
|
15
|
+
### Examples
|
|
16
|
+
|
|
17
|
+
#### Activity
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
<div className="flex flex-col gap-16">
|
|
21
|
+
{activity.map((a) => (
|
|
22
|
+
<div key={a.person} className="flex items-center gap-12">
|
|
23
|
+
<AgentAttribution name={a.person} agent={a.agent} />
|
|
24
|
+
<Text>{a.action}</Text>
|
|
25
|
+
</div>
|
|
26
|
+
))}
|
|
27
|
+
</div>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
#### Sizes
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<div className="flex flex-wrap items-end gap-16">
|
|
34
|
+
{([20, 24, 28, 32, 40] as const).map((s) => (
|
|
35
|
+
<AgentAttribution key={s} name="Ada Okafor" agent={{ name: "Release helper", model: "claude" }} size={s} />
|
|
36
|
+
))}
|
|
37
|
+
</div>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## AgentAvatar
|
|
41
|
+
|
|
42
|
+
An agent acting for a person: one bot face on an ink square, the same for every agent.
|
|
43
|
+
|
|
44
|
+
`import { AgentAvatar, useModelName } from "@logicplanes/kaeso-ui";`
|
|
45
|
+
|
|
46
|
+
### Accessibility
|
|
47
|
+
|
|
48
|
+
- role=img named after the agent; pass decorative when the name is written next to it.
|
|
49
|
+
- Every agent looks the same; write its model family with useModelName where it matters.
|
|
50
|
+
|
|
51
|
+
### Examples
|
|
52
|
+
|
|
53
|
+
#### Agents
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
function Agents() {
|
|
57
|
+
const modelName = useModelName();
|
|
58
|
+
return (
|
|
59
|
+
<div className="flex flex-col gap-12">
|
|
60
|
+
{agents.map((a) => (
|
|
61
|
+
<div key={a.model} className="flex items-center gap-8">
|
|
62
|
+
<AgentAvatar name={a.name} decorative />
|
|
63
|
+
<Text>{a.name}</Text>
|
|
64
|
+
<Text variant="small" tone="secondary">
|
|
65
|
+
{modelName(a.model)}
|
|
66
|
+
</Text>
|
|
67
|
+
</div>
|
|
68
|
+
))}
|
|
69
|
+
</div>
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Sizes
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
<div className="flex flex-wrap items-end gap-12">
|
|
78
|
+
{([20, 24, 28, 32, 40] as const).map((s) => (
|
|
79
|
+
<AgentAvatar key={s} name="Release helper" size={s} />
|
|
80
|
+
))}
|
|
81
|
+
</div>
|
|
82
|
+
```
|
|
4
83
|
|
|
5
84
|
## AlertDialog
|
|
6
85
|
|
|
@@ -595,6 +674,28 @@ An 18px box: raised and ringed, ink when checked, with a check that draws itself
|
|
|
595
674
|
</CheckboxGroup>
|
|
596
675
|
```
|
|
597
676
|
|
|
677
|
+
## ClientButton
|
|
678
|
+
|
|
679
|
+
An agent client's mark on a raised tile, such as Claude, Cursor or GitHub Copilot, that opens how to connect it.
|
|
680
|
+
|
|
681
|
+
`import { ClientButton } from "@logicplanes/kaeso-ui";`
|
|
682
|
+
|
|
683
|
+
### Accessibility
|
|
684
|
+
|
|
685
|
+
- A button named by `aria-label`, which is also its tooltip; the mark is decorative.
|
|
686
|
+
|
|
687
|
+
### Examples
|
|
688
|
+
|
|
689
|
+
#### Clients
|
|
690
|
+
|
|
691
|
+
```tsx
|
|
692
|
+
<div className="flex gap-8">
|
|
693
|
+
<ClientButton client="claude" aria-label="Add to Claude Code" />
|
|
694
|
+
<ClientButton client="cursor" aria-label="Add to Cursor" />
|
|
695
|
+
<ClientButton client="github-copilot" aria-label="Add to GitHub Copilot" />
|
|
696
|
+
</div>
|
|
697
|
+
```
|
|
698
|
+
|
|
598
699
|
## ClipboardText
|
|
599
700
|
|
|
600
701
|
Copy a value: a read-only pill field, a copy circle, or inline text that copies itself.
|
|
@@ -622,7 +723,7 @@ A read-only pill with the value in mono and a copy circle inside.
|
|
|
622
723
|
|
|
623
724
|
```tsx
|
|
624
725
|
<div className="w-400">
|
|
625
|
-
<ClipboardText value="https://
|
|
726
|
+
<ClipboardText value="https://kaeso.example.com/v1" label="Copy base URL" />
|
|
626
727
|
</div>
|
|
627
728
|
```
|
|
628
729
|
|
|
@@ -679,7 +780,7 @@ Highlighted code on a well in Kaeso's monochrome theme: copy on hover, tabs, lin
|
|
|
679
780
|
|
|
680
781
|
```tsx
|
|
681
782
|
<div className="w-full">
|
|
682
|
-
<CodeBlock tabs={sdkSnippets({ baseUrl: "https://
|
|
783
|
+
<CodeBlock tabs={sdkSnippets({ baseUrl: "https://kaeso.example.com" })} />
|
|
683
784
|
</div>
|
|
684
785
|
```
|
|
685
786
|
|
|
@@ -1456,7 +1557,7 @@ function WithResult() {
|
|
|
1456
1557
|
title: "Key created",
|
|
1457
1558
|
description: "Copy the key now: it's shown once, and Kaeso keeps only a hash of it.",
|
|
1458
1559
|
size: "lg",
|
|
1459
|
-
content: <SecretReveal secret={SECRET} name={name.trim()} baseUrl="https://
|
|
1560
|
+
content: <SecretReveal secret={SECRET} name={name.trim()} baseUrl="https://kaeso.example.com" model="gpt-5-mini" />,
|
|
1460
1561
|
footer: <Button onClick={close}>Done</Button>,
|
|
1461
1562
|
}
|
|
1462
1563
|
: undefined
|
|
@@ -1735,6 +1836,27 @@ A label, a control and its help, wired together; an error shows under the contro
|
|
|
1735
1836
|
</div>
|
|
1736
1837
|
```
|
|
1737
1838
|
|
|
1839
|
+
## Figure
|
|
1840
|
+
|
|
1841
|
+
A diagram or image set apart from the text: centred on a well, with a caption, scrolling sideways only when it can't shrink to fit.
|
|
1842
|
+
|
|
1843
|
+
`import { Figure } from "@logicplanes/kaeso-ui";`
|
|
1844
|
+
|
|
1845
|
+
### Accessibility
|
|
1846
|
+
|
|
1847
|
+
- The caption names the figure; the label names the region that scrolls, so keyboard users know what they scroll.
|
|
1848
|
+
- Put a diagram's longer description in a visually hidden element and point the image's aria-describedby at it.
|
|
1849
|
+
|
|
1850
|
+
### Examples
|
|
1851
|
+
|
|
1852
|
+
#### A diagram with its caption
|
|
1853
|
+
|
|
1854
|
+
```tsx
|
|
1855
|
+
<Figure label="Diagram: route of a request" caption="Route of a request" className="w-full">
|
|
1856
|
+
<ThemeImage light="/demos/route.light.svg" dark="/demos/route.dark.svg" alt="Route of a request: app, Kaeso, provider" width={364} height={49} />
|
|
1857
|
+
</Figure>
|
|
1858
|
+
```
|
|
1859
|
+
|
|
1738
1860
|
## FilterChip
|
|
1739
1861
|
|
|
1740
1862
|
A filter as one pill, “Status is 2xx”: property, operator and value, each opening a menu.
|
|
@@ -1903,6 +2025,29 @@ A semicircle for “budget used”; thresholds as ticks.
|
|
|
1903
2025
|
<Gauge aria-label="Monthly budget used" value={0.64} label="of $500.00 budget" valueLabel="$320.00" />
|
|
1904
2026
|
```
|
|
1905
2027
|
|
|
2028
|
+
## GrantSummary
|
|
2029
|
+
|
|
2030
|
+
What an agent may do in a few short lines, each after a check mark, as on its consent page.
|
|
2031
|
+
|
|
2032
|
+
`import { GrantSummary } from "@logicplanes/kaeso-ui";`
|
|
2033
|
+
|
|
2034
|
+
### Accessibility
|
|
2035
|
+
|
|
2036
|
+
- A list named by `aria-label`; the check marks are decorative.
|
|
2037
|
+
|
|
2038
|
+
### Examples
|
|
2039
|
+
|
|
2040
|
+
#### An agent's rights
|
|
2041
|
+
|
|
2042
|
+
```tsx
|
|
2043
|
+
<GrantSummary
|
|
2044
|
+
className="w-360"
|
|
2045
|
+
aria-label="What it can do"
|
|
2046
|
+
items={["Manages projects, keys, and models in Northwind", "Reads the rest of Northwind", "Also in organizations you join later"]}
|
|
2047
|
+
footer="For 90 days; revoke it any time in your account settings."
|
|
2048
|
+
/>
|
|
2049
|
+
```
|
|
2050
|
+
|
|
1906
2051
|
## Grid
|
|
1907
2052
|
|
|
1908
2053
|
Grid, Stack and Inline: layout with gaps from the spacing scale only.
|
|
@@ -2118,7 +2263,7 @@ An invalid value gets the danger ring; what is wrong goes in a toast.
|
|
|
2118
2263
|
```tsx
|
|
2119
2264
|
<div className="flex w-360 flex-col gap-12">
|
|
2120
2265
|
<Input aria-label="Email" leadingIcon={icons.mail} placeholder="ada@northwind.example" />
|
|
2121
|
-
<Input aria-label="Gateway URL" prefix="https://" placeholder="
|
|
2266
|
+
<Input aria-label="Gateway URL" prefix="https://" placeholder="kaeso.example.com" />
|
|
2122
2267
|
<Input aria-label="Rate limit" suffix="/ min" defaultValue="600" align="end" />
|
|
2123
2268
|
</div>
|
|
2124
2269
|
```
|
|
@@ -2150,7 +2295,7 @@ Addons inside the pill: text, icons, a ghost circle or a key cap, sharing one fo
|
|
|
2150
2295
|
<div className="flex w-400 flex-col gap-12">
|
|
2151
2296
|
<InputGroup>
|
|
2152
2297
|
<InputGroup.Addon>https://</InputGroup.Addon>
|
|
2153
|
-
<InputGroup.Input aria-label="Host" placeholder="
|
|
2298
|
+
<InputGroup.Input aria-label="Host" placeholder="kaeso.example.com" />
|
|
2154
2299
|
<InputGroup.Addon>/v1</InputGroup.Addon>
|
|
2155
2300
|
</InputGroup>
|
|
2156
2301
|
<InputGroup trailingButton>
|
|
@@ -2394,11 +2539,13 @@ function Wizard() {
|
|
|
2394
2539
|
const [view, setView] = useState<"pick" | "review" | "custom">("pick");
|
|
2395
2540
|
const [model, setModel] = useState("");
|
|
2396
2541
|
const [custom, setCustom] = useState("");
|
|
2542
|
+
const [query, setQuery] = useState("");
|
|
2397
2543
|
const m = models.find((x) => x.model === model);
|
|
2398
2544
|
const start = () => {
|
|
2399
2545
|
setView("pick");
|
|
2400
2546
|
setModel("");
|
|
2401
2547
|
setCustom("");
|
|
2548
|
+
setQuery("");
|
|
2402
2549
|
setOpen(true);
|
|
2403
2550
|
};
|
|
2404
2551
|
const close = () => setOpen(false);
|
|
@@ -2410,29 +2557,31 @@ function Wizard() {
|
|
|
2410
2557
|
const pick = {
|
|
2411
2558
|
title: "Add model",
|
|
2412
2559
|
description: "Pick a model from the models.dev catalogue.",
|
|
2560
|
+
toolbar: <SearchInput aria-label="Search models" placeholder="Search" value={query} onChange={(e) => setQuery(e.target.value)} data-autofocus />,
|
|
2413
2561
|
content: (
|
|
2414
2562
|
<div className="flex flex-col gap-12">
|
|
2415
2563
|
<List
|
|
2416
2564
|
aria-label="Models on models.dev"
|
|
2417
2565
|
density="compact"
|
|
2418
|
-
items={models
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2566
|
+
items={models
|
|
2567
|
+
.filter((x) => x.model.includes(query.trim().toLowerCase()))
|
|
2568
|
+
.map((x) => ({
|
|
2569
|
+
id: x.model,
|
|
2570
|
+
textValue: x.model,
|
|
2571
|
+
title: <ModelLabel provider={x.provider} providerName={providerNames[x.provider]} model={x.model} name={x.name} />,
|
|
2572
|
+
}))}
|
|
2423
2573
|
onOpen={(item) => {
|
|
2424
2574
|
setModel(item.id);
|
|
2425
2575
|
setView("review");
|
|
2426
2576
|
}}
|
|
2427
2577
|
/>
|
|
2428
|
-
<Text variant="small" tone="secondary">
|
|
2429
|
-
Not on models.dev?{" "}
|
|
2430
|
-
<Button variant="link" size="sm" onClick={() => setView("custom")}>
|
|
2431
|
-
Add a custom model
|
|
2432
|
-
</Button>
|
|
2433
|
-
</Text>
|
|
2434
2578
|
</div>
|
|
2435
2579
|
),
|
|
2580
|
+
footerStart: (
|
|
2581
|
+
<Button variant="ghost" leadingIcon={icons.add} onClick={() => setView("custom")}>
|
|
2582
|
+
Add a custom model
|
|
2583
|
+
</Button>
|
|
2584
|
+
),
|
|
2436
2585
|
};
|
|
2437
2586
|
const second = {
|
|
2438
2587
|
review: {
|
|
@@ -3388,9 +3537,23 @@ Choosing a provider from any number of them: connected ones first with their key
|
|
|
3388
3537
|
### Accessibility
|
|
3389
3538
|
|
|
3390
3539
|
- A search field over a listbox, with Connected and Other providers as groups; each option reads the provider's name and hint.
|
|
3540
|
+
- As tiles, a radio group: arrow keys move the choice, and a press or click on a tile calls onChoose, so a dialog step can continue at once.
|
|
3391
3541
|
|
|
3392
3542
|
### Examples
|
|
3393
3543
|
|
|
3544
|
+
#### Tiles in a dialog's first step
|
|
3545
|
+
|
|
3546
|
+
```tsx
|
|
3547
|
+
function Grid() {
|
|
3548
|
+
const [provider, setProvider] = useState<string | null>(null);
|
|
3549
|
+
return (
|
|
3550
|
+
<div className="w-512 max-w-full">
|
|
3551
|
+
<ProviderPicker appearance="grid" aria-label="Provider" providers={providers} value={provider} onValueChange={setProvider} />
|
|
3552
|
+
</div>
|
|
3553
|
+
);
|
|
3554
|
+
}
|
|
3555
|
+
```
|
|
3556
|
+
|
|
3394
3557
|
#### In a dialog step
|
|
3395
3558
|
|
|
3396
3559
|
```tsx
|
|
@@ -3903,7 +4066,7 @@ The one-time secret: calm, centered, certain. Copy it, store it, see how to use
|
|
|
3903
4066
|
|
|
3904
4067
|
```tsx
|
|
3905
4068
|
<div className="w-560">
|
|
3906
|
-
<SecretReveal secret={SECRET} name="checkout-web" baseUrl="https://
|
|
4069
|
+
<SecretReveal secret={SECRET} name="checkout-web" baseUrl="https://kaeso.example.com" model="gpt-5-mini" />
|
|
3907
4070
|
</div>
|
|
3908
4071
|
```
|
|
3909
4072
|
|
|
@@ -3911,7 +4074,7 @@ The one-time secret: calm, centered, certain. Copy it, store it, see how to use
|
|
|
3911
4074
|
|
|
3912
4075
|
```tsx
|
|
3913
4076
|
<div className="w-640">
|
|
3914
|
-
<EnvironmentSnippet baseUrl="https://
|
|
4077
|
+
<EnvironmentSnippet baseUrl="https://kaeso.example.com" />
|
|
3915
4078
|
</div>
|
|
3916
4079
|
```
|
|
3917
4080
|
|
|
@@ -3922,12 +4085,12 @@ The one-time secret: calm, centered, certain. Copy it, store it, see how to use
|
|
|
3922
4085
|
<SecretReveal
|
|
3923
4086
|
secret={SECRET}
|
|
3924
4087
|
name="terraform"
|
|
3925
|
-
baseUrl="https://
|
|
4088
|
+
baseUrl="https://kaeso.example.com"
|
|
3926
4089
|
snippets={[
|
|
3927
4090
|
{
|
|
3928
4091
|
label: "curl",
|
|
3929
4092
|
lang: "bash",
|
|
3930
|
-
code: `curl https://
|
|
4093
|
+
code: `curl https://kaeso.example.com/platform/v1/orgs/org_01/projects \\\n -H "Authorization: Bearer ${SECRET}"`,
|
|
3931
4094
|
},
|
|
3932
4095
|
]}
|
|
3933
4096
|
/>
|
|
@@ -4524,6 +4687,59 @@ An 8px semantic dot with its word. Status is never color alone.
|
|
|
4524
4687
|
</div>
|
|
4525
4688
|
```
|
|
4526
4689
|
|
|
4690
|
+
## SwapText
|
|
4691
|
+
|
|
4692
|
+
Text that changes with state in a place sized for its widest version, so nothing around it moves.
|
|
4693
|
+
|
|
4694
|
+
`import { SwapText } from "@logicplanes/kaeso-ui";`
|
|
4695
|
+
|
|
4696
|
+
### Accessibility
|
|
4697
|
+
|
|
4698
|
+
- Only the current text is read; the reserved versions are hidden from screen readers.
|
|
4699
|
+
- Buttons take reserveLabels, which wraps their label in SwapText; reach for SwapText itself for text outside a button.
|
|
4700
|
+
|
|
4701
|
+
### Examples
|
|
4702
|
+
|
|
4703
|
+
#### Basic
|
|
4704
|
+
|
|
4705
|
+
```tsx
|
|
4706
|
+
function Basic() {
|
|
4707
|
+
const [active, setActive] = useState(true);
|
|
4708
|
+
return (
|
|
4709
|
+
<div className="flex items-center gap-12 text-body">
|
|
4710
|
+
<Switch size="sm" aria-label="Key active" checked={active} onCheckedChange={setActive} />
|
|
4711
|
+
<span className="font-medium text-fg">
|
|
4712
|
+
<SwapText reserve={["Active", "Paused"]} align="start">
|
|
4713
|
+
{active ? "Active" : "Paused"}
|
|
4714
|
+
</SwapText>
|
|
4715
|
+
</span>
|
|
4716
|
+
<span className="text-fg-secondary">production</span>
|
|
4717
|
+
</div>
|
|
4718
|
+
);
|
|
4719
|
+
}
|
|
4720
|
+
```
|
|
4721
|
+
|
|
4722
|
+
#### Aligned at the start
|
|
4723
|
+
|
|
4724
|
+
In a column, start-aligned labels keep the text after them on one line.
|
|
4725
|
+
|
|
4726
|
+
```tsx
|
|
4727
|
+
<div className="flex flex-col gap-8 text-body">
|
|
4728
|
+
{[
|
|
4729
|
+
{ status: "Streaming", model: "gpt-5-mini" },
|
|
4730
|
+
{ status: "Done", model: "claude-sonnet-4-5" },
|
|
4731
|
+
{ status: "Failed", model: "gpt-4.1-nano" },
|
|
4732
|
+
].map((row) => (
|
|
4733
|
+
<div key={row.model} className="flex items-center gap-12">
|
|
4734
|
+
<SwapText reserve={STATUSES} align="start" className="font-medium text-fg">
|
|
4735
|
+
{row.status}
|
|
4736
|
+
</SwapText>
|
|
4737
|
+
<span className="mono text-fg-secondary">{row.model}</span>
|
|
4738
|
+
</div>
|
|
4739
|
+
))}
|
|
4740
|
+
</div>
|
|
4741
|
+
```
|
|
4742
|
+
|
|
4527
4743
|
## Switch
|
|
4528
4744
|
|
|
4529
4745
|
A pill track and a round thumb that travels in 180ms.
|
|
@@ -4655,6 +4871,35 @@ Long text and links wrap like prose; the row grows and keeps its padding, and on
|
|
|
4655
4871
|
</Table>
|
|
4656
4872
|
```
|
|
4657
4873
|
|
|
4874
|
+
#### Compact
|
|
4875
|
+
|
|
4876
|
+
A reference table of five or more columns puts 8px between them, so it fits the column without scrolling.
|
|
4877
|
+
|
|
4878
|
+
```tsx
|
|
4879
|
+
<Table density="compact" className="w-640">
|
|
4880
|
+
<Table.Head>
|
|
4881
|
+
<Table.Row>
|
|
4882
|
+
<Table.HeaderCell>Variable</Table.HeaderCell>
|
|
4883
|
+
<Table.HeaderCell>TOML key</Table.HeaderCell>
|
|
4884
|
+
<Table.HeaderCell>Type</Table.HeaderCell>
|
|
4885
|
+
<Table.HeaderCell>Default</Table.HeaderCell>
|
|
4886
|
+
<Table.HeaderCell>What it does</Table.HeaderCell>
|
|
4887
|
+
</Table.Row>
|
|
4888
|
+
</Table.Head>
|
|
4889
|
+
<Table.Body>
|
|
4890
|
+
{settings.map((s) => (
|
|
4891
|
+
<Table.Row key={s.variable}>
|
|
4892
|
+
<Table.Cell className="mono text-small">{s.variable}</Table.Cell>
|
|
4893
|
+
<Table.Cell className="mono text-small">{s.key}</Table.Cell>
|
|
4894
|
+
<Table.Cell>{s.type}</Table.Cell>
|
|
4895
|
+
<Table.Cell className="mono text-small whitespace-nowrap">{s.default}</Table.Cell>
|
|
4896
|
+
<Table.Cell>{s.does}</Table.Cell>
|
|
4897
|
+
</Table.Row>
|
|
4898
|
+
))}
|
|
4899
|
+
</Table.Body>
|
|
4900
|
+
</Table>
|
|
4901
|
+
```
|
|
4902
|
+
|
|
4658
4903
|
## TableOfContents
|
|
4659
4904
|
|
|
4660
4905
|
“On this page”: the heading in view in text color with a 2px ink bar.
|
|
@@ -4912,6 +5157,44 @@ An image drawn twice, once for each theme, such as a diagram: it follows the the
|
|
|
4912
5157
|
<ThemeImage light="/demos/route.light.svg" dark="/demos/route.dark.svg" alt="Route of a request: app, Kaeso, provider" width={364} height={49} />
|
|
4913
5158
|
```
|
|
4914
5159
|
|
|
5160
|
+
## ThemeMenu
|
|
5161
|
+
|
|
5162
|
+
A circle that opens system, light or dark, stored as `kaeso:theme`; its icon shows the theme in use.
|
|
5163
|
+
|
|
5164
|
+
`import { ThemeMenu } from "@logicplanes/kaeso-ui";`
|
|
5165
|
+
|
|
5166
|
+
### Keyboard
|
|
5167
|
+
|
|
5168
|
+
| Key | Action |
|
|
5169
|
+
|---|---|
|
|
5170
|
+
| Enter Space | Opens the menu |
|
|
5171
|
+
| Up Down | Moves between the choices |
|
|
5172
|
+
| Enter | Chooses and closes |
|
|
5173
|
+
| Escape | Closes and returns focus |
|
|
5174
|
+
|
|
5175
|
+
### Accessibility
|
|
5176
|
+
|
|
5177
|
+
- Named Theme in the provider's language; the menu marks the current choice as checked.
|
|
5178
|
+
- Reads and sets the choice of the nearest ThemeProvider; every provider on the page follows it.
|
|
5179
|
+
|
|
5180
|
+
### Examples
|
|
5181
|
+
|
|
5182
|
+
#### Basic
|
|
5183
|
+
|
|
5184
|
+
```tsx
|
|
5185
|
+
<ThemeProvider>
|
|
5186
|
+
<ThemeMenu />
|
|
5187
|
+
</ThemeProvider>
|
|
5188
|
+
```
|
|
5189
|
+
|
|
5190
|
+
#### Raised
|
|
5191
|
+
|
|
5192
|
+
```tsx
|
|
5193
|
+
<ThemeProvider>
|
|
5194
|
+
<ThemeMenu variant="secondary" size="md" />
|
|
5195
|
+
</ThemeProvider>
|
|
5196
|
+
```
|
|
5197
|
+
|
|
4915
5198
|
## ThemeSelect
|
|
4916
5199
|
|
|
4917
5200
|
A select for system, light or dark, stored as `kaeso:theme`, with its label in the provider's language.
|
|
@@ -4972,6 +5255,35 @@ A select for system, light or dark, stored as `kaeso:theme`, with its label in t
|
|
|
4972
5255
|
</ThemeProvider>
|
|
4973
5256
|
```
|
|
4974
5257
|
|
|
5258
|
+
## Thumbnail
|
|
5259
|
+
|
|
5260
|
+
A square image someone sent, such as a photo in a request's conversation, cropped to fill a well.
|
|
5261
|
+
|
|
5262
|
+
`import { Thumbnail } from "@logicplanes/kaeso-ui";`
|
|
5263
|
+
|
|
5264
|
+
### Accessibility
|
|
5265
|
+
|
|
5266
|
+
- Alt is required: say what the image shows, or the sender's own description when the request carried one.
|
|
5267
|
+
- When the image can't load, its text alternative takes its place, so nothing is lost.
|
|
5268
|
+
|
|
5269
|
+
### Examples
|
|
5270
|
+
|
|
5271
|
+
#### An image in a message
|
|
5272
|
+
|
|
5273
|
+
```tsx
|
|
5274
|
+
<Thumbnail src="/demos/receipt.svg" alt="A receipt from Northwind Labs" />
|
|
5275
|
+
```
|
|
5276
|
+
|
|
5277
|
+
#### Sizes
|
|
5278
|
+
|
|
5279
|
+
```tsx
|
|
5280
|
+
<div className="flex flex-wrap items-end gap-12">
|
|
5281
|
+
<Thumbnail src="/demos/receipt.svg" alt="A receipt, 64px" size="sm" />
|
|
5282
|
+
<Thumbnail src="/demos/receipt.svg" alt="A receipt, 120px" />
|
|
5283
|
+
<Thumbnail src="/demos/receipt.svg" alt="A receipt, 160px" size="lg" />
|
|
5284
|
+
</div>
|
|
5285
|
+
```
|
|
5286
|
+
|
|
4975
5287
|
## Timeline
|
|
4976
5288
|
|
|
4977
5289
|
Events down a 1px line: the audit log.
|