@silvery/examples 0.17.4 → 0.17.5

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.
Files changed (62) hide show
  1. package/dist/_banner-A70_y2Vi.mjs +43 -0
  2. package/dist/{ansi-CCE2pVS0.mjs → ansi-0VXlUmNn.mjs} +7 -7
  3. package/dist/apng-B0gRaDVT.mjs +3 -0
  4. package/dist/{apng-HhhBjRGt.mjs → apng-BTRDTfDW.mjs} +2 -2
  5. package/dist/apps/aichat/index.mjs +69 -70
  6. package/dist/apps/app-todo.mjs +19 -20
  7. package/dist/apps/async-data.mjs +40 -41
  8. package/dist/apps/cli-wizard.mjs +51 -52
  9. package/dist/apps/clipboard.mjs +26 -27
  10. package/dist/apps/components.mjs +189 -190
  11. package/dist/apps/data-explorer.mjs +52 -53
  12. package/dist/apps/dev-tools.mjs +39 -40
  13. package/dist/apps/explorer.mjs +73 -74
  14. package/dist/apps/gallery.mjs +61 -62
  15. package/dist/apps/inline-bench.mjs +1 -1
  16. package/dist/apps/kanban.mjs +22 -23
  17. package/dist/apps/layout-ref.mjs +27 -28
  18. package/dist/apps/outline.mjs +35 -36
  19. package/dist/apps/paste-demo.mjs +33 -34
  20. package/dist/apps/scroll.mjs +11 -12
  21. package/dist/apps/search-filter.mjs +23 -24
  22. package/dist/apps/selection.mjs +30 -31
  23. package/dist/apps/spatial-focus-demo.mjs +32 -33
  24. package/dist/apps/task-list.mjs +25 -26
  25. package/dist/apps/terminal-caps-demo.mjs +30 -31
  26. package/dist/apps/terminal.mjs +157 -158
  27. package/dist/apps/text-selection-demo.mjs +62 -63
  28. package/dist/apps/textarea.mjs +21 -22
  29. package/dist/apps/theme.mjs +142 -143
  30. package/dist/apps/transform.mjs +25 -26
  31. package/dist/apps/virtual-10k.mjs +52 -53
  32. package/dist/{backends-Bahh9mKN.mjs → backends-Dj-11kZF.mjs} +1 -1
  33. package/dist/backends-U3QwStfO.mjs +3 -0
  34. package/dist/components/counter.mjs +6 -7
  35. package/dist/components/hello.mjs +5 -6
  36. package/dist/components/progress-bar.mjs +10 -11
  37. package/dist/components/select-list.mjs +8 -9
  38. package/dist/components/spinner.mjs +10 -11
  39. package/dist/components/text-input.mjs +8 -9
  40. package/dist/components/virtual-list.mjs +7 -8
  41. package/dist/{flexily-zero-adapter-UB-ra8fR.mjs → flexily-zero-adapter-ByVzLTFP.mjs} +1 -1
  42. package/dist/gif-B6NGH5gs.mjs +3 -0
  43. package/dist/{gif-BtnXuxLF.mjs → gif-CfkOF-iG.mjs} +2 -2
  44. package/dist/layout/dashboard.mjs +197 -198
  45. package/dist/layout/live-resize.mjs +44 -45
  46. package/dist/layout/overflow.mjs +16 -17
  47. package/dist/layout/text-layout.mjs +67 -68
  48. package/dist/{plugins-D1KtkT4a.mjs → plugins-CT0DdV_E.mjs} +12 -13
  49. package/dist/{src-BTEVGpd9.mjs → src-jO3Zuzjj.mjs} +3 -3
  50. package/dist/{yoga-adapter-BVtQ5OJR.mjs → yoga-adapter-BSQHuMV9.mjs} +1 -1
  51. package/package.json +4 -2
  52. package/dist/_banner-DLPxCqVy.mjs +0 -44
  53. package/dist/apng-mwUQbTTF.mjs +0 -3
  54. package/dist/backends-CCtCDQ94.mjs +0 -3
  55. package/dist/gif-BZaqPPVX.mjs +0 -3
  56. package/dist/jsx-runtime-dMs_8fNu.mjs +0 -241
  57. /package/dist/{UPNG-Cy7ViL8f.mjs → UPNG-ShUlaTDh.mjs} +0 -0
  58. /package/dist/{__vite-browser-external-2447137e-BML7CYau.mjs → __vite-browser-external-2447137e-Bopa5BFR.mjs} +0 -0
  59. /package/dist/{gifenc-CLRW41dk.mjs → gifenc-BI4ihP_T.mjs} +0 -0
  60. /package/dist/{node-NuJ94BWl.mjs → node-nsrAOjH4.mjs} +0 -0
  61. /package/dist/{resvg-js-C_8Wps1F.mjs → resvg-js-Cnk2o49d.mjs} +0 -0
  62. /package/dist/{src-CzfRafCQ.mjs → src-9ZhfQyzD.mjs} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { t as _usingCtx } from "../usingCtx-CsEf0xO3.mjs";
