@typespec/playground 0.14.0-dev.2 → 0.14.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,12 @@
1
- import { FunctionComponent, ReactNode } from 'react';
1
+ import { FunctionComponent } from 'react';
2
+ import { CommandBarItem } from '../react/responsive-command-bar/index.js';
2
3
  import { BrowserHost, PlaygroundSample } from '../types.js';
3
4
  export interface EditorCommandBarProps {
4
- documentationUrl?: string;
5
5
  saveCode: () => Promise<void> | void;
6
6
  formatCode: () => Promise<void> | void;
7
7
  fileBug?: () => Promise<void> | void;
8
- commandBarButtons?: ReactNode;
8
+ /** Additional items provided by the consumer. */
9
+ commandBarItems?: readonly CommandBarItem[];
9
10
  host: BrowserHost;
10
11
  selectedEmitter: string;
11
12
  onSelectedEmitterChange: (emitter: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"editor-command-bar.d.ts","sourceRoot":"","sources":["../../../src/editor-command-bar/editor-command-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AACD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CAmErE,CAAC"}
1
+ {"version":3,"file":"editor-command-bar.d.ts","sourceRoot":"","sources":["../../../src/editor-command-bar/editor-command-bar.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAI/E,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,iDAAiD;IACjD,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CAwHrE,CAAC"}
@@ -1,3 +1,4 @@
1
+ export type { CommandBarItem } from '../react/responsive-command-bar/index.js';
1
2
  export { usePlaygroundContext } from './context/index.js';
2
3
  export { DiagnosticList } from './diagnostic-list/diagnostic-list.js';
3
4
  export type { DiagnosticListProps } from './diagnostic-list/diagnostic-list.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sCAAsC,EACtC,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sCAAsC,EACtC,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { FunctionComponent, ReactNode } from 'react';
2
2
  import { BrowserHost, PlaygroundSample } from '../types.js';
3
+ import { CommandBarItem } from './responsive-command-bar/index.js';
3
4
  import { FileOutputViewer, ProgramViewer } from './types.js';
4
5
  import { PlaygroundState } from './use-playground-state.js';
5
6
  export type { PlaygroundState };
@@ -23,10 +24,8 @@ export interface PlaygroundProps {
23
24
  */
24
25
  defaultEmitter?: string;
25
26
  onFileBug?: () => void;
26
- /** Additional buttons to show up in the command bar */
27
- commandBarButtons?: ReactNode;
28
- /** Playground links */
29
- links?: PlaygroundLinks;
27
+ /** Additional items to show in the command bar. */
28
+ commandBarItems?: CommandBarItem[];
30
29
  /** Custom viewers to view the typespec program */
31
30
  viewers?: ProgramViewer[];
32
31
  /** Custom file viewers that enabled for certain emitters. Key of the map is emitter name */
@@ -47,10 +46,6 @@ export interface PlaygroundSaveData extends PlaygroundState {
47
46
  /** Emitter name. */
48
47
  emitter: string;
49
48
  }
50
- export interface PlaygroundLinks {
51
- /** Link to documentation */
52
- documentationUrl?: string;
53
- }
54
49
  /**
55
50
  * Playground component for TypeSpec with consolidated state management.
56
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"AAGA,OAAO,sCAAsC,CAAC;AAG9C,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AASjE,OAAO,KAAK,EAAoB,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGrF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE3C,oCAAoC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,eAAe,CAAC;IACzC,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAE3D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAE9B,uBAAuB;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,kDAAkD;IAClD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEpD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE7C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CA0PzD,CAAC"}
1
+ {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"AAGA,OAAO,sCAAsC,CAAC;AAG9C,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AASjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAoB,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpF,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIrF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE3C,oCAAoC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,eAAe,CAAC;IACzC,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAE3D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,mDAAmD;IACnD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,kDAAkD;IAClD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEpD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE7C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAmRzD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ResponsiveCommandBar } from './responsive-command-bar.js';
2
+ export type { CommandBarItem, ResponsiveCommandBarProps } from './responsive-command-bar.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/responsive-command-bar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { FunctionComponent, ReactNode } from 'react';
2
+ /** Defines a single item in a responsive command bar. */
3
+ export interface CommandBarItem {
4
+ /** Unique identifier for the item. */
5
+ readonly id: string;
6
+ /** Display label used for tooltip (desktop) and menu text (mobile). */
7
+ readonly label: string;
8
+ /** Icon element. */
9
+ readonly icon?: ReactNode;
10
+ /** Click handler for simple items. */
11
+ readonly onClick?: () => void;
12
+ /** If true, always visible as an icon button. If false (default), goes to overflow menu on mobile. */
13
+ readonly pinned?: boolean;
14
+ /** Sub-items rendered as a dropdown (desktop) or nested submenu (mobile). */
15
+ readonly children?: readonly CommandBarItem[];
16
+ /** Additional content rendered alongside the command bar (e.g., dialogs triggered by children). */
17
+ readonly content?: ReactNode;
18
+ /** Custom toolbar element for desktop rendering. Overrides default and children-based rendering. */
19
+ readonly toolbarItem?: ReactNode;
20
+ /** Custom menu element for mobile overflow menu. Overrides default and children-based rendering. */
21
+ readonly menuItem?: ReactNode;
22
+ /** Alignment group on the desktop toolbar. Defaults to "left". */
23
+ readonly align?: "left" | "right";
24
+ }
25
+ export interface ResponsiveCommandBarProps {
26
+ /** The items to render in the command bar. */
27
+ readonly items: readonly CommandBarItem[];
28
+ /** Whether to render in mobile (compact) mode. */
29
+ readonly isMobile: boolean;
30
+ }
31
+ /**
32
+ * A generic responsive command bar that renders items as a toolbar on desktop
33
+ * and collapses non-pinned items into a hamburger overflow menu on mobile.
34
+ */
35
+ export declare const ResponsiveCommandBar: FunctionComponent<ResponsiveCommandBarProps>;
36
+ //# sourceMappingURL=responsive-command-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive-command-bar.d.ts","sourceRoot":"","sources":["../../../../src/react/responsive-command-bar/responsive-command-bar.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAY,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzE,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,sGAAsG;IACtG,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,mGAAmG;IACnG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,oGAAoG;IACpG,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,yBAAyB,CA8D7E,CAAC"}
@@ -1,2 +1,2 @@
1
- export { SamplesDrawerTrigger, type SamplesDrawerProps } from './samples-drawer-trigger.js';
1
+ export { SamplesDrawerOverlay, SamplesDrawerTrigger, type SamplesDrawerOverlayProps, type SamplesDrawerProps, } from './samples-drawer-trigger.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/samples-drawer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/samples-drawer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC"}
@@ -4,5 +4,12 @@ export interface SamplesDrawerProps {
4
4
  samples: Record<string, PlaygroundSample>;
5
5
  onSelectedSampleNameChange: (sampleName: string) => void;
6
6
  }
7
+ export interface SamplesDrawerOverlayProps extends SamplesDrawerProps {
8
+ open: boolean;
9
+ onOpenChange: (open: boolean) => void;
10
+ }
11
+ /** The overlay drawer showing the sample gallery. Controlled via open/onOpenChange. */
12
+ export declare const SamplesDrawerOverlay: FunctionComponent<SamplesDrawerOverlayProps>;
13
+ /** Toolbar button trigger + overlay drawer for samples. */
7
14
  export declare const SamplesDrawerTrigger: FunctionComponent<SamplesDrawerProps>;
8
15
  //# sourceMappingURL=samples-drawer-trigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"samples-drawer-trigger.d.ts","sourceRoot":"","sources":["../../../../src/react/samples-drawer/samples-drawer-trigger.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,kBAAkB,CAwDtE,CAAC"}
1
+ {"version":3,"file":"samples-drawer-trigger.d.ts","sourceRoot":"","sources":["../../../../src/react/samples-drawer/samples-drawer-trigger.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,yBAAyB,CA4C7E,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,kBAAkB,CA0BtE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Hook that detects whether the viewport is at or below the mobile breakpoint.
3
+ * Uses `matchMedia` with a listener for responsive changes.
4
+ */
5
+ export declare function useIsMobile(): boolean;
6
+ //# sourceMappingURL=use-mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../../src/react/use-mobile.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAkBrC"}
@@ -0,0 +1,10 @@
1
+ import { FunctionComponent, ReactNode } from 'react';
2
+ export type ViewMode = "editor" | "output" | "both";
3
+ export interface ViewToggleProps {
4
+ viewMode: ViewMode;
5
+ onViewModeChange: (mode: ViewMode) => void;
6
+ /** Additional toolbar actions rendered on the right side of the bar. */
7
+ actions?: ReactNode;
8
+ }
9
+ export declare const ViewToggle: FunctionComponent<ViewToggleProps>;
10
+ //# sourceMappingURL=view-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-toggle.d.ts","sourceRoot":"","sources":["../../../src/react/view-toggle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5E,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAiCzD,CAAC"}
@@ -1,4 +1,3 @@
1
- import { PlaygroundLinks } from '../react/playground.js';
2
1
  import { PlaygroundSampleConfig } from '../tooling/types.js';
3
2
  import { PlaygroundSample } from '../types.js';
4
3
  export interface PlaygroundUserConfig extends Omit<PlaygroundConfig, "samples"> {
@@ -12,6 +11,5 @@ export interface PlaygroundConfig {
12
11
  readonly defaultEmitter: string;
13
12
  readonly libraries: readonly string[];
14
13
  readonly samples: Record<string, PlaygroundSample>;
15
- readonly links?: PlaygroundLinks;
16
14
  }
17
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vite/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC;IAC7E;;OAEG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vite/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC;IAC7E;;OAEG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACpD"}
package/dist/style.css CHANGED
@@ -175,6 +175,13 @@
175
175
  ._tree-row_16t0l_4 ._column_16t0l_44:last-child {
176
176
  margin-right: 5px;
177
177
  }
178
+ ._bar_1gurd_1 {
179
+ border-bottom: 1px solid var(--colorNeutralStroke1);
180
+ }
181
+
182
+ ._divider_1gurd_5 {
183
+ flex: 1;
184
+ }
178
185
  ._samples-grid_1dkte_1 {
179
186
  display: grid;
180
187
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
@@ -251,17 +258,6 @@
251
258
  margin: 0;
252
259
  line-height: 1.4;
253
260
  }
254
- ._bar_15c2c_1 {
255
- border-bottom: 1px solid var(--colorNeutralStroke1);
256
- }
257
-
258
- ._divider_15c2c_5 {
259
- flex: 1;
260
- }
261
-
262
- ._spacer_15c2c_9 {
263
- width: 10px;
264
- }
265
261
  ._settings_1yvpj_1 {
266
262
  display: flex;
267
263
  flex-direction: column;
@@ -464,7 +460,7 @@
464
460
  ._viewer-error_eeqi3_41 {
465
461
  padding: 20px;
466
462
  }
467
- ._layout_l03ni_1 {
463
+ ._layout_63onh_1 {
468
464
  display: flex;
469
465
  flex-direction: column;
470
466
  width: 100%;
@@ -472,9 +468,16 @@
472
468
  overflow: hidden;
473
469
  }
474
470
 
475
- ._edit-pane_l03ni_9 {
471
+ ._edit-pane_63onh_9 {
472
+ display: flex;
473
+ flex-direction: column;
474
+ }
475
+
476
+ ._single-pane_63onh_14 {
476
477
  display: flex;
477
478
  flex-direction: column;
479
+ height: 100%;
480
+ width: 100%;
478
481
  }
479
482
  ._header_1qhql_1 {
480
483
  padding: 5px;
@@ -535,6 +538,23 @@
535
538
  ._internal-compiler-error_kxgwp_16 {
536
539
  padding: 10px;
537
540
  }
541
+ ._view-toggle-bar_1yl8k_1 {
542
+ display: flex;
543
+ align-items: center;
544
+ padding: 0 4px;
545
+ border-bottom: 1px solid var(--colorNeutralStroke1);
546
+ background-color: var(--colorNeutralBackground1);
547
+ flex-shrink: 0;
548
+ }
549
+
550
+ ._view-toggle-tabs_1yl8k_10 {
551
+ min-height: auto;
552
+ }
553
+
554
+ ._view-toggle-actions_1yl8k_14 {
555
+ margin-left: auto;
556
+ overflow: hidden;
557
+ }
538
558
  ._swagger-ui-container_1c81n_1 {
539
559
  width: 100%;
540
560
  height: 100%;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.14.0-dev.2",
3
+ "version": "0.14.0-dev.3",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://typespec.io",
@@ -85,8 +85,11 @@
85
85
  "devDependencies": {
86
86
  "@babel/core": "^7.29.0",
87
87
  "@playwright/test": "^1.58.2",
88
- "@storybook/cli": "^10.2.19",
89
- "@storybook/react-vite": "^10.2.19",
88
+ "@storybook/cli": "^10.1.8",
89
+ "@storybook/react-vite": "^10.1.8",
90
+ "@testing-library/dom": "^10.4.1",
91
+ "@testing-library/jest-dom": "^6.9.1",
92
+ "@testing-library/react": "^16.3.2",
90
93
  "@types/debounce": "~1.2.4",
91
94
  "@types/node": "~25.5.0",
92
95
  "@types/react": "~19.2.14",
@@ -103,6 +106,7 @@
103
106
  "vite": "^7.2.7",
104
107
  "vite-plugin-checker": "^0.12.0",
105
108
  "vite-plugin-dts": "4.5.4",
109
+ "vitest": "^4.1.0",
106
110
  "@typespec/react-components": "^0.57.0"
107
111
  },
108
112
  "scripts": {
@@ -113,8 +117,8 @@
113
117
  "build:storybook": "sb build",
114
118
  "preview": "pnpm build && vite preview",
115
119
  "start": "vite",
116
- "test": "echo 'no tests'",
117
- "test:ci": "echo 'no tests'",
120
+ "test": "vitest run",
121
+ "test:ci": "vitest run --coverage --reporter=junit --reporter=default",
118
122
  "lint": "eslint . --max-warnings=0",
119
123
  "lint:fix": "eslint . --fix"
120
124
  }