@compose-market/theme 0.1.5 → 0.1.7

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.
@@ -1,42 +1,42 @@
1
1
  import * as React from "react";
2
- export { mirrorStyles } from "./styles";
3
- export interface ComposeMirrorTab {
2
+ export declare const mirrorStyles = "\n.cm-mirror-pane {\n container-type: inline-size;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n border: 1px solid hsl(var(--primary) / 0.18);\n border-radius: 16px;\n background:\n linear-gradient(145deg, hsl(226 21% 23% / 0.42), hsl(221 50% 9% / 0.34)),\n radial-gradient(circle at 18% 0%, hsl(var(--primary) / 0.09), transparent 34%),\n hsl(224 36% 13% / 0.24);\n box-shadow:\n inset 0 1px 0 hsl(0 0% 100% / 0.06),\n 0 0 34px hsl(var(--primary) / 0.06);\n color: hsl(var(--foreground));\n font-family: var(--font-sans), sans-serif;\n backdrop-filter: blur(16px) saturate(1.12);\n}\n\n.cm-mirror-pane *,\n.cm-mirror-pane *::before,\n.cm-mirror-pane *::after {\n box-sizing: border-box;\n}\n\n.cm-mirror-pane__toolbar {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: 0.35rem;\n min-height: 2.95rem;\n padding: 0.38rem 0.45rem;\n border-bottom: 1px solid hsl(var(--primary) / 0.1);\n background: hsl(221 50% 9% / 0.28);\n}\n\n.cm-mirror-pane__toolbar-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n min-width: 2.1rem;\n min-height: 2.1rem;\n padding: 0 0.58rem;\n border: 1px solid transparent;\n border-radius: 999px;\n background: transparent;\n color: hsl(var(--muted-foreground));\n cursor: pointer;\n font-family: var(--font-mono), monospace;\n font-size: 0.68rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n transition:\n transform 160ms ease,\n border-color 180ms ease,\n background-color 180ms ease,\n color 180ms ease,\n box-shadow 180ms ease;\n}\n\n.cm-mirror-pane__toolbar-btn:hover,\n.cm-mirror-pane__toolbar-btn:focus-visible {\n outline: none;\n color: hsl(var(--foreground));\n border-color: hsl(var(--primary) / 0.2);\n background: hsl(var(--primary) / 0.08);\n}\n\n.cm-mirror-pane__toolbar-btn--active-cyan {\n border-color: hsl(var(--primary) / 0.36);\n background: hsl(var(--primary) / 0.12);\n color: hsl(var(--primary));\n box-shadow: 0 0 18px hsl(var(--primary) / 0.12);\n}\n\n.cm-mirror-pane__toolbar-btn--active-fuchsia {\n border-color: hsl(var(--accent) / 0.34);\n background: hsl(var(--accent) / 0.11);\n color: hsl(var(--accent));\n box-shadow: 0 0 18px hsl(var(--accent) / 0.1);\n}\n\n.cm-mirror-pane__toolbar-btn svg {\n width: 1rem;\n height: 1rem;\n}\n\n.cm-mirror-pane__toolbar-label {\n display: none;\n}\n\n@container (min-width: 24rem) {\n .cm-mirror-pane__toolbar-label {\n display: inline;\n }\n}\n\n.cm-mirror-pane__body {\n flex: 1 1 auto;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n align-content: stretch;\n gap: clamp(0.52rem, 1.8cqi, 0.82rem);\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n padding: clamp(0.62rem, 2cqi, 0.9rem);\n}\n\n.cm-mirror-pane__card {\n border: 0;\n background: transparent;\n box-shadow: none;\n backdrop-filter: none;\n}\n\n.cm-mirror-pane__card > .cm-card__body {\n height: auto;\n min-height: 0;\n padding: 0;\n gap: 0.52rem;\n grid-template-rows: auto;\n}\n\n.cm-mirror-pane__card .cm-card__header {\n align-items: center;\n gap: clamp(0.58rem, 1.6cqi, 0.78rem);\n}\n\n.cm-mirror-pane__card .cm-card__title-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.38rem;\n}\n\n.cm-mirror-pane__card .cm-card__title,\n.cm-mirror-pane__card-title {\n display: block;\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__card .cm-card__subtitle {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__card .cm-card__meta {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n align-items: center;\n gap: 0.34rem;\n width: 100%;\n}\n\n.cm-mirror-pane__card .cm-card__meta-chip {\n width: 100%;\n min-height: 1.46rem;\n max-height: 1.46rem;\n justify-content: center;\n padding: 0.18rem 0.48rem;\n font-size: 0.68rem;\n}\n\n.cm-mirror-pane__model-id {\n color: hsl(var(--primary) / 0.72);\n}\n\n.cm-mirror-pane__model-icon-box {\n display: grid;\n width: clamp(2.55rem, 7.2cqi, 3.15rem);\n height: clamp(2.55rem, 7.2cqi, 3.15rem);\n place-items: center;\n flex: 0 0 auto;\n border: 1px solid hsl(var(--primary) / 0.24);\n border-radius: 12px;\n background: hsl(var(--primary) / 0.09);\n color: hsl(var(--primary));\n box-shadow: inset 0 0 18px hsl(var(--primary) / 0.08);\n}\n\n.cm-mirror-pane__model-icon-box svg {\n width: 1.16rem;\n height: 1.16rem;\n}\n\n.cm-mirror-pane__content {\n display: grid;\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n}\n\n.cm-mirror-pane__details,\n.cm-mirror-pane__custom-content {\n display: grid;\n gap: clamp(0.46rem, 1.45cqi, 0.68rem);\n min-width: 0;\n min-height: 0;\n align-content: start;\n overflow: hidden;\n}\n\n.cm-mirror-pane__description,\n.cm-mirror-pane__section,\n.cm-mirror-pane__pricing-compact,\n.cm-mirror-pane__pricing-block,\n.cm-mirror-pane__tool-group,\n.cm-mirror-pane__no-params,\n.cm-mirror-pane__text-area,\n.cm-mirror-pane__field {\n border: 1px solid hsl(var(--primary) / 0.12);\n border-radius: 12px;\n background: hsl(221 50% 9% / 0.3);\n}\n\n.cm-mirror-pane__description {\n min-width: 0;\n padding: clamp(0.58rem, 1.55cqi, 0.74rem);\n color: hsl(var(--muted-foreground));\n font-size: 0.92rem;\n line-height: 1.38;\n}\n\n.cm-mirror-pane__description .cm-excerpt,\n.cm-mirror-pane__description .cm-excerpt__trigger,\n.cm-mirror-pane__description .cm-excerpt__text {\n width: 100%;\n min-width: 0;\n}\n\n.cm-mirror-pane__section {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n gap: 0.4rem;\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n}\n\n.cm-mirror-pane__section--compact {\n padding: clamp(0.52rem, 1.55cqi, 0.68rem);\n}\n\n.cm-mirror-pane__section-label,\n.cm-mirror-pane__tool-group-label {\n min-width: 0;\n color: hsl(var(--muted-foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.72rem;\n font-weight: 800;\n letter-spacing: 0.1em;\n line-height: 1.1;\n text-transform: uppercase;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__section--io {\n grid-template-rows: minmax(2.4rem, auto);\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.44rem;\n align-items: stretch;\n}\n\n.cm-mirror-pane__io-row,\n.cm-mirror-pane__kv-row,\n.cm-mirror-pane__pricing-header,\n.cm-mirror-pane__tool-toggle {\n min-width: 0;\n min-height: 1.8rem;\n}\n\n.cm-mirror-pane__io-row {\n display: grid;\n grid-template-columns: 2.35rem minmax(0, 1fr);\n align-items: center;\n gap: 0.48rem;\n}\n\n.cm-mirror-pane__io-label,\n.cm-mirror-pane__kv-label {\n min-width: 0;\n color: hsl(var(--muted-foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.76rem;\n letter-spacing: 0.02em;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__io-badges {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.32rem;\n min-width: 0;\n flex-wrap: wrap;\n}\n\n.cm-mirror-pane__badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n min-height: 1.42rem;\n max-height: 1.42rem;\n max-width: 100%;\n border: 1px solid hsl(var(--primary) / 0.18);\n border-radius: 999px;\n background: hsl(var(--primary) / 0.08);\n color: hsl(var(--primary));\n padding: 0 0.48rem;\n font-family: var(--font-mono), monospace;\n font-size: 0.68rem;\n font-weight: 800;\n letter-spacing: 0.06em;\n line-height: 1;\n text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.cm-mirror-pane__badge[data-tone=\"fuchsia\"] {\n border-color: hsl(var(--accent) / 0.24);\n background: hsl(var(--accent) / 0.1);\n color: hsl(var(--accent));\n}\n\n.cm-mirror-pane__badge[data-tone=\"green\"] {\n border-color: hsl(142 71% 45% / 0.28);\n background: hsl(142 71% 45% / 0.1);\n color: hsl(142 71% 55%);\n}\n\n.cm-mirror-pane__badge[data-tone=\"warning\"] {\n border-color: hsl(42 100% 48% / 0.28);\n background: hsl(42 100% 48% / 0.1);\n color: hsl(42 100% 58%);\n}\n\n.cm-mirror-pane__badge[data-tone=\"danger\"] {\n border-color: hsl(var(--destructive) / 0.3);\n background: hsl(var(--destructive) / 0.12);\n color: hsl(var(--destructive));\n}\n\n.cm-mirror-pane__kv-grid,\n.cm-mirror-pane__pricing-entries {\n display: grid;\n grid-auto-rows: minmax(1.7rem, auto);\n gap: 0.24rem;\n min-width: 0;\n min-height: 0;\n align-content: start;\n}\n\n.cm-mirror-pane__kv-row,\n.cm-mirror-pane__pricing-header {\n display: grid;\n grid-template-columns: minmax(0, 1fr) max-content;\n align-items: center;\n gap: 0.55rem;\n}\n\n.cm-mirror-pane__kv-value {\n min-width: 0;\n color: hsl(var(--foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.82rem;\n font-weight: 650;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__pricing-compact,\n.cm-mirror-pane__pricing-block,\n.cm-mirror-pane__tool-group {\n display: grid;\n gap: 0.34rem;\n min-width: 0;\n min-height: 0;\n padding: 0.5rem 0.58rem;\n}\n\n.cm-mirror-pane__section--context .cm-mirror-pane__kv-grid,\n.cm-mirror-pane__section--pricing .cm-mirror-pane__pricing-entries {\n gap: 0.22rem;\n}\n\n.cm-mirror-pane__section--pricing > .cm-mirror-pane__pricing-compact {\n border: 0;\n background: transparent;\n padding: 0;\n}\n\n.cm-mirror-pane__pricing-unit {\n min-width: 0;\n color: hsl(var(--muted-foreground) / 0.72);\n font-family: var(--font-mono), monospace;\n font-size: 0.7rem;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__pricing-name {\n min-width: 0;\n color: hsl(var(--accent));\n font-family: var(--font-mono), monospace;\n font-weight: 700;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.cm-mirror-pane__footer {\n flex: 0 0 auto;\n border-top: 1px solid hsl(var(--primary) / 0.1);\n padding: 0.75rem 1rem;\n}\n\n.cm-mirror-pane__empty {\n flex: 1;\n min-height: 14rem;\n display: grid;\n place-items: center;\n align-content: center;\n gap: 0.75rem;\n padding: 1.5rem;\n text-align: center;\n}\n\n.cm-mirror-pane__empty-icon {\n display: inline-flex;\n color: hsl(var(--primary));\n opacity: 0.72;\n}\n\n.cm-mirror-pane__empty-icon svg {\n width: 2.5rem;\n height: 2.5rem;\n}\n\n.cm-mirror-pane__empty-text {\n max-width: 18rem;\n color: hsl(var(--muted-foreground));\n line-height: 1.45;\n}\n\n.cm-mirror-pane__tool-group {\n border-color: hsl(var(--primary) / 0.18);\n background: hsl(var(--primary) / 0.05);\n}\n\n.cm-mirror-pane__tool-group--fuchsia {\n border-color: hsl(var(--accent) / 0.18);\n background: hsl(var(--accent) / 0.05);\n}\n\n.cm-mirror-pane__tool-toggle {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.58rem;\n}\n\n.cm-mirror-pane__custom-section {\n display: grid;\n gap: 0.42rem;\n min-width: 0;\n}\n\n.cm-mirror-pane__text-area {\n width: 100%;\n min-height: 7rem;\n padding: 0.72rem;\n color: hsl(var(--foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.86rem;\n resize: vertical;\n}\n\n.cm-mirror-pane__field {\n width: 100%;\n min-height: 2.45rem;\n color: hsl(var(--foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.86rem;\n}\n\n.cm-mirror-pane__field:focus,\n.cm-mirror-pane__field:focus-visible,\n.cm-mirror-pane__text-area:focus,\n.cm-mirror-pane__text-area:focus-visible {\n outline: none;\n border-color: hsl(var(--primary) / 0.5);\n box-shadow: 0 0 0 1px hsl(var(--primary) / 0.16);\n}\n\n.cm-mirror-pane__param-description,\n.cm-mirror-pane__no-params {\n min-width: 0;\n color: hsl(var(--muted-foreground));\n font-size: 0.86rem;\n line-height: 1.4;\n}\n\n.cm-mirror-pane__no-params {\n padding: 1rem;\n text-align: center;\n}\n\n@container (max-width: 28rem) {\n .cm-mirror-pane__body {\n gap: 0.54rem;\n padding: 0.62rem;\n }\n\n .cm-mirror-pane__section--io {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .cm-mirror-pane__io-badges {\n justify-content: flex-start;\n }\n}\n\n@container (max-width: 22rem) {\n .cm-mirror-pane__card .cm-card__header {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .cm-mirror-pane__model-icon-box {\n display: none;\n }\n\n .cm-mirror-pane__io-row,\n .cm-mirror-pane__kv-row,\n .cm-mirror-pane__pricing-header,\n .cm-mirror-pane__tool-toggle {\n grid-template-columns: minmax(0, 1fr);\n align-items: start;\n gap: 0.3rem;\n }\n\n .cm-mirror-pane__kv-value {\n text-align: left;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .cm-mirror-pane__toolbar-btn {\n transition-duration: 0.01ms !important;\n }\n}\n";
3
+ export interface MirrorTab {
4
4
  id: string;
5
5
  label: React.ReactNode;
6
6
  icon?: React.ReactNode;
7
7
  tone?: "cyan" | "fuchsia";
8
8
  }
9
- export interface ComposeMirrorBadge {
9
+ export interface MirrorBadge {
10
10
  label: React.ReactNode;
11
11
  tone?: "neutral" | "cyan" | "fuchsia" | "green" | "warning" | "danger";
12
12
  }
13
- export interface ComposeMirrorPaneProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
13
+ export interface MirrorPaneProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
14
14
  title?: React.ReactNode;
15
15
  subtitle?: React.ReactNode;
16
16
  description?: React.ReactNode;
17
17
  icon?: React.ReactNode;
18
- tabs?: ComposeMirrorTab[];
18
+ tabs?: MirrorTab[];
19
19
  activeTab?: string;
20
20
  onTabChange?: (tab: string) => void;
21
- badges?: ComposeMirrorBadge[];
21
+ badges?: MirrorBadge[];
22
22
  empty?: boolean;
23
23
  emptyIcon?: React.ReactNode;
24
24
  emptyText?: React.ReactNode;
25
25
  footer?: React.ReactNode;
26
26
  }
27
- export declare function ComposeMirrorPane({ className, title, subtitle, description, icon, tabs, activeTab, onTabChange, badges, empty, emptyIcon, emptyText, footer, children, ...props }: ComposeMirrorPaneProps): React.JSX.Element;
28
- export interface ComposeMirrorSectionProps extends React.HTMLAttributes<HTMLDivElement> {
27
+ export declare function MirrorPane({ className, title, subtitle, description, icon, tabs, activeTab, onTabChange, badges, empty, emptyIcon, emptyText, footer, children, ...props }: MirrorPaneProps): React.JSX.Element;
28
+ export interface MirrorSectionProps extends React.HTMLAttributes<HTMLDivElement> {
29
29
  label?: React.ReactNode;
30
30
  compact?: boolean;
31
31
  }
32
- export declare function ComposeMirrorSection({ className, label, compact, children, ...props }: ComposeMirrorSectionProps): React.JSX.Element;
33
- export interface ComposeMirrorRowProps extends React.HTMLAttributes<HTMLDivElement> {
32
+ export declare function MirrorSection({ className, label, compact, children, ...props }: MirrorSectionProps): React.JSX.Element;
33
+ export interface MirrorRowProps extends React.HTMLAttributes<HTMLDivElement> {
34
34
  label: React.ReactNode;
35
35
  value: React.ReactNode;
36
36
  }
37
- export declare function ComposeMirrorRow({ className, label, value, ...props }: ComposeMirrorRowProps): React.JSX.Element;
38
- export interface ComposeMirrorPricingProps extends React.HTMLAttributes<HTMLDivElement> {
37
+ export declare function MirrorRow({ className, label, value, ...props }: MirrorRowProps): React.JSX.Element;
38
+ export interface MirrorPricingProps extends React.HTMLAttributes<HTMLDivElement> {
39
39
  unit?: React.ReactNode;
40
40
  }
41
- export declare function ComposeMirrorPricing({ className, unit, children, ...props }: ComposeMirrorPricingProps): React.JSX.Element;
41
+ export declare function MirrorPricing({ className, unit, children, ...props }: MirrorPricingProps): React.JSX.Element;
42
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mirror/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;CACxE;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IACjG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,KAAK,EACL,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,IAAS,EACT,SAAS,EACT,WAAW,EACX,MAAW,EACX,KAAa,EACb,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,sBAAsB,qBAkDxB;AAED,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,qBAUvH;AAED,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACjF,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAO5F;AAED,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,qBAOtG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mirror/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,eAAO,MAAM,YAAY,i0ZAgkBxB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;CACxE;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC1F,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,IAAS,EACT,SAAS,EACT,WAAW,EACX,MAAW,EACX,KAAa,EACb,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,qBAkDjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC9E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAUzG;AAED,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,qBAO9E;AAED,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC9E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAOxF"}
@@ -1,18 +1,594 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Card } from "../entity";
3
3
  import { cx } from "../internal/cx";
4
- export { mirrorStyles } from "./styles";
5
- export function ComposeMirrorPane({ className, title, subtitle, description, icon, tabs = [], activeTab, onTabChange, badges = [], empty = false, emptyIcon, emptyText, footer, children, ...props }) {
6
- const content = empty ? (_jsxs("div", { className: "cm-mirror-pane__empty", children: [emptyIcon ? _jsx("div", { className: "cm-mirror-pane__empty-icon", children: emptyIcon }) : null, emptyText ? _jsx("p", { className: "cm-mirror-pane__empty-text", children: emptyText }) : null] })) : (_jsxs(_Fragment, { children: [(title || subtitle || icon || badges.length > 0) ? (_jsx(Card, { variant: "pane", className: "cm-mirror-pane__card", media: icon ? _jsx("span", { className: "cm-mirror-pane__model-icon-box", children: icon }) : undefined, mediaFallback: icon ? undefined : null, title: title, subtitle: subtitle, description: description, meta: badges.map((badge) => ({ label: badge.label, tone: badge.tone })) })) : null, children] }));
4
+ export const mirrorStyles = /* css */ `
5
+ .cm-mirror-pane {
6
+ container-type: inline-size;
7
+ display: flex;
8
+ flex-direction: column;
9
+ width: 100%;
10
+ height: 100%;
11
+ min-width: 0;
12
+ min-height: 0;
13
+ overflow: hidden;
14
+ border: 1px solid hsl(var(--primary) / 0.18);
15
+ border-radius: 16px;
16
+ background:
17
+ linear-gradient(145deg, hsl(226 21% 23% / 0.42), hsl(221 50% 9% / 0.34)),
18
+ radial-gradient(circle at 18% 0%, hsl(var(--primary) / 0.09), transparent 34%),
19
+ hsl(224 36% 13% / 0.24);
20
+ box-shadow:
21
+ inset 0 1px 0 hsl(0 0% 100% / 0.06),
22
+ 0 0 34px hsl(var(--primary) / 0.06);
23
+ color: hsl(var(--foreground));
24
+ font-family: var(--font-sans), sans-serif;
25
+ backdrop-filter: blur(16px) saturate(1.12);
26
+ }
27
+
28
+ .cm-mirror-pane *,
29
+ .cm-mirror-pane *::before,
30
+ .cm-mirror-pane *::after {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ .cm-mirror-pane__toolbar {
35
+ flex: 0 0 auto;
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 0.35rem;
39
+ min-height: 2.95rem;
40
+ padding: 0.38rem 0.45rem;
41
+ border-bottom: 1px solid hsl(var(--primary) / 0.1);
42
+ background: hsl(221 50% 9% / 0.28);
43
+ }
44
+
45
+ .cm-mirror-pane__toolbar-btn {
46
+ display: inline-flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ gap: 0.4rem;
50
+ min-width: 2.1rem;
51
+ min-height: 2.1rem;
52
+ padding: 0 0.58rem;
53
+ border: 1px solid transparent;
54
+ border-radius: 999px;
55
+ background: transparent;
56
+ color: hsl(var(--muted-foreground));
57
+ cursor: pointer;
58
+ font-family: var(--font-mono), monospace;
59
+ font-size: 0.68rem;
60
+ font-weight: 700;
61
+ letter-spacing: 0.08em;
62
+ text-transform: uppercase;
63
+ transition:
64
+ transform 160ms ease,
65
+ border-color 180ms ease,
66
+ background-color 180ms ease,
67
+ color 180ms ease,
68
+ box-shadow 180ms ease;
69
+ }
70
+
71
+ .cm-mirror-pane__toolbar-btn:hover,
72
+ .cm-mirror-pane__toolbar-btn:focus-visible {
73
+ outline: none;
74
+ color: hsl(var(--foreground));
75
+ border-color: hsl(var(--primary) / 0.2);
76
+ background: hsl(var(--primary) / 0.08);
77
+ }
78
+
79
+ .cm-mirror-pane__toolbar-btn--active-cyan {
80
+ border-color: hsl(var(--primary) / 0.36);
81
+ background: hsl(var(--primary) / 0.12);
82
+ color: hsl(var(--primary));
83
+ box-shadow: 0 0 18px hsl(var(--primary) / 0.12);
84
+ }
85
+
86
+ .cm-mirror-pane__toolbar-btn--active-fuchsia {
87
+ border-color: hsl(var(--accent) / 0.34);
88
+ background: hsl(var(--accent) / 0.11);
89
+ color: hsl(var(--accent));
90
+ box-shadow: 0 0 18px hsl(var(--accent) / 0.1);
91
+ }
92
+
93
+ .cm-mirror-pane__toolbar-btn svg {
94
+ width: 1rem;
95
+ height: 1rem;
96
+ }
97
+
98
+ .cm-mirror-pane__toolbar-label {
99
+ display: none;
100
+ }
101
+
102
+ @container (min-width: 24rem) {
103
+ .cm-mirror-pane__toolbar-label {
104
+ display: inline;
105
+ }
106
+ }
107
+
108
+ .cm-mirror-pane__body {
109
+ flex: 1 1 auto;
110
+ display: grid;
111
+ grid-template-rows: auto minmax(0, 1fr);
112
+ align-content: stretch;
113
+ gap: clamp(0.52rem, 1.8cqi, 0.82rem);
114
+ min-width: 0;
115
+ min-height: 0;
116
+ overflow: hidden;
117
+ padding: clamp(0.62rem, 2cqi, 0.9rem);
118
+ }
119
+
120
+ .cm-mirror-pane__card {
121
+ border: 0;
122
+ background: transparent;
123
+ box-shadow: none;
124
+ backdrop-filter: none;
125
+ }
126
+
127
+ .cm-mirror-pane__card > .cm-card__body {
128
+ height: auto;
129
+ min-height: 0;
130
+ padding: 0;
131
+ gap: 0.52rem;
132
+ grid-template-rows: auto;
133
+ }
134
+
135
+ .cm-mirror-pane__card .cm-card__header {
136
+ align-items: center;
137
+ gap: clamp(0.58rem, 1.6cqi, 0.78rem);
138
+ }
139
+
140
+ .cm-mirror-pane__card .cm-card__title-row {
141
+ display: grid;
142
+ grid-template-columns: minmax(0, 1fr) auto;
143
+ align-items: center;
144
+ gap: 0.38rem;
145
+ }
146
+
147
+ .cm-mirror-pane__card .cm-card__title,
148
+ .cm-mirror-pane__card-title {
149
+ display: block;
150
+ min-width: 0;
151
+ max-width: 100%;
152
+ overflow: hidden;
153
+ text-overflow: ellipsis;
154
+ white-space: nowrap;
155
+ }
156
+
157
+ .cm-mirror-pane__card .cm-card__subtitle {
158
+ min-width: 0;
159
+ overflow: hidden;
160
+ text-overflow: ellipsis;
161
+ white-space: nowrap;
162
+ }
163
+
164
+ .cm-mirror-pane__card .cm-card__meta {
165
+ display: grid;
166
+ grid-template-columns: repeat(2, minmax(0, 1fr));
167
+ align-items: center;
168
+ gap: 0.34rem;
169
+ width: 100%;
170
+ }
171
+
172
+ .cm-mirror-pane__card .cm-card__meta-chip {
173
+ width: 100%;
174
+ min-height: 1.46rem;
175
+ max-height: 1.46rem;
176
+ justify-content: center;
177
+ padding: 0.18rem 0.48rem;
178
+ font-size: 0.68rem;
179
+ }
180
+
181
+ .cm-mirror-pane__model-id {
182
+ color: hsl(var(--primary) / 0.72);
183
+ }
184
+
185
+ .cm-mirror-pane__model-icon-box {
186
+ display: grid;
187
+ width: clamp(2.55rem, 7.2cqi, 3.15rem);
188
+ height: clamp(2.55rem, 7.2cqi, 3.15rem);
189
+ place-items: center;
190
+ flex: 0 0 auto;
191
+ border: 1px solid hsl(var(--primary) / 0.24);
192
+ border-radius: 12px;
193
+ background: hsl(var(--primary) / 0.09);
194
+ color: hsl(var(--primary));
195
+ box-shadow: inset 0 0 18px hsl(var(--primary) / 0.08);
196
+ }
197
+
198
+ .cm-mirror-pane__model-icon-box svg {
199
+ width: 1.16rem;
200
+ height: 1.16rem;
201
+ }
202
+
203
+ .cm-mirror-pane__content {
204
+ display: grid;
205
+ min-width: 0;
206
+ min-height: 0;
207
+ overflow: hidden;
208
+ }
209
+
210
+ .cm-mirror-pane__details,
211
+ .cm-mirror-pane__custom-content {
212
+ display: grid;
213
+ gap: clamp(0.46rem, 1.45cqi, 0.68rem);
214
+ min-width: 0;
215
+ min-height: 0;
216
+ align-content: start;
217
+ overflow: hidden;
218
+ }
219
+
220
+ .cm-mirror-pane__description,
221
+ .cm-mirror-pane__section,
222
+ .cm-mirror-pane__pricing-compact,
223
+ .cm-mirror-pane__pricing-block,
224
+ .cm-mirror-pane__tool-group,
225
+ .cm-mirror-pane__no-params,
226
+ .cm-mirror-pane__text-area,
227
+ .cm-mirror-pane__field {
228
+ border: 1px solid hsl(var(--primary) / 0.12);
229
+ border-radius: 12px;
230
+ background: hsl(221 50% 9% / 0.3);
231
+ }
232
+
233
+ .cm-mirror-pane__description {
234
+ min-width: 0;
235
+ padding: clamp(0.58rem, 1.55cqi, 0.74rem);
236
+ color: hsl(var(--muted-foreground));
237
+ font-size: 0.92rem;
238
+ line-height: 1.38;
239
+ }
240
+
241
+ .cm-mirror-pane__description .cm-excerpt,
242
+ .cm-mirror-pane__description .cm-excerpt__trigger,
243
+ .cm-mirror-pane__description .cm-excerpt__text {
244
+ width: 100%;
245
+ min-width: 0;
246
+ }
247
+
248
+ .cm-mirror-pane__section {
249
+ display: grid;
250
+ grid-template-rows: auto minmax(0, 1fr);
251
+ gap: 0.4rem;
252
+ min-width: 0;
253
+ min-height: 0;
254
+ overflow: hidden;
255
+ }
256
+
257
+ .cm-mirror-pane__section--compact {
258
+ padding: clamp(0.52rem, 1.55cqi, 0.68rem);
259
+ }
260
+
261
+ .cm-mirror-pane__section-label,
262
+ .cm-mirror-pane__tool-group-label {
263
+ min-width: 0;
264
+ color: hsl(var(--muted-foreground));
265
+ font-family: var(--font-mono), monospace;
266
+ font-size: 0.72rem;
267
+ font-weight: 800;
268
+ letter-spacing: 0.1em;
269
+ line-height: 1.1;
270
+ text-transform: uppercase;
271
+ overflow: hidden;
272
+ text-overflow: ellipsis;
273
+ white-space: nowrap;
274
+ }
275
+
276
+ .cm-mirror-pane__section--io {
277
+ grid-template-rows: minmax(2.4rem, auto);
278
+ grid-template-columns: repeat(2, minmax(0, 1fr));
279
+ gap: 0.44rem;
280
+ align-items: stretch;
281
+ }
282
+
283
+ .cm-mirror-pane__io-row,
284
+ .cm-mirror-pane__kv-row,
285
+ .cm-mirror-pane__pricing-header,
286
+ .cm-mirror-pane__tool-toggle {
287
+ min-width: 0;
288
+ min-height: 1.8rem;
289
+ }
290
+
291
+ .cm-mirror-pane__io-row {
292
+ display: grid;
293
+ grid-template-columns: 2.35rem minmax(0, 1fr);
294
+ align-items: center;
295
+ gap: 0.48rem;
296
+ }
297
+
298
+ .cm-mirror-pane__io-label,
299
+ .cm-mirror-pane__kv-label {
300
+ min-width: 0;
301
+ color: hsl(var(--muted-foreground));
302
+ font-family: var(--font-mono), monospace;
303
+ font-size: 0.76rem;
304
+ letter-spacing: 0.02em;
305
+ overflow: hidden;
306
+ text-overflow: ellipsis;
307
+ white-space: nowrap;
308
+ }
309
+
310
+ .cm-mirror-pane__io-badges {
311
+ display: flex;
312
+ align-items: center;
313
+ justify-content: flex-end;
314
+ gap: 0.32rem;
315
+ min-width: 0;
316
+ flex-wrap: wrap;
317
+ }
318
+
319
+ .cm-mirror-pane__badge {
320
+ display: inline-flex;
321
+ align-items: center;
322
+ justify-content: center;
323
+ min-width: 0;
324
+ min-height: 1.42rem;
325
+ max-height: 1.42rem;
326
+ max-width: 100%;
327
+ border: 1px solid hsl(var(--primary) / 0.18);
328
+ border-radius: 999px;
329
+ background: hsl(var(--primary) / 0.08);
330
+ color: hsl(var(--primary));
331
+ padding: 0 0.48rem;
332
+ font-family: var(--font-mono), monospace;
333
+ font-size: 0.68rem;
334
+ font-weight: 800;
335
+ letter-spacing: 0.06em;
336
+ line-height: 1;
337
+ text-transform: uppercase;
338
+ white-space: nowrap;
339
+ overflow: hidden;
340
+ text-overflow: ellipsis;
341
+ }
342
+
343
+ .cm-mirror-pane__badge[data-tone="fuchsia"] {
344
+ border-color: hsl(var(--accent) / 0.24);
345
+ background: hsl(var(--accent) / 0.1);
346
+ color: hsl(var(--accent));
347
+ }
348
+
349
+ .cm-mirror-pane__badge[data-tone="green"] {
350
+ border-color: hsl(142 71% 45% / 0.28);
351
+ background: hsl(142 71% 45% / 0.1);
352
+ color: hsl(142 71% 55%);
353
+ }
354
+
355
+ .cm-mirror-pane__badge[data-tone="warning"] {
356
+ border-color: hsl(42 100% 48% / 0.28);
357
+ background: hsl(42 100% 48% / 0.1);
358
+ color: hsl(42 100% 58%);
359
+ }
360
+
361
+ .cm-mirror-pane__badge[data-tone="danger"] {
362
+ border-color: hsl(var(--destructive) / 0.3);
363
+ background: hsl(var(--destructive) / 0.12);
364
+ color: hsl(var(--destructive));
365
+ }
366
+
367
+ .cm-mirror-pane__kv-grid,
368
+ .cm-mirror-pane__pricing-entries {
369
+ display: grid;
370
+ grid-auto-rows: minmax(1.7rem, auto);
371
+ gap: 0.24rem;
372
+ min-width: 0;
373
+ min-height: 0;
374
+ align-content: start;
375
+ }
376
+
377
+ .cm-mirror-pane__kv-row,
378
+ .cm-mirror-pane__pricing-header {
379
+ display: grid;
380
+ grid-template-columns: minmax(0, 1fr) max-content;
381
+ align-items: center;
382
+ gap: 0.55rem;
383
+ }
384
+
385
+ .cm-mirror-pane__kv-value {
386
+ min-width: 0;
387
+ color: hsl(var(--foreground));
388
+ font-family: var(--font-mono), monospace;
389
+ font-size: 0.82rem;
390
+ font-weight: 650;
391
+ text-align: right;
392
+ overflow: hidden;
393
+ text-overflow: ellipsis;
394
+ white-space: nowrap;
395
+ }
396
+
397
+ .cm-mirror-pane__pricing-compact,
398
+ .cm-mirror-pane__pricing-block,
399
+ .cm-mirror-pane__tool-group {
400
+ display: grid;
401
+ gap: 0.34rem;
402
+ min-width: 0;
403
+ min-height: 0;
404
+ padding: 0.5rem 0.58rem;
405
+ }
406
+
407
+ .cm-mirror-pane__section--context .cm-mirror-pane__kv-grid,
408
+ .cm-mirror-pane__section--pricing .cm-mirror-pane__pricing-entries {
409
+ gap: 0.22rem;
410
+ }
411
+
412
+ .cm-mirror-pane__section--pricing > .cm-mirror-pane__pricing-compact {
413
+ border: 0;
414
+ background: transparent;
415
+ padding: 0;
416
+ }
417
+
418
+ .cm-mirror-pane__pricing-unit {
419
+ min-width: 0;
420
+ color: hsl(var(--muted-foreground) / 0.72);
421
+ font-family: var(--font-mono), monospace;
422
+ font-size: 0.7rem;
423
+ letter-spacing: 0.08em;
424
+ text-transform: uppercase;
425
+ overflow: hidden;
426
+ text-overflow: ellipsis;
427
+ white-space: nowrap;
428
+ }
429
+
430
+ .cm-mirror-pane__pricing-name {
431
+ min-width: 0;
432
+ color: hsl(var(--accent));
433
+ font-family: var(--font-mono), monospace;
434
+ font-weight: 700;
435
+ overflow: hidden;
436
+ text-overflow: ellipsis;
437
+ white-space: nowrap;
438
+ }
439
+
440
+ .cm-mirror-pane__footer {
441
+ flex: 0 0 auto;
442
+ border-top: 1px solid hsl(var(--primary) / 0.1);
443
+ padding: 0.75rem 1rem;
444
+ }
445
+
446
+ .cm-mirror-pane__empty {
447
+ flex: 1;
448
+ min-height: 14rem;
449
+ display: grid;
450
+ place-items: center;
451
+ align-content: center;
452
+ gap: 0.75rem;
453
+ padding: 1.5rem;
454
+ text-align: center;
455
+ }
456
+
457
+ .cm-mirror-pane__empty-icon {
458
+ display: inline-flex;
459
+ color: hsl(var(--primary));
460
+ opacity: 0.72;
461
+ }
462
+
463
+ .cm-mirror-pane__empty-icon svg {
464
+ width: 2.5rem;
465
+ height: 2.5rem;
466
+ }
467
+
468
+ .cm-mirror-pane__empty-text {
469
+ max-width: 18rem;
470
+ color: hsl(var(--muted-foreground));
471
+ line-height: 1.45;
472
+ }
473
+
474
+ .cm-mirror-pane__tool-group {
475
+ border-color: hsl(var(--primary) / 0.18);
476
+ background: hsl(var(--primary) / 0.05);
477
+ }
478
+
479
+ .cm-mirror-pane__tool-group--fuchsia {
480
+ border-color: hsl(var(--accent) / 0.18);
481
+ background: hsl(var(--accent) / 0.05);
482
+ }
483
+
484
+ .cm-mirror-pane__tool-toggle {
485
+ display: grid;
486
+ grid-template-columns: minmax(0, 1fr) auto;
487
+ align-items: center;
488
+ gap: 0.58rem;
489
+ }
490
+
491
+ .cm-mirror-pane__custom-section {
492
+ display: grid;
493
+ gap: 0.42rem;
494
+ min-width: 0;
495
+ }
496
+
497
+ .cm-mirror-pane__text-area {
498
+ width: 100%;
499
+ min-height: 7rem;
500
+ padding: 0.72rem;
501
+ color: hsl(var(--foreground));
502
+ font-family: var(--font-mono), monospace;
503
+ font-size: 0.86rem;
504
+ resize: vertical;
505
+ }
506
+
507
+ .cm-mirror-pane__field {
508
+ width: 100%;
509
+ min-height: 2.45rem;
510
+ color: hsl(var(--foreground));
511
+ font-family: var(--font-mono), monospace;
512
+ font-size: 0.86rem;
513
+ }
514
+
515
+ .cm-mirror-pane__field:focus,
516
+ .cm-mirror-pane__field:focus-visible,
517
+ .cm-mirror-pane__text-area:focus,
518
+ .cm-mirror-pane__text-area:focus-visible {
519
+ outline: none;
520
+ border-color: hsl(var(--primary) / 0.5);
521
+ box-shadow: 0 0 0 1px hsl(var(--primary) / 0.16);
522
+ }
523
+
524
+ .cm-mirror-pane__param-description,
525
+ .cm-mirror-pane__no-params {
526
+ min-width: 0;
527
+ color: hsl(var(--muted-foreground));
528
+ font-size: 0.86rem;
529
+ line-height: 1.4;
530
+ }
531
+
532
+ .cm-mirror-pane__no-params {
533
+ padding: 1rem;
534
+ text-align: center;
535
+ }
536
+
537
+ @container (max-width: 28rem) {
538
+ .cm-mirror-pane__body {
539
+ gap: 0.54rem;
540
+ padding: 0.62rem;
541
+ }
542
+
543
+ .cm-mirror-pane__section--io {
544
+ grid-template-columns: minmax(0, 1fr);
545
+ }
546
+
547
+ .cm-mirror-pane__io-badges {
548
+ justify-content: flex-start;
549
+ }
550
+ }
551
+
552
+ @container (max-width: 22rem) {
553
+ .cm-mirror-pane__card .cm-card__header {
554
+ grid-template-columns: minmax(0, 1fr);
555
+ }
556
+
557
+ .cm-mirror-pane__model-icon-box {
558
+ display: none;
559
+ }
560
+
561
+ .cm-mirror-pane__io-row,
562
+ .cm-mirror-pane__kv-row,
563
+ .cm-mirror-pane__pricing-header,
564
+ .cm-mirror-pane__tool-toggle {
565
+ grid-template-columns: minmax(0, 1fr);
566
+ align-items: start;
567
+ gap: 0.3rem;
568
+ }
569
+
570
+ .cm-mirror-pane__kv-value {
571
+ text-align: left;
572
+ }
573
+ }
574
+
575
+ @media (prefers-reduced-motion: reduce) {
576
+ .cm-mirror-pane__toolbar-btn {
577
+ transition-duration: 0.01ms !important;
578
+ }
579
+ }
580
+ `;
581
+ export function MirrorPane({ className, title, subtitle, description, icon, tabs = [], activeTab, onTabChange, badges = [], empty = false, emptyIcon, emptyText, footer, children, ...props }) {
582
+ const content = empty ? (_jsxs("div", { className: "cm-mirror-pane__empty", children: [emptyIcon ? _jsx("div", { className: "cm-mirror-pane__empty-icon", children: emptyIcon }) : null, emptyText ? _jsx("p", { className: "cm-mirror-pane__empty-text", children: emptyText }) : null] })) : (_jsxs(_Fragment, { children: [(title || subtitle || icon || badges.length > 0) ? (_jsx(Card, { variant: "pane", className: "cm-mirror-pane__card", media: icon ? _jsx("span", { className: "cm-mirror-pane__model-icon-box", children: icon }) : undefined, mediaFallback: icon ? undefined : null, title: title, subtitle: subtitle, description: description, meta: badges.map((badge) => ({ label: badge.label, tone: badge.tone })) })) : null, children ? _jsx("div", { className: "cm-mirror-pane__content", children: children }) : null] }));
7
583
  return (_jsxs("div", { className: cx("cm-mirror-pane", className), ...props, children: [tabs.length > 0 ? (_jsx("div", { className: "cm-mirror-pane__toolbar", children: tabs.map((tab) => (_jsxs("button", { type: "button", className: cx("cm-mirror-pane__toolbar-btn", activeTab === tab.id && `cm-mirror-pane__toolbar-btn--active-${tab.tone || "cyan"}`), onClick: () => onTabChange?.(tab.id), "aria-pressed": activeTab === tab.id, "aria-label": typeof tab.label === "string" ? tab.label : undefined, children: [tab.icon, _jsx("span", { className: "cm-mirror-pane__toolbar-label", children: tab.label })] }, tab.id))) })) : null, _jsx("div", { className: "cm-mirror-pane__body", children: content }), footer ? _jsx("div", { className: "cm-mirror-pane__footer", children: footer }) : null] }));
8
584
  }
9
- export function ComposeMirrorSection({ className, label, compact = true, children, ...props }) {
585
+ export function MirrorSection({ className, label, compact = true, children, ...props }) {
10
586
  return (_jsxs("section", { className: cx("cm-mirror-pane__section", compact && "cm-mirror-pane__section--compact", className), ...props, children: [label ? _jsx("span", { className: "cm-mirror-pane__section-label", children: label }) : null, children] }));
11
587
  }
12
- export function ComposeMirrorRow({ className, label, value, ...props }) {
588
+ export function MirrorRow({ className, label, value, ...props }) {
13
589
  return (_jsxs("div", { className: cx("cm-mirror-pane__kv-row", className), ...props, children: [_jsx("span", { className: "cm-mirror-pane__kv-label", children: label }), _jsx("span", { className: "cm-mirror-pane__kv-value", children: value })] }));
14
590
  }
15
- export function ComposeMirrorPricing({ className, unit, children, ...props }) {
591
+ export function MirrorPricing({ className, unit, children, ...props }) {
16
592
  return (_jsxs("div", { className: cx("cm-mirror-pane__pricing-compact", className), ...props, children: [_jsx("div", { className: "cm-mirror-pane__pricing-entries", children: children }), unit ? _jsx("span", { className: "cm-mirror-pane__pricing-unit", children: unit }) : null] }));
17
593
  }
18
594
  //# sourceMappingURL=index.js.map