2
- import { t as require_jsx_runtime } from "../jsx-runtime-dMs_8fNu.mjs";
3
- import { t as ExampleBanner } from "../_banner-DLPxCqVy.mjs";
2
+ import { t as ExampleBanner } from "../_banner-A70_y2Vi.mjs";
4
3
  import { Suspense, use, useState } from "react";
5
4
  import { Box, ErrorBoundary, H1, Kbd, Muted, Text, createTerm, render, useApp, useInput } from "silvery";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region apps/async-data.tsx
7
7
  /**
8
8
  * Async Data Example
@@ -12,7 +12,6 @@ import { Box, ErrorBoundary, H1, Kbd, Muted, Text, createTerm, render, useApp, u
12
12
  * - Multiple independent suspending components
13
13
  * - Error handling with ErrorBoundary
14
14
  */
15
- var import_jsx_runtime = require_jsx_runtime();
16
15
  const meta = {
17
16
  name: "Async Data",
18
17
  description: "React Suspense with independent data sources and error boundaries",
@@ -36,19 +35,19 @@ function UserProfile() {
36
35
  email: "alice@example.com",
37
36
  role: "Developer"
38
37
  }));
39
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
38
+ return /* @__PURE__ */ jsxs(Box, {
40
39
  flexDirection: "column",
41
40
  borderStyle: "round",
42
41
  borderColor: "$success",
43
42
  padding: 1,
44
43
  children: [
45
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, {
44
+ /* @__PURE__ */ jsx(H1, {
46
45
  color: "$success",
47
46
  children: "User Profile"
48
47
  }),
49
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: ["Name: ", user.name] }),
50
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: ["Email: ", user.email] }),
51
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: ["Role: ", user.role] })
48
+ /* @__PURE__ */ jsxs(Text, { children: ["Name: ", user.name] }),
49
+ /* @__PURE__ */ jsxs(Text, { children: ["Email: ", user.email] }),
50
+ /* @__PURE__ */ jsxs(Text, { children: ["Role: ", user.role] })
52
51
  ]
53
52
  });
54
53
  }
@@ -58,16 +57,16 @@ function Statistics() {
58
57
  commits: 847,
59
58
  reviews: 156
60
59
  }));
61
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
60
+ return /* @__PURE__ */ jsxs(Box, {
62
61
  flexDirection: "column",
63
62
  borderStyle: "round",
64
63
  borderColor: "$primary",
65
64
  padding: 1,
66
65
  children: [
67
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, { children: "Statistics" }),
68
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: ["Projects: ", stats.projects] }),
69
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: ["Commits: ", stats.commits] }),
70
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: ["Reviews: ", stats.reviews] })
66
+ /* @__PURE__ */ jsx(H1, { children: "Statistics" }),
67
+ /* @__PURE__ */ jsxs(Text, { children: ["Projects: ", stats.projects] }),
68
+ /* @__PURE__ */ jsxs(Text, { children: ["Commits: ", stats.commits] }),
69
+ /* @__PURE__ */ jsxs(Text, { children: ["Reviews: ", stats.reviews] })
71
70
  ]
