@logicplanes/kaeso-ui 0.4.6 → 0.4.8
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 +36 -2
- package/ai/component-registry.json +67 -5
- package/ai/component-registry.md +23 -5
- package/ai/icons.md +1 -1
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +2 -2
- package/dist/blocks/resource-list.js +3 -3
- package/dist/chunks/{app-frame-DysOel2X.js → app-frame-D8sGcD0v.js} +6 -6
- package/dist/chunks/{app-frame-DysOel2X.js.map → app-frame-D8sGcD0v.js.map} +1 -1
- package/dist/chunks/{banner-B3DGLTBu.js → banner-BinTH032.js} +2 -2
- package/dist/chunks/{banner-B3DGLTBu.js.map → banner-BinTH032.js.map} +1 -1
- package/dist/chunks/{button-IblhXUyZ.js → button-DrmFgdIi.js} +2 -2
- package/dist/chunks/button-DrmFgdIi.js.map +1 -0
- package/dist/chunks/{checkbox-9tbimmF3.js → checkbox-ahl1SOqU.js} +2 -2
- package/dist/chunks/{checkbox-9tbimmF3.js.map → checkbox-ahl1SOqU.js.map} +1 -1
- package/dist/chunks/{code-block-KIvuE8jg.js → code-block-CE3H3nMu.js} +3 -3
- package/dist/chunks/{code-block-KIvuE8jg.js.map → code-block-CE3H3nMu.js.map} +1 -1
- package/dist/chunks/{code-block-64e-Cy1S.js → code-block-O_EPmMIQ.js} +2 -2
- package/dist/chunks/{code-block-64e-Cy1S.js.map → code-block-O_EPmMIQ.js.map} +1 -1
- package/dist/chunks/{combobox-DkcjkWc6.js → combobox-DghYPLVQ.js} +7 -3
- package/dist/chunks/combobox-DghYPLVQ.js.map +1 -0
- package/dist/chunks/{command-list-CypqsC4T.js → command-list-BUmEaaBi.js} +3 -3
- package/dist/chunks/{command-list-CypqsC4T.js.map → command-list-BUmEaaBi.js.map} +1 -1
- package/dist/chunks/{copy-button-CwU8t_9_.js → copy-button-DBPAA1g0.js} +2 -2
- package/dist/chunks/{copy-button-CwU8t_9_.js.map → copy-button-DBPAA1g0.js.map} +1 -1
- package/dist/chunks/{core-CmK-8ObW.js → core-Cw3pNRp3.js} +10 -9
- package/dist/chunks/core-Cw3pNRp3.js.map +1 -0
- package/dist/chunks/data-table-CGecI-FI.js +602 -0
- package/dist/chunks/data-table-CGecI-FI.js.map +1 -0
- package/dist/chunks/{date-popup-DAnjptFt.js → date-popup-C6vVOOWF.js} +2 -2
- package/dist/chunks/{date-popup-DAnjptFt.js.map → date-popup-C6vVOOWF.js.map} +1 -1
- package/dist/chunks/{dialog-2zb6ClNR.js → dialog-s3_LUPBi.js} +4 -4
- package/dist/chunks/{dialog-2zb6ClNR.js.map → dialog-s3_LUPBi.js.map} +1 -1
- package/dist/chunks/{domain-obd_w9xk.js → domain-CrQX3p6E.js} +2 -2
- package/dist/chunks/{domain-obd_w9xk.js.map → domain-CrQX3p6E.js.map} +1 -1
- package/dist/chunks/{icon-button-Dfwpvmav.js → icon-button-6kOn2zrP.js} +2 -2
- package/dist/chunks/{icon-button-Dfwpvmav.js.map → icon-button-6kOn2zrP.js.map} +1 -1
- package/dist/chunks/identity-BwYixi8Q.js +520 -0
- package/dist/chunks/identity-BwYixi8Q.js.map +1 -0
- package/dist/chunks/{input-Bo5-UZg2.js → input-D1SeLe3X.js} +2 -2
- package/dist/chunks/{input-Bo5-UZg2.js.map → input-D1SeLe3X.js.map} +1 -1
- package/dist/chunks/{input-group-jPcK9T_a.js → input-group-BbxwEAUP.js} +2 -2
- package/dist/chunks/{input-group-jPcK9T_a.js.map → input-group-BbxwEAUP.js.map} +1 -1
- package/dist/chunks/{iso-field-DoqHBg8n.js → iso-field-BVOKAY4H.js} +2 -2
- package/dist/chunks/{iso-field-DoqHBg8n.js.map → iso-field-BVOKAY4H.js.map} +1 -1
- package/dist/chunks/{list-B4G-sWwV.js → list-o8wcuBOz.js} +117 -94
- package/dist/chunks/list-o8wcuBOz.js.map +1 -0
- package/dist/chunks/{markdown-C565aBR7.js → markdown-BZKZi9d8.js} +4 -4
- package/dist/chunks/{markdown-C565aBR7.js.map → markdown-BZKZi9d8.js.map} +1 -1
- package/dist/chunks/{menu-Clvv6ftq.js → menu-BDce2kiw.js} +2 -2
- package/dist/chunks/{menu-Clvv6ftq.js.map → menu-BDce2kiw.js.map} +1 -1
- package/dist/chunks/{nav-sheet-Dt6JSvzX.js → nav-sheet-D3U7MeaI.js} +3 -3
- package/dist/chunks/{nav-sheet-Dt6JSvzX.js.map → nav-sheet-D3U7MeaI.js.map} +1 -1
- package/dist/chunks/{page-header-kS5tdmvb.js → page-header-C5Bv1gKE.js} +2 -2
- package/dist/chunks/{page-header-kS5tdmvb.js.map → page-header-C5Bv1gKE.js.map} +1 -1
- package/dist/chunks/{pagination-D7fAm8qg.js → pagination-D9hM6W2z.js} +3 -3
- package/dist/chunks/{pagination-D7fAm8qg.js.map → pagination-D9hM6W2z.js.map} +1 -1
- package/dist/chunks/{picker-popover-1FHb1LQG.js → picker-popover-PzVOo62-.js} +4 -4
- package/dist/chunks/{picker-popover-1FHb1LQG.js.map → picker-popover-PzVOo62-.js.map} +1 -1
- package/dist/chunks/{range-popup-lGiZsG3s.js → range-popup-Dt6Q0Ryw.js} +3 -3
- package/dist/chunks/{range-popup-lGiZsG3s.js.map → range-popup-Dt6Q0Ryw.js.map} +1 -1
- package/dist/chunks/{rights-B68ocZuq.js → rights-DAHTG_kH.js} +4 -4
- package/dist/chunks/{rights-B68ocZuq.js.map → rights-DAHTG_kH.js.map} +1 -1
- package/dist/chunks/{select-BqjmQOqx.js → select-UTdHKubp.js} +2 -2
- package/dist/chunks/{select-BqjmQOqx.js.map → select-UTdHKubp.js.map} +1 -1
- package/dist/chunks/{sidebar-Dq7oGOje.js → sidebar-K30Ae8N5.js} +2 -2
- package/dist/chunks/{sidebar-Dq7oGOje.js.map → sidebar-K30Ae8N5.js.map} +1 -1
- package/dist/chunks/{sidebar-menu-QSSNu1jJ.js → sidebar-menu-C0qJsQF5.js} +2 -2
- package/dist/chunks/{sidebar-menu-QSSNu1jJ.js.map → sidebar-menu-C0qJsQF5.js.map} +1 -1
- package/dist/chunks/styles-8fn_bHRP.js +21 -0
- package/dist/chunks/styles-8fn_bHRP.js.map +1 -0
- package/dist/chunks/{textarea-CO0HP6fK.js → textarea-CRmvC4jd.js} +3 -3
- package/dist/chunks/{textarea-CO0HP6fK.js.map → textarea-CRmvC4jd.js.map} +1 -1
- package/dist/chunks/{theme-provider-DJhORMlc.js → theme-provider-BjXTggqM.js} +6 -2
- package/dist/chunks/theme-provider-BjXTggqM.js.map +1 -0
- package/dist/chunks/{timeseries-Ck-q0wWn.js → timeseries-CK86u7M0.js} +3 -3
- package/dist/chunks/{timeseries-Ck-q0wWn.js.map → timeseries-CK86u7M0.js.map} +1 -1
- package/dist/components/app-frame.js +2 -2
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/charts/bar.js +2 -2
- package/dist/components/charts/donut.js +1 -1
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/heatmap.js +1 -1
- package/dist/components/charts/sankey.js +2 -2
- 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/combobox.js +1 -1
- package/dist/components/command-list.js +2 -2
- package/dist/components/command-palette.js +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/dialog.js +2 -2
- package/dist/components/display-options.js +2 -2
- package/dist/components/filter-chip.js +3 -3
- package/dist/components/filter-toggle.js +35 -0
- package/dist/components/filter-toggle.js.map +1 -0
- package/dist/components/icon-button.js +1 -1
- package/dist/components/input.js +3 -3
- package/dist/components/kaeso/conversation.js +2 -2
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +3 -3
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +1 -1
- package/dist/components/kaeso.js +11 -16
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/key-value.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +2 -2
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +9 -9
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/tabs.js +4 -4
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/theme-menu.js +3 -3
- package/dist/components/theme-select.js +2 -2
- package/dist/components/toast.js +40 -38
- package/dist/components/toast.js.map +1 -1
- package/dist/index.js +69 -68
- package/dist/kaeso.css +19 -12
- package/dist/styles.css +1 -1
- package/dist/theme.js +1 -1
- package/dist/types/components/combobox/combobox.d.ts +2 -0
- package/dist/types/components/filter-toggle/docs.d.ts +11 -0
- package/dist/types/components/filter-toggle/filter-toggle.d.ts +23 -0
- package/dist/types/components/filter-toggle/index.d.ts +1 -0
- package/dist/types/components/kaeso/docs.d.ts +1 -0
- package/dist/types/components/kaeso/identity.d.ts +1 -0
- package/dist/types/components/kaeso/provider-marks.d.ts +27 -2
- package/dist/types/components/menu/styles.d.ts +1 -1
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/package.json +5 -5
- package/dist/chunks/button-IblhXUyZ.js.map +0 -1
- package/dist/chunks/combobox-DkcjkWc6.js.map +0 -1
- package/dist/chunks/core-CmK-8ObW.js.map +0 -1
- package/dist/chunks/data-table-CqY8_6IS.js +0 -581
- package/dist/chunks/data-table-CqY8_6IS.js.map +0 -1
- package/dist/chunks/identity-3Foi5F8w.js +0 -361
- package/dist/chunks/identity-3Foi5F8w.js.map +0 -1
- package/dist/chunks/list-B4G-sWwV.js.map +0 -1
- package/dist/chunks/styles-hkFkoBbi.js +0 -21
- package/dist/chunks/styles-hkFkoBbi.js.map +0 -1
- package/dist/chunks/theme-provider-DJhORMlc.js.map +0 -1
package/dist/components/kaeso.js
CHANGED
|
@@ -4,17 +4,17 @@ import { i as t, r as n } from "../chunks/context-BELWW79w.js";
|
|
|
4
4
|
import { t as r } from "../chunks/icon-CBzOwqrX.js";
|
|
5
5
|
import { r as i } from "../chunks/tooltip-Tkm-urbi.js";
|
|
6
6
|
import { a, o, s } from "../chunks/field-D7m-yl-D.js";
|
|
7
|
-
import { o as c } from "../chunks/input-
|
|
7
|
+
import { o as c } from "../chunks/input-D1SeLe3X.js";
|
|
8
8
|
import { a as l } from "../chunks/radio-C6GtzF_t.js";
|
|
9
|
-
import { r as u } from "../chunks/select-
|
|
10
|
-
import { t as d } from "../chunks/command-list-
|
|
11
|
-
import { i as f, r as p } from "../chunks/picker-popover-
|
|
9
|
+
import { r as u } from "../chunks/select-UTdHKubp.js";
|
|
10
|
+
import { t as d } from "../chunks/command-list-BUmEaaBi.js";
|
|
11
|
+
import { i as f, r as p } from "../chunks/picker-popover-PzVOo62-.js";
|
|
12
12
|
import { t as m } from "../chunks/badge-C0GC3B9X.js";
|
|
13
|
-
import { a as h, c as g, d as _, f as v, i as y, l as b, n as x, o as S, r as C, s as w, t as T, u as E } from "../chunks/identity-
|
|
13
|
+
import { a as h, c as g, d as _, f as v, i as y, l as b, n as x, o as S, r as C, s as w, t as T, u as E } from "../chunks/identity-BwYixi8Q.js";
|
|
14
14
|
import { EnvironmentSnippet as D, KAESO_MOMENTS_DEFAULT_VARIANTS as O, KAESO_MOMENTS_VARIANTS as k, SecretReveal as A, sdkSnippets as j } from "./kaeso/moments.js";
|
|
15
15
|
import { KAESO_USAGE_BREAKDOWN_DEFAULT_VARIANTS as M, KAESO_USAGE_BREAKDOWN_VARIANTS as N, KAESO_USAGE_DEFAULT_VARIANTS as P, KAESO_USAGE_VARIANTS as F, LimitMeter as I, UsageBreakdown as L } from "./kaeso/usage.js";
|
|
16
16
|
import { ConversationView as R, KAESO_CONVERSATION_DEFAULT_VARIANTS as z, KAESO_CONVERSATION_VARIANTS as B } from "./kaeso/conversation.js";
|
|
17
|
-
import { a as V, i as ee, n as te, r as ne, t as re } from "../chunks/rights-
|
|
17
|
+
import { a as V, i as ee, n as te, r as ne, t as re } from "../chunks/rights-DAHTG_kH.js";
|
|
18
18
|
import { Fragment as ie, forwardRef as H, useId as ae, useMemo as U, useState as W } from "react";
|
|
19
19
|
import { jsx as G, jsxs as K } from "react/jsx-runtime";
|
|
20
20
|
import { Tick02Icon as oe } from "@hugeicons/core-free-icons";
|
|
@@ -172,7 +172,7 @@ var X = { layout: { rows: { classes: "flex flex-col @auth:grid @auth:grid-cols-t
|
|
|
172
172
|
process.env.NODE_ENV !== "production" && (Z.displayName = "EffectiveAccess");
|
|
173
173
|
function ue({ term: t, count: n, quiet: r, children: i }) {
|
|
174
174
|
return /* @__PURE__ */ K("div", {
|
|
175
|
-
className: "flex min-h-40 flex-col gap-2 py-8 not-first:hairline-t @auth:col-span-2 @auth:grid @auth:grid-cols-subgrid @auth:items-baseline @auth:gap-16",
|
|
175
|
+
className: "flex min-h-40 flex-col justify-center gap-2 py-8 not-first:hairline-t @auth:col-span-2 @auth:grid @auth:grid-cols-subgrid @auth:content-center @auth:items-baseline @auth:gap-16",
|
|
176
176
|
children: [/* @__PURE__ */ G("dt", {
|
|
177
177
|
className: e("shrink-0 text-small font-medium @auth:min-w-140", r ? "text-fg-secondary" : "text-fg"),
|
|
178
178
|
children: t
|
|
@@ -237,13 +237,10 @@ function me({ providers: r, disabled: i, value: a, onValueChange: o, onChoose: s
|
|
|
237
237
|
"aria-label": t.label
|
|
238
238
|
} : {},
|
|
239
239
|
className: "flex flex-col gap-8",
|
|
240
|
-
children: [t.label && /* @__PURE__ */
|
|
240
|
+
children: [t.label && /* @__PURE__ */ G("div", {
|
|
241
241
|
"aria-hidden": !0,
|
|
242
|
-
className: "
|
|
243
|
-
children:
|
|
244
|
-
className: "font-regular text-fg-tertiary tabular",
|
|
245
|
-
children: t.items.length
|
|
246
|
-
})]
|
|
242
|
+
className: "text-caption font-medium text-fg-secondary",
|
|
243
|
+
children: t.label
|
|
247
244
|
}), /* @__PURE__ */ G("div", {
|
|
248
245
|
className: "grid grid-cols-2 gap-8 sm:grid-cols-3",
|
|
249
246
|
children: t.items.map((t, r) => /* @__PURE__ */ K(se.Root, {
|
|
@@ -264,7 +261,7 @@ function me({ providers: r, disabled: i, value: a, onValueChange: o, onChoose: s
|
|
|
264
261
|
}), /* @__PURE__ */ K("span", {
|
|
265
262
|
className: "flex min-w-0 flex-1 flex-col",
|
|
266
263
|
children: [/* @__PURE__ */ G("span", {
|
|
267
|
-
className: "
|
|
264
|
+
className: "line-clamp-2 text-body font-medium text-pretty wrap-break-word text-fg",
|
|
268
265
|
children: y(t)
|
|
269
266
|
}), t.hint !== void 0 && /* @__PURE__ */ G("span", {
|
|
270
267
|
className: "line-clamp-2 text-small text-pretty text-fg-secondary",
|
|
@@ -304,12 +301,10 @@ function he(e, r) {
|
|
|
304
301
|
}), s.length && c.length ? (l.push({
|
|
305
302
|
id: "connected",
|
|
306
303
|
label: i("providerPicker.connected", "Connected"),
|
|
307
|
-
count: s.length,
|
|
308
304
|
items: s.map(o)
|
|
309
305
|
}), l.push({
|
|
310
306
|
id: "other",
|
|
311
307
|
label: i("providerPicker.other", "Other providers"),
|
|
312
|
-
count: c.length,
|
|
313
308
|
items: c.map(o)
|
|
314
309
|
})) : l.push({
|
|
315
310
|
id: "providers",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaeso.js","names":["BaseRadioGroup","BaseRadioGroup","BaseRadio","__icon_Tick02Icon","cn","useUiText","useLocale","Icon","Tooltip","SearchInput","RadioCircle","Select","CommandList","PickerTrigger","PickerPopover","Badge","KAESO_KEY_DISPLAY_VARIANTS","ProviderBadge","StatusCode","providerName","KAESO_KEY_DISPLAY_DEFAULT_VARIANTS","ProviderCard","KAESO_IDENTITY_DEFAULT_VARIANTS","KeyDisplay","KAESO_IDENTITY_VARIANTS","ModelLabel","CapabilityIcons","RequestTimeline","rightsCascade","groupCascade","KAESO_RIGHTS_MATRIX_VARIANTS","RightsMatrix","KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS","KAESO_ROLE_PICKER_VARIANTS","KAESO_ROLE_PICKER_DEFAULT_VARIANTS","RolePicker","ariaLabel","t","baseId","useId","builtIn","custom","hasCustom","roles","r","appearance","fullWidth","className","label","name","disabled","value","onValueChange","sections","RadioGroup","v","s","Fragment","id","si","i","off","KAESO_EFFECTIVE_ACCESS_VARIANTS","KAESO_EFFECTIVE_ACCESS_DEFAULT_VARIANTS","EffectiveAccess","empty","groups","g","sources","granted","words","Row","action","quiet","term","count","KAESO_PROVIDER_PICKER_VARIANTS","KAESO_PROVIDER_PICKER_DEFAULT_VARIANTS","ALL","SEARCH_ABOVE","ProviderTiles","locale","query","setQuery","useState","wanted","nameOf","p","byName","a","b","shown","providers","k","connected","rest","searchable","autoFocus","section","Radio","onChoose","useProviderGroups","useMemo","item","allLabel","ProviderPicker","force","props","field","useField","fc","useFieldControl","open","setOpen","listLabel","search","placeholder","list","height","description","error","control","withField","chosen","size","KAESO_GRANT_SUMMARY_VARIANTS","KAESO_GRANT_SUMMARY_DEFAULT_VARIANTS","GrantSummary","items","Tick02Icon","footer","KAESO_CLIENT_BUTTON_VARIANTS","KAESO_CLIENT_BUTTON_DEFAULT_VARIANTS","CLIENT_MARKS","ClientButton","client","ConversationView","EnvironmentSnippet","KAESO_CONVERSATION_DEFAULT_VARIANTS","KAESO_CONVERSATION_VARIANTS","KAESO_MOMENTS_DEFAULT_VARIANTS","KAESO_MOMENTS_VARIANTS","KAESO_USAGE_BREAKDOWN_DEFAULT_VARIANTS","KAESO_USAGE_BREAKDOWN_VARIANTS","KAESO_USAGE_DEFAULT_VARIANTS","KAESO_USAGE_VARIANTS","LimitMeter","SecretReveal","UsageBreakdown","sdkSnippets"],"sources":["../../src/components/kaeso/role-picker.tsx","../../src/components/kaeso/effective-access.tsx","../../src/components/kaeso/provider-picker.tsx","../../src/components/kaeso/grant-summary.tsx","../../src/components/kaeso/client-button.tsx"],"sourcesContent":["import { forwardRef, Fragment, useId } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { cn } from \"../../utils/cn.js\";\nimport { RadioCircle } from \"../radio/radio.js\";\nimport { Select } from \"../select/select.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_ROLE_PICKER_VARIANTS = {\n appearance: {\n list: {\n classes: \"flex flex-col gap-16\",\n },\n select: { classes: \"\" },\n },\n} as const;\nexport const KAESO_ROLE_PICKER_DEFAULT_VARIANTS = { appearance: \"list\" } as const;\n\nexport interface RoleOption {\n value: string;\n label: string;\n description?: string | undefined;\n custom?: boolean | undefined;\n hint?: string | undefined;\n disabled?: boolean | undefined;\n disabledReason?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface RolePickerProps {\n roles: RoleOption[];\n value?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n appearance?: keyof typeof KAESO_ROLE_PICKER_VARIANTS.appearance | undefined;\n disabled?: boolean | undefined;\n name?: string | undefined;\n label?: string | undefined;\n \"aria-label\"?: string | undefined;\n fullWidth?: boolean | undefined;\n size?: \"sm\" | \"md\" | undefined;\n className?: string | undefined;\n}\n\nexport const RolePicker = /* @__PURE__ */ forwardRef<HTMLDivElement, RolePickerProps>(function RolePicker(\n { roles, value, onValueChange, appearance = \"list\", disabled, name, label, \"aria-label\": ariaLabel, fullWidth, size = \"md\", className },\n ref,\n) {\n const t = useUiText();\n const baseId = useId();\n const builtIn = t(\"rolePicker.builtInRoles\", \"Built-in roles\");\n const custom = t(\"rolePicker.customRoles\", \"Custom roles\");\n const hasCustom = roles.some((r) => r.custom);\n if (appearance === \"select\") {\n return (\n <div ref={ref} className={cn(\"min-w-0\", fullWidth && \"w-full\", className)}>\n <Select\n {...(label ? { label } : {})}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(name ? { name } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(fullWidth ? { fullWidth } : {})}\n size={size}\n value={value ?? null}\n {...(onValueChange ? { onValueChange } : {})}\n options={[...roles.filter((r) => !r.custom), ...roles.filter((r) => r.custom)].map((r) => ({\n value: r.value,\n label: r.label,\n textValue: r.label,\n description: r.disabled && r.disabledReason ? r.disabledReason : r.description,\n ...(hasCustom ? { group: r.custom ? custom : builtIn } : {}),\n ...(r.disabled ? { disabled: true } : {}),\n }))}\n />\n </div>\n );\n }\n const sections = hasCustom\n ? [\n { caption: builtIn, items: roles.filter((r) => !r.custom) },\n { caption: custom, items: roles.filter((r) => r.custom) },\n ]\n : [{ caption: undefined, items: roles }];\n return (\n <BaseRadioGroup\n ref={ref}\n {...(value != null ? { value } : {})}\n {...(onValueChange ? { onValueChange: (v: unknown) => onValueChange(String(v)) } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(name ? { name } : {})}\n aria-label={ariaLabel ?? label ?? t(\"rolePicker.role\", \"Role\")}\n className={cn(KAESO_ROLE_PICKER_VARIANTS.appearance.list.classes, className)}\n >\n {sections\n .filter((s) => s.items.length > 0)\n .map((s, si) => (\n <Fragment key={s.caption ?? \"all\"}>\n <div className=\"flex flex-col gap-8\">\n {s.caption && <span className=\"text-caption font-medium text-fg-secondary\">{s.caption}</span>}\n <div className=\"flex flex-col overflow-hidden rounded-group bg-raised shadow-xs\">\n {s.items.map((r, i) => {\n const id = `${baseId}-${si}-${i}`;\n const off = disabled || r.disabled;\n return (\n <label\n key={r.value}\n htmlFor={id}\n data-choice-row=\"\"\n {...(r[\"data-force\"] ? { \"data-force\": r[\"data-force\"] } : {})}\n className={cn(\n \"flex min-h-56 cursor-pointer items-center gap-16 px-20 py-12 transition-control not-first:hairline-t\",\n off ? \"cursor-not-allowed\" : \"hover:bg-raised-hover active:bg-raised-pressed focus-ring-card-row-within\",\n )}\n >\n <span className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <span className=\"flex min-w-0 items-baseline gap-8\">\n <span id={`${id}-name`} className={cn(\"min-w-0 wrap-break-word text-body-lg font-medium\", off ? \"text-fg-disabled\" : \"text-fg\")}>\n {r.label}\n </span>\n {r.hint && <span className={cn(\"ml-auto shrink-0 text-small tabular\", off ? \"text-fg-disabled\" : \"text-fg-tertiary\")}>{r.hint}</span>}\n </span>\n {r.description && (\n <span id={`${id}-desc`} className={cn(\"text-small text-pretty\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>\n {r.description}\n </span>\n )}\n {r.disabled && r.disabledReason && (\n <span id={`${id}-reason`} className=\"text-small text-pretty text-fg-secondary\">\n {r.disabledReason}\n </span>\n )}\n </span>\n <RadioCircle\n id={id}\n value={r.value}\n {...(r.disabled ? { disabled: true } : {})}\n {...(r[\"data-force\"] ? { \"data-force\": r[\"data-force\"] } : {})}\n aria-labelledby={`${id}-name`}\n {...(r.description || (r.disabled && r.disabledReason)\n ? { \"aria-describedby\": [r.description && `${id}-desc`, r.disabled && r.disabledReason && `${id}-reason`].filter(Boolean).join(\" \") }\n : {})}\n />\n </label>\n );\n })}\n </div>\n </div>\n </Fragment>\n ))}\n </BaseRadioGroup>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RolePicker.displayName = \"RolePicker\";\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { RightSource, RightsGroup } from \"./rights.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_EFFECTIVE_ACCESS_VARIANTS = {\n layout: {\n rows: {\n classes: \"flex flex-col @auth:grid @auth:grid-cols-term @auth:gap-x-16\",\n },\n },\n} as const;\nexport const KAESO_EFFECTIVE_ACCESS_DEFAULT_VARIANTS = { layout: \"rows\" } as const;\n\nexport interface EffectiveAccessProps {\n groups: RightsGroup[];\n sources?: RightSource[] | undefined;\n action?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const EffectiveAccess = /* @__PURE__ */ forwardRef<HTMLDivElement, EffectiveAccessProps>(function EffectiveAccess(\n { groups, sources, action, \"aria-label\": ariaLabel, className },\n ref,\n) {\n const t = useUiText();\n const empty = groups.filter((g) => !g.rights.some((r) => r.granted));\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={ariaLabel ?? t(\"effectiveAccess.access\", \"Access\")}\n className={cn(\"@container flex min-w-0 flex-col gap-12\", className)}\n >\n {!!sources?.length && (\n <span className=\"flex flex-wrap items-center gap-4\">\n <span className=\"mr-4 text-small text-fg-secondary\">{t(\"effectiveAccess.from\", \"From\")}</span>\n {sources.map((s) =>\n s.detail ? (\n <Tooltip key={s.label} content={s.detail}>\n <Badge tabIndex={0} className=\"cursor-help underline decoration-dotted underline-offset-2 focus-ring\">\n {s.label}\n </Badge>\n </Tooltip>\n ) : (\n <Badge key={s.label}>{s.label}</Badge>\n ),\n )}\n </span>\n )}\n <dl className={KAESO_EFFECTIVE_ACCESS_VARIANTS.layout.rows.classes}>\n {groups\n .filter((g) => g.rights.some((r) => r.granted))\n .map((g) => {\n const granted = g.rights.filter((r) => r.granted);\n const words =\n granted.length === g.rights.length\n ? t(\"effectiveAccess.everyRight\", \"Every right\")\n : granted.map((r) => r.label ?? r.code).join(t(\"effectiveAccess.listSeparator\", \", \"));\n return (\n <Row\n key={g.label}\n term={g.label}\n count={t(\"effectiveAccess.grantedOfTotal\", \"{granted} of {total}\", { granted: granted.length, total: g.rights.length })}\n >\n {words}\n </Row>\n );\n })}\n {empty.length > 0 && (\n <Row term={t(\"effectiveAccess.noRights\", \"No rights\")} quiet>\n {empty.map((g) => g.label).join(t(\"effectiveAccess.listSeparator\", \", \"))}\n </Row>\n )}\n </dl>\n {action && <div className=\"flex\">{action}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") EffectiveAccess.displayName = \"EffectiveAccess\";\n\nfunction Row({ term, count, quiet, children }: { term: string; count?: string | undefined; quiet?: boolean | undefined; children: ReactNode }) {\n return (\n <div className=\"flex min-h-40 flex-col gap-2 py-8 not-first:hairline-t @auth:col-span-2 @auth:grid @auth:grid-cols-subgrid @auth:items-baseline @auth:gap-16\">\n <dt className={cn(\"shrink-0 text-small font-medium @auth:min-w-140\", quiet ? \"text-fg-secondary\" : \"text-fg\")}>{term}</dt>\n <dd className=\"flex min-w-0 flex-1 items-baseline gap-12\">\n <span className=\"min-w-0 flex-1 text-small text-pretty text-fg-secondary\">{children}</span>\n {count && <span className=\"shrink-0 text-small text-fg-secondary tabular\">{count}</span>}\n </dd>\n </div>\n );\n}\n","import { forwardRef, useMemo, useState, type ReactNode, type Ref } from \"react\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SearchInput } from \"../input/input.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\nimport { CommandList, type CommandListGroup } from \"../command-list/command-list.js\";\nimport { PickerPopover, PickerTrigger } from \"../command-list/picker-popover.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { ProviderBadge, providerName } from \"./identity.js\";\n\nexport const KAESO_PROVIDER_PICKER_VARIANTS = {\n appearance: {\n list: { classes: \"\" },\n select: { classes: \"\" },\n grid: { classes: \"\" },\n },\n} as const;\nexport const KAESO_PROVIDER_PICKER_DEFAULT_VARIANTS = { appearance: \"list\" } as const;\n\nexport interface ProviderPickerOption {\n id: string;\n name?: string | undefined;\n connected?: boolean | undefined;\n hint?: ReactNode | undefined;\n keywords?: readonly string[] | undefined;\n disabled?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface ProviderPickerProps extends FieldWrapProps {\n providers: ProviderPickerOption[];\n value?: string | null | undefined;\n onValueChange?: ((id: string | null) => void) | undefined;\n onChoose?: ((id: string) => void) | undefined;\n appearance?: keyof typeof KAESO_PROVIDER_PICKER_VARIANTS.appearance | undefined;\n allLabel?: string | undefined;\n placeholder?: string | undefined;\n size?: \"sm\" | \"md\" | undefined;\n disabled?: boolean | undefined;\n autoFocus?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst ALL = \"\";\nconst SEARCH_ABOVE = 9;\n\nfunction ProviderTiles({\n providers,\n disabled,\n value,\n onValueChange,\n onChoose,\n autoFocus,\n label,\n className,\n}: {\n providers: ProviderPickerOption[];\n disabled: boolean | undefined;\n value: string | null | undefined;\n onValueChange: ((id: string | null) => void) | undefined;\n onChoose: ((id: string) => void) | undefined;\n autoFocus: boolean | undefined;\n label: string;\n className: string | undefined;\n}) {\n const t = useUiText();\n const locale = useLocale();\n const [query, setQuery] = useState(\"\");\n const wanted = query.trim().toLowerCase();\n const nameOf = (p: ProviderPickerOption) => providerName(p.id, p.name);\n const byName = (a: ProviderPickerOption, b: ProviderPickerOption) => nameOf(a).localeCompare(nameOf(b), locale, { sensitivity: \"base\" });\n const shown = providers.filter((p) => !wanted || [p.id, nameOf(p), ...(p.keywords ?? [])].some((k) => k.toLowerCase().includes(wanted)));\n const connected = shown.filter((p) => p.connected).sort(byName);\n const rest = shown.filter((p) => !p.connected).sort(byName);\n const sections =\n connected.length && rest.length\n ? [\n { id: \"connected\", label: t(\"providerPicker.connected\", \"Connected\"), items: connected },\n { id: \"other\", label: t(\"providerPicker.other\", \"Other providers\"), items: rest },\n ]\n : [{ id: \"providers\", label: undefined, items: [...connected, ...rest] }];\n const searchable = providers.length > SEARCH_ABOVE;\n return (\n <div className={cn(\"flex min-w-0 flex-col gap-16\", className)}>\n {searchable && (\n <SearchInput\n aria-label={t(\"providerPicker.search\", \"Search providers\")}\n placeholder={t(\"providerPicker.search\", \"Search providers\")}\n {...(disabled ? { disabled: true } : {})}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n {...(autoFocus ? { autoFocus: true } : {})}\n />\n )}\n {shown.length === 0 ? (\n <p className=\"py-24 text-center text-body text-fg-secondary\">{t(\"providerPicker.noMatch\", \"No providers match\")}</p>\n ) : (\n <BaseRadioGroup\n aria-label={label}\n value={value ?? null}\n {...(disabled ? { disabled: true } : {})}\n onValueChange={(v: unknown) => onValueChange?.(v ? String(v) : null)}\n className=\"flex flex-col gap-20\"\n >\n {sections.map((section, si) => (\n <div key={section.id} {...(section.label ? { role: \"group\", \"aria-label\": section.label } : {})} className=\"flex flex-col gap-8\">\n {section.label && (\n <div aria-hidden className=\"flex items-center justify-between text-caption font-medium text-fg-secondary\">\n <span>{section.label}</span>\n <span className=\"font-regular text-fg-tertiary tabular\">{section.items.length}</span>\n </div>\n )}\n <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-3\">\n {section.items.map((p, i) => (\n <BaseRadio.Root\n key={p.id}\n value={p.id}\n {...(p.disabled ? { disabled: true } : {})}\n {...(p[\"data-force\"] ? { \"data-force\": p[\"data-force\"] } : {})}\n {...(autoFocus && !searchable && si === 0 && i === 0 && !value ? { autoFocus: true } : {})}\n onClick={() => !disabled && !p.disabled && onChoose?.(p.id)}\n className={cn(\n \"group/tile flex min-h-64 min-w-0 cursor-pointer items-center gap-10 rounded-group bg-raised px-10 py-12 sm:gap-12 sm:px-12 text-left shadow-control transition-control focus-ring forced-checked\",\n \"hover:not-data-checked:bg-raised-hover hover:not-data-checked:shadow-control-hover active:bg-raised-pressed\",\n \"data-checked:bg-item-hover data-checked:ring-step data-disabled:cursor-not-allowed data-disabled:opacity-40\",\n )}\n >\n <span aria-hidden className=\"flex\">\n <ProviderBadge provider={p.id} name={p.name} size=\"lg\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-body font-medium text-fg\">{nameOf(p)}</span>\n {p.hint !== undefined && <span className=\"line-clamp-2 text-small text-pretty text-fg-secondary\">{p.hint}</span>}\n </span>\n </BaseRadio.Root>\n ))}\n </div>\n </div>\n ))}\n </BaseRadioGroup>\n )}\n </div>\n );\n}\n\nexport function useProviderGroups(providers: ProviderPickerOption[], allLabel?: string | undefined): CommandListGroup[] {\n const t = useUiText();\n const locale = useLocale();\n return useMemo(() => {\n const nameOf = (p: ProviderPickerOption) => providerName(p.id, p.name);\n const byName = (a: ProviderPickerOption, b: ProviderPickerOption) => nameOf(a).localeCompare(nameOf(b), locale, { sensitivity: \"base\" });\n const item = (p: ProviderPickerOption) => ({\n value: p.id,\n label: nameOf(p),\n keywords: [p.id, ...(p.keywords ?? [])],\n leading: (\n <span aria-hidden className=\"flex\">\n <ProviderBadge provider={p.id} name={p.name} />\n </span>\n ),\n ...(p.hint !== undefined ? { meta: p.hint } : {}),\n ...(p.disabled ? { disabled: true } : {}),\n });\n const connected = providers.filter((p) => p.connected).sort(byName);\n const rest = providers.filter((p) => !p.connected).sort(byName);\n const groups: CommandListGroup[] = [];\n if (allLabel) groups.push({ id: \"all\", items: [{ value: ALL, label: allLabel }] });\n if (connected.length && rest.length) {\n groups.push({ id: \"connected\", label: t(\"providerPicker.connected\", \"Connected\"), count: connected.length, items: connected.map(item) });\n groups.push({ id: \"other\", label: t(\"providerPicker.other\", \"Other providers\"), count: rest.length, items: rest.map(item) });\n } else groups.push({ id: \"providers\", items: [...connected, ...rest].map(item) });\n return groups;\n }, [providers, allLabel, t, locale]);\n}\n\nexport const ProviderPicker = /* @__PURE__ */ forwardRef<HTMLElement, ProviderPickerProps>(function ProviderPicker(props, ref) {\n const {\n providers,\n value,\n onValueChange,\n onChoose,\n appearance = \"list\",\n allLabel,\n placeholder,\n size = \"md\",\n disabled,\n autoFocus,\n \"aria-label\": ariaLabel,\n className,\n \"data-force\": force,\n label,\n description,\n error,\n optional,\n required,\n layout,\n } = props;\n const t = useUiText();\n const field = useField();\n const fc = useFieldControl(props);\n const [open, setOpen] = useState(false);\n const offered = useMemo(\n () => (disabled && appearance === \"list\" ? providers.map((p) => ({ ...p, disabled: true })) : providers),\n [providers, disabled, appearance],\n );\n const groups = useProviderGroups(offered, appearance === \"select\" ? allLabel : undefined);\n const listLabel = ariaLabel ?? (typeof label === \"string\" ? label : t(\"providerPicker.providers\", \"Providers\"));\n const search = placeholder ?? t(\"providerPicker.search\", \"Search providers\");\n const empty = t(\"providerPicker.noMatch\", \"No providers match\");\n const list = (height?: \"inline\") => (\n <CommandList\n groups={groups}\n aria-label={listLabel}\n value={value ?? (allLabel ? ALL : null)}\n onSelect={(id) => {\n onValueChange?.(id === ALL ? null : id);\n setOpen(false);\n }}\n placeholder={search}\n emptyText={empty}\n {...(height ? { height } : {})}\n {...(autoFocus || appearance === \"select\" ? { autoFocus: true } : {})}\n {...(height && force ? { \"data-force\": force } : {})}\n {...(height && className && !(label || description || error) ? { className } : {})}\n {...(height ? { ref: ref as Ref<HTMLInputElement> } : {})}\n />\n );\n if (appearance === \"grid\") {\n const control = (\n <ProviderTiles\n providers={providers}\n disabled={disabled}\n value={value}\n onValueChange={onValueChange}\n onChoose={onChoose}\n autoFocus={autoFocus}\n label={listLabel}\n className={!(label || description || error) ? className : undefined}\n />\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId, disabled, className }, control);\n }\n if (appearance === \"list\") {\n const control = list(\"inline\");\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId, disabled, className }, control);\n }\n const chosen = providers.find((p) => p.id === value);\n const control = (\n <PickerPopover\n title={listLabel}\n width=\"sm\"\n open={open}\n onOpenChange={setOpen}\n trigger={\n <PickerTrigger\n ref={ref as Ref<HTMLButtonElement>}\n size={size === \"sm\" ? \"sm\" : \"md\"}\n {...fc.controlProps}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(disabled ? { disabled } : {})}\n {...(force ? { \"data-force\": force } : {})}\n placeholder={placeholder ?? t(\"providerPicker.choose\", \"Choose a provider\")}\n {...(!(label || description || error) && className ? { className } : {})}\n >\n {chosen ? (\n <span className=\"flex min-w-0 items-center gap-8\">\n <span aria-hidden className=\"flex\">\n <ProviderBadge provider={chosen.id} name={chosen.name} />\n </span>\n <span className=\"truncate\">{providerName(chosen.id, chosen.name)}</span>\n </span>\n ) : (\n allLabel\n )}\n </PickerTrigger>\n }\n >\n {list()}\n </PickerPopover>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") ProviderPicker.displayName = \"ProviderPicker\";\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\n\nexport const KAESO_GRANT_SUMMARY_VARIANTS = {} as const;\nexport const KAESO_GRANT_SUMMARY_DEFAULT_VARIANTS = {} as const;\n\nexport interface GrantSummaryProps {\n items: readonly ReactNode[];\n footer?: ReactNode | undefined;\n action?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\n/** What an agent or a key may do, one short line per item after a check mark, on a group surface, with an optional note and action below. */\nexport const GrantSummary = /* @__PURE__ */ forwardRef<HTMLDivElement, GrantSummaryProps>(function GrantSummary(\n { items, footer, action, \"aria-label\": ariaLabel, className },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <ul aria-label={ariaLabel} className=\"flex flex-col gap-10\">\n {items.map((item, i) => (\n <li key={i} className=\"flex items-start gap-10 text-body text-fg\">\n <Icon icon={__icon_Tick02Icon} size=\"sm\" className=\"mt-2 text-success-text\" />\n <span className=\"min-w-0 text-pretty\">{item}</span>\n </li>\n ))}\n </ul>\n {(footer || action) && (\n <div className=\"flex items-center justify-between gap-12 pt-12 hairline-t\">\n {footer && <p className=\"min-w-0 text-small text-fg-secondary text-pretty\">{footer}</p>}\n {action && <div className=\"ml-auto shrink-0\">{action}</div>}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GrantSummary.displayName = \"GrantSummary\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\n\nexport const KAESO_CLIENT_BUTTON_VARIANTS = {} as const;\nexport const KAESO_CLIENT_BUTTON_DEFAULT_VARIANTS = {} as const;\n\n/** The marks of the agent clients Kaeso connects to, on a 24px grid, drawn in the text colour. */\nexport const CLIENT_MARKS = {\n claude:\n \"m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z\",\n cursor:\n \"M11.503.131 1.891 5.678a.84.84 0 0 0-.42.726v11.188c0 .3.162.575.42.724l9.609 5.55a1 1 0 0 0 .998 0l9.61-5.55a.84.84 0 0 0 .42-.724V6.404a.84.84 0 0 0-.42-.726L12.497.131a1.01 1.01 0 0 0-.996 0M2.657 6.338h18.55c.263 0 .43.287.297.515L12.23 22.918c-.062.107-.229.064-.229-.06V12.335a.59.59 0 0 0-.295-.51l-9.11-5.257c-.109-.063-.064-.23.061-.23\",\n \"github-copilot\":\n \"M23.922 16.997C23.061 18.492 18.063 22.02 12 22.02 5.937 22.02.939 18.492.078 16.997A.641.641 0 0 1 0 16.741v-2.869a.883.883 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.098 10.098 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952C7.255 2.937 9.248 1.98 11.978 1.98c2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.841.841 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256Zm-11.75-5.992h-.344a4.359 4.359 0 0 1-.355.508c-.77.947-1.918 1.492-3.508 1.492-1.725 0-2.989-.359-3.782-1.259a2.137 2.137 0 0 1-.085-.104L4 11.746v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.359 4.359 0 0 1-.355-.508Zm2.328 3.25c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm-5 0c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm3.313-6.185c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z\",\n} as const;\n\nexport type ClientMark = keyof typeof CLIENT_MARKS;\n\nexport interface ClientButtonProps {\n client: ClientMark;\n \"aria-label\": string;\n onClick?: (() => void) | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\n/** An agent client's mark in a raised circle, as a button that opens how to connect it. Its tooltip is its label. */\nexport const ClientButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, ClientButtonProps>(function ClientButton(\n { client, \"aria-label\": label, onClick, className, \"data-force\": force },\n ref,\n) {\n return (\n <Tooltip content={label}>\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n data-client={client}\n {...(force ? { \"data-force\": force } : {})}\n onClick={onClick}\n className={cn(\n \"relative inline-flex size-32 shrink-0 items-center justify-center rounded-pill text-fg material-secondary transition-control focus-ring tap-target\",\n className,\n )}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden focusable=\"false\" className=\"size-16\">\n <path d={CLIENT_MARKS[client]} />\n </svg>\n </button>\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ClientButton.displayName = \"ClientButton\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAaiC,IAA6B,EACxC,YAAY;CACV,MAAM,EACJ,SAAS,uBACX;CACA,QAAQ,EAAE,SAAS,GAAG;AACxB,EACF,GACaC,KAAqC,EAAE,YAAY,OAAO,GA2B1DC,IAA6B,kBAA4C,SACpF,EAAE,UAAO,UAAO,kBAAe,gBAAa,QAAQ,aAAU,SAAM,UAAO,cAAcC,GAAW,cAAW,UAAO,MAAM,gBAC5H,GACA;CACA,IAAMC,IAAIhC,EAAU,GACdiC,IAASC,GAAM,GACfC,IAAUH,EAAE,2BAA2B,gBAAgB,GACvDI,IAASJ,EAAE,0BAA0B,cAAc,GACnDK,IAAYC,EAAM,MAAM,MAAMC,EAAE,MAAM;CAC5C,IAAIC,MAAe,UACjB,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWzC,EAAG,WAAW0C,KAAa,UAAUC,CAAS;EACtE,UAAA,kBAACpC,GAAD;GACE,GAAKqC,IAAQ,EAAE,SAAM,IAAI,CAAC;GAC1B,GAAKZ,IAAY,EAAE,cAAcA,EAAU,IAAI,CAAC;GAChD,GAAKa,IAAO,EAAE,QAAK,IAAI,CAAC;GACxB,GAAKC,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;GACzC,GAAKJ,IAAY,EAAE,aAAU,IAAI,CAAC;GAC5B;GACN,OAAOK,KAAS;GAChB,GAAKC,IAAgB,EAAE,iBAAc,IAAI,CAAC;GAC1C,SAAS,CAAC,GAAGT,EAAM,QAAQ,MAAM,CAACC,EAAE,MAAM,GAAG,GAAGD,EAAM,QAAQ,MAAMC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO;IACzF,OAAOA,EAAE;IACT,OAAOA,EAAE;IACT,WAAWA,EAAE;IACb,aAAaA,EAAE,YAAYA,EAAE,iBAAiBA,EAAE,iBAAiBA,EAAE;IACnE,GAAIF,IAAY,EAAE,OAAOE,EAAE,SAASH,IAASD,EAAQ,IAAI,CAAC;IAC1D,GAAII,EAAE,WAAW,EAAE,UAAU,GAAK,IAAI,CAAC;GACzC,EAAE;EACH,CAAA;CACE,CAAA;CAGT,IAAMS,IAAWX,IACb,CACE;EAAE,SAASF;EAAS,OAAOG,EAAM,QAAQ,MAAM,CAACC,EAAE,MAAM;CAAE,GAC1D;EAAE,SAASH;EAAQ,OAAOE,EAAM,QAAQ,MAAMC,EAAE,MAAM;CAAE,CAC1D,IACA,CAAC;EAAE,SAAS,KAAA;EAAW,OAAOD;CAAM,CAAC;CACzC,OACE,kBAAC3C,GAAD;EACO;EACL,GAAKmD,KAAS,OAAmB,CAAC,IAAb,EAAE,SAAM;EAC7B,GAAKC,IAAgB,EAAE,gBAAgB,MAAeA,EAAc,OAAOG,CAAC,CAAC,EAAE,IAAI,CAAC;EACpF,GAAKL,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACzC,GAAKD,IAAO,EAAE,QAAK,IAAI,CAAC;EACxB,cAAYb,KAAaY,KAASX,EAAE,mBAAmB,MAAM;EAC7D,WAAWjC,EAAG6B,EAA2B,WAAW,KAAK,SAASc,CAAS;EAE1E,UAAAM,EACE,QAAQ,MAAMG,EAAE,MAAM,SAAS,CAAC,CAAC,CACjC,KAAK,GAAG,MACP,kBAACC,IAAD,EAAA,UACE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACGD,EAAE,WAAW,kBAAC,QAAD;IAAM,WAAU;IAA8C,UAAAA,EAAE;GAAc,CAAA,GAC5F,kBAAC,OAAD;IAAK,WAAU;IACZ,UAAAA,EAAE,MAAM,KAAK,GAAG,MAAM;KACrB,IAAME,IAAK,GAAGpB,EAAO,GAAGqB,EAAG,GAAGC,KACxBC,IAAMX,KAAYN,EAAE;KAC1B,OACE,kBAAC,SAAD;MAEE,SAASc;MACT,mBAAgB;MAChB,GAAKd,EAAE,gBAAgB,EAAE,cAAcA,EAAE,cAAc,IAAI,CAAC;MAC5D,WAAWxC,EACT,wGACAyD,IAAM,uBAAuB,2EAC/B;MARF,UAAA,CAUE,kBAAC,QAAD;OAAM,WAAU;OAAhB,UAAA;QACE,kBAAC,QAAD;SAAM,WAAU;SAAhB,UAAA,CACE,kBAAC,QAAD;UAAM,IAAI,GAAGH,EAAG;UAAQ,WAAWtD,EAAG,oDAAoDyD,IAAM,qBAAqB,SAAS;UAC3H,UAAAjB,EAAE;SACC,CAAA,GACLA,EAAE,QAAQ,kBAAC,QAAD;UAAM,WAAWxC,EAAG,uCAAuCyD,IAAM,qBAAqB,kBAAkB;UAAI,UAAAjB,EAAE;SAAW,CAAA,CAChI;;QACLA,EAAE,eACD,kBAAC,QAAD;SAAM,IAAI,GAAGc,EAAG;SAAQ,WAAWtD,EAAG,0BAA0ByD,IAAM,qBAAqB,mBAAmB;SAC3G,UAAAjB,EAAE;QACC,CAAA;QAEPA,EAAE,YAAYA,EAAE,kBACf,kBAAC,QAAD;SAAM,IAAI,GAAGc,EAAG;SAAU,WAAU;SACjC,UAAAd,EAAE;QACC,CAAA;OAEJ;MACN,CAAA,GAAA,kBAAClC,GAAD;OACM;OACJ,OAAOkC,EAAE;OACT,GAAKA,EAAE,WAAW,EAAE,UAAU,GAAK,IAAI,CAAC;OACxC,GAAKA,EAAE,gBAAgB,EAAE,cAAcA,EAAE,cAAc,IAAI,CAAC;OAC5D,mBAAiB,GAAGc,EAAG;OACvB,GAAKd,EAAE,eAAgBA,EAAE,YAAYA,EAAE,iBACnC,EAAE,oBAAoB,CAACA,EAAE,eAAe,GAAGc,EAAG,QAAQd,EAAE,YAAYA,EAAE,kBAAkB,GAAGc,EAAG,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAAE,IAClI,CAAC;MACN,CAAA,CACI;KArCA,GAAAd,EAAE,KAqCF;IAEX,CAAC;GACE,CAAA,CACF;EACG,CAAA,EAAA,GAnDKY,EAAE,WAAW,KAmDlB,CACX;CACW,CAAA;AAEpB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc;;;AC/IpE,IAAaM,IAAkC,EAC7C,QAAQ,EACN,MAAM,EACJ,SAAS,+DACX,EACF,EACF,GACaC,KAA0C,EAAE,QAAQ,OAAO,GAU3DC,IAAkC,kBAAiD,SAC9F,EAAE,WAAQ,YAAS,WAAQ,cAAc5B,GAAW,gBACpD,GACA;CACA,IAAMC,IAAIhC,EAAU,GACd4D,IAAQC,EAAO,QAAQ,MAAM,CAACC,EAAE,OAAO,MAAM,MAAMvB,EAAE,OAAO,CAAC;CACnE,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAYR,KAAaC,EAAE,0BAA0B,QAAQ;EAC7D,WAAWjC,EAAG,2CAA2C2C,CAAS;EAJpE,UAAA;GAMG,CAAC,CAACqB,GAAS,UACV,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,kBAAC,QAAD;KAAM,WAAU;KAAqC,UAAA/B,EAAE,wBAAwB,MAAM;IAAQ,CAAA,GAC5F+B,EAAQ,KAAK,MACZZ,EAAE,SACA,kBAAChD,GAAD;KAAuB,SAASgD,EAAE;KAChC,UAAA,kBAACzC,GAAD;MAAO,UAAU;MAAG,WAAU;MAC3B,UAAAyC,EAAE;KACE,CAAA;IACA,GAJKA,EAAE,KAIP,IAET,kBAACzC,GAAD,EAAA,UAAsByC,EAAE,MAAa,GAAzBA,EAAE,KAAuB,CAEzC,CACI;;GAER,kBAAC,MAAD;IAAI,WAAWM,EAAgC,OAAO,KAAK;IAA3D,UAAA,CACGI,EACE,QAAQ,MAAMC,EAAE,OAAO,MAAM,MAAMvB,EAAE,OAAO,CAAC,CAAC,CAC9C,KAAK,MAAM;KACV,IAAMyB,IAAUF,EAAE,OAAO,QAAQ,MAAMvB,EAAE,OAAO,GAC1C0B,IACJD,EAAQ,WAAWF,EAAE,OAAO,SACxB9B,EAAE,8BAA8B,aAAa,IAC7CgC,EAAQ,KAAK,MAAMzB,EAAE,SAASA,EAAE,IAAI,CAAC,CAAC,KAAKP,EAAE,iCAAiC,IAAI,CAAC;KACzF,OACE,kBAACkC,IAAD;MAEE,MAAMJ,EAAE;MACR,OAAO9B,EAAE,kCAAkC,wBAAwB;OAAE,SAASgC,EAAQ;OAAQ,OAAOF,EAAE,OAAO;MAAO,CAAC;MAErH,UAAAG;KACE,GALEH,EAAE,KAKJ;IAET,CAAC,GACFF,EAAM,SAAS,KACd,kBAACM,IAAD;KAAK,MAAMlC,EAAE,4BAA4B,WAAW;KAAG,OAAA;KACpD,UAAA4B,EAAM,KAAK,MAAME,EAAE,KAAK,CAAC,CAAC,KAAK9B,EAAE,iCAAiC,IAAI,CAAC;IACrE,CAAA,CAEL;;GACHmC,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAQ,UAAAA;GAAY,CAAA;EAC3C;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAgB,cAAc;AAEzE,SAASD,GAAI,EAAE,SAAM,UAAO,UAAO,eAA4G;CAC7I,OACE,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,kBAAC,MAAD;GAAI,WAAWnE,EAAG,mDAAmDqE,IAAQ,sBAAsB,SAAS;GAAI,UAAAC;EAAS,CAAA,GACzH,kBAAC,MAAD;GAAI,WAAU;GAAd,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;IAA2D;GAAe,CAAA,GACzFC,KAAS,kBAAC,QAAD;IAAM,WAAU;IAAiD,UAAAA;GAAY,CAAA,CACrF;EACD,CAAA,CAAA;;AAET;;;ACnFA,IAAaC,KAAiC,EAC5C,YAAY;CACV,MAAM,EAAE,SAAS,GAAG;CACpB,QAAQ,EAAE,SAAS,GAAG;CACtB,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,KAAyC,EAAE,YAAY,OAAO,GA4BrEC,IAAM,IACNC,KAAe;AAErB,SAASC,GAAc,EACrB,cACA,aACA,UACA,kBACA,aACA,cACA,UACA,gBAUC;CACD,IAAM3C,IAAIhC,EAAU,GACd4E,IAAS3E,EAAU,GACnB,CAAC4E,GAAOC,KAAYC,EAAS,EAAE,GAC/BC,IAASH,EAAM,KAAK,CAAC,CAAC,YAAY,GAClCI,KAAU,MAA4BnE,EAAaoE,EAAE,IAAIA,EAAE,IAAI,GAC/DC,KAAU,GAAyB,MAA4BF,EAAOG,CAAC,CAAC,CAAC,cAAcH,EAAOI,CAAC,GAAGT,GAAQ,EAAE,aAAa,OAAO,CAAC,GACjIU,IAAQC,EAAU,QAAQ,MAAM,CAACP,KAAU;EAACE,EAAE;EAAID,EAAOC,CAAC;EAAG,GAAIA,EAAE,YAAY,CAAC;CAAE,CAAC,CAAC,MAAM,MAAMM,EAAE,YAAY,CAAC,CAAC,SAASR,CAAM,CAAC,CAAC,GACjIS,IAAYH,EAAM,QAAQ,MAAMJ,EAAE,SAAS,CAAC,CAAC,KAAKC,CAAM,GACxDO,IAAOJ,EAAM,QAAQ,MAAM,CAACJ,EAAE,SAAS,CAAC,CAAC,KAAKC,CAAM,GACpDnC,IACJyC,EAAU,UAAUC,EAAK,SACrB,CACE;EAAE,IAAI;EAAa,OAAO1D,EAAE,4BAA4B,WAAW;EAAG,OAAOyD;CAAU,GACvF;EAAE,IAAI;EAAS,OAAOzD,EAAE,wBAAwB,iBAAiB;EAAG,OAAO0D;CAAK,CAClF,IACA,CAAC;EAAE,IAAI;EAAa,OAAO,KAAA;EAAW,OAAO,CAAC,GAAGD,GAAW,GAAGC,CAAI;CAAE,CAAC,GACtEC,IAAaJ,EAAU,SAASb;CACtC,OACE,kBAAC,OAAD;EAAK,WAAW3E,EAAG,gCAAgC2C,CAAS;EAA5D,UAAA,CACGiD,KACC,kBAACvF,GAAD;GACE,cAAY4B,EAAE,yBAAyB,kBAAkB;GACzD,aAAaA,EAAE,yBAAyB,kBAAkB;GAC1D,GAAKa,IAAW,EAAE,UAAU,GAAK,IAAI,CAAC;GACtC,OAAOgC;GACP,WAAW,MAAMC,EAAS,EAAE,OAAO,KAAK;GACxC,GAAKc,IAAY,EAAE,WAAW,GAAK,IAAI,CAAC;EACzC,CAAA,GAEFN,EAAM,WAAW,IAChB,kBAAC,KAAD;GAAG,WAAU;GAAiD,UAAAtD,EAAE,0BAA0B,oBAAoB;EAAK,CAAA,IAEnH,kBAACpC,GAAD;GACE,cAAY+C;GACZ,OAAOG,KAAS;GAChB,GAAKD,IAAW,EAAE,UAAU,GAAK,IAAI,CAAC;GACtC,gBAAgB,MAAeE,IAAgBG,IAAI,OAAOA,CAAC,IAAI,IAAI;GACnE,WAAU;GAET,UAAAF,EAAS,KAAK,GAAS,MACtB,kBAAC,OAAD;IAAsB,GAAK6C,EAAQ,QAAQ;KAAE,MAAM;KAAS,cAAcA,EAAQ;IAAM,IAAI,CAAC;IAAI,WAAU;IAA3G,UAAA,CACGA,EAAQ,SACP,kBAAC,OAAD;KAAK,eAAA;KAAY,WAAU;KAA3B,UAAA,CACE,kBAAC,QAAD,EAAA,UAAOA,EAAQ,MAAY,CAAA,GAC3B,kBAAC,QAAD;MAAM,WAAU;MAAyC,UAAAA,EAAQ,MAAM;KAAa,CAAA,CACjF;IAEP,CAAA,GAAA,kBAAC,OAAD;KAAK,WAAU;KACZ,UAAAA,EAAQ,MAAM,KAAK,GAAG,MACrB,kBAAChG,GAAU,MAAX;MAEE,OAAOqF,EAAE;MACT,GAAKA,EAAE,WAAW,EAAE,UAAU,GAAK,IAAI,CAAC;MACxC,GAAKA,EAAE,gBAAgB,EAAE,cAAcA,EAAE,cAAc,IAAI,CAAC;MAC5D,GAAKU,KAAa,CAACD,KAAcrC,MAAO,KAAKC,MAAM,KAAK,CAACT,IAAQ,EAAE,WAAW,GAAK,IAAI,CAAC;MACxF,eAAe,CAACD,KAAY,CAACqC,EAAE,YAAYa,IAAWb,EAAE,EAAE;MAC1D,WAAWnF,EACT,oMACA,+GACA,6GACF;MAXF,UAAA,CAaE,kBAAC,QAAD;OAAM,eAAA;OAAY,WAAU;OAC1B,UAAA,kBAACa,GAAD;QAAe,UAAUsE,EAAE;QAAI,MAAMA,EAAE;QAAM,MAAK;OAAM,CAAA;MACpD,CAAA,GACN,kBAAC,QAAD;OAAM,WAAU;OAAhB,UAAA,CACE,kBAAC,QAAD;QAAM,WAAU;QAA0C,UAAAD,EAAOC,CAAC;OAAQ,CAAA,GACzEA,EAAE,SAAS,KAAA,KAAa,kBAAC,QAAD;QAAM,WAAU;QAAyD,UAAAA,EAAE;OAAW,CAAA,CAC3G;MACQ,CAAA,CAAA;KAnBT,GAAAA,EAAE,EAmBO,CACjB;IACE,CAAA,CACF;GAhCK,GAAAW,EAAQ,EAgCb,CACN;EACa,CAAA,CAEf;;AAET;AAEA,SAAgBG,GAAkB,GAAmC,GAAmD;CACtH,IAAMhE,IAAIhC,EAAU,GACd4E,IAAS3E,EAAU;CACzB,OAAOgG,QAAc;EACnB,IAAMhB,KAAU,MAA4BnE,EAAaoE,EAAE,IAAIA,EAAE,IAAI,GAC/DC,KAAU,GAAyB,MAA4BF,EAAOG,CAAC,CAAC,CAAC,cAAcH,EAAOI,CAAC,GAAGT,GAAQ,EAAE,aAAa,OAAO,CAAC,GACjIsB,KAAQ,OAA6B;GACzC,OAAOhB,EAAE;GACT,OAAOD,EAAOC,CAAC;GACf,UAAU,CAACA,EAAE,IAAI,GAAIA,EAAE,YAAY,CAAC,CAAE;GACtC,SACE,kBAAC,QAAD;IAAM,eAAA;IAAY,WAAU;IAC1B,UAAA,kBAACtE,GAAD;KAAe,UAAUsE,EAAE;KAAI,MAAMA,EAAE;IAAO,CAAA;GAC1C,CAAA;GAER,GAAIA,EAAE,SAAS,KAAA,IAA+B,CAAC,IAApB,EAAE,MAAMA,EAAE,KAAK;GAC1C,GAAIA,EAAE,WAAW,EAAE,UAAU,GAAK,IAAI,CAAC;EACzC,IACMO,IAAYF,EAAU,QAAQ,MAAML,EAAE,SAAS,CAAC,CAAC,KAAKC,CAAM,GAC5DO,IAAOH,EAAU,QAAQ,MAAM,CAACL,EAAE,SAAS,CAAC,CAAC,KAAKC,CAAM,GACxDtB,IAA6B,CAAC;EAMpC,OALIsC,KAAUtC,EAAO,KAAK;GAAE,IAAI;GAAO,OAAO,CAAC;IAAE,OAAOY;IAAK,OAAO0B;GAAS,CAAC;EAAE,CAAC,GAC7EV,EAAU,UAAUC,EAAK,UAC3B7B,EAAO,KAAK;GAAE,IAAI;GAAa,OAAO7B,EAAE,4BAA4B,WAAW;GAAG,OAAOyD,EAAU;GAAQ,OAAOA,EAAU,IAAIS,CAAI;EAAE,CAAC,GACvIrC,EAAO,KAAK;GAAE,IAAI;GAAS,OAAO7B,EAAE,wBAAwB,iBAAiB;GAAG,OAAO0D,EAAK;GAAQ,OAAOA,EAAK,IAAIQ,CAAI;EAAE,CAAC,KACtHrC,EAAO,KAAK;GAAE,IAAI;GAAa,OAAO,CAAC,GAAG4B,GAAW,GAAGC,CAAI,CAAC,CAAC,IAAIQ,CAAI;EAAE,CAAC,GACzErC;CACT,GAAG;EAAC0B;EAAWY;EAAUnE;EAAG4C;CAAM,CAAC;AACrC;AAEA,IAAawB,KAAiC,kBAA6C,SAAwB,GAAO,GAAK;CAC7H,IAAM,EACJ,cACA,UACA,kBACA,aACA,gBAAa,QACb,aACA,gBACA,UAAO,MACP,aACA,cACA,cAAcrE,GACd,cACA,cAAcsE,GACd,UACA,gBACA,UACA,aACA,aACA,cACEC,GACEtE,IAAIhC,EAAU,GACduG,IAAQC,EAAS,GACjBC,IAAKC,EAAgBJ,CAAK,GAC1B,CAACK,GAAMC,KAAW7B,EAAS,EAAK,GAKhClB,IAASmC,GAJCC,QACPpD,KAAYL,MAAe,SAAS+C,EAAU,KAAK,OAAO;EAAE,GAAGL;EAAG,UAAU;CAAK,EAAE,IAAIK,GAC9F;EAACA;EAAW1C;EAAUL;CAAU,CAED,GAASA,MAAe,WAAW2D,IAAW,KAAA,CAAS,GAClFU,IAAY9E,MAAc,OAAOY,KAAU,WAAWA,IAAQX,EAAE,4BAA4B,WAAW,IACvG8E,IAASC,KAAe/E,EAAE,yBAAyB,kBAAkB,GACrE4B,IAAQ5B,EAAE,0BAA0B,oBAAoB,GACxDgF,KAAQ,MACZ,kBAACzG,GAAD;EACU;EACR,cAAYsG;EACZ,OAAO/D,MAAUqD,IAAW1B,IAAM;EAClC,WAAW,MAAO;GAEhB,AADA1B,IAAgBM,MAAOoB,IAAM,OAAOpB,CAAE,GACtCuD,EAAQ,EAAK;EACf;EACA,aAAaE;EACb,WAAWlD;EACX,GAAKqD,IAAS,EAAE,UAAO,IAAI,CAAC;EAC5B,GAAKrB,KAAapD,MAAe,WAAW,EAAE,WAAW,GAAK,IAAI,CAAC;EACnE,GAAKyE,KAAUZ,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;EAClD,GAAKY,KAAUvE,KAAa,EAAEC,KAASuE,KAAeC,KAAS,EAAE,aAAU,IAAI,CAAC;EAChF,GAAKF,IAAS,EAAO,OAA6B,IAAI,CAAC;CACxD,CAAA;CAEH,IAAIzE,MAAe,QAAQ;EACzB,IAAM4E,IACJ,kBAACzC,IAAD;GACa;GACD;GACH;GACQ;GACL;GACC;GACX,OAAOkC;GACP,WAAalE,KAASuE,KAAeC,IAAqB,KAAA,IAAZzE;EAC/C,CAAA;EAGH,OADI6D,IAAca,IACXC,EAAU;GAAE;GAAO;GAAa;GAAO;GAAU;GAAU;GAAQ,IAAIZ,EAAG;GAAQ;GAAU;EAAU,GAAGW,CAAO;CACzH;CACA,IAAI5E,MAAe,QAAQ;EACzB,IAAM4E,IAAUJ,EAAK,QAAQ;EAE7B,OADIT,IAAca,IACXC,EAAU;GAAE;GAAO;GAAa;GAAO;GAAU;GAAU;GAAQ,IAAIZ,EAAG;GAAQ;GAAU;EAAU,GAAGW,CAAO;CACzH;CACA,IAAME,IAAS/B,EAAU,MAAM,MAAML,EAAE,OAAOpC,CAAK,GAC7CsE,IACJ,kBAAC3G,GAAD;EACE,OAAOoG;EACP,OAAM;EACA;EACN,cAAcD;EACd,SACE,kBAACpG,GAAD;GACO;GACL,MAAM+G,MAAS,OAAO,OAAO;GAC7B,GAAId,EAAG;GACP,GAAK1E,IAAY,EAAE,cAAcA,EAAU,IAAI,CAAC;GAChD,GAAKc,IAAW,EAAE,YAAS,IAAI,CAAC;GAChC,GAAKwD,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;GACxC,aAAaU,KAAe/E,EAAE,yBAAyB,mBAAmB;GAC1E,GAAK,EAAEW,KAASuE,KAAeC,MAAUzE,IAAY,EAAE,aAAU,IAAI,CAAC;GAErE,UAAA4E,IACC,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,kBAAC,QAAD;KAAM,eAAA;KAAY,WAAU;KAC1B,UAAA,kBAAC1G,GAAD;MAAe,UAAU0G,EAAO;MAAI,MAAMA,EAAO;KAAO,CAAA;IACpD,CAAA,GACN,kBAAC,QAAD;KAAM,WAAU;KAAY,UAAAxG,EAAawG,EAAO,IAAIA,EAAO,IAAI;IAAQ,CAAA,CACnE;GAEN,CAAA,IAAAnB;EAEW,CAAA;EAGhB,UAAAa,EAAK;CACO,CAAA;CAGjB,OADIT,IAAca,IACXC,EAAU;EAAE;EAAO;EAAa;EAAO;EAAU;EAAU;EAAQ,IAAIZ,EAAG;EAAQ;EAAU;CAAU,GAAGW,CAAO;AACzH,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAe,cAAc;;;AC3RxE,IAAaI,KAA+B,CAAC,GAChCC,KAAuC,CAAC,GAWxCC,KAA+B,kBAA8C,SACxF,EAAE,UAAO,WAAQ,WAAQ,cAAc3F,GAAW,gBAClD,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWhC,EAAG,+DAA+D2C,CAAS;EAArG,UAAA,CACE,kBAAC,MAAD;GAAI,cAAYX;GAAW,WAAU;GAClC,UAAA4F,EAAM,KAAK,GAAM,MAChB,kBAAC,MAAD;IAAY,WAAU;IAAtB,UAAA,CACE,kBAACzH,GAAD;KAAM,MAAMJ;KAAmB,MAAK;KAAK,WAAU;IAA0B,CAAA,GAC7E,kBAAC,QAAD;KAAM,WAAU;KAAuB,UAAAoG;IAAW,CAAA,CAChD;GAHK,GAAA3C,CAGL,CACL;EACC,CAAA,IACFsE,KAAU1D,MACV,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACG0D,KAAU,kBAAC,KAAD;IAAG,WAAU;IAAoD,UAAAA;GAAU,CAAA,GACrF1D,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAoB,UAAAA;GAAY,CAAA,CACvD;EAEJ,CAAA,CAAA;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAa,cAAc;;;ACpCtE,IAAa2D,KAA+B,CAAC,GAChCC,KAAuC,CAAC,GAGxCC,KAAe;CAC1B,QACE;CACF,QACE;CACF,kBACE;AACJ,GAaaC,IAA+B,kBAAiD,SAC3F,EAAE,WAAQ,cAActF,GAAO,YAAS,cAAW,cAAc0D,KACjE,GACA;CACA,OACE,kBAAClG,GAAD;EAAS,SAASwC;EAChB,UAAA,kBAAC,UAAD;GACO;GACL,MAAK;GACL,cAAYA;GACZ,eAAauF;GACb,GAAK7B,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;GAC/B;GACT,WAAWtG,EACT,sJACA2C,CACF;GAEA,UAAA,kBAAC,OAAD;IAAK,SAAQ;IAAY,MAAK;IAAe,UAAS;IAAU,eAAA;IAAY,WAAU;IAAQ,WAAU;IACtG,UAAA,kBAAC,QAAD,EAAM,GAAGsF,GAAaE,GAAU,CAAA;GAC7B,CAAA;EACC,CAAA;CACD,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAa,cAAc"}
|
|
1
|
+
{"version":3,"file":"kaeso.js","names":["BaseRadioGroup","BaseRadioGroup","BaseRadio","__icon_Tick02Icon","cn","useUiText","useLocale","Icon","Tooltip","SearchInput","RadioCircle","Select","CommandList","PickerTrigger","PickerPopover","Badge","KAESO_KEY_DISPLAY_VARIANTS","ProviderBadge","StatusCode","providerName","KAESO_KEY_DISPLAY_DEFAULT_VARIANTS","ProviderCard","KAESO_IDENTITY_DEFAULT_VARIANTS","KeyDisplay","KAESO_IDENTITY_VARIANTS","ModelLabel","CapabilityIcons","RequestTimeline","rightsCascade","groupCascade","KAESO_RIGHTS_MATRIX_VARIANTS","RightsMatrix","KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS","KAESO_ROLE_PICKER_VARIANTS","KAESO_ROLE_PICKER_DEFAULT_VARIANTS","RolePicker","ariaLabel","t","baseId","useId","builtIn","custom","hasCustom","roles","r","appearance","fullWidth","className","label","name","disabled","value","onValueChange","sections","RadioGroup","v","s","Fragment","id","si","i","off","KAESO_EFFECTIVE_ACCESS_VARIANTS","KAESO_EFFECTIVE_ACCESS_DEFAULT_VARIANTS","EffectiveAccess","empty","groups","g","sources","granted","words","Row","action","quiet","term","count","KAESO_PROVIDER_PICKER_VARIANTS","KAESO_PROVIDER_PICKER_DEFAULT_VARIANTS","ALL","SEARCH_ABOVE","ProviderTiles","locale","query","setQuery","useState","wanted","nameOf","p","byName","a","b","shown","providers","k","connected","rest","searchable","autoFocus","section","Radio","onChoose","useProviderGroups","useMemo","item","allLabel","ProviderPicker","force","props","field","useField","fc","useFieldControl","open","setOpen","listLabel","search","placeholder","list","height","description","error","control","withField","chosen","size","KAESO_GRANT_SUMMARY_VARIANTS","KAESO_GRANT_SUMMARY_DEFAULT_VARIANTS","GrantSummary","items","Tick02Icon","footer","KAESO_CLIENT_BUTTON_VARIANTS","KAESO_CLIENT_BUTTON_DEFAULT_VARIANTS","CLIENT_MARKS","ClientButton","client","ConversationView","EnvironmentSnippet","KAESO_CONVERSATION_DEFAULT_VARIANTS","KAESO_CONVERSATION_VARIANTS","KAESO_MOMENTS_DEFAULT_VARIANTS","KAESO_MOMENTS_VARIANTS","KAESO_USAGE_BREAKDOWN_DEFAULT_VARIANTS","KAESO_USAGE_BREAKDOWN_VARIANTS","KAESO_USAGE_DEFAULT_VARIANTS","KAESO_USAGE_VARIANTS","LimitMeter","SecretReveal","UsageBreakdown","sdkSnippets"],"sources":["../../src/components/kaeso/role-picker.tsx","../../src/components/kaeso/effective-access.tsx","../../src/components/kaeso/provider-picker.tsx","../../src/components/kaeso/grant-summary.tsx","../../src/components/kaeso/client-button.tsx"],"sourcesContent":["import { forwardRef, Fragment, useId } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { cn } from \"../../utils/cn.js\";\nimport { RadioCircle } from \"../radio/radio.js\";\nimport { Select } from \"../select/select.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_ROLE_PICKER_VARIANTS = {\n appearance: {\n list: {\n classes: \"flex flex-col gap-16\",\n },\n select: { classes: \"\" },\n },\n} as const;\nexport const KAESO_ROLE_PICKER_DEFAULT_VARIANTS = { appearance: \"list\" } as const;\n\nexport interface RoleOption {\n value: string;\n label: string;\n description?: string | undefined;\n custom?: boolean | undefined;\n hint?: string | undefined;\n disabled?: boolean | undefined;\n disabledReason?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface RolePickerProps {\n roles: RoleOption[];\n value?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n appearance?: keyof typeof KAESO_ROLE_PICKER_VARIANTS.appearance | undefined;\n disabled?: boolean | undefined;\n name?: string | undefined;\n label?: string | undefined;\n \"aria-label\"?: string | undefined;\n fullWidth?: boolean | undefined;\n size?: \"sm\" | \"md\" | undefined;\n className?: string | undefined;\n}\n\nexport const RolePicker = /* @__PURE__ */ forwardRef<HTMLDivElement, RolePickerProps>(function RolePicker(\n { roles, value, onValueChange, appearance = \"list\", disabled, name, label, \"aria-label\": ariaLabel, fullWidth, size = \"md\", className },\n ref,\n) {\n const t = useUiText();\n const baseId = useId();\n const builtIn = t(\"rolePicker.builtInRoles\", \"Built-in roles\");\n const custom = t(\"rolePicker.customRoles\", \"Custom roles\");\n const hasCustom = roles.some((r) => r.custom);\n if (appearance === \"select\") {\n return (\n <div ref={ref} className={cn(\"min-w-0\", fullWidth && \"w-full\", className)}>\n <Select\n {...(label ? { label } : {})}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(name ? { name } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(fullWidth ? { fullWidth } : {})}\n size={size}\n value={value ?? null}\n {...(onValueChange ? { onValueChange } : {})}\n options={[...roles.filter((r) => !r.custom), ...roles.filter((r) => r.custom)].map((r) => ({\n value: r.value,\n label: r.label,\n textValue: r.label,\n description: r.disabled && r.disabledReason ? r.disabledReason : r.description,\n ...(hasCustom ? { group: r.custom ? custom : builtIn } : {}),\n ...(r.disabled ? { disabled: true } : {}),\n }))}\n />\n </div>\n );\n }\n const sections = hasCustom\n ? [\n { caption: builtIn, items: roles.filter((r) => !r.custom) },\n { caption: custom, items: roles.filter((r) => r.custom) },\n ]\n : [{ caption: undefined, items: roles }];\n return (\n <BaseRadioGroup\n ref={ref}\n {...(value != null ? { value } : {})}\n {...(onValueChange ? { onValueChange: (v: unknown) => onValueChange(String(v)) } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(name ? { name } : {})}\n aria-label={ariaLabel ?? label ?? t(\"rolePicker.role\", \"Role\")}\n className={cn(KAESO_ROLE_PICKER_VARIANTS.appearance.list.classes, className)}\n >\n {sections\n .filter((s) => s.items.length > 0)\n .map((s, si) => (\n <Fragment key={s.caption ?? \"all\"}>\n <div className=\"flex flex-col gap-8\">\n {s.caption && <span className=\"text-caption font-medium text-fg-secondary\">{s.caption}</span>}\n <div className=\"flex flex-col overflow-hidden rounded-group bg-raised shadow-xs\">\n {s.items.map((r, i) => {\n const id = `${baseId}-${si}-${i}`;\n const off = disabled || r.disabled;\n return (\n <label\n key={r.value}\n htmlFor={id}\n data-choice-row=\"\"\n {...(r[\"data-force\"] ? { \"data-force\": r[\"data-force\"] } : {})}\n className={cn(\n \"flex min-h-56 cursor-pointer items-center gap-16 px-20 py-12 transition-control not-first:hairline-t\",\n off ? \"cursor-not-allowed\" : \"hover:bg-raised-hover active:bg-raised-pressed focus-ring-card-row-within\",\n )}\n >\n <span className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <span className=\"flex min-w-0 items-baseline gap-8\">\n <span id={`${id}-name`} className={cn(\"min-w-0 wrap-break-word text-body-lg font-medium\", off ? \"text-fg-disabled\" : \"text-fg\")}>\n {r.label}\n </span>\n {r.hint && <span className={cn(\"ml-auto shrink-0 text-small tabular\", off ? \"text-fg-disabled\" : \"text-fg-tertiary\")}>{r.hint}</span>}\n </span>\n {r.description && (\n <span id={`${id}-desc`} className={cn(\"text-small text-pretty\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>\n {r.description}\n </span>\n )}\n {r.disabled && r.disabledReason && (\n <span id={`${id}-reason`} className=\"text-small text-pretty text-fg-secondary\">\n {r.disabledReason}\n </span>\n )}\n </span>\n <RadioCircle\n id={id}\n value={r.value}\n {...(r.disabled ? { disabled: true } : {})}\n {...(r[\"data-force\"] ? { \"data-force\": r[\"data-force\"] } : {})}\n aria-labelledby={`${id}-name`}\n {...(r.description || (r.disabled && r.disabledReason)\n ? { \"aria-describedby\": [r.description && `${id}-desc`, r.disabled && r.disabledReason && `${id}-reason`].filter(Boolean).join(\" \") }\n : {})}\n />\n </label>\n );\n })}\n </div>\n </div>\n </Fragment>\n ))}\n </BaseRadioGroup>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RolePicker.displayName = \"RolePicker\";\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { RightSource, RightsGroup } from \"./rights.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_EFFECTIVE_ACCESS_VARIANTS = {\n layout: {\n rows: {\n classes: \"flex flex-col @auth:grid @auth:grid-cols-term @auth:gap-x-16\",\n },\n },\n} as const;\nexport const KAESO_EFFECTIVE_ACCESS_DEFAULT_VARIANTS = { layout: \"rows\" } as const;\n\nexport interface EffectiveAccessProps {\n groups: RightsGroup[];\n sources?: RightSource[] | undefined;\n action?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const EffectiveAccess = /* @__PURE__ */ forwardRef<HTMLDivElement, EffectiveAccessProps>(function EffectiveAccess(\n { groups, sources, action, \"aria-label\": ariaLabel, className },\n ref,\n) {\n const t = useUiText();\n const empty = groups.filter((g) => !g.rights.some((r) => r.granted));\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={ariaLabel ?? t(\"effectiveAccess.access\", \"Access\")}\n className={cn(\"@container flex min-w-0 flex-col gap-12\", className)}\n >\n {!!sources?.length && (\n <span className=\"flex flex-wrap items-center gap-4\">\n <span className=\"mr-4 text-small text-fg-secondary\">{t(\"effectiveAccess.from\", \"From\")}</span>\n {sources.map((s) =>\n s.detail ? (\n <Tooltip key={s.label} content={s.detail}>\n <Badge tabIndex={0} className=\"cursor-help underline decoration-dotted underline-offset-2 focus-ring\">\n {s.label}\n </Badge>\n </Tooltip>\n ) : (\n <Badge key={s.label}>{s.label}</Badge>\n ),\n )}\n </span>\n )}\n <dl className={KAESO_EFFECTIVE_ACCESS_VARIANTS.layout.rows.classes}>\n {groups\n .filter((g) => g.rights.some((r) => r.granted))\n .map((g) => {\n const granted = g.rights.filter((r) => r.granted);\n const words =\n granted.length === g.rights.length\n ? t(\"effectiveAccess.everyRight\", \"Every right\")\n : granted.map((r) => r.label ?? r.code).join(t(\"effectiveAccess.listSeparator\", \", \"));\n return (\n <Row\n key={g.label}\n term={g.label}\n count={t(\"effectiveAccess.grantedOfTotal\", \"{granted} of {total}\", { granted: granted.length, total: g.rights.length })}\n >\n {words}\n </Row>\n );\n })}\n {empty.length > 0 && (\n <Row term={t(\"effectiveAccess.noRights\", \"No rights\")} quiet>\n {empty.map((g) => g.label).join(t(\"effectiveAccess.listSeparator\", \", \"))}\n </Row>\n )}\n </dl>\n {action && <div className=\"flex\">{action}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") EffectiveAccess.displayName = \"EffectiveAccess\";\n\nfunction Row({ term, count, quiet, children }: { term: string; count?: string | undefined; quiet?: boolean | undefined; children: ReactNode }) {\n return (\n <div className=\"flex min-h-40 flex-col justify-center gap-2 py-8 not-first:hairline-t @auth:col-span-2 @auth:grid @auth:grid-cols-subgrid @auth:content-center @auth:items-baseline @auth:gap-16\">\n <dt className={cn(\"shrink-0 text-small font-medium @auth:min-w-140\", quiet ? \"text-fg-secondary\" : \"text-fg\")}>{term}</dt>\n <dd className=\"flex min-w-0 flex-1 items-baseline gap-12\">\n <span className=\"min-w-0 flex-1 text-small text-pretty text-fg-secondary\">{children}</span>\n {count && <span className=\"shrink-0 text-small text-fg-secondary tabular\">{count}</span>}\n </dd>\n </div>\n );\n}\n","import { forwardRef, useMemo, useState, type ReactNode, type Ref } from \"react\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SearchInput } from \"../input/input.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\nimport { CommandList, type CommandListGroup } from \"../command-list/command-list.js\";\nimport { PickerPopover, PickerTrigger } from \"../command-list/picker-popover.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { ProviderBadge, providerName } from \"./identity.js\";\n\nexport const KAESO_PROVIDER_PICKER_VARIANTS = {\n appearance: {\n list: { classes: \"\" },\n select: { classes: \"\" },\n grid: { classes: \"\" },\n },\n} as const;\nexport const KAESO_PROVIDER_PICKER_DEFAULT_VARIANTS = { appearance: \"list\" } as const;\n\nexport interface ProviderPickerOption {\n id: string;\n name?: string | undefined;\n connected?: boolean | undefined;\n hint?: ReactNode | undefined;\n keywords?: readonly string[] | undefined;\n disabled?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface ProviderPickerProps extends FieldWrapProps {\n providers: ProviderPickerOption[];\n value?: string | null | undefined;\n onValueChange?: ((id: string | null) => void) | undefined;\n onChoose?: ((id: string) => void) | undefined;\n appearance?: keyof typeof KAESO_PROVIDER_PICKER_VARIANTS.appearance | undefined;\n allLabel?: string | undefined;\n placeholder?: string | undefined;\n size?: \"sm\" | \"md\" | undefined;\n disabled?: boolean | undefined;\n autoFocus?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst ALL = \"\";\nconst SEARCH_ABOVE = 9;\n\nfunction ProviderTiles({\n providers,\n disabled,\n value,\n onValueChange,\n onChoose,\n autoFocus,\n label,\n className,\n}: {\n providers: ProviderPickerOption[];\n disabled: boolean | undefined;\n value: string | null | undefined;\n onValueChange: ((id: string | null) => void) | undefined;\n onChoose: ((id: string) => void) | undefined;\n autoFocus: boolean | undefined;\n label: string;\n className: string | undefined;\n}) {\n const t = useUiText();\n const locale = useLocale();\n const [query, setQuery] = useState(\"\");\n const wanted = query.trim().toLowerCase();\n const nameOf = (p: ProviderPickerOption) => providerName(p.id, p.name);\n const byName = (a: ProviderPickerOption, b: ProviderPickerOption) => nameOf(a).localeCompare(nameOf(b), locale, { sensitivity: \"base\" });\n const shown = providers.filter((p) => !wanted || [p.id, nameOf(p), ...(p.keywords ?? [])].some((k) => k.toLowerCase().includes(wanted)));\n const connected = shown.filter((p) => p.connected).sort(byName);\n const rest = shown.filter((p) => !p.connected).sort(byName);\n const sections =\n connected.length && rest.length\n ? [\n { id: \"connected\", label: t(\"providerPicker.connected\", \"Connected\"), items: connected },\n { id: \"other\", label: t(\"providerPicker.other\", \"Other providers\"), items: rest },\n ]\n : [{ id: \"providers\", label: undefined, items: [...connected, ...rest] }];\n const searchable = providers.length > SEARCH_ABOVE;\n return (\n <div className={cn(\"flex min-w-0 flex-col gap-16\", className)}>\n {searchable && (\n <SearchInput\n aria-label={t(\"providerPicker.search\", \"Search providers\")}\n placeholder={t(\"providerPicker.search\", \"Search providers\")}\n {...(disabled ? { disabled: true } : {})}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n {...(autoFocus ? { autoFocus: true } : {})}\n />\n )}\n {shown.length === 0 ? (\n <p className=\"py-24 text-center text-body text-fg-secondary\">{t(\"providerPicker.noMatch\", \"No providers match\")}</p>\n ) : (\n <BaseRadioGroup\n aria-label={label}\n value={value ?? null}\n {...(disabled ? { disabled: true } : {})}\n onValueChange={(v: unknown) => onValueChange?.(v ? String(v) : null)}\n className=\"flex flex-col gap-20\"\n >\n {sections.map((section, si) => (\n <div key={section.id} {...(section.label ? { role: \"group\", \"aria-label\": section.label } : {})} className=\"flex flex-col gap-8\">\n {section.label && (\n <div aria-hidden className=\"text-caption font-medium text-fg-secondary\">\n {section.label}\n </div>\n )}\n <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-3\">\n {section.items.map((p, i) => (\n <BaseRadio.Root\n key={p.id}\n value={p.id}\n {...(p.disabled ? { disabled: true } : {})}\n {...(p[\"data-force\"] ? { \"data-force\": p[\"data-force\"] } : {})}\n {...(autoFocus && !searchable && si === 0 && i === 0 && !value ? { autoFocus: true } : {})}\n onClick={() => !disabled && !p.disabled && onChoose?.(p.id)}\n className={cn(\n \"group/tile flex min-h-64 min-w-0 cursor-pointer items-center gap-10 rounded-group bg-raised px-10 py-12 sm:gap-12 sm:px-12 text-left shadow-control transition-control focus-ring forced-checked\",\n \"hover:not-data-checked:bg-raised-hover hover:not-data-checked:shadow-control-hover active:bg-raised-pressed\",\n \"data-checked:bg-item-hover data-checked:ring-step data-disabled:cursor-not-allowed data-disabled:opacity-40\",\n )}\n >\n <span aria-hidden className=\"flex\">\n <ProviderBadge provider={p.id} name={p.name} size=\"lg\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"line-clamp-2 text-body font-medium text-pretty wrap-break-word text-fg\">{nameOf(p)}</span>\n {p.hint !== undefined && <span className=\"line-clamp-2 text-small text-pretty text-fg-secondary\">{p.hint}</span>}\n </span>\n </BaseRadio.Root>\n ))}\n </div>\n </div>\n ))}\n </BaseRadioGroup>\n )}\n </div>\n );\n}\n\nexport function useProviderGroups(providers: ProviderPickerOption[], allLabel?: string | undefined): CommandListGroup[] {\n const t = useUiText();\n const locale = useLocale();\n return useMemo(() => {\n const nameOf = (p: ProviderPickerOption) => providerName(p.id, p.name);\n const byName = (a: ProviderPickerOption, b: ProviderPickerOption) => nameOf(a).localeCompare(nameOf(b), locale, { sensitivity: \"base\" });\n const item = (p: ProviderPickerOption) => ({\n value: p.id,\n label: nameOf(p),\n keywords: [p.id, ...(p.keywords ?? [])],\n leading: (\n <span aria-hidden className=\"flex\">\n <ProviderBadge provider={p.id} name={p.name} />\n </span>\n ),\n ...(p.hint !== undefined ? { meta: p.hint } : {}),\n ...(p.disabled ? { disabled: true } : {}),\n });\n const connected = providers.filter((p) => p.connected).sort(byName);\n const rest = providers.filter((p) => !p.connected).sort(byName);\n const groups: CommandListGroup[] = [];\n if (allLabel) groups.push({ id: \"all\", items: [{ value: ALL, label: allLabel }] });\n if (connected.length && rest.length) {\n groups.push({ id: \"connected\", label: t(\"providerPicker.connected\", \"Connected\"), items: connected.map(item) });\n groups.push({ id: \"other\", label: t(\"providerPicker.other\", \"Other providers\"), items: rest.map(item) });\n } else groups.push({ id: \"providers\", items: [...connected, ...rest].map(item) });\n return groups;\n }, [providers, allLabel, t, locale]);\n}\n\nexport const ProviderPicker = /* @__PURE__ */ forwardRef<HTMLElement, ProviderPickerProps>(function ProviderPicker(props, ref) {\n const {\n providers,\n value,\n onValueChange,\n onChoose,\n appearance = \"list\",\n allLabel,\n placeholder,\n size = \"md\",\n disabled,\n autoFocus,\n \"aria-label\": ariaLabel,\n className,\n \"data-force\": force,\n label,\n description,\n error,\n optional,\n required,\n layout,\n } = props;\n const t = useUiText();\n const field = useField();\n const fc = useFieldControl(props);\n const [open, setOpen] = useState(false);\n const offered = useMemo(\n () => (disabled && appearance === \"list\" ? providers.map((p) => ({ ...p, disabled: true })) : providers),\n [providers, disabled, appearance],\n );\n const groups = useProviderGroups(offered, appearance === \"select\" ? allLabel : undefined);\n const listLabel = ariaLabel ?? (typeof label === \"string\" ? label : t(\"providerPicker.providers\", \"Providers\"));\n const search = placeholder ?? t(\"providerPicker.search\", \"Search providers\");\n const empty = t(\"providerPicker.noMatch\", \"No providers match\");\n const list = (height?: \"inline\") => (\n <CommandList\n groups={groups}\n aria-label={listLabel}\n value={value ?? (allLabel ? ALL : null)}\n onSelect={(id) => {\n onValueChange?.(id === ALL ? null : id);\n setOpen(false);\n }}\n placeholder={search}\n emptyText={empty}\n {...(height ? { height } : {})}\n {...(autoFocus || appearance === \"select\" ? { autoFocus: true } : {})}\n {...(height && force ? { \"data-force\": force } : {})}\n {...(height && className && !(label || description || error) ? { className } : {})}\n {...(height ? { ref: ref as Ref<HTMLInputElement> } : {})}\n />\n );\n if (appearance === \"grid\") {\n const control = (\n <ProviderTiles\n providers={providers}\n disabled={disabled}\n value={value}\n onValueChange={onValueChange}\n onChoose={onChoose}\n autoFocus={autoFocus}\n label={listLabel}\n className={!(label || description || error) ? className : undefined}\n />\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId, disabled, className }, control);\n }\n if (appearance === \"list\") {\n const control = list(\"inline\");\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId, disabled, className }, control);\n }\n const chosen = providers.find((p) => p.id === value);\n const control = (\n <PickerPopover\n title={listLabel}\n width=\"sm\"\n open={open}\n onOpenChange={setOpen}\n trigger={\n <PickerTrigger\n ref={ref as Ref<HTMLButtonElement>}\n size={size === \"sm\" ? \"sm\" : \"md\"}\n {...fc.controlProps}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(disabled ? { disabled } : {})}\n {...(force ? { \"data-force\": force } : {})}\n placeholder={placeholder ?? t(\"providerPicker.choose\", \"Choose a provider\")}\n {...(!(label || description || error) && className ? { className } : {})}\n >\n {chosen ? (\n <span className=\"flex min-w-0 items-center gap-8\">\n <span aria-hidden className=\"flex\">\n <ProviderBadge provider={chosen.id} name={chosen.name} />\n </span>\n <span className=\"truncate\">{providerName(chosen.id, chosen.name)}</span>\n </span>\n ) : (\n allLabel\n )}\n </PickerTrigger>\n }\n >\n {list()}\n </PickerPopover>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") ProviderPicker.displayName = \"ProviderPicker\";\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\n\nexport const KAESO_GRANT_SUMMARY_VARIANTS = {} as const;\nexport const KAESO_GRANT_SUMMARY_DEFAULT_VARIANTS = {} as const;\n\nexport interface GrantSummaryProps {\n items: readonly ReactNode[];\n footer?: ReactNode | undefined;\n action?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\n/** What an agent or a key may do, one short line per item after a check mark, on a group surface, with an optional note and action below. */\nexport const GrantSummary = /* @__PURE__ */ forwardRef<HTMLDivElement, GrantSummaryProps>(function GrantSummary(\n { items, footer, action, \"aria-label\": ariaLabel, className },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <ul aria-label={ariaLabel} className=\"flex flex-col gap-10\">\n {items.map((item, i) => (\n <li key={i} className=\"flex items-start gap-10 text-body text-fg\">\n <Icon icon={__icon_Tick02Icon} size=\"sm\" className=\"mt-2 text-success-text\" />\n <span className=\"min-w-0 text-pretty\">{item}</span>\n </li>\n ))}\n </ul>\n {(footer || action) && (\n <div className=\"flex items-center justify-between gap-12 pt-12 hairline-t\">\n {footer && <p className=\"min-w-0 text-small text-fg-secondary text-pretty\">{footer}</p>}\n {action && <div className=\"ml-auto shrink-0\">{action}</div>}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GrantSummary.displayName = \"GrantSummary\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\n\nexport const KAESO_CLIENT_BUTTON_VARIANTS = {} as const;\nexport const KAESO_CLIENT_BUTTON_DEFAULT_VARIANTS = {} as const;\n\n/** The marks of the agent clients Kaeso connects to, on a 24px grid, drawn in the text colour. */\nexport const CLIENT_MARKS = {\n claude:\n \"m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z\",\n cursor:\n \"M11.503.131 1.891 5.678a.84.84 0 0 0-.42.726v11.188c0 .3.162.575.42.724l9.609 5.55a1 1 0 0 0 .998 0l9.61-5.55a.84.84 0 0 0 .42-.724V6.404a.84.84 0 0 0-.42-.726L12.497.131a1.01 1.01 0 0 0-.996 0M2.657 6.338h18.55c.263 0 .43.287.297.515L12.23 22.918c-.062.107-.229.064-.229-.06V12.335a.59.59 0 0 0-.295-.51l-9.11-5.257c-.109-.063-.064-.23.061-.23\",\n \"github-copilot\":\n \"M23.922 16.997C23.061 18.492 18.063 22.02 12 22.02 5.937 22.02.939 18.492.078 16.997A.641.641 0 0 1 0 16.741v-2.869a.883.883 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.098 10.098 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952C7.255 2.937 9.248 1.98 11.978 1.98c2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.841.841 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256Zm-11.75-5.992h-.344a4.359 4.359 0 0 1-.355.508c-.77.947-1.918 1.492-3.508 1.492-1.725 0-2.989-.359-3.782-1.259a2.137 2.137 0 0 1-.085-.104L4 11.746v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.359 4.359 0 0 1-.355-.508Zm2.328 3.25c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm-5 0c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm3.313-6.185c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z\",\n} as const;\n\nexport type ClientMark = keyof typeof CLIENT_MARKS;\n\nexport interface ClientButtonProps {\n client: ClientMark;\n \"aria-label\": string;\n onClick?: (() => void) | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\n/** An agent client's mark in a raised circle, as a button that opens how to connect it. Its tooltip is its label. */\nexport const ClientButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, ClientButtonProps>(function ClientButton(\n { client, \"aria-label\": label, onClick, className, \"data-force\": force },\n ref,\n) {\n return (\n <Tooltip content={label}>\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n data-client={client}\n {...(force ? { \"data-force\": force } : {})}\n onClick={onClick}\n className={cn(\n \"relative inline-flex size-32 shrink-0 items-center justify-center rounded-pill text-fg material-secondary transition-control focus-ring tap-target\",\n className,\n )}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden focusable=\"false\" className=\"size-16\">\n <path d={CLIENT_MARKS[client]} />\n </svg>\n </button>\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ClientButton.displayName = \"ClientButton\";\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
3
|
-
import { n as t } from "../chunks/copy-button-
|
|
3
|
+
import { n as t } from "../chunks/copy-button-DBPAA1g0.js";
|
|
4
4
|
import { t as n } from "../chunks/truncated-d1afmUJT.js";
|
|
5
5
|
import { forwardRef as r } from "react";
|
|
6
6
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
package/dist/components/list.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as GroupHeader, n as KAESO_LIST_DEFAULT_VARIANTS, r as KAESO_LIST_VARIANTS, i as List, a as ListRow, o as SelectionAction, s as SelectionBar } from "../chunks/list-
|
|
2
|
+
export { t as GroupHeader, n as KAESO_LIST_DEFAULT_VARIANTS, r as KAESO_LIST_VARIANTS, i as List, a as ListRow, o as SelectionAction, s as SelectionBar } from "../chunks/list-o8wcuBOz.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "../chunks/safe-href-G5DBNVwm.js";
|
|
3
|
-
import { a as t, i as n, n as r, r as i, s as a, t as o } from "../chunks/markdown-
|
|
3
|
+
import { a as t, i as n, n as r, r as i, s as a, t as o } from "../chunks/markdown-BZKZi9d8.js";
|
|
4
4
|
export { o as KAESO_MARKDOWN_DEFAULT_VARIANTS, r as KAESO_MARKDOWN_VARIANTS, i as Markdown, n as lexMarkdown, t as markdownCodeLang, a as previewMarkdown, e as safeHref };
|
package/dist/components/menu.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { c as e } from "../chunks/styles-
|
|
3
|
-
import { a as t, c as n, i as r, l as i, n as a, o, r as s, s as c, t as l } from "../chunks/menu-
|
|
2
|
+
import { c as e } from "../chunks/styles-8fn_bHRP.js";
|
|
3
|
+
import { a as t, c as n, i as r, l as i, n as a, o, r as s, s as c, t as l } from "../chunks/menu-BDce2kiw.js";
|
|
4
4
|
export { l as ContextMenu, a as KAESO_CONTEXT_MENU_DEFAULT_VARIANTS, s as KAESO_CONTEXT_MENU_VARIANTS, r as KAESO_MENUBAR_DEFAULT_VARIANTS, t as KAESO_MENUBAR_VARIANTS, o as KAESO_MENU_DEFAULT_VARIANTS, c as KAESO_MENU_VARIANTS, n as Menu, i as Menubar, e as menuStyles };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as KAESO_PAGE_HEADER_DEFAULT_VARIANTS, n as KAESO_PAGE_HEADER_VARIANTS, r as PageHeader } from "../chunks/page-header-
|
|
2
|
+
export { t as KAESO_PAGE_HEADER_DEFAULT_VARIANTS, n as KAESO_PAGE_HEADER_VARIANTS, r as PageHeader } from "../chunks/page-header-C5Bv1gKE.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as KAESO_PAGINATION_DEFAULT_VARIANTS, n as KAESO_PAGINATION_VARIANTS, r as Pagination } from "../chunks/pagination-
|
|
2
|
+
export { t as KAESO_PAGINATION_DEFAULT_VARIANTS, n as KAESO_PAGINATION_VARIANTS, r as Pagination } from "../chunks/pagination-D9hM6W2z.js";
|
|
@@ -5,21 +5,21 @@ import { i as n, r } from "../chunks/context-BELWW79w.js";
|
|
|
5
5
|
import { formatContext as i, formatDuration as a, formatNumber as o, formatPrice as s, formatUSD as c } from "../format.js";
|
|
6
6
|
import { r as l } from "../chunks/tooltip-Tkm-urbi.js";
|
|
7
7
|
import { t as u } from "../chunks/use-truncated-CW0hByYt.js";
|
|
8
|
-
import { n as d } from "../chunks/button-
|
|
9
|
-
import { t as f } from "../chunks/icon-button-
|
|
8
|
+
import { n as d } from "../chunks/button-DrmFgdIi.js";
|
|
9
|
+
import { t as f } from "../chunks/icon-button-6kOn2zrP.js";
|
|
10
10
|
import { a as p, o as m, s as h } from "../chunks/field-D7m-yl-D.js";
|
|
11
|
-
import { o as g, r as _ } from "../chunks/textarea-
|
|
11
|
+
import { o as g, r as _ } from "../chunks/textarea-CRmvC4jd.js";
|
|
12
12
|
import { r as v } from "../chunks/slider-CcE8GtuV.js";
|
|
13
13
|
import { r as y } from "../chunks/switch-ngywMQdl.js";
|
|
14
14
|
import { r as b } from "../chunks/segmented-D9i1avik.js";
|
|
15
|
-
import { n as x, r as S } from "../chunks/select-
|
|
15
|
+
import { n as x, r as S } from "../chunks/select-UTdHKubp.js";
|
|
16
16
|
import { i as C } from "../chunks/popover-Bl5QYqnh.js";
|
|
17
|
-
import { r as w } from "../chunks/combobox-
|
|
18
|
-
import { a as T, t as E } from "../chunks/command-list-
|
|
19
|
-
import { i as ee, r as D } from "../chunks/picker-popover-
|
|
20
|
-
import { c as O, f as k, s as A, t as j } from "../chunks/identity-
|
|
17
|
+
import { r as w } from "../chunks/combobox-DghYPLVQ.js";
|
|
18
|
+
import { a as T, t as E } from "../chunks/command-list-BUmEaaBi.js";
|
|
19
|
+
import { i as ee, r as D } from "../chunks/picker-popover-PzVOo62-.js";
|
|
20
|
+
import { c as O, f as k, s as A, t as j } from "../chunks/identity-BwYixi8Q.js";
|
|
21
21
|
import { t as M } from "../chunks/reasoning-frame-C3HdQRRS.js";
|
|
22
|
-
import { r as N } from "../chunks/markdown-
|
|
22
|
+
import { r as N } from "../chunks/markdown-BZKZi9d8.js";
|
|
23
23
|
import { Children as te, createContext as ne, forwardRef as P, isValidElement as re, useCallback as F, useContext as ie, useEffect as I, useId as L, useLayoutEffect as ae, useMemo as R, useRef as z, useState as B, useSyncExternalStore as oe } from "react";
|
|
24
24
|
import { Fragment as se, jsx as V, jsxs as H } from "react/jsx-runtime";
|
|
25
25
|
import { Add01Icon as U, ArrowLeft01Icon as W, ArrowRight01Icon as G, Cancel01Icon as K, SlidersHorizontalIcon as ce } from "@hugeicons/core-free-icons";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as KAESO_SELECT_DEFAULT_VARIANTS, n as KAESO_SELECT_VARIANTS, r as Select } from "../chunks/select-
|
|
2
|
+
export { t as KAESO_SELECT_DEFAULT_VARIANTS, n as KAESO_SELECT_VARIANTS, r as Select } from "../chunks/select-UTdHKubp.js";
|
package/dist/components/sheet.js
CHANGED
|
@@ -3,7 +3,7 @@ import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
|
3
3
|
import { r as t } from "../chunks/portal-context-CTatR2Z8.js";
|
|
4
4
|
import { n, t as r } from "../chunks/inset-BUzyXLK4.js";
|
|
5
5
|
import { i } from "../chunks/context-BELWW79w.js";
|
|
6
|
-
import { t as a } from "../chunks/icon-button-
|
|
6
|
+
import { t as a } from "../chunks/icon-button-6kOn2zrP.js";
|
|
7
7
|
import { a as o, i as s, t as c } from "../chunks/resize-motion-DS3rIIqy.js";
|
|
8
8
|
import { t as l } from "../chunks/over-sheet-B8vzr_zU.js";
|
|
9
9
|
import { forwardRef as u, useCallback as d, useState as f } from "react";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as BrandWordmark, n as KAESO_SIDEBAR_DEFAULT_VARIANTS, r as KAESO_SIDEBAR_VARIANTS, i as SIDEBAR_MAX, a as SIDEBAR_MIN, o as Sidebar, s as SidebarFloatingContext, c as SidebarSheetContext, l as useSidebar } from "../chunks/sidebar-
|
|
2
|
+
export { t as BrandWordmark, n as KAESO_SIDEBAR_DEFAULT_VARIANTS, r as KAESO_SIDEBAR_VARIANTS, i as SIDEBAR_MAX, a as SIDEBAR_MIN, o as Sidebar, s as SidebarFloatingContext, c as SidebarSheetContext, l as useSidebar } from "../chunks/sidebar-K30Ae8N5.js";
|
package/dist/components/tabs.js
CHANGED
|
@@ -43,10 +43,10 @@ var b = /* @__PURE__ */ a(function({ className: t, children: i, ...a }, u) {
|
|
|
43
43
|
};
|
|
44
44
|
}, []), /* @__PURE__ */ f(p.List, {
|
|
45
45
|
ref: g,
|
|
46
|
-
className: e("relative flex min-w-0 items-center overflow-x-auto scroll-px-16 scrollbar-none scroll-fade-x", m === "underline" ? "hairline-b-strong" : "gap-4", t),
|
|
46
|
+
className: e("relative flex min-w-0 items-center overflow-x-auto scroll-px-16 scrollbar-none scroll-fade-x", m === "underline" ? "gap-24 hairline-b-strong" : "gap-4", t),
|
|
47
47
|
...a,
|
|
48
48
|
children: [i, m === "underline" && /* @__PURE__ */ d(p.Indicator, {
|
|
49
|
-
className: "absolute bottom-0 left-0 flex h-2 w-(--active-tab-width) translate-x-(--active-tab-left)
|
|
49
|
+
className: "absolute bottom-0 left-0 flex h-2 w-(--active-tab-width) translate-x-(--active-tab-left) indicator-motion",
|
|
50
50
|
children: /* @__PURE__ */ d("span", { className: "h-2 flex-1 rounded-pill bg-ink forced-line" })
|
|
51
51
|
})]
|
|
52
52
|
});
|
|
@@ -59,9 +59,9 @@ var x = /* @__PURE__ */ a(function({ value: n, children: r, icon: i, count: a, d
|
|
|
59
59
|
value: n,
|
|
60
60
|
...s ? { disabled: !0 } : {},
|
|
61
61
|
...l ? { "data-force": l } : {},
|
|
62
|
-
className: e("relative inline-flex shrink-0 cursor-pointer items-center gap-6 text-body font-medium whitespace-nowrap text-fg-secondary transition-control tap-target hover:text-fg selected:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled selected:disabled:text-fg-disabled", h === "underline" ? "group/tab h-40 outline-none" : "h-32 rounded-pill px-12 hover:bg-fill-1 active:bg-fill-2 selected:bg-fill-2 selected:hover:bg-fill-3 selected:active:bg-fill-3 focus-ring-inset", c),
|
|
62
|
+
className: e("relative inline-flex shrink-0 cursor-pointer items-center gap-6 text-body font-medium whitespace-nowrap text-fg-secondary transition-control tap-target hover:text-fg selected:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled selected:disabled:text-fg-disabled", h === "underline" ? "group/tab h-40 outline-none hover:tab-line-hover active:tab-line-pressed disabled:shadow-none" : "h-32 rounded-pill px-12 hover:bg-fill-1 active:bg-fill-2 selected:bg-fill-2 selected:hover:bg-fill-3 selected:active:bg-fill-3 focus-ring-inset", c),
|
|
63
63
|
children: h === "underline" ? /* @__PURE__ */ f("span", {
|
|
64
|
-
className: "inline-flex h-28 items-center gap-6 rounded-
|
|
64
|
+
className: "inline-flex h-28 items-center gap-6 rounded-item outline-offset-4 group-focus-visible/tab:outline-2 group-focus-visible/tab:outline-focus group-focus-visible/tab:outline-solid",
|
|
65
65
|
children: [
|
|
66
66
|
i && /* @__PURE__ */ d(t, {
|
|
67
67
|
icon: i,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","names":["BaseTabs","_Fragment","cn","mergeRefs","observeResize","Fragment$1","Tabs$1","KAESO_TABS_VARIANTS","KAESO_TABS_DEFAULT_VARIANTS","KAESO_PILL_TABS_VARIANTS","KAESO_PILL_TABS_DEFAULT_VARIANTS","Ctx","makeRoot","Root","defaultVariant","variant","value","defaultValue","onValueChange","v","className","name","List","props","useContext","own","useRef","refs","useMemo","ref","useEffect","el","mark","end","stop","children","Tab","force","disabled","icon","Icon","count","Panel","keepMounted","Tabs","PillTabs"],"sources":["../../src/components/tabs/tabs.tsx"],"sourcesContent":["import { createContext, forwardRef, useContext, useEffect, useMemo, useRef, type ReactNode } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport { cn } from \"../../utils/cn.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\n\nexport const KAESO_TABS_VARIANTS = {\n variant: {\n underline: {\n classes: \"\",\n },\n pill: { classes: \"\" },\n },\n} as const;\nexport const KAESO_TABS_DEFAULT_VARIANTS = { variant: \"underline\" } as const;\nexport const KAESO_PILL_TABS_VARIANTS = { variant: KAESO_TABS_VARIANTS.variant } as const;\nexport const KAESO_PILL_TABS_DEFAULT_VARIANTS = { variant: \"pill\" } as const;\ntype Variant = keyof typeof KAESO_TABS_VARIANTS.variant;\n\nconst Ctx = /* @__PURE__ */ createContext<Variant>(\"underline\");\n\nexport interface TabsProps {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n variant?: Variant | undefined;\n className?: string | undefined;\n children: ReactNode;\n}\n\nfunction makeRoot(defaultVariant: Variant, name: string) {\n const Root = /* @__PURE__ */ forwardRef<HTMLDivElement, TabsProps>(function TabsRoot(\n { value, defaultValue, onValueChange, variant = defaultVariant, className, children },\n ref,\n ) {\n return (\n <Ctx.Provider value={variant}>\n <BaseTabs.Root\n ref={ref}\n {...(value !== undefined ? { value } : {})}\n {...(defaultValue !== undefined ? { defaultValue } : {})}\n {...(onValueChange ? { onValueChange: (v: unknown) => onValueChange(String(v)) } : {})}\n className={cn(\"flex min-w-0 flex-col\", className)}\n >\n {children}\n </BaseTabs.Root>\n </Ctx.Provider>\n );\n });\n Root.displayName = name;\n return Root;\n}\n\nexport interface TabsListProps {\n className?: string | undefined;\n children: ReactNode;\n \"aria-label\"?: string | undefined;\n}\n\nconst List = /* @__PURE__ */ forwardRef<HTMLDivElement, TabsListProps>(function TabsList({ className, children, ...props }, ref) {\n const variant = useContext(Ctx);\n const own = useRef<HTMLDivElement | null>(null);\n const refs = useMemo(() => mergeRefs(own, ref), [ref]);\n useEffect(() => {\n const el = own.current;\n if (!el) return;\n const mark = () => {\n const end = el.scrollWidth - el.clientWidth - Math.abs(el.scrollLeft);\n el.style.setProperty(\"--scroll-area-overflow-x-start\", `${Math.max(0, Math.abs(el.scrollLeft))}px`);\n el.style.setProperty(\"--scroll-area-overflow-x-end\", `${Math.max(0, end)}px`);\n };\n mark();\n el.addEventListener(\"scroll\", mark, { passive: true });\n const stop = observeResize([el, ...el.children], mark);\n return () => {\n el.removeEventListener(\"scroll\", mark);\n stop();\n };\n }, []);\n return (\n <BaseTabs.List\n ref={refs}\n className={cn(\n \"relative flex min-w-0 items-center overflow-x-auto scroll-px-16 scrollbar-none scroll-fade-x\",\n variant === \"underline\" ? \"hairline-b-strong\" : \"gap-4\",\n className,\n )}\n {...props}\n >\n {children}\n {variant === \"underline\" && (\n <BaseTabs.Indicator className=\"absolute bottom-0 left-0 flex h-2 w-(--active-tab-width) translate-x-(--active-tab-left) px-12 indicator-motion\">\n <span className=\"h-2 flex-1 rounded-pill bg-ink forced-line\" />\n </BaseTabs.Indicator>\n )}\n </BaseTabs.List>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"Tabs.List\";\n\nexport interface TabProps {\n value: string;\n children: ReactNode;\n icon?: IconData | undefined;\n count?: number | undefined;\n disabled?: boolean | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Tab = /* @__PURE__ */ forwardRef<HTMLButtonElement, TabProps>(function TabsTab({ value, children, icon, count, disabled, className, \"data-force\": force }, ref) {\n const variant = useContext(Ctx);\n return (\n <BaseTabs.Tab\n ref={ref}\n value={value}\n {...(disabled ? { disabled: true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer items-center gap-6 text-body font-medium whitespace-nowrap text-fg-secondary transition-control tap-target hover:text-fg selected:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled selected:disabled:text-fg-disabled\",\n variant === \"underline\"\n ? \"group/tab h-40 outline-none\"\n : \"h-32 rounded-pill px-12 hover:bg-fill-1 active:bg-fill-2 selected:bg-fill-2 selected:hover:bg-fill-3 selected:active:bg-fill-3 focus-ring-inset\",\n className,\n )}\n >\n {variant === \"underline\" ? (\n <span className=\"inline-flex h-28 items-center gap-6 rounded-pill px-12 transition-control focus-ring-inset group-hover/tab:bg-fill-1 group-active/tab:bg-fill-2 group-disabled/tab:bg-transparent group-focus-visible/tab:outline-focus group-focus-visible/tab:outline-solid\">\n {icon && <Icon icon={icon} size=\"sm\" />}\n {children}\n {count !== undefined && <span className=\"text-body font-regular text-fg-secondary tabular\">{count}</span>}\n </span>\n ) : (\n <>\n {icon && <Icon icon={icon} size=\"sm\" />}\n {children}\n {count !== undefined && <span className=\"text-body font-regular text-fg-secondary tabular\">{count}</span>}\n </>\n )}\n </BaseTabs.Tab>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Tab.displayName = \"Tabs.Tab\";\n\nconst Panel = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { value: string; className?: string | undefined; children: ReactNode; keepMounted?: boolean | undefined; \"data-force\"?: string | undefined }\n>(function TabsPanel({ value, className, children, keepMounted, \"data-force\": force }, ref) {\n return (\n <BaseTabs.Panel\n ref={ref}\n value={value}\n {...(keepMounted ? { keepMounted } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\"outline-none focus-ring-inset\", className)}\n >\n {children}\n </BaseTabs.Panel>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Panel.displayName = \"Tabs.Panel\";\n\nexport const Tabs = /* @__PURE__ */ Object.assign(/* @__PURE__ */ makeRoot(KAESO_TABS_DEFAULT_VARIANTS.variant, \"Tabs\"), { List, Tab, Panel });\nexport const PillTabs = /* @__PURE__ */ Object.assign(/* @__PURE__ */ makeRoot(KAESO_PILL_TABS_DEFAULT_VARIANTS.variant, \"PillTabs\"), { List, Tab, Panel });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.js","names":["BaseTabs","_Fragment","cn","mergeRefs","observeResize","Fragment$1","Tabs$1","KAESO_TABS_VARIANTS","KAESO_TABS_DEFAULT_VARIANTS","KAESO_PILL_TABS_VARIANTS","KAESO_PILL_TABS_DEFAULT_VARIANTS","Ctx","makeRoot","Root","defaultVariant","variant","value","defaultValue","onValueChange","v","className","name","List","props","useContext","own","useRef","refs","useMemo","ref","useEffect","el","mark","end","stop","children","Tab","force","disabled","icon","Icon","count","Panel","keepMounted","Tabs","PillTabs"],"sources":["../../src/components/tabs/tabs.tsx"],"sourcesContent":["import { createContext, forwardRef, useContext, useEffect, useMemo, useRef, type ReactNode } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport { cn } from \"../../utils/cn.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\n\nexport const KAESO_TABS_VARIANTS = {\n variant: {\n underline: {\n classes: \"\",\n },\n pill: { classes: \"\" },\n },\n} as const;\nexport const KAESO_TABS_DEFAULT_VARIANTS = { variant: \"underline\" } as const;\nexport const KAESO_PILL_TABS_VARIANTS = { variant: KAESO_TABS_VARIANTS.variant } as const;\nexport const KAESO_PILL_TABS_DEFAULT_VARIANTS = { variant: \"pill\" } as const;\ntype Variant = keyof typeof KAESO_TABS_VARIANTS.variant;\n\nconst Ctx = /* @__PURE__ */ createContext<Variant>(\"underline\");\n\nexport interface TabsProps {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n variant?: Variant | undefined;\n className?: string | undefined;\n children: ReactNode;\n}\n\nfunction makeRoot(defaultVariant: Variant, name: string) {\n const Root = /* @__PURE__ */ forwardRef<HTMLDivElement, TabsProps>(function TabsRoot(\n { value, defaultValue, onValueChange, variant = defaultVariant, className, children },\n ref,\n ) {\n return (\n <Ctx.Provider value={variant}>\n <BaseTabs.Root\n ref={ref}\n {...(value !== undefined ? { value } : {})}\n {...(defaultValue !== undefined ? { defaultValue } : {})}\n {...(onValueChange ? { onValueChange: (v: unknown) => onValueChange(String(v)) } : {})}\n className={cn(\"flex min-w-0 flex-col\", className)}\n >\n {children}\n </BaseTabs.Root>\n </Ctx.Provider>\n );\n });\n Root.displayName = name;\n return Root;\n}\n\nexport interface TabsListProps {\n className?: string | undefined;\n children: ReactNode;\n \"aria-label\"?: string | undefined;\n}\n\nconst List = /* @__PURE__ */ forwardRef<HTMLDivElement, TabsListProps>(function TabsList({ className, children, ...props }, ref) {\n const variant = useContext(Ctx);\n const own = useRef<HTMLDivElement | null>(null);\n const refs = useMemo(() => mergeRefs(own, ref), [ref]);\n useEffect(() => {\n const el = own.current;\n if (!el) return;\n const mark = () => {\n const end = el.scrollWidth - el.clientWidth - Math.abs(el.scrollLeft);\n el.style.setProperty(\"--scroll-area-overflow-x-start\", `${Math.max(0, Math.abs(el.scrollLeft))}px`);\n el.style.setProperty(\"--scroll-area-overflow-x-end\", `${Math.max(0, end)}px`);\n };\n mark();\n el.addEventListener(\"scroll\", mark, { passive: true });\n const stop = observeResize([el, ...el.children], mark);\n return () => {\n el.removeEventListener(\"scroll\", mark);\n stop();\n };\n }, []);\n return (\n <BaseTabs.List\n ref={refs}\n className={cn(\n \"relative flex min-w-0 items-center overflow-x-auto scroll-px-16 scrollbar-none scroll-fade-x\",\n variant === \"underline\" ? \"gap-24 hairline-b-strong\" : \"gap-4\",\n className,\n )}\n {...props}\n >\n {children}\n {variant === \"underline\" && (\n <BaseTabs.Indicator className=\"absolute bottom-0 left-0 flex h-2 w-(--active-tab-width) translate-x-(--active-tab-left) indicator-motion\">\n <span className=\"h-2 flex-1 rounded-pill bg-ink forced-line\" />\n </BaseTabs.Indicator>\n )}\n </BaseTabs.List>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"Tabs.List\";\n\nexport interface TabProps {\n value: string;\n children: ReactNode;\n icon?: IconData | undefined;\n count?: number | undefined;\n disabled?: boolean | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Tab = /* @__PURE__ */ forwardRef<HTMLButtonElement, TabProps>(function TabsTab({ value, children, icon, count, disabled, className, \"data-force\": force }, ref) {\n const variant = useContext(Ctx);\n return (\n <BaseTabs.Tab\n ref={ref}\n value={value}\n {...(disabled ? { disabled: true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer items-center gap-6 text-body font-medium whitespace-nowrap text-fg-secondary transition-control tap-target hover:text-fg selected:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled selected:disabled:text-fg-disabled\",\n variant === \"underline\"\n ? \"group/tab h-40 outline-none hover:tab-line-hover active:tab-line-pressed disabled:shadow-none\"\n : \"h-32 rounded-pill px-12 hover:bg-fill-1 active:bg-fill-2 selected:bg-fill-2 selected:hover:bg-fill-3 selected:active:bg-fill-3 focus-ring-inset\",\n className,\n )}\n >\n {variant === \"underline\" ? (\n <span className=\"inline-flex h-28 items-center gap-6 rounded-item outline-offset-4 group-focus-visible/tab:outline-2 group-focus-visible/tab:outline-focus group-focus-visible/tab:outline-solid\">\n {icon && <Icon icon={icon} size=\"sm\" />}\n {children}\n {count !== undefined && <span className=\"text-body font-regular text-fg-secondary tabular\">{count}</span>}\n </span>\n ) : (\n <>\n {icon && <Icon icon={icon} size=\"sm\" />}\n {children}\n {count !== undefined && <span className=\"text-body font-regular text-fg-secondary tabular\">{count}</span>}\n </>\n )}\n </BaseTabs.Tab>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Tab.displayName = \"Tabs.Tab\";\n\nconst Panel = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { value: string; className?: string | undefined; children: ReactNode; keepMounted?: boolean | undefined; \"data-force\"?: string | undefined }\n>(function TabsPanel({ value, className, children, keepMounted, \"data-force\": force }, ref) {\n return (\n <BaseTabs.Panel\n ref={ref}\n value={value}\n {...(keepMounted ? { keepMounted } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\"outline-none focus-ring-inset\", className)}\n >\n {children}\n </BaseTabs.Panel>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Panel.displayName = \"Tabs.Panel\";\n\nexport const Tabs = /* @__PURE__ */ Object.assign(/* @__PURE__ */ makeRoot(KAESO_TABS_DEFAULT_VARIANTS.variant, \"Tabs\"), { List, Tab, Panel });\nexport const PillTabs = /* @__PURE__ */ Object.assign(/* @__PURE__ */ makeRoot(KAESO_PILL_TABS_DEFAULT_VARIANTS.variant, \"PillTabs\"), { List, Tab, Panel });\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { i as e } from "../chunks/context-BELWW79w.js";
|
|
3
|
-
import { a as t } from "../chunks/theme-provider-
|
|
4
|
-
import { t as n } from "../chunks/icon-button-
|
|
5
|
-
import { c as r } from "../chunks/menu-
|
|
3
|
+
import { a as t } from "../chunks/theme-provider-BjXTggqM.js";
|
|
4
|
+
import { t as n } from "../chunks/icon-button-6kOn2zrP.js";
|
|
5
|
+
import { c as r } from "../chunks/menu-BDce2kiw.js";
|
|
6
6
|
import { forwardRef as i } from "react";
|
|
7
7
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
8
8
|
import { ComputerIcon as s, Moon02Icon as c, Sun03Icon as l } from "@hugeicons/core-free-icons";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { i as e } from "../chunks/context-BELWW79w.js";
|
|
3
|
-
import { a as t } from "../chunks/theme-provider-
|
|
4
|
-
import { r as n } from "../chunks/select-
|
|
3
|
+
import { a as t } from "../chunks/theme-provider-BjXTggqM.js";
|
|
4
|
+
import { r as n } from "../chunks/select-UTdHKubp.js";
|
|
5
5
|
import { forwardRef as r } from "react";
|
|
6
6
|
import { jsx as i } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/theme-select/theme-select.tsx
|