72
71
  });
73
72
  }
@@ -89,16 +88,16 @@ function RecentActivity() {
89
88
  time: "1d ago"
90
89
  }
91
90
  ]));
92
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
91
+ return /* @__PURE__ */ jsxs(Box, {
93
92
  flexDirection: "column",
94
93
  borderStyle: "round",
95
94
  borderColor: "$warning",
96
95
  padding: 1,
97
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, {
96
+ children: [/* @__PURE__ */ jsx(H1, {
98
97
  color: "$warning",
99
98
  children: "Recent Activity"
100
- }), activities.map((a) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
101
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
99
+ }), activities.map((a) => /* @__PURE__ */ jsxs(Text, { children: [
100
+ /* @__PURE__ */ jsx(Text, {
102
101
  dim: true,
103
102
  children: a.time
104
103
  }),
@@ -108,11 +107,11 @@ function RecentActivity() {
108
107
  });
109
108
  }
110
109
  function LoadingBox({ label }) {
111
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
110
+ return /* @__PURE__ */ jsx(Box, {
112
111
  borderStyle: "round",
113
112
  borderColor: "$border",
114
113
  padding: 1,
115
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
114
+ children: /* @__PURE__ */ jsxs(Text, {
116
115
  color: "$muted",
117
116
  children: [
118
117
  "Loading ",
@@ -135,50 +134,50 @@ function AsyncDataApp() {
135
134
  setRefreshKey((k) => k + 1);
136
135
  }
137
136
  });
138
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
137
+ return /* @__PURE__ */ jsxs(Box, {
139
138
  flexDirection: "column",
140
139
  padding: 1,
141
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
140
+ children: [/* @__PURE__ */ jsxs(Box, {
142
141
  flexGrow: 1,
143
142
  flexDirection: "row",
144
143
  gap: 1,
145
144
  children: [
146
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorBoundary, {
147
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
145
+ /* @__PURE__ */ jsx(ErrorBoundary, {
146
+ fallback: /* @__PURE__ */ jsx(Text, {
148
147
  color: "$error",
149
148
  children: "User error"
150
149
  }),
151
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Suspense, {
152
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingBox, { label: "user" }),
153
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserProfile, {})
150
+ children: /* @__PURE__ */ jsx(Suspense, {
151
+ fallback: /* @__PURE__ */ jsx(LoadingBox, { label: "user" }),
152
+ children: /* @__PURE__ */ jsx(UserProfile, {})
154
153
  })
155
154
  }),
156
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorBoundary, {
157
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
155
+ /* @__PURE__ */ jsx(ErrorBoundary, {
156
+ fallback: /* @__PURE__ */ jsx(Text, {
158
157
  color: "$error",
159
158
  children: "Stats error"
160
159
  }),
161
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Suspense, {
162
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingBox, { label: "stats" }),
163
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Statistics, {})
160
+ children: /* @__PURE__ */ jsx(Suspense, {
161
+ fallback: /* @__PURE__ */ jsx(LoadingBox, { label: "stats" }),
162
+ children: /* @__PURE__ */ jsx(Statistics, {})
164
163
  })
165
164
  }),
166
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorBoundary, {
167
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
165
+ /* @__PURE__ */ jsx(ErrorBoundary, {
166
+ fallback: /* @__PURE__ */ jsx(Text, {
168
167
  color: "$error",
169
168
  children: "Activity error"
170
169
  }),
171
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Suspense, {
172
- fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingBox, { label: "activity" }),
173
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RecentActivity, {})
170
+ children: /* @__PURE__ */ jsx(Suspense, {
171
+ fallback: /* @__PURE__ */ jsx(LoadingBox, { label: "activity" }),
172
+ children: /* @__PURE__ */ jsx(RecentActivity, {})
174
173
  })
175
174
  })
176
175
  ]
177
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Muted, { children: [
176
+ }), /* @__PURE__ */ jsxs(Muted, { children: [
178
177
  " ",
179
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "r" }),
178
+ /* @__PURE__ */ jsx(Kbd, { children: "r" }),
180
179
  " refresh ",
181
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "Esc/q" }),
180
+ /* @__PURE__ */ jsx(Kbd, { children: "Esc/q" }),
182
181
  " quit"
183
182
  ] })]
184
183
  }, refreshKey);
@@ -187,10 +186,10 @@ async function main() {
187
186
  try {
188
187
  var _usingCtx$1 = _usingCtx();
189
188
  const term = _usingCtx$1.u(createTerm());
190
- const { waitUntilExit } = await render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExampleBanner, {
189
+ const { waitUntilExit } = await render(/* @__PURE__ */ jsx(ExampleBanner, {
191
190
  meta,
192
191
  controls: "r refresh Esc/q quit",
193
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AsyncDataApp, {})
192
+ children: /* @__PURE__ */ jsx(AsyncDataApp, {})
194
193
  }), term);
195
194
  await waitUntilExit();
196
195
  } catch (_) {
@@ -1,8 +1,8 @@
1
1
  import { t as _usingCtx } from "../usingCtx-CsEf0xO3.mjs";
2
- import { t as require_jsx_runtime } from "../jsx-runtime-dMs_8fNu.mjs";
3
- import { t as ExampleBanner } from "../_banner-DLPxCqVy.mjs";
2
+ import { t as ExampleBanner } from "../_banner-A70_y2Vi.mjs";
4
3
  import { useCallback, useEffect, useState } from "react";
5
4
  import { Box, Code, H1, Kbd, Lead, Muted, ProgressBar, SelectList, Spinner, Text, TextInput, createTerm, render, useApp, useInput } from "silvery";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region apps/cli-wizard.tsx
7
7
  /**
8
8
  * CLI Wizard Example
@@ -21,7 +21,6 @@ import { Box, Code, H1, Kbd, Lead, Muted, ProgressBar, SelectList, Spinner, Text
21
21
  * Type - Enter project name (step 2)
22
22
  * q or Esc - Quit (when not typing)
23
23
  */
24
- var import_jsx_runtime = require_jsx_runtime();
25
24
  const meta = {
26
25
  name: "CLI Wizard",
27
26
  description: "Multi-step project scaffolding wizard with selection, input, and progress",
@@ -68,13 +67,13 @@ const INSTALL_STEPS = [
68
67
  ];
69
68
  /** Step indicator showing current position in the wizard */
70
69
  function StepIndicator({ current, total }) {
71
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
70
+ return /* @__PURE__ */ jsx(Box, {
72
71
  paddingX: 1,
73
72
  marginBottom: 1,
74
73
  children: Array.from({ length: total }, (_, i) => {
75
74
  const isDone = i < current;
76
75
  const isCurrent = i === current;
77
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
76
+ return /* @__PURE__ */ jsxs(Text, {
78
77
  color: isDone ? "$success" : isCurrent ? "$primary" : "$muted",
79
78
  bold: isCurrent,
80
79
  children: [isDone ? "●" : isCurrent ? "○" : "○", i < total - 1 ? " ─ " : ""]
@@ -84,55 +83,55 @@ function StepIndicator({ current, total }) {
84
83
  }
85
84
  /** Step 1: Framework selection */
86
85
  function FrameworkStep({ onSelect }) {
87
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
86
+ return /* @__PURE__ */ jsxs(Box, {
88
87
  flexDirection: "column",
89
88
  paddingX: 1,
90
89
  children: [
91
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
90
+ /* @__PURE__ */ jsx(Box, {
92
91
  marginBottom: 1,
93
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, { children: "? Select a framework:" })
92
+ children: /* @__PURE__ */ jsx(H1, { children: "? Select a framework:" })
94
93
  }),
95
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectList, {
94
+ /* @__PURE__ */ jsx(SelectList, {
96
95
  items: FRAMEWORKS,
97
96
  onSelect
98
97
  }),
99
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
98
+ /* @__PURE__ */ jsx(Box, {
100
99
  marginTop: 1,
101
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Lead, { children: "(Angular is coming soon)" })
100
+ children: /* @__PURE__ */ jsx(Lead, { children: "(Angular is coming soon)" })
102
101
  })
103
102
  ]
104
103
  });
105
104
  }
106
105
  /** Step 2: Project name input */
107
106
  function NameStep({ value, onChange, onSubmit, framework }) {
108
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
107
+ return /* @__PURE__ */ jsxs(Box, {
109
108
  flexDirection: "column",
110
109
  paddingX: 1,
111
110
  children: [
112
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
111
+ /* @__PURE__ */ jsxs(Box, {
113
112
  marginBottom: 1,
114
113
  children: [
115
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, { children: "? Project name" }),
116
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Muted, { children: [
114
+ /* @__PURE__ */ jsx(H1, { children: "? Project name" }),
115
+ /* @__PURE__ */ jsxs(Muted, { children: [
117
116
  " (",
118
117
  framework,
119
118
  ")"
120
119
  ] }),
121
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, { children: ":" })
120
+ /* @__PURE__ */ jsx(H1, { children: ":" })
122
121
  ]
123
122
  }),
124
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
123
+ /* @__PURE__ */ jsxs(Box, { children: [/* @__PURE__ */ jsx(Text, {
125
124
  color: "$muted",
126
125
  children: "❯ "
127
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextInput, {
126
+ }), /* @__PURE__ */ jsx(TextInput, {
128
127
  value,
129
128
  onChange,
130
129
  onSubmit,
131
130
  prompt: ""
132
131
  })] }),
133
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
132
+ /* @__PURE__ */ jsx(Box, {
134
133
  marginTop: 1,
135
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Press Enter to confirm" })
134
+ children: /* @__PURE__ */ jsx(Muted, { children: "Press Enter to confirm" })
136
135
  })
137
136
  ]
138
137
  });
@@ -140,59 +139,59 @@ function NameStep({ value, onChange, onSubmit, framework }) {
140
139
  /** Step 3: Installation progress */
141
140
  function InstallStep({ progress, stepIndex }) {
142
141
  const currentStep = INSTALL_STEPS[Math.min(stepIndex, INSTALL_STEPS.length - 1)];
143
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
142
+ return /* @__PURE__ */ jsxs(Box, {
144
143
  flexDirection: "column",
145
144
  paddingX: 1,
146
145
  children: [
147
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
146
+ /* @__PURE__ */ jsxs(Box, {
148
147
  marginBottom: 1,
149
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Spinner, { type: "dots" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
148
+ children: [/* @__PURE__ */ jsx(Spinner, { type: "dots" }), /* @__PURE__ */ jsxs(Text, {
150
149
  bold: true,
151
150
  color: "$warning",
152
151
  children: [" ", "Installing dependencies..."]
153
152
  })]
154
153
  }),
155
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
154
+ /* @__PURE__ */ jsx(Box, {
156
155
  marginBottom: 1,
157
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProgressBar, {
156
+ children: /* @__PURE__ */ jsx(ProgressBar, {
158
157
  value: progress,
159
158
  color: "$primary",
160
159
  label: ""
161
160
  })
162
161
  }),
163
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: currentStep })
162
+ /* @__PURE__ */ jsx(Muted, { children: currentStep })
164
163
  ]
165
164
  });
166
165
  }
167
166
  /** Step 4: Completion summary */
168
167
  function DoneStep({ framework, projectName }) {
169
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
168
+ return /* @__PURE__ */ jsxs(Box, {
170
169
  flexDirection: "column",
171
170
  paddingX: 1,
172
171
  children: [
173
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
172
+ /* @__PURE__ */ jsx(Box, {
174
173
  marginBottom: 1,
175
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(H1, {
174
+ children: /* @__PURE__ */ jsxs(H1, {
176
175
  color: "$success",
177
176
  children: ["✔", " Project created successfully!"]
178
177
  })
179
178
  }),
180
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
179
+ /* @__PURE__ */ jsxs(Box, {
181
180
  flexDirection: "column",
182
181
  borderStyle: "round",
183
182
  borderColor: "$success",
184
183
  paddingX: 2,
185
184
  paddingY: 1,
186
185
  children: [
187
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Framework: " }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
186
+ /* @__PURE__ */ jsxs(Box, { children: [/* @__PURE__ */ jsx(Muted, { children: "Framework: " }), /* @__PURE__ */ jsx(Text, {
188
187
  bold: true,
189
188
  children: framework
190
189
  })] }),
191
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Project: " }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
190
+ /* @__PURE__ */ jsxs(Box, { children: [/* @__PURE__ */ jsx(Muted, { children: "Project: " }), /* @__PURE__ */ jsx(Text, {
192
191
  bold: true,
193
192
  children: projectName
194
193
  })] }),
195
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Location: " }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
194
+ /* @__PURE__ */ jsxs(Box, { children: [/* @__PURE__ */ jsx(Muted, { children: "Location: " }), /* @__PURE__ */ jsxs(Text, {
196
195
  bold: true,
197
196
  children: [
198
197
  "./",
@@ -202,27 +201,27 @@ function DoneStep({ framework, projectName }) {
202
201
  })] })
203
202
  ]
204
203
  }),
205
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
204
+ /* @__PURE__ */ jsxs(Box, {
206
205
  flexDirection: "column",
207
206
  marginTop: 1,
208
207
  children: [
209
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Get started:" }),
210
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Code, { children: [
208
+ /* @__PURE__ */ jsx(Muted, { children: "Get started:" }),
209
+ /* @__PURE__ */ jsxs(Code, { children: [
211
210
  " ",
212
211
  "cd ",
213
212
  projectName
214
213
  ] }),
215
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Code, { children: [" ", "bun install"] }),
216
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Code, { children: [" ", "bun dev"] })
214
+ /* @__PURE__ */ jsxs(Code, { children: [" ", "bun install"] }),
215
+ /* @__PURE__ */ jsxs(Code, { children: [" ", "bun dev"] })
217
216
  ]
218
217
  }),
219
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
218
+ /* @__PURE__ */ jsx(Box, {
220
219
  marginTop: 1,
221
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Muted, { children: [
220
+ children: /* @__PURE__ */ jsxs(Muted, { children: [
222
221
  "Press ",
223
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "q" }),
222
+ /* @__PURE__ */ jsx(Kbd, { children: "q" }),
224
223
  " or ",
225
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "Esc" }),
224
+ /* @__PURE__ */ jsx(Kbd, { children: "Esc" }),
226
225
  " to exit"
227
226
  ] })
228
227
  })
@@ -285,33 +284,33 @@ function CliWizard() {
285
284
  });
286
285
  const installStepIndex = Math.floor(state.progress * (INSTALL_STEPS.length - 1));
287
286
  const stepNumber = state.step === "framework" ? 0 : state.step === "name" ? 1 : state.step === "installing" ? 2 : 3;
288
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
287
+ return /* @__PURE__ */ jsxs(Box, {
289
288
  flexDirection: "column",
290
289
  flexGrow: 1,
291
290
  children: [
292
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
291
+ /* @__PURE__ */ jsxs(Box, {
293
292
  borderStyle: "single",
294
293
  borderColor: "$primary",
295
294
  paddingX: 2,
296
295
  marginBottom: 1,
297
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, { children: "create-app" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: " v1.0.0" })]
296
+ children: [/* @__PURE__ */ jsx(H1, { children: "create-app" }), /* @__PURE__ */ jsx(Muted, { children: " v1.0.0" })]
298
297
  }),
299
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepIndicator, {
298
+ /* @__PURE__ */ jsx(StepIndicator, {
300
299
  current: stepNumber,
301
300
  total: 4
302
301
  }),
303
- state.step === "framework" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FrameworkStep, { onSelect: handleFrameworkSelect }),
304
- state.step === "name" && state.framework && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NameStep, {
302
+ state.step === "framework" && /* @__PURE__ */ jsx(FrameworkStep, { onSelect: handleFrameworkSelect }),
303
+ state.step === "name" && state.framework && /* @__PURE__ */ jsx(NameStep, {
305
304
  value: state.projectName,
306
305
  onChange: handleNameChange,
307
306
  onSubmit: handleNameSubmit,
308
307
  framework: state.framework
309
308
  }),
310
- state.step === "installing" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InstallStep, {
309
+ state.step === "installing" && /* @__PURE__ */ jsx(InstallStep, {
311
310
  progress: state.progress,
312
311
  stepIndex: installStepIndex
313
312
  }),
314
- state.step === "done" && state.framework && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DoneStep, {
313
+ state.step === "done" && state.framework && /* @__PURE__ */ jsx(DoneStep, {
315
314
  framework: state.framework,
316
315
  projectName: state.projectName
317
316
  })
@@ -322,10 +321,10 @@ async function main() {
322
321
  try {
323
322
  var _usingCtx$1 = _usingCtx();
324
323
  const term = _usingCtx$1.u(createTerm());
325
- const { waitUntilExit } = await render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExampleBanner, {
324
+ const { waitUntilExit } = await render(/* @__PURE__ */ jsx(ExampleBanner, {
326
325
  meta,
327
326
  controls: "j/k navigate Enter select q/Esc quit",
328
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CliWizard, {})
327
+ children: /* @__PURE__ */ jsx(CliWizard, {})
329
328
  }), term);
330
329
  await waitUntilExit();
331
330
  } catch (_) {
@@ -1,8 +1,8 @@
1
1
  import { t as _usingCtx } from "../usingCtx-CsEf0xO3.mjs";
2
- import { t as require_jsx_runtime } from "../jsx-runtime-dMs_8fNu.mjs";
3
- import { t as ExampleBanner } from "../_banner-DLPxCqVy.mjs";
2
+ import { t as ExampleBanner } from "../_banner-A70_y2Vi.mjs";
4
3
  import { useState } from "react";
5
4
  import { Box, H1, Kbd, Lead, Muted, Small, Text, copyToClipboard, createTerm, parseClipboardResponse, render, requestClipboard, useApp, useInput, useStdout } from "silvery";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region apps/clipboard.tsx
7
7
  /**
8
8
  * OSC 52 Clipboard Demo
@@ -19,7 +19,6 @@ import { Box, H1, Kbd, Lead, Muted, Small, Text, copyToClipboard, createTerm, pa
19
19
  *
20
20
  * Run: bun vendor/silvery/examples/apps/clipboard.tsx
21
21
  */
22
- var import_jsx_runtime = require_jsx_runtime();
23
22
  const meta = {
24
23
  name: "Clipboard (OSC 52)",
25
24
  description: "Copy/paste via OSC 52 terminal protocol",
@@ -69,14 +68,14 @@ const allItems = [
69
68
  value
70
69
  })));
71
70
  function ListItem({ item, isSelected }) {
72
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
71
+ return /* @__PURE__ */ jsxs(Box, {
73
72
  paddingX: 1,
74
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
73
+ children: [/* @__PURE__ */ jsxs(Text, {
75
74
  color: isSelected ? "$bg" : void 0,
76
75
  backgroundColor: isSelected ? "$primary" : void 0,
77
76
  bold: isSelected,
78
77
  children: [isSelected ? " > " : " ", item.value]
79
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Small, { children: [
78
+ }), /* @__PURE__ */ jsxs(Small, { children: [
80
79
  " (",
81
80
  item.category,
82
81
  ")"
@@ -84,23 +83,23 @@ function ListItem({ item, isSelected }) {
84
83
  });
85
84
  }
86
85
  function StatusBar({ lastCopied, lastPasted }) {
87
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
86
+ return /* @__PURE__ */ jsxs(Box, {
88
87
  flexDirection: "column",
89
88
  borderStyle: "round",
90
89
  borderColor: "$border",
91
90
  paddingX: 1,
92
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
91
+ children: [/* @__PURE__ */ jsxs(Box, {
93
92
  gap: 1,
94
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Copied:" }), lastCopied ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
93
+ children: [/* @__PURE__ */ jsx(Muted, { children: "Copied:" }), lastCopied ? /* @__PURE__ */ jsx(Text, {
95
94
  color: "$success",
96
95
  children: lastCopied
97
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Lead, { children: "nothing yet" })]
98
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
96
+ }) : /* @__PURE__ */ jsx(Lead, { children: "nothing yet" })]
97
+ }), /* @__PURE__ */ jsxs(Box, {
99
98
  gap: 1,
100
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Muted, { children: "Pasted:" }), lastPasted ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
99
+ children: [/* @__PURE__ */ jsx(Muted, { children: "Pasted:" }), lastPasted ? /* @__PURE__ */ jsx(Text, {
101
100
  color: "$warning",
102
101
  children: lastPasted
103
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Lead, { children: "nothing yet" })]
102
+ }) : /* @__PURE__ */ jsx(Lead, { children: "nothing yet" })]
104
103
  })]
105
104
  });
106
105
  }
@@ -129,49 +128,49 @@ function ClipboardDemo() {
129
128
  const parsed = parseClipboardResponse(input);
130
129
  if (parsed) setLastPasted(parsed);
131
130
  });
132
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
131
+ return /* @__PURE__ */ jsxs(Box, {
133
132
  flexDirection: "column",
134
133
  padding: 1,
135
134
  gap: 1,
136
135
  children: [
137
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
136
+ /* @__PURE__ */ jsxs(Box, {
138
137
  flexDirection: "column",
139
138
  borderStyle: "round",
140
139
  borderColor: "$primary",
141
140
  paddingX: 1,
142
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box, {
141
+ children: [/* @__PURE__ */ jsxs(Box, {
143
142
  marginBottom: 1,
144
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(H1, { children: "Items" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Small, { children: [
143
+ children: [/* @__PURE__ */ jsx(H1, { children: "Items" }), /* @__PURE__ */ jsxs(Small, { children: [
145
144
  " ",
146
145
  "— ",
147
146
  selectedIndex + 1,
148
147
  "/",
149
148
  allItems.length
150
149
  ] })]
151
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box, {
150
+ }), /* @__PURE__ */ jsx(Box, {
152
151
  flexDirection: "column",
153
152
  overflow: "scroll",
154
153
  scrollTo: selectedIndex,
155
154
  height: 10,
156
- children: allItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItem, {
155
+ children: allItems.map((item, index) => /* @__PURE__ */ jsx(ListItem, {
157
156
  item,
158
157
  isSelected: index === selectedIndex
159
158
  }, `${item.category}-${item.value}`))
160
159
  })]
161
160
  }),
162
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBar, {
161
+ /* @__PURE__ */ jsx(StatusBar, {
163
162
  lastCopied,
164
163
  lastPasted
165
164
  }),
166
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Muted, { children: [
165
+ /* @__PURE__ */ jsxs(Muted, { children: [
167
166
  " ",
168
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "j/k" }),
167
+ /* @__PURE__ */ jsx(Kbd, { children: "j/k" }),
169
168
  " navigate ",
170
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "c" }),
169
+ /* @__PURE__ */ jsx(Kbd, { children: "c" }),
171
170
  " copy ",
172
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "v" }),
171
+ /* @__PURE__ */ jsx(Kbd, { children: "v" }),
173
172
  " paste ",
174
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Kbd, { children: "Esc/q" }),
173
+ /* @__PURE__ */ jsx(Kbd, { children: "Esc/q" }),
175
174
  " quit"
176
175
  ] })
177
176
  ]
@@ -181,10 +180,10 @@ async function main() {
181
180
  try {
182
181
  var _usingCtx$1 = _usingCtx();
183
182
  const term = _usingCtx$1.u(createTerm());
184
- const { waitUntilExit } = await render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExampleBanner, {
183
+ const { waitUntilExit } = await render(/* @__PURE__ */ jsx(ExampleBanner, {
185
184
  meta,
186
185
  controls: "j/k navigate c copy v paste Esc/q quit",
187
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClipboardDemo, {})
186
+ children: /* @__PURE__ */ jsx(ClipboardDemo, {})
188
187
  }), term);
189
188
  await waitUntilExit();
190
189
  } catch (_) {