@stealthscale/component-screen 0.2.1 → 0.2.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.
Files changed (44) hide show
  1. package/dist/cyclonedx/bom.json +1 -1
  2. package/dist/index.d.ts +3 -3
  3. package/dist/index.js +1 -8216
  4. package/dist/pages/action-bar/action-bar.js +471 -0
  5. package/dist/pages/action-bar/action-bar.props.js +3 -0
  6. package/dist/pages/app-shell/app-shell.js +4899 -0
  7. package/dist/pages/app-shell/app-shell.props.js +3 -0
  8. package/dist/pages/floating-panel/floating-panel.js +995 -0
  9. package/dist/pages/floating-panel/floating-panel.props.js +3 -0
  10. package/dist/pages/locale-switcher/locale-switcher.js +180 -0
  11. package/dist/pages/locale-switcher/locale-switcher.props.js +3 -0
  12. package/dist/pages/page/page.js +2308 -0
  13. package/dist/pages/page/page.props.js +3 -0
  14. package/dist/pages/pages.json +123 -0
  15. package/dist/pages/section/section.js +1241 -0
  16. package/dist/pages/section/section.props.js +3 -0
  17. package/dist/pages/sidebar/sidebar.js +1743 -0
  18. package/dist/pages/sidebar/sidebar.props.js +3 -0
  19. package/dist/pages/splitter/splitter.js +1563 -0
  20. package/dist/pages/splitter/splitter.props.js +3 -0
  21. package/dist/pages/switcher/switcher.js +900 -0
  22. package/dist/pages/switcher/switcher.props.js +3 -0
  23. package/dist/pages/theme-switcher/theme-switcher.js +180 -0
  24. package/dist/pages/theme-switcher/theme-switcher.props.js +3 -0
  25. package/dist/pages/toolbar/toolbar.js +1045 -0
  26. package/dist/pages/toolbar/toolbar.props.js +3 -0
  27. package/dist/{recipe-sZAQY6Kq.js → recipes-Cmy1leBm.js} +312 -30
  28. package/dist/shared-DxlFabHA.js +9547 -0
  29. package/dist/shell.js +1 -165
  30. package/dist/theme.js +3 -4
  31. package/locales/en/specimen/action-bar.json +46 -0
  32. package/locales/en/specimen/app-shell.json +288 -0
  33. package/locales/en/specimen/floating-panel.json +70 -0
  34. package/locales/en/specimen/locale-switcher.json +15 -0
  35. package/locales/en/specimen/page.json +198 -0
  36. package/locales/en/specimen/section.json +91 -0
  37. package/locales/en/specimen/sidebar.json +87 -0
  38. package/locales/en/specimen/splitter.json +93 -0
  39. package/locales/en/specimen/switcher.json +61 -0
  40. package/locales/en/specimen/theme-switcher.json +15 -0
  41. package/locales/en/specimen/toolbar.json +80 -0
  42. package/package.json +25 -24
  43. package/dist/recipe-DRMsitrw.js +0 -283
  44. package/dist/root-qEh4u7y5.js +0 -1182
@@ -0,0 +1,4899 @@
1
+ import { t as __exportAll } from "../../rolldown-runtime-D7D4PA-g.js";
2
+ import { A as Nav, At as Trigger, Bt as Body, F as Footer$1, Ft as Pane, I as Empty, It as Navbar, L as Content, Lt as Main, Mt as Section, Nt as Root$2, O as Search, P as Header$1, Pt as Rail, Rt as Header, Vt as Aside, a as Start, c as Root, d as End, f as Center, j as NavLabel, jt as Status$1, k as Root$1, l as Link$1, p as Action, qt as Item, s as Search$1, zt as Footer } from "../../shared-DxlFabHA.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { Button, IconButton } from "@stealthscale/component-actions";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useId, useState } from "react";
7
+ import { Link, NavList, Toc } from "@stealthscale/component-navigation";
8
+ import { Status, Tag } from "@stealthscale/component-data";
9
+ import { Field, InputGroup } from "@stealthscale/component-forms";
10
+ import { Grid, Stack } from "@stealthscale/component-layout";
11
+ import { Screen, specimen, useWords } from "@stealthscale/specimen";
12
+ import { ArchiveIcon, AtSignIcon, BellIcon, BookOpenIcon, BotIcon, BriefcaseIcon, Building2Icon, CalendarIcon, ChartColumnIcon, CheckIcon, CompassIcon, CreditCardIcon, EllipsisIcon, FileTextIcon, FlaskConicalIcon, FolderIcon, FolderKanbanIcon, ForwardIcon, FrameIcon, GitBranchIcon, HashIcon, ImageIcon, InboxIcon, InfoIcon, LayersIcon, LayoutDashboardIcon, LibraryIcon, ListMusicIcon, LockIcon, MailIcon, MenuIcon, MousePointerClickIcon, PanelBottomIcon, PanelRightIcon, PanelTopIcon, PauseIcon, PlayIcon, RadioIcon, ReceiptIcon, ReplyIcon, SearchIcon, SendHorizontalIcon, SendIcon, SettingsIcon, ShieldAlertIcon, ShieldCheckIcon, ShieldIcon, ShoppingBagIcon, SkipBackIcon, SkipForwardIcon, StarIcon, UserIcon, WrenchIcon } from "lucide-react";
13
+ import { Blockquote, Code, Heading, Span, Text } from "@stealthscale/component-typography";
14
+ import { Alert, EmptyState, Progress } from "@stealthscale/component-feedback";
15
+ import { Card } from "@stealthscale/component-surfaces";
16
+ import { Avatar } from "@stealthscale/component-media";
17
+ import { DataList, Listbox, Table, useListCollection } from "@stealthscale/component-collections";
18
+ //#region src/app-shell/examples/billing.example.tsx
19
+ var billing_example_exports = /* @__PURE__ */ __exportAll({
20
+ Billing: () => Billing,
21
+ source: () => source$13
22
+ });
23
+ const PAGES$1 = [
24
+ [
25
+ "overview",
26
+ LayoutDashboardIcon,
27
+ void 0
28
+ ],
29
+ [
30
+ "invoices",
31
+ ReceiptIcon,
32
+ "page"
33
+ ],
34
+ [
35
+ "usage",
36
+ ChartColumnIcon,
37
+ void 0
38
+ ],
39
+ [
40
+ "plan",
41
+ CreditCardIcon,
42
+ void 0
43
+ ]
44
+ ];
45
+ function Billing(props) {
46
+ const $ = c(63);
47
+ const { t } = useWords("app-shell");
48
+ let t0;
49
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
50
+ t0 = /* @__PURE__ */ jsx(Alert.Indicator, { children: /* @__PURE__ */ jsx(InfoIcon, {}) });
51
+ $[0] = t0;
52
+ } else t0 = $[0];
53
+ let t1;
54
+ if ($[1] !== t) {
55
+ t1 = t("trialEnds");
56
+ $[1] = t;
57
+ $[2] = t1;
58
+ } else t1 = $[2];
59
+ let t2;
60
+ if ($[3] !== t1) {
61
+ t2 = /* @__PURE__ */ jsx(Alert.Content, { children: /* @__PURE__ */ jsx(Alert.Description, { children: t1 }) });
62
+ $[3] = t1;
63
+ $[4] = t2;
64
+ } else t2 = $[4];
65
+ let t3;
66
+ if ($[5] !== t) {
67
+ t3 = t("choosePlan");
68
+ $[5] = t;
69
+ $[6] = t3;
70
+ } else t3 = $[6];
71
+ let t4;
72
+ if ($[7] !== t3) {
73
+ t4 = /* @__PURE__ */ jsx(Alert.Aside, { children: /* @__PURE__ */ jsx(Button, {
74
+ size: "xs",
75
+ variant: "outline",
76
+ children: t3
77
+ }) });
78
+ $[7] = t3;
79
+ $[8] = t4;
80
+ } else t4 = $[8];
81
+ let t5;
82
+ if ($[9] !== t2 || $[10] !== t4) {
83
+ t5 = /* @__PURE__ */ jsx(Header, {
84
+ as: "div",
85
+ children: /* @__PURE__ */ jsxs(Alert.Root, {
86
+ layout: "inline",
87
+ size: "sm",
88
+ children: [
89
+ t0,
90
+ t2,
91
+ t4
92
+ ]
93
+ })
94
+ });
95
+ $[9] = t2;
96
+ $[10] = t4;
97
+ $[11] = t5;
98
+ } else t5 = $[11];
99
+ let t6;
100
+ if ($[12] !== t) {
101
+ t6 = t("billingBrand");
102
+ $[12] = t;
103
+ $[13] = t6;
104
+ } else t6 = $[13];
105
+ let t7;
106
+ if ($[14] !== t) {
107
+ t7 = t("navigation");
108
+ $[14] = t;
109
+ $[15] = t7;
110
+ } else t7 = $[15];
111
+ let t8;
112
+ if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
113
+ t8 = /* @__PURE__ */ jsx(MenuIcon, {});
114
+ $[16] = t8;
115
+ } else t8 = $[16];
116
+ let t9;
117
+ if ($[17] !== t7) {
118
+ t9 = /* @__PURE__ */ jsx(Item, {
119
+ "aria-label": t7,
120
+ as: Trigger,
121
+ shape: "square",
122
+ children: t8
123
+ });
124
+ $[17] = t7;
125
+ $[18] = t9;
126
+ } else t9 = $[18];
127
+ let t10;
128
+ if ($[19] !== t) {
129
+ t10 = t("billingBrand");
130
+ $[19] = t;
131
+ $[20] = t10;
132
+ } else t10 = $[20];
133
+ let t11;
134
+ if ($[21] !== t10) {
135
+ t11 = /* @__PURE__ */ jsx(Text, {
136
+ as: "span",
137
+ size: "sm",
138
+ weight: "semibold",
139
+ children: t10
140
+ });
141
+ $[21] = t10;
142
+ $[22] = t11;
143
+ } else t11 = $[22];
144
+ let t12;
145
+ if ($[23] !== t11 || $[24] !== t9) {
146
+ t12 = /* @__PURE__ */ jsxs(Start, { children: [t9, t11] });
147
+ $[23] = t11;
148
+ $[24] = t9;
149
+ $[25] = t12;
150
+ } else t12 = $[25];
151
+ let t13;
152
+ if ($[26] !== t) {
153
+ t13 = t("addCard");
154
+ $[26] = t;
155
+ $[27] = t13;
156
+ } else t13 = $[27];
157
+ let t14;
158
+ if ($[28] !== t13) {
159
+ t14 = /* @__PURE__ */ jsx(End, { children: /* @__PURE__ */ jsx(Action, {
160
+ primary: true,
161
+ children: t13
162
+ }) });
163
+ $[28] = t13;
164
+ $[29] = t14;
165
+ } else t14 = $[29];
166
+ let t15;
167
+ if ($[30] !== t12 || $[31] !== t14 || $[32] !== t6) {
168
+ t15 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
169
+ "aria-label": t6,
170
+ size: "sm",
171
+ children: [t12, t14]
172
+ }) });
173
+ $[30] = t12;
174
+ $[31] = t14;
175
+ $[32] = t6;
176
+ $[33] = t15;
177
+ } else t15 = $[33];
178
+ let t16;
179
+ if ($[34] !== t) {
180
+ t16 = t("billingBrand");
181
+ $[34] = t;
182
+ $[35] = t16;
183
+ } else t16 = $[35];
184
+ let t17;
185
+ if ($[36] !== t) {
186
+ t17 = PAGES$1.map((t18) => {
187
+ const [page, Glyph, current] = t18;
188
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
189
+ "aria-current": current,
190
+ href: `#${page}`,
191
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(page) })]
192
+ }) }, page);
193
+ });
194
+ $[36] = t;
195
+ $[37] = t17;
196
+ } else t17 = $[37];
197
+ let t18;
198
+ if ($[38] !== t17) {
199
+ t18 = /* @__PURE__ */ jsx(NavList.Root, { children: t17 });
200
+ $[38] = t17;
201
+ $[39] = t18;
202
+ } else t18 = $[39];
203
+ let t19;
204
+ if ($[40] !== t16 || $[41] !== t18) {
205
+ t19 = /* @__PURE__ */ jsx(Navbar, {
206
+ foldsBelow: "sm",
207
+ width: "11rem",
208
+ children: /* @__PURE__ */ jsx(Root$1, {
209
+ variant: "subtle",
210
+ children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(Nav, {
211
+ "aria-label": t16,
212
+ children: t18
213
+ }) })
214
+ })
215
+ });
216
+ $[40] = t16;
217
+ $[41] = t18;
218
+ $[42] = t19;
219
+ } else t19 = $[42];
220
+ let t20;
221
+ if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
222
+ t20 = /* @__PURE__ */ jsx(EmptyState.Indicator, { children: /* @__PURE__ */ jsx(ReceiptIcon, {}) });
223
+ $[43] = t20;
224
+ } else t20 = $[43];
225
+ let t21;
226
+ if ($[44] !== t) {
227
+ t21 = t("noInvoices");
228
+ $[44] = t;
229
+ $[45] = t21;
230
+ } else t21 = $[45];
231
+ let t22;
232
+ if ($[46] !== t21) {
233
+ t22 = /* @__PURE__ */ jsx(EmptyState.Title, {
234
+ as: "h2",
235
+ children: t21
236
+ });
237
+ $[46] = t21;
238
+ $[47] = t22;
239
+ } else t22 = $[47];
240
+ let t23;
241
+ if ($[48] !== t) {
242
+ t23 = t("invoicesAppear");
243
+ $[48] = t;
244
+ $[49] = t23;
245
+ } else t23 = $[49];
246
+ let t24;
247
+ if ($[50] !== t23) {
248
+ t24 = /* @__PURE__ */ jsx(EmptyState.Description, { children: t23 });
249
+ $[50] = t23;
250
+ $[51] = t24;
251
+ } else t24 = $[51];
252
+ let t25;
253
+ if ($[52] !== t22 || $[53] !== t24) {
254
+ t25 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsx(EmptyState.Root, {
255
+ size: "sm",
256
+ children: /* @__PURE__ */ jsxs(EmptyState.Content, { children: [
257
+ t20,
258
+ t22,
259
+ t24
260
+ ] })
261
+ }) });
262
+ $[52] = t22;
263
+ $[53] = t24;
264
+ $[54] = t25;
265
+ } else t25 = $[54];
266
+ let t26;
267
+ if ($[55] !== t19 || $[56] !== t25) {
268
+ t26 = /* @__PURE__ */ jsxs(Body, { children: [t19, t25] });
269
+ $[55] = t19;
270
+ $[56] = t25;
271
+ $[57] = t26;
272
+ } else t26 = $[57];
273
+ let t27;
274
+ if ($[58] !== props || $[59] !== t15 || $[60] !== t26 || $[61] !== t5) {
275
+ t27 = /* @__PURE__ */ jsxs(Root$2, {
276
+ ...props,
277
+ children: [
278
+ t5,
279
+ t15,
280
+ t26
281
+ ]
282
+ });
283
+ $[58] = props;
284
+ $[59] = t15;
285
+ $[60] = t26;
286
+ $[61] = t5;
287
+ $[62] = t27;
288
+ } else t27 = $[62];
289
+ return t27;
290
+ }
291
+ const source$13 = "import { type ReactElement } from \"react\";\n\nimport {\n ChartColumnIcon,\n CreditCardIcon,\n InfoIcon,\n LayoutDashboardIcon,\n MenuIcon,\n ReceiptIcon,\n} from \"lucide-react\";\n\nimport { Button } from \"@stealthscale/component-actions\";\nimport { Alert, EmptyState } from \"@stealthscale/component-feedback\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst PAGES = [\n [\"overview\", LayoutDashboardIcon, undefined],\n [\"invoices\", ReceiptIcon, \"page\"],\n [\"usage\", ChartColumnIcon, undefined],\n [\"plan\", CreditCardIcon, undefined],\n] as const;\n\nexport function Billing(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Header as=\"div\">\n <Alert.Root layout=\"inline\" size=\"sm\">\n <Alert.Indicator>\n <InfoIcon />\n </Alert.Indicator>\n <Alert.Content>\n <Alert.Description>{t(\"trialEnds\")}</Alert.Description>\n </Alert.Content>\n <Alert.Aside>\n <Button size=\"xs\" variant=\"outline\">\n {t(\"choosePlan\")}\n </Button>\n </Alert.Aside>\n </Alert.Root>\n </AppShell.Header>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"billingBrand\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item aria-label={t(\"navigation\")} as={AppShell.Trigger} shape=\"square\">\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"billingBrand\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action primary>{t(\"addCard\")}</Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar foldsBelow=\"sm\" width=\"11rem\">\n <Sidebar.Root variant=\"subtle\">\n <Sidebar.Content>\n <Sidebar.Nav aria-label={t(\"billingBrand\")}>\n <NavList.Root>\n {PAGES.map(([page, Glyph, current]) => (\n <NavList.Item key={page}>\n <NavList.Link aria-current={current} href={`#${page}`}>\n <Glyph />\n <span>{t(page)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Main>\n <EmptyState.Root size=\"sm\">\n <EmptyState.Content>\n <EmptyState.Indicator>\n <ReceiptIcon />\n </EmptyState.Indicator>\n <EmptyState.Title as=\"h2\">{t(\"noInvoices\")}</EmptyState.Title>\n <EmptyState.Description>{t(\"invoicesAppear\")}</EmptyState.Description>\n </EmptyState.Content>\n </EmptyState.Root>\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
292
+ //#endregion
293
+ //#region src/app-shell/examples/canvas.example.tsx
294
+ var canvas_example_exports = /* @__PURE__ */ __exportAll({
295
+ Canvas: () => Canvas,
296
+ source: () => source$12
297
+ });
298
+ const LAYERS = [
299
+ [
300
+ "canvasLayer",
301
+ FrameIcon,
302
+ void 0
303
+ ],
304
+ [
305
+ "headerLayer",
306
+ PanelTopIcon,
307
+ void 0
308
+ ],
309
+ [
310
+ "hero",
311
+ ImageIcon,
312
+ "page"
313
+ ],
314
+ [
315
+ "cta",
316
+ MousePointerClickIcon,
317
+ void 0
318
+ ],
319
+ [
320
+ "footerLayer",
321
+ PanelBottomIcon,
322
+ void 0
323
+ ]
324
+ ];
325
+ const SIZES = [[
326
+ "W",
327
+ "width",
328
+ "1200"
329
+ ], [
330
+ "H",
331
+ "height",
332
+ "640"
333
+ ]];
334
+ function Canvas(props) {
335
+ const $ = c(92);
336
+ const { t } = useWords("app-shell");
337
+ let t0;
338
+ if ($[0] !== t) {
339
+ t0 = t("draft");
340
+ $[0] = t;
341
+ $[1] = t0;
342
+ } else t0 = $[1];
343
+ let t1;
344
+ if ($[2] !== t) {
345
+ t1 = t("layers");
346
+ $[2] = t;
347
+ $[3] = t1;
348
+ } else t1 = $[3];
349
+ let t2;
350
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
351
+ t2 = /* @__PURE__ */ jsx(MenuIcon, {});
352
+ $[4] = t2;
353
+ } else t2 = $[4];
354
+ let t3;
355
+ if ($[5] !== t1) {
356
+ t3 = /* @__PURE__ */ jsx(Item, {
357
+ "aria-label": t1,
358
+ as: Trigger,
359
+ panel: "layers",
360
+ shape: "square",
361
+ children: t2
362
+ });
363
+ $[5] = t1;
364
+ $[6] = t3;
365
+ } else t3 = $[6];
366
+ let t4;
367
+ if ($[7] !== t) {
368
+ t4 = t("draft");
369
+ $[7] = t;
370
+ $[8] = t4;
371
+ } else t4 = $[8];
372
+ let t5;
373
+ if ($[9] !== t4) {
374
+ t5 = /* @__PURE__ */ jsx(Text, {
375
+ as: "span",
376
+ size: "sm",
377
+ weight: "semibold",
378
+ children: t4
379
+ });
380
+ $[9] = t4;
381
+ $[10] = t5;
382
+ } else t5 = $[10];
383
+ let t6;
384
+ if ($[11] !== t3 || $[12] !== t5) {
385
+ t6 = /* @__PURE__ */ jsxs(Start, { children: [t3, t5] });
386
+ $[11] = t3;
387
+ $[12] = t5;
388
+ $[13] = t6;
389
+ } else t6 = $[13];
390
+ let t7;
391
+ if ($[14] !== t) {
392
+ t7 = t("share");
393
+ $[14] = t;
394
+ $[15] = t7;
395
+ } else t7 = $[15];
396
+ let t8;
397
+ if ($[16] !== t7) {
398
+ t8 = /* @__PURE__ */ jsx(Action, {
399
+ primary: true,
400
+ children: t7
401
+ });
402
+ $[16] = t7;
403
+ $[17] = t8;
404
+ } else t8 = $[17];
405
+ let t9;
406
+ if ($[18] !== t) {
407
+ t9 = t("properties");
408
+ $[18] = t;
409
+ $[19] = t9;
410
+ } else t9 = $[19];
411
+ let t10;
412
+ if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
413
+ t10 = /* @__PURE__ */ jsx(PanelRightIcon, {});
414
+ $[20] = t10;
415
+ } else t10 = $[20];
416
+ let t11;
417
+ if ($[21] !== t9) {
418
+ t11 = /* @__PURE__ */ jsx(Item, {
419
+ "aria-label": t9,
420
+ as: Trigger,
421
+ panel: "properties",
422
+ shape: "square",
423
+ children: t10
424
+ });
425
+ $[21] = t9;
426
+ $[22] = t11;
427
+ } else t11 = $[22];
428
+ let t12;
429
+ if ($[23] !== t11 || $[24] !== t8) {
430
+ t12 = /* @__PURE__ */ jsxs(End, { children: [t8, t11] });
431
+ $[23] = t11;
432
+ $[24] = t8;
433
+ $[25] = t12;
434
+ } else t12 = $[25];
435
+ let t13;
436
+ if ($[26] !== t0 || $[27] !== t12 || $[28] !== t6) {
437
+ t13 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
438
+ "aria-label": t0,
439
+ size: "sm",
440
+ children: [t6, t12]
441
+ }) });
442
+ $[26] = t0;
443
+ $[27] = t12;
444
+ $[28] = t6;
445
+ $[29] = t13;
446
+ } else t13 = $[29];
447
+ let t14;
448
+ if ($[30] !== t) {
449
+ t14 = t("layers");
450
+ $[30] = t;
451
+ $[31] = t14;
452
+ } else t14 = $[31];
453
+ let t15;
454
+ if ($[32] !== t14) {
455
+ t15 = /* @__PURE__ */ jsx(Heading, {
456
+ as: "h2",
457
+ size: "xs",
458
+ children: t14
459
+ });
460
+ $[32] = t14;
461
+ $[33] = t15;
462
+ } else t15 = $[33];
463
+ let t16;
464
+ if ($[34] !== t) {
465
+ t16 = t("layers");
466
+ $[34] = t;
467
+ $[35] = t16;
468
+ } else t16 = $[35];
469
+ let t17;
470
+ if ($[36] !== t) {
471
+ t17 = LAYERS.map((t18) => {
472
+ const [layer, Glyph, current] = t18;
473
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
474
+ "aria-current": current,
475
+ href: `#${layer}`,
476
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(layer) })]
477
+ }) }, layer);
478
+ });
479
+ $[36] = t;
480
+ $[37] = t17;
481
+ } else t17 = $[37];
482
+ let t18;
483
+ if ($[38] !== t16 || $[39] !== t17) {
484
+ t18 = /* @__PURE__ */ jsx(NavList.Root, {
485
+ "aria-label": t16,
486
+ size: "sm",
487
+ children: t17
488
+ });
489
+ $[38] = t16;
490
+ $[39] = t17;
491
+ $[40] = t18;
492
+ } else t18 = $[40];
493
+ let t19;
494
+ if ($[41] !== t15 || $[42] !== t18) {
495
+ t19 = /* @__PURE__ */ jsx(Navbar, {
496
+ foldsBelow: "sm",
497
+ name: "layers",
498
+ width: "12rem",
499
+ children: /* @__PURE__ */ jsxs(Section, {
500
+ grows: true,
501
+ scrolls: true,
502
+ children: [t15, t18]
503
+ })
504
+ });
505
+ $[41] = t15;
506
+ $[42] = t18;
507
+ $[43] = t19;
508
+ } else t19 = $[43];
509
+ let t20;
510
+ if ($[44] !== t) {
511
+ t20 = t("heroTitle");
512
+ $[44] = t;
513
+ $[45] = t20;
514
+ } else t20 = $[45];
515
+ let t21;
516
+ if ($[46] !== t20) {
517
+ t21 = /* @__PURE__ */ jsx(Card.Title, { children: t20 });
518
+ $[46] = t20;
519
+ $[47] = t21;
520
+ } else t21 = $[47];
521
+ let t22;
522
+ if ($[48] !== t) {
523
+ t22 = t("heroBody");
524
+ $[48] = t;
525
+ $[49] = t22;
526
+ } else t22 = $[49];
527
+ let t23;
528
+ if ($[50] !== t22) {
529
+ t23 = /* @__PURE__ */ jsx(Card.Description, { children: t22 });
530
+ $[50] = t22;
531
+ $[51] = t23;
532
+ } else t23 = $[51];
533
+ let t24;
534
+ if ($[52] !== t21 || $[53] !== t23) {
535
+ t24 = /* @__PURE__ */ jsxs(Card.Header, { children: [t21, t23] });
536
+ $[52] = t21;
537
+ $[53] = t23;
538
+ $[54] = t24;
539
+ } else t24 = $[54];
540
+ let t25;
541
+ if ($[55] !== t) {
542
+ t25 = t("heroAction");
543
+ $[55] = t;
544
+ $[56] = t25;
545
+ } else t25 = $[56];
546
+ let t26;
547
+ if ($[57] !== t25) {
548
+ t26 = /* @__PURE__ */ jsx(Card.Footer, { children: /* @__PURE__ */ jsx(Button, {
549
+ size: "sm",
550
+ children: t25
551
+ }) });
552
+ $[57] = t25;
553
+ $[58] = t26;
554
+ } else t26 = $[58];
555
+ let t27;
556
+ if ($[59] !== t24 || $[60] !== t26) {
557
+ t27 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsx(Section, { children: /* @__PURE__ */ jsxs(Card.Root, {
558
+ size: "sm",
559
+ variant: "outline",
560
+ children: [t24, t26]
561
+ }) }) });
562
+ $[59] = t24;
563
+ $[60] = t26;
564
+ $[61] = t27;
565
+ } else t27 = $[61];
566
+ let t28;
567
+ if ($[62] !== t) {
568
+ t28 = t("hero");
569
+ $[62] = t;
570
+ $[63] = t28;
571
+ } else t28 = $[63];
572
+ let t29;
573
+ if ($[64] !== t28) {
574
+ t29 = /* @__PURE__ */ jsx(Heading, {
575
+ as: "h2",
576
+ size: "xs",
577
+ children: t28
578
+ });
579
+ $[64] = t28;
580
+ $[65] = t29;
581
+ } else t29 = $[65];
582
+ let t30;
583
+ if ($[66] !== t) {
584
+ t30 = SIZES.map((t31) => {
585
+ const [mark, name, value] = t31;
586
+ return /* @__PURE__ */ jsxs(InputGroup.Row, { children: [/* @__PURE__ */ jsx(InputGroup.Mark, {
587
+ "aria-hidden": true,
588
+ children: mark
589
+ }), /* @__PURE__ */ jsx(InputGroup.Field, {
590
+ "aria-label": t(name),
591
+ defaultValue: value,
592
+ inputMode: "numeric"
593
+ })] }, name);
594
+ });
595
+ $[66] = t;
596
+ $[67] = t30;
597
+ } else t30 = $[67];
598
+ let t31;
599
+ if ($[68] !== t30) {
600
+ t31 = /* @__PURE__ */ jsx(InputGroup.Root, {
601
+ size: "sm",
602
+ children: t30
603
+ });
604
+ $[68] = t30;
605
+ $[69] = t31;
606
+ } else t31 = $[69];
607
+ let t32;
608
+ if ($[70] === Symbol.for("react.memo_cache_sentinel")) {
609
+ t32 = /* @__PURE__ */ jsx(InputGroup.Mark, {
610
+ "aria-hidden": true,
611
+ children: "#"
612
+ });
613
+ $[70] = t32;
614
+ } else t32 = $[70];
615
+ let t33;
616
+ if ($[71] !== t) {
617
+ t33 = t("fill");
618
+ $[71] = t;
619
+ $[72] = t33;
620
+ } else t33 = $[72];
621
+ let t34;
622
+ if ($[73] !== t33) {
623
+ t34 = /* @__PURE__ */ jsxs(InputGroup.Root, {
624
+ size: "sm",
625
+ children: [t32, /* @__PURE__ */ jsx(InputGroup.Field, {
626
+ "aria-label": t33,
627
+ defaultValue: "1F6FEB"
628
+ })]
629
+ });
630
+ $[73] = t33;
631
+ $[74] = t34;
632
+ } else t34 = $[74];
633
+ let t35;
634
+ if ($[75] !== t) {
635
+ t35 = t("replace");
636
+ $[75] = t;
637
+ $[76] = t35;
638
+ } else t35 = $[76];
639
+ let t36;
640
+ if ($[77] !== t35) {
641
+ t36 = /* @__PURE__ */ jsx(Button, {
642
+ size: "sm",
643
+ variant: "outline",
644
+ children: t35
645
+ });
646
+ $[77] = t35;
647
+ $[78] = t36;
648
+ } else t36 = $[78];
649
+ let t37;
650
+ if ($[79] !== t29 || $[80] !== t31 || $[81] !== t34 || $[82] !== t36) {
651
+ t37 = /* @__PURE__ */ jsx(Aside, {
652
+ name: "properties",
653
+ width: "14rem",
654
+ children: /* @__PURE__ */ jsxs(Section, { children: [
655
+ t29,
656
+ t31,
657
+ t34,
658
+ t36
659
+ ] })
660
+ });
661
+ $[79] = t29;
662
+ $[80] = t31;
663
+ $[81] = t34;
664
+ $[82] = t36;
665
+ $[83] = t37;
666
+ } else t37 = $[83];
667
+ let t38;
668
+ if ($[84] !== t19 || $[85] !== t27 || $[86] !== t37) {
669
+ t38 = /* @__PURE__ */ jsxs(Body, { children: [
670
+ t19,
671
+ t27,
672
+ t37
673
+ ] });
674
+ $[84] = t19;
675
+ $[85] = t27;
676
+ $[86] = t37;
677
+ $[87] = t38;
678
+ } else t38 = $[87];
679
+ let t39;
680
+ if ($[88] !== props || $[89] !== t13 || $[90] !== t38) {
681
+ t39 = /* @__PURE__ */ jsxs(Root$2, {
682
+ divided: false,
683
+ variant: "floating",
684
+ ...props,
685
+ children: [t13, t38]
686
+ });
687
+ $[88] = props;
688
+ $[89] = t13;
689
+ $[90] = t38;
690
+ $[91] = t39;
691
+ } else t39 = $[91];
692
+ return t39;
693
+ }
694
+ const source$12 = "import { type ReactElement } from \"react\";\n\nimport {\n FrameIcon,\n ImageIcon,\n MenuIcon,\n MousePointerClickIcon,\n PanelBottomIcon,\n PanelRightIcon,\n PanelTopIcon,\n} from \"lucide-react\";\n\nimport { Button } from \"@stealthscale/component-actions\";\nimport { InputGroup } from \"@stealthscale/component-forms\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Card } from \"@stealthscale/component-surfaces\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Toolbar } from \"@stealthscale/component-screen\";\n\nconst LAYERS = [\n [\"canvasLayer\", FrameIcon, undefined],\n [\"headerLayer\", PanelTopIcon, undefined],\n [\"hero\", ImageIcon, \"page\"],\n [\"cta\", MousePointerClickIcon, undefined],\n [\"footerLayer\", PanelBottomIcon, undefined],\n] as const;\n\nconst SIZES = [\n [\"W\", \"width\", \"1200\"],\n [\"H\", \"height\", \"640\"],\n] as const;\n\nexport function Canvas(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root divided={false} variant=\"floating\" {...props}>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"draft\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item\n aria-label={t(\"layers\")}\n as={AppShell.Trigger}\n panel=\"layers\"\n shape=\"square\"\n >\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"draft\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action primary>{t(\"share\")}</Toolbar.Action>\n <Toolbar.Item\n aria-label={t(\"properties\")}\n as={AppShell.Trigger}\n panel=\"properties\"\n shape=\"square\"\n >\n <PanelRightIcon />\n </Toolbar.Item>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar foldsBelow=\"sm\" name=\"layers\" width=\"12rem\">\n <AppShell.Section grows scrolls>\n <Heading as=\"h2\" size=\"xs\">\n {t(\"layers\")}\n </Heading>\n <NavList.Root aria-label={t(\"layers\")} size=\"sm\">\n {LAYERS.map(([layer, Glyph, current]) => (\n <NavList.Item key={layer}>\n <NavList.Link aria-current={current} href={`#${layer}`}>\n <Glyph />\n <span>{t(layer)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </AppShell.Section>\n </AppShell.Navbar>\n <AppShell.Main>\n <AppShell.Section>\n <Card.Root size=\"sm\" variant=\"outline\">\n <Card.Header>\n <Card.Title>{t(\"heroTitle\")}</Card.Title>\n <Card.Description>{t(\"heroBody\")}</Card.Description>\n </Card.Header>\n <Card.Footer>\n <Button size=\"sm\">{t(\"heroAction\")}</Button>\n </Card.Footer>\n </Card.Root>\n </AppShell.Section>\n </AppShell.Main>\n <AppShell.Aside name=\"properties\" width=\"14rem\">\n <AppShell.Section>\n <Heading as=\"h2\" size=\"xs\">\n {t(\"hero\")}\n </Heading>\n <InputGroup.Root size=\"sm\">\n {SIZES.map(([mark, name, value]) => (\n <InputGroup.Row key={name}>\n <InputGroup.Mark aria-hidden>{mark}</InputGroup.Mark>\n <InputGroup.Field aria-label={t(name)} defaultValue={value} inputMode=\"numeric\" />\n </InputGroup.Row>\n ))}\n </InputGroup.Root>\n <InputGroup.Root size=\"sm\">\n <InputGroup.Mark aria-hidden>#</InputGroup.Mark>\n <InputGroup.Field aria-label={t(\"fill\")} defaultValue=\"1F6FEB\" />\n </InputGroup.Root>\n <Button size=\"sm\" variant=\"outline\">\n {t(\"replace\")}\n </Button>\n </AppShell.Section>\n </AppShell.Aside>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
695
+ //#endregion
696
+ //#region src/app-shell/examples/chat.example.tsx
697
+ var chat_example_exports = /* @__PURE__ */ __exportAll({
698
+ Chat: () => Chat,
699
+ source: () => source$11
700
+ });
701
+ const WORKSPACES = [
702
+ [
703
+ "stealth",
704
+ Building2Icon,
705
+ "page"
706
+ ],
707
+ [
708
+ "operations",
709
+ WrenchIcon,
710
+ void 0
711
+ ],
712
+ [
713
+ "quality",
714
+ FlaskConicalIcon,
715
+ void 0
716
+ ]
717
+ ];
718
+ const ROOMS = [[
719
+ "channels",
720
+ HashIcon,
721
+ [
722
+ ["general"],
723
+ ["deploys", "page"],
724
+ [
725
+ "incidents",
726
+ void 0,
727
+ "2"
728
+ ]
729
+ ]
730
+ ], [
731
+ "direct",
732
+ AtSignIcon,
733
+ [["mara"], [
734
+ "jonas",
735
+ void 0,
736
+ "1"
737
+ ]]
738
+ ]];
739
+ const MESSAGES = [
740
+ [
741
+ "09:02",
742
+ "jonas",
743
+ "tagged"
744
+ ],
745
+ [
746
+ "09:05",
747
+ "mara",
748
+ "starting"
749
+ ],
750
+ [
751
+ "09:08",
752
+ "bot",
753
+ "live"
754
+ ],
755
+ [
756
+ "09:12",
757
+ "mara",
758
+ "rolling"
759
+ ],
760
+ [
761
+ "09:14",
762
+ "jonas",
763
+ "canary"
764
+ ],
765
+ [
766
+ "09:15",
767
+ "mara",
768
+ "fleet"
769
+ ],
770
+ [
771
+ "09:17",
772
+ "bot",
773
+ "hosts"
774
+ ],
775
+ [
776
+ "09:19",
777
+ "bot",
778
+ "deployed"
779
+ ],
780
+ [
781
+ "09:20",
782
+ "jonas",
783
+ "closing"
784
+ ],
785
+ [
786
+ "09:21",
787
+ "mara",
788
+ "thanks"
789
+ ]
790
+ ];
791
+ const AUTHORS = {
792
+ bot: {
793
+ palette: "primary",
794
+ shape: "rounded",
795
+ variant: "solid"
796
+ },
797
+ jonas: { palette: "accent" },
798
+ mara: { palette: "secondary" }
799
+ };
800
+ function Chat(props) {
801
+ const $ = c(76);
802
+ const { t } = useWords("app-shell");
803
+ let t0;
804
+ if ($[0] !== t) {
805
+ t0 = t("relay");
806
+ $[0] = t;
807
+ $[1] = t0;
808
+ } else t0 = $[1];
809
+ let t1;
810
+ if ($[2] !== t) {
811
+ t1 = t("channels");
812
+ $[2] = t;
813
+ $[3] = t1;
814
+ } else t1 = $[3];
815
+ let t2;
816
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
817
+ t2 = /* @__PURE__ */ jsx(MenuIcon, {});
818
+ $[4] = t2;
819
+ } else t2 = $[4];
820
+ let t3;
821
+ if ($[5] !== t1) {
822
+ t3 = /* @__PURE__ */ jsx(Item, {
823
+ "aria-label": t1,
824
+ as: Trigger,
825
+ panel: "channels",
826
+ shape: "square",
827
+ children: t2
828
+ });
829
+ $[5] = t1;
830
+ $[6] = t3;
831
+ } else t3 = $[6];
832
+ let t4;
833
+ if ($[7] !== t) {
834
+ t4 = t("relay");
835
+ $[7] = t;
836
+ $[8] = t4;
837
+ } else t4 = $[8];
838
+ let t5;
839
+ if ($[9] !== t4) {
840
+ t5 = /* @__PURE__ */ jsx(Text, {
841
+ as: "span",
842
+ size: "sm",
843
+ weight: "semibold",
844
+ children: t4
845
+ });
846
+ $[9] = t4;
847
+ $[10] = t5;
848
+ } else t5 = $[10];
849
+ let t6;
850
+ if ($[11] !== t3 || $[12] !== t5) {
851
+ t6 = /* @__PURE__ */ jsxs(Start, { children: [t3, t5] });
852
+ $[11] = t3;
853
+ $[12] = t5;
854
+ $[13] = t6;
855
+ } else t6 = $[13];
856
+ let t7;
857
+ if ($[14] !== t0 || $[15] !== t6) {
858
+ t7 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsx(Root, {
859
+ "aria-label": t0,
860
+ size: "sm",
861
+ children: t6
862
+ }) });
863
+ $[14] = t0;
864
+ $[15] = t6;
865
+ $[16] = t7;
866
+ } else t7 = $[16];
867
+ let t8;
868
+ if ($[17] !== t) {
869
+ t8 = t("workspaces");
870
+ $[17] = t;
871
+ $[18] = t8;
872
+ } else t8 = $[18];
873
+ let t9;
874
+ if ($[19] !== t) {
875
+ t9 = WORKSPACES.map((t10) => {
876
+ const [workspace, Glyph, current] = t10;
877
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
878
+ "aria-current": current,
879
+ href: `#${workspace}`,
880
+ tooltip: t(workspace),
881
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(workspace) })]
882
+ }) }, workspace);
883
+ });
884
+ $[19] = t;
885
+ $[20] = t9;
886
+ } else t9 = $[20];
887
+ let t10;
888
+ if ($[21] !== t9) {
889
+ t10 = /* @__PURE__ */ jsx(NavList.Root, { children: t9 });
890
+ $[21] = t9;
891
+ $[22] = t10;
892
+ } else t10 = $[22];
893
+ let t11;
894
+ if ($[23] !== t10 || $[24] !== t8) {
895
+ t11 = /* @__PURE__ */ jsx(Navbar, {
896
+ foldsBelow: "never",
897
+ name: "rail",
898
+ width: "3.5rem",
899
+ children: /* @__PURE__ */ jsx(Root$1, {
900
+ iconic: true,
901
+ children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(Nav, {
902
+ "aria-label": t8,
903
+ children: t10
904
+ }) })
905
+ })
906
+ });
907
+ $[23] = t10;
908
+ $[24] = t8;
909
+ $[25] = t11;
910
+ } else t11 = $[25];
911
+ let t12;
912
+ if ($[26] !== t) {
913
+ t12 = t("jumpTo");
914
+ $[26] = t;
915
+ $[27] = t12;
916
+ } else t12 = $[27];
917
+ let t13;
918
+ if ($[28] !== t) {
919
+ t13 = t("jumpTo");
920
+ $[28] = t;
921
+ $[29] = t13;
922
+ } else t13 = $[29];
923
+ let t14;
924
+ if ($[30] === Symbol.for("react.memo_cache_sentinel")) {
925
+ t14 = /* @__PURE__ */ jsx(SearchIcon, {});
926
+ $[30] = t14;
927
+ } else t14 = $[30];
928
+ let t15;
929
+ if ($[31] !== t12 || $[32] !== t13) {
930
+ t15 = /* @__PURE__ */ jsx(Header$1, { children: /* @__PURE__ */ jsx(Search, {
931
+ "aria-label": t12,
932
+ placeholder: t13,
933
+ searchIndicator: t14
934
+ }) });
935
+ $[31] = t12;
936
+ $[32] = t13;
937
+ $[33] = t15;
938
+ } else t15 = $[33];
939
+ let t16;
940
+ if ($[34] !== t) {
941
+ t16 = ROOMS.map((t17) => {
942
+ const [group, Glyph_0, rooms] = t17;
943
+ return /* @__PURE__ */ jsxs(Nav, { children: [/* @__PURE__ */ jsx(NavLabel, { children: t(group) }), /* @__PURE__ */ jsx(NavList.Root, { children: rooms.map((t18) => {
944
+ const [room, current_0, unread] = t18;
945
+ return /* @__PURE__ */ jsxs(NavList.Item, { children: [/* @__PURE__ */ jsxs(NavList.Link, {
946
+ "aria-current": current_0,
947
+ href: `#${room}`,
948
+ children: [/* @__PURE__ */ jsx(Glyph_0, {}), /* @__PURE__ */ jsx("span", { children: t(room) })]
949
+ }), unread === void 0 ? null : /* @__PURE__ */ jsx(NavList.Badge, { children: unread })] }, room);
950
+ }) })] }, group);
951
+ });
952
+ $[34] = t;
953
+ $[35] = t16;
954
+ } else t16 = $[35];
955
+ let t17;
956
+ if ($[36] !== t) {
957
+ t17 = t("noRoom");
958
+ $[36] = t;
959
+ $[37] = t17;
960
+ } else t17 = $[37];
961
+ let t18;
962
+ if ($[38] !== t17) {
963
+ t18 = /* @__PURE__ */ jsx(Empty, { children: t17 });
964
+ $[38] = t17;
965
+ $[39] = t18;
966
+ } else t18 = $[39];
967
+ let t19;
968
+ if ($[40] !== t16 || $[41] !== t18) {
969
+ t19 = /* @__PURE__ */ jsxs(Content, { children: [t16, t18] });
970
+ $[40] = t16;
971
+ $[41] = t18;
972
+ $[42] = t19;
973
+ } else t19 = $[42];
974
+ let t20;
975
+ if ($[43] !== t15 || $[44] !== t19) {
976
+ t20 = /* @__PURE__ */ jsx(Navbar, {
977
+ name: "channels",
978
+ width: "14rem",
979
+ children: /* @__PURE__ */ jsxs(Root$1, {
980
+ variant: "subtle",
981
+ children: [t15, t19]
982
+ })
983
+ });
984
+ $[43] = t15;
985
+ $[44] = t19;
986
+ $[45] = t20;
987
+ } else t20 = $[45];
988
+ let t21;
989
+ if ($[46] !== t) {
990
+ t21 = MESSAGES.map((t22) => {
991
+ const [time, who, said] = t22;
992
+ return /* @__PURE__ */ jsxs(Stack, {
993
+ align: "flex-start",
994
+ direction: "row",
995
+ gap: "sm",
996
+ children: [/* @__PURE__ */ jsx(Avatar.Root, {
997
+ "aria-hidden": true,
998
+ name: t(who),
999
+ size: "xs",
1000
+ ...AUTHORS[who],
1001
+ children: /* @__PURE__ */ jsx(Avatar.Fallback, { children: who === "bot" ? /* @__PURE__ */ jsx(BotIcon, {}) : null })
1002
+ }), /* @__PURE__ */ jsxs(Stack, {
1003
+ gap: "xs",
1004
+ children: [/* @__PURE__ */ jsxs(Text, {
1005
+ size: "sm",
1006
+ children: [
1007
+ /* @__PURE__ */ jsx(Span, {
1008
+ weight: "semibold",
1009
+ children: t(who)
1010
+ }),
1011
+ " ",
1012
+ /* @__PURE__ */ jsx(Span, {
1013
+ tone: "muted",
1014
+ children: time
1015
+ })
1016
+ ]
1017
+ }), /* @__PURE__ */ jsx(Text, {
1018
+ size: "sm",
1019
+ children: t(said)
1020
+ })]
1021
+ })]
1022
+ }, said);
1023
+ });
1024
+ $[46] = t;
1025
+ $[47] = t21;
1026
+ } else t21 = $[47];
1027
+ let t22;
1028
+ if ($[48] !== t21) {
1029
+ t22 = /* @__PURE__ */ jsx(Section, { children: /* @__PURE__ */ jsx(Stack, {
1030
+ gap: "md",
1031
+ children: t21
1032
+ }) });
1033
+ $[48] = t21;
1034
+ $[49] = t22;
1035
+ } else t22 = $[49];
1036
+ let t23;
1037
+ if ($[50] !== t) {
1038
+ t23 = t("message");
1039
+ $[50] = t;
1040
+ $[51] = t23;
1041
+ } else t23 = $[51];
1042
+ let t24;
1043
+ if ($[52] !== t) {
1044
+ t24 = t("messageDeploys");
1045
+ $[52] = t;
1046
+ $[53] = t24;
1047
+ } else t24 = $[53];
1048
+ let t25;
1049
+ if ($[54] !== t23 || $[55] !== t24) {
1050
+ t25 = /* @__PURE__ */ jsx(InputGroup.Field, {
1051
+ "aria-label": t23,
1052
+ placeholder: t24
1053
+ });
1054
+ $[54] = t23;
1055
+ $[55] = t24;
1056
+ $[56] = t25;
1057
+ } else t25 = $[56];
1058
+ let t26;
1059
+ if ($[57] !== t) {
1060
+ t26 = t("send");
1061
+ $[57] = t;
1062
+ $[58] = t26;
1063
+ } else t26 = $[58];
1064
+ let t27;
1065
+ if ($[59] === Symbol.for("react.memo_cache_sentinel")) {
1066
+ t27 = /* @__PURE__ */ jsx(SendHorizontalIcon, {});
1067
+ $[59] = t27;
1068
+ } else t27 = $[59];
1069
+ let t28;
1070
+ if ($[60] !== t26) {
1071
+ t28 = /* @__PURE__ */ jsx(InputGroup.Mark, { children: /* @__PURE__ */ jsx(IconButton, {
1072
+ "aria-label": t26,
1073
+ size: "xs",
1074
+ variant: "ghost",
1075
+ children: t27
1076
+ }) });
1077
+ $[60] = t26;
1078
+ $[61] = t28;
1079
+ } else t28 = $[61];
1080
+ let t29;
1081
+ if ($[62] !== t25 || $[63] !== t28) {
1082
+ t29 = /* @__PURE__ */ jsx(Footer, {
1083
+ sticky: true,
1084
+ children: /* @__PURE__ */ jsxs(InputGroup.Root, {
1085
+ size: "sm",
1086
+ children: [t25, t28]
1087
+ })
1088
+ });
1089
+ $[62] = t25;
1090
+ $[63] = t28;
1091
+ $[64] = t29;
1092
+ } else t29 = $[64];
1093
+ let t30;
1094
+ if ($[65] !== t22 || $[66] !== t29) {
1095
+ t30 = /* @__PURE__ */ jsxs(Main, { children: [t22, t29] });
1096
+ $[65] = t22;
1097
+ $[66] = t29;
1098
+ $[67] = t30;
1099
+ } else t30 = $[67];
1100
+ let t31;
1101
+ if ($[68] !== t11 || $[69] !== t20 || $[70] !== t30) {
1102
+ t31 = /* @__PURE__ */ jsxs(Body, { children: [
1103
+ t11,
1104
+ t20,
1105
+ t30
1106
+ ] });
1107
+ $[68] = t11;
1108
+ $[69] = t20;
1109
+ $[70] = t30;
1110
+ $[71] = t31;
1111
+ } else t31 = $[71];
1112
+ let t32;
1113
+ if ($[72] !== props || $[73] !== t31 || $[74] !== t7) {
1114
+ t32 = /* @__PURE__ */ jsxs(Root$2, {
1115
+ ...props,
1116
+ children: [t7, t31]
1117
+ });
1118
+ $[72] = props;
1119
+ $[73] = t31;
1120
+ $[74] = t7;
1121
+ $[75] = t32;
1122
+ } else t32 = $[75];
1123
+ return t32;
1124
+ }
1125
+ const source$11 = "import { type ReactElement } from \"react\";\n\nimport {\n AtSignIcon,\n BotIcon,\n Building2Icon,\n FlaskConicalIcon,\n HashIcon,\n type LucideIcon,\n MenuIcon,\n SearchIcon,\n SendHorizontalIcon,\n WrenchIcon,\n} from \"lucide-react\";\n\nimport { IconButton } from \"@stealthscale/component-actions\";\nimport { InputGroup } from \"@stealthscale/component-forms\";\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { Avatar } from \"@stealthscale/component-media\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Span, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\ntype Room = readonly [name: string, current?: \"page\" | undefined, unread?: string | undefined];\n\nconst WORKSPACES = [\n [\"stealth\", Building2Icon, \"page\"],\n [\"operations\", WrenchIcon, undefined],\n [\"quality\", FlaskConicalIcon, undefined],\n] as const;\n\nconst ROOMS: ReadonlyArray<readonly [string, LucideIcon, readonly Room[]]> = [\n [\"channels\", HashIcon, [[\"general\"], [\"deploys\", \"page\"], [\"incidents\", undefined, \"2\"]]],\n [\"direct\", AtSignIcon, [[\"mara\"], [\"jonas\", undefined, \"1\"]]],\n];\n\nconst MESSAGES = [\n [\"09:02\", \"jonas\", \"tagged\"],\n [\"09:05\", \"mara\", \"starting\"],\n [\"09:08\", \"bot\", \"live\"],\n [\"09:12\", \"mara\", \"rolling\"],\n [\"09:14\", \"jonas\", \"canary\"],\n [\"09:15\", \"mara\", \"fleet\"],\n [\"09:17\", \"bot\", \"hosts\"],\n [\"09:19\", \"bot\", \"deployed\"],\n [\"09:20\", \"jonas\", \"closing\"],\n [\"09:21\", \"mara\", \"thanks\"],\n] as const;\n\nconst AUTHORS = {\n bot: { palette: \"primary\", shape: \"rounded\", variant: \"solid\" },\n jonas: { palette: \"accent\" },\n mara: { palette: \"secondary\" },\n} as const;\n\nexport function Chat(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"relay\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item\n aria-label={t(\"channels\")}\n as={AppShell.Trigger}\n panel=\"channels\"\n shape=\"square\"\n >\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"relay\")}\n </Text>\n </Toolbar.Start>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar foldsBelow=\"never\" name=\"rail\" width=\"3.5rem\">\n <Sidebar.Root iconic>\n <Sidebar.Content>\n <Sidebar.Nav aria-label={t(\"workspaces\")}>\n <NavList.Root>\n {WORKSPACES.map(([workspace, Glyph, current]) => (\n <NavList.Item key={workspace}>\n <NavList.Link\n aria-current={current}\n href={`#${workspace}`}\n tooltip={t(workspace)}\n >\n <Glyph />\n <span>{t(workspace)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Navbar name=\"channels\" width=\"14rem\">\n <Sidebar.Root variant=\"subtle\">\n <Sidebar.Header>\n <Sidebar.Search\n aria-label={t(\"jumpTo\")}\n placeholder={t(\"jumpTo\")}\n searchIndicator={<SearchIcon />}\n />\n </Sidebar.Header>\n <Sidebar.Content>\n {ROOMS.map(([group, Glyph, rooms]) => (\n <Sidebar.Nav key={group}>\n <Sidebar.NavLabel>{t(group)}</Sidebar.NavLabel>\n <NavList.Root>\n {rooms.map(([room, current, unread]) => (\n <NavList.Item key={room}>\n <NavList.Link aria-current={current} href={`#${room}`}>\n <Glyph />\n <span>{t(room)}</span>\n </NavList.Link>\n {unread === undefined ? null : <NavList.Badge>{unread}</NavList.Badge>}\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n ))}\n <Sidebar.Empty>{t(\"noRoom\")}</Sidebar.Empty>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Main>\n <AppShell.Section>\n <Stack gap=\"md\">\n {MESSAGES.map(([time, who, said]) => (\n <Stack align=\"flex-start\" direction=\"row\" gap=\"sm\" key={said}>\n <Avatar.Root aria-hidden name={t(who)} size=\"xs\" {...AUTHORS[who]}>\n <Avatar.Fallback>{who === \"bot\" ? <BotIcon /> : null}</Avatar.Fallback>\n </Avatar.Root>\n <Stack gap=\"xs\">\n <Text size=\"sm\">\n <Span weight=\"semibold\">{t(who)}</Span> <Span tone=\"muted\">{time}</Span>\n </Text>\n <Text size=\"sm\">{t(said)}</Text>\n </Stack>\n </Stack>\n ))}\n </Stack>\n </AppShell.Section>\n <AppShell.Footer sticky>\n <InputGroup.Root size=\"sm\">\n <InputGroup.Field aria-label={t(\"message\")} placeholder={t(\"messageDeploys\")} />\n <InputGroup.Mark>\n <IconButton aria-label={t(\"send\")} size=\"xs\" variant=\"ghost\">\n <SendHorizontalIcon />\n </IconButton>\n </InputGroup.Mark>\n </InputGroup.Root>\n </AppShell.Footer>\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
1126
+ //#endregion
1127
+ //#region src/app-shell/examples/checkout.example.tsx
1128
+ var checkout_example_exports = /* @__PURE__ */ __exportAll({
1129
+ Checkout: () => Checkout,
1130
+ source: () => source$10
1131
+ });
1132
+ const ORDER = [
1133
+ ["mugs", "£36.00"],
1134
+ ["shipping", "£4.00"],
1135
+ ["vat", "£8.00"]
1136
+ ];
1137
+ function Checkout(props) {
1138
+ const $ = c(80);
1139
+ const { t } = useWords("app-shell");
1140
+ let t0;
1141
+ if ($[0] !== t) {
1142
+ t0 = t("northwind");
1143
+ $[0] = t;
1144
+ $[1] = t0;
1145
+ } else t0 = $[1];
1146
+ let t1;
1147
+ if ($[2] !== t) {
1148
+ t1 = t("northwind");
1149
+ $[2] = t;
1150
+ $[3] = t1;
1151
+ } else t1 = $[3];
1152
+ let t2;
1153
+ if ($[4] !== t1) {
1154
+ t2 = /* @__PURE__ */ jsx(Start, { children: /* @__PURE__ */ jsx(Text, {
1155
+ as: "span",
1156
+ size: "sm",
1157
+ weight: "semibold",
1158
+ children: t1
1159
+ }) });
1160
+ $[4] = t1;
1161
+ $[5] = t2;
1162
+ } else t2 = $[5];
1163
+ let t3;
1164
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
1165
+ t3 = /* @__PURE__ */ jsx(LockIcon, {
1166
+ "aria-hidden": true,
1167
+ size: "1em"
1168
+ });
1169
+ $[6] = t3;
1170
+ } else t3 = $[6];
1171
+ let t4;
1172
+ if ($[7] !== t) {
1173
+ t4 = t("secure");
1174
+ $[7] = t;
1175
+ $[8] = t4;
1176
+ } else t4 = $[8];
1177
+ let t5;
1178
+ if ($[9] !== t4) {
1179
+ t5 = /* @__PURE__ */ jsxs(End, { children: [t3, /* @__PURE__ */ jsx(Text, {
1180
+ as: "span",
1181
+ size: "sm",
1182
+ tone: "muted",
1183
+ children: t4
1184
+ })] });
1185
+ $[9] = t4;
1186
+ $[10] = t5;
1187
+ } else t5 = $[10];
1188
+ let t6;
1189
+ if ($[11] !== t0 || $[12] !== t2 || $[13] !== t5) {
1190
+ t6 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
1191
+ "aria-label": t0,
1192
+ size: "sm",
1193
+ children: [t2, t5]
1194
+ }) });
1195
+ $[11] = t0;
1196
+ $[12] = t2;
1197
+ $[13] = t5;
1198
+ $[14] = t6;
1199
+ } else t6 = $[14];
1200
+ let t7;
1201
+ if ($[15] !== t) {
1202
+ t7 = t("summary");
1203
+ $[15] = t;
1204
+ $[16] = t7;
1205
+ } else t7 = $[16];
1206
+ let t8;
1207
+ if ($[17] !== t7) {
1208
+ t8 = /* @__PURE__ */ jsx(Heading, {
1209
+ as: "h2",
1210
+ size: "xs",
1211
+ children: t7
1212
+ });
1213
+ $[17] = t7;
1214
+ $[18] = t8;
1215
+ } else t8 = $[18];
1216
+ let t9;
1217
+ if ($[19] !== t) {
1218
+ t9 = ORDER.map((t10) => {
1219
+ const [line, amount] = t10;
1220
+ return /* @__PURE__ */ jsxs(DataList.Item, { children: [/* @__PURE__ */ jsx(DataList.ItemLabel, { children: t(line) }), /* @__PURE__ */ jsx(DataList.ItemValue, { children: amount })] }, line);
1221
+ });
1222
+ $[19] = t;
1223
+ $[20] = t9;
1224
+ } else t9 = $[20];
1225
+ let t10;
1226
+ if ($[21] !== t) {
1227
+ t10 = t("total");
1228
+ $[21] = t;
1229
+ $[22] = t10;
1230
+ } else t10 = $[22];
1231
+ let t11;
1232
+ if ($[23] !== t10) {
1233
+ t11 = /* @__PURE__ */ jsx(DataList.ItemLabel, { children: t10 });
1234
+ $[23] = t10;
1235
+ $[24] = t11;
1236
+ } else t11 = $[24];
1237
+ let t12;
1238
+ if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
1239
+ t12 = /* @__PURE__ */ jsx(DataList.ItemValue, { children: /* @__PURE__ */ jsx(Span, {
1240
+ weight: "semibold",
1241
+ children: "£48.00"
1242
+ }) });
1243
+ $[25] = t12;
1244
+ } else t12 = $[25];
1245
+ let t13;
1246
+ if ($[26] !== t11) {
1247
+ t13 = /* @__PURE__ */ jsxs(DataList.Item, { children: [t11, t12] });
1248
+ $[26] = t11;
1249
+ $[27] = t13;
1250
+ } else t13 = $[27];
1251
+ let t14;
1252
+ if ($[28] !== t13 || $[29] !== t9) {
1253
+ t14 = /* @__PURE__ */ jsxs(DataList.Root, {
1254
+ divided: true,
1255
+ orientation: "horizontal",
1256
+ size: "sm",
1257
+ children: [t9, t13]
1258
+ });
1259
+ $[28] = t13;
1260
+ $[29] = t9;
1261
+ $[30] = t14;
1262
+ } else t14 = $[30];
1263
+ let t15;
1264
+ if ($[31] !== t14 || $[32] !== t8) {
1265
+ t15 = /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(Stack, {
1266
+ gap: "md",
1267
+ children: [t8, t14]
1268
+ }) });
1269
+ $[31] = t14;
1270
+ $[32] = t8;
1271
+ $[33] = t15;
1272
+ } else t15 = $[33];
1273
+ let t16;
1274
+ if ($[34] !== t) {
1275
+ t16 = t("payment");
1276
+ $[34] = t;
1277
+ $[35] = t16;
1278
+ } else t16 = $[35];
1279
+ let t17;
1280
+ if ($[36] !== t16) {
1281
+ t17 = /* @__PURE__ */ jsx(Heading, {
1282
+ as: "h2",
1283
+ size: "xs",
1284
+ children: t16
1285
+ });
1286
+ $[36] = t16;
1287
+ $[37] = t17;
1288
+ } else t17 = $[37];
1289
+ let t18;
1290
+ if ($[38] !== t) {
1291
+ t18 = t("email");
1292
+ $[38] = t;
1293
+ $[39] = t18;
1294
+ } else t18 = $[39];
1295
+ let t19;
1296
+ if ($[40] !== t18) {
1297
+ t19 = /* @__PURE__ */ jsx(Field.Label, { children: t18 });
1298
+ $[40] = t18;
1299
+ $[41] = t19;
1300
+ } else t19 = $[41];
1301
+ let t20;
1302
+ if ($[42] === Symbol.for("react.memo_cache_sentinel")) {
1303
+ t20 = /* @__PURE__ */ jsx(Field.Control, {
1304
+ autoComplete: "email",
1305
+ type: "email"
1306
+ });
1307
+ $[42] = t20;
1308
+ } else t20 = $[42];
1309
+ let t21;
1310
+ if ($[43] !== t19) {
1311
+ t21 = /* @__PURE__ */ jsxs(Field.Root, {
1312
+ size: "sm",
1313
+ children: [t19, t20]
1314
+ });
1315
+ $[43] = t19;
1316
+ $[44] = t21;
1317
+ } else t21 = $[44];
1318
+ let t22;
1319
+ if ($[45] === Symbol.for("react.memo_cache_sentinel")) {
1320
+ t22 = /* @__PURE__ */ jsx(InputGroup.Mark, {
1321
+ "aria-hidden": true,
1322
+ children: /* @__PURE__ */ jsx(CreditCardIcon, {})
1323
+ });
1324
+ $[45] = t22;
1325
+ } else t22 = $[45];
1326
+ let t23;
1327
+ if ($[46] !== t) {
1328
+ t23 = t("card");
1329
+ $[46] = t;
1330
+ $[47] = t23;
1331
+ } else t23 = $[47];
1332
+ let t24;
1333
+ if ($[48] !== t23) {
1334
+ t24 = /* @__PURE__ */ jsxs(InputGroup.Row, { children: [t22, /* @__PURE__ */ jsx(InputGroup.Field, {
1335
+ "aria-label": t23,
1336
+ autoComplete: "cc-number",
1337
+ inputMode: "numeric",
1338
+ placeholder: "1234 1234 1234 1234"
1339
+ })] });
1340
+ $[48] = t23;
1341
+ $[49] = t24;
1342
+ } else t24 = $[49];
1343
+ let t25;
1344
+ if ($[50] !== t) {
1345
+ t25 = t("expiry");
1346
+ $[50] = t;
1347
+ $[51] = t25;
1348
+ } else t25 = $[51];
1349
+ let t26;
1350
+ if ($[52] !== t25) {
1351
+ t26 = /* @__PURE__ */ jsx(InputGroup.Field, {
1352
+ "aria-label": t25,
1353
+ autoComplete: "cc-exp",
1354
+ inputMode: "numeric",
1355
+ placeholder: "MM / YY"
1356
+ });
1357
+ $[52] = t25;
1358
+ $[53] = t26;
1359
+ } else t26 = $[53];
1360
+ let t27;
1361
+ if ($[54] !== t) {
1362
+ t27 = t("code");
1363
+ $[54] = t;
1364
+ $[55] = t27;
1365
+ } else t27 = $[55];
1366
+ let t28;
1367
+ if ($[56] !== t27) {
1368
+ t28 = /* @__PURE__ */ jsx(InputGroup.Field, {
1369
+ "aria-label": t27,
1370
+ autoComplete: "cc-csc",
1371
+ inputMode: "numeric",
1372
+ placeholder: "CVC"
1373
+ });
1374
+ $[56] = t27;
1375
+ $[57] = t28;
1376
+ } else t28 = $[57];
1377
+ let t29;
1378
+ if ($[58] !== t26 || $[59] !== t28) {
1379
+ t29 = /* @__PURE__ */ jsxs(InputGroup.Row, { children: [t26, t28] });
1380
+ $[58] = t26;
1381
+ $[59] = t28;
1382
+ $[60] = t29;
1383
+ } else t29 = $[60];
1384
+ let t30;
1385
+ if ($[61] !== t24 || $[62] !== t29) {
1386
+ t30 = /* @__PURE__ */ jsxs(InputGroup.Root, {
1387
+ size: "sm",
1388
+ children: [t24, t29]
1389
+ });
1390
+ $[61] = t24;
1391
+ $[62] = t29;
1392
+ $[63] = t30;
1393
+ } else t30 = $[63];
1394
+ let t31;
1395
+ if ($[64] !== t) {
1396
+ t31 = t("pay");
1397
+ $[64] = t;
1398
+ $[65] = t31;
1399
+ } else t31 = $[65];
1400
+ let t32;
1401
+ if ($[66] !== t31) {
1402
+ t32 = /* @__PURE__ */ jsx(Button, {
1403
+ size: "sm",
1404
+ children: t31
1405
+ });
1406
+ $[66] = t31;
1407
+ $[67] = t32;
1408
+ } else t32 = $[67];
1409
+ let t33;
1410
+ if ($[68] !== t17 || $[69] !== t21 || $[70] !== t30 || $[71] !== t32) {
1411
+ t33 = /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(Stack, {
1412
+ gap: "md",
1413
+ children: [
1414
+ t17,
1415
+ t21,
1416
+ t30,
1417
+ t32
1418
+ ]
1419
+ }) });
1420
+ $[68] = t17;
1421
+ $[69] = t21;
1422
+ $[70] = t30;
1423
+ $[71] = t32;
1424
+ $[72] = t33;
1425
+ } else t33 = $[72];
1426
+ let t34;
1427
+ if ($[73] !== t15 || $[74] !== t33) {
1428
+ t34 = /* @__PURE__ */ jsx(Body, { children: /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsx(Section, { children: /* @__PURE__ */ jsxs(Grid.Root, {
1429
+ columns: "fit-xs",
1430
+ gap: "xl",
1431
+ children: [t15, t33]
1432
+ }) }) }) });
1433
+ $[73] = t15;
1434
+ $[74] = t33;
1435
+ $[75] = t34;
1436
+ } else t34 = $[75];
1437
+ let t35;
1438
+ if ($[76] !== props || $[77] !== t34 || $[78] !== t6) {
1439
+ t35 = /* @__PURE__ */ jsxs(Root$2, {
1440
+ ...props,
1441
+ children: [t6, t34]
1442
+ });
1443
+ $[76] = props;
1444
+ $[77] = t34;
1445
+ $[78] = t6;
1446
+ $[79] = t35;
1447
+ } else t35 = $[79];
1448
+ return t35;
1449
+ }
1450
+ const source$10 = "import { type ReactElement } from \"react\";\n\nimport { CreditCardIcon, LockIcon } from \"lucide-react\";\n\nimport { Button } from \"@stealthscale/component-actions\";\nimport { DataList } from \"@stealthscale/component-collections\";\nimport { Field, InputGroup } from \"@stealthscale/component-forms\";\nimport { Grid, Stack } from \"@stealthscale/component-layout\";\nimport { Heading, Span, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Toolbar } from \"@stealthscale/component-screen\";\n\nconst ORDER = [\n [\"mugs\", \"£36.00\"],\n [\"shipping\", \"£4.00\"],\n [\"vat\", \"£8.00\"],\n] as const;\n\nexport function Checkout(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"northwind\")} size=\"sm\">\n <Toolbar.Start>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"northwind\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <LockIcon aria-hidden size=\"1em\" />\n <Text as=\"span\" size=\"sm\" tone=\"muted\">\n {t(\"secure\")}\n </Text>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Main>\n <AppShell.Section>\n <Grid.Root columns=\"fit-xs\" gap=\"xl\">\n <Grid.Item>\n <Stack gap=\"md\">\n <Heading as=\"h2\" size=\"xs\">\n {t(\"summary\")}\n </Heading>\n <DataList.Root divided orientation=\"horizontal\" size=\"sm\">\n {ORDER.map(([line, amount]) => (\n <DataList.Item key={line}>\n <DataList.ItemLabel>{t(line)}</DataList.ItemLabel>\n <DataList.ItemValue>{amount}</DataList.ItemValue>\n </DataList.Item>\n ))}\n <DataList.Item>\n <DataList.ItemLabel>{t(\"total\")}</DataList.ItemLabel>\n <DataList.ItemValue>\n <Span weight=\"semibold\">£48.00</Span>\n </DataList.ItemValue>\n </DataList.Item>\n </DataList.Root>\n </Stack>\n </Grid.Item>\n <Grid.Item>\n <Stack gap=\"md\">\n <Heading as=\"h2\" size=\"xs\">\n {t(\"payment\")}\n </Heading>\n <Field.Root size=\"sm\">\n <Field.Label>{t(\"email\")}</Field.Label>\n <Field.Control autoComplete=\"email\" type=\"email\" />\n </Field.Root>\n <InputGroup.Root size=\"sm\">\n <InputGroup.Row>\n <InputGroup.Mark aria-hidden>\n <CreditCardIcon />\n </InputGroup.Mark>\n <InputGroup.Field\n aria-label={t(\"card\")}\n autoComplete=\"cc-number\"\n inputMode=\"numeric\"\n placeholder=\"1234 1234 1234 1234\"\n />\n </InputGroup.Row>\n <InputGroup.Row>\n <InputGroup.Field\n aria-label={t(\"expiry\")}\n autoComplete=\"cc-exp\"\n inputMode=\"numeric\"\n placeholder=\"MM / YY\"\n />\n <InputGroup.Field\n aria-label={t(\"code\")}\n autoComplete=\"cc-csc\"\n inputMode=\"numeric\"\n placeholder=\"CVC\"\n />\n </InputGroup.Row>\n </InputGroup.Root>\n <Button size=\"sm\">{t(\"pay\")}</Button>\n </Stack>\n </Grid.Item>\n </Grid.Root>\n </AppShell.Section>\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
1451
+ //#endregion
1452
+ //#region src/app-shell/examples/console.example.tsx
1453
+ var console_example_exports = /* @__PURE__ */ __exportAll({
1454
+ Console: () => Console,
1455
+ source: () => source$9
1456
+ });
1457
+ const PAGES = [
1458
+ [
1459
+ "runs",
1460
+ PlayIcon,
1461
+ "page",
1462
+ "12"
1463
+ ],
1464
+ [
1465
+ "pipelines",
1466
+ GitBranchIcon,
1467
+ void 0,
1468
+ void 0
1469
+ ],
1470
+ [
1471
+ "approvals",
1472
+ ShieldCheckIcon,
1473
+ void 0,
1474
+ "3"
1475
+ ],
1476
+ [
1477
+ "environments",
1478
+ LayersIcon,
1479
+ void 0,
1480
+ void 0
1481
+ ],
1482
+ [
1483
+ "settings",
1484
+ SettingsIcon,
1485
+ void 0,
1486
+ void 0
1487
+ ]
1488
+ ];
1489
+ const RUNS = [
1490
+ [
1491
+ "4128",
1492
+ "main",
1493
+ "success",
1494
+ "passed",
1495
+ "4m 12s"
1496
+ ],
1497
+ [
1498
+ "4127",
1499
+ "main",
1500
+ "success",
1501
+ "passed",
1502
+ "4m 34s"
1503
+ ],
1504
+ [
1505
+ "4126",
1506
+ "fix/retry",
1507
+ "error",
1508
+ "failed",
1509
+ "1m 08s"
1510
+ ]
1511
+ ];
1512
+ const FACTS$1 = [
1513
+ ["started", "clock"],
1514
+ ["duration", "took"],
1515
+ ["trigger", "push"]
1516
+ ];
1517
+ function Console(props) {
1518
+ const $ = c(126);
1519
+ const { t } = useWords("app-shell");
1520
+ const runs = useId();
1521
+ let t0;
1522
+ if ($[0] !== t) {
1523
+ t0 = t("ledger");
1524
+ $[0] = t;
1525
+ $[1] = t0;
1526
+ } else t0 = $[1];
1527
+ let t1;
1528
+ if ($[2] !== t) {
1529
+ t1 = t("navigation");
1530
+ $[2] = t;
1531
+ $[3] = t1;
1532
+ } else t1 = $[3];
1533
+ let t2;
1534
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
1535
+ t2 = /* @__PURE__ */ jsx(MenuIcon, {});
1536
+ $[4] = t2;
1537
+ } else t2 = $[4];
1538
+ let t3;
1539
+ if ($[5] !== t1) {
1540
+ t3 = /* @__PURE__ */ jsx(Item, {
1541
+ "aria-label": t1,
1542
+ as: Trigger,
1543
+ shape: "square",
1544
+ children: t2
1545
+ });
1546
+ $[5] = t1;
1547
+ $[6] = t3;
1548
+ } else t3 = $[6];
1549
+ let t4;
1550
+ if ($[7] !== t) {
1551
+ t4 = t("ledger");
1552
+ $[7] = t;
1553
+ $[8] = t4;
1554
+ } else t4 = $[8];
1555
+ let t5;
1556
+ if ($[9] !== t4) {
1557
+ t5 = /* @__PURE__ */ jsx(Text, {
1558
+ as: "span",
1559
+ size: "sm",
1560
+ weight: "semibold",
1561
+ children: t4
1562
+ });
1563
+ $[9] = t4;
1564
+ $[10] = t5;
1565
+ } else t5 = $[10];
1566
+ let t6;
1567
+ if ($[11] !== t3 || $[12] !== t5) {
1568
+ t6 = /* @__PURE__ */ jsxs(Start, { children: [t3, t5] });
1569
+ $[11] = t3;
1570
+ $[12] = t5;
1571
+ $[13] = t6;
1572
+ } else t6 = $[13];
1573
+ let t7;
1574
+ if ($[14] !== t) {
1575
+ t7 = t("newRun");
1576
+ $[14] = t;
1577
+ $[15] = t7;
1578
+ } else t7 = $[15];
1579
+ let t8;
1580
+ if ($[16] !== t7) {
1581
+ t8 = /* @__PURE__ */ jsx(Action, {
1582
+ primary: true,
1583
+ children: t7
1584
+ });
1585
+ $[16] = t7;
1586
+ $[17] = t8;
1587
+ } else t8 = $[17];
1588
+ let t9;
1589
+ if ($[18] !== t) {
1590
+ t9 = t("details");
1591
+ $[18] = t;
1592
+ $[19] = t9;
1593
+ } else t9 = $[19];
1594
+ let t10;
1595
+ if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
1596
+ t10 = /* @__PURE__ */ jsx(PanelRightIcon, {});
1597
+ $[20] = t10;
1598
+ } else t10 = $[20];
1599
+ let t11;
1600
+ if ($[21] !== t9) {
1601
+ t11 = /* @__PURE__ */ jsx(Item, {
1602
+ "aria-label": t9,
1603
+ as: Trigger,
1604
+ panel: "aside",
1605
+ shape: "square",
1606
+ children: t10
1607
+ });
1608
+ $[21] = t9;
1609
+ $[22] = t11;
1610
+ } else t11 = $[22];
1611
+ let t12;
1612
+ if ($[23] !== t11 || $[24] !== t8) {
1613
+ t12 = /* @__PURE__ */ jsxs(End, { children: [t8, t11] });
1614
+ $[23] = t11;
1615
+ $[24] = t8;
1616
+ $[25] = t12;
1617
+ } else t12 = $[25];
1618
+ let t13;
1619
+ if ($[26] !== t0 || $[27] !== t12 || $[28] !== t6) {
1620
+ t13 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
1621
+ "aria-label": t0,
1622
+ size: "sm",
1623
+ children: [t6, t12]
1624
+ }) });
1625
+ $[26] = t0;
1626
+ $[27] = t12;
1627
+ $[28] = t6;
1628
+ $[29] = t13;
1629
+ } else t13 = $[29];
1630
+ let t14;
1631
+ if ($[30] !== t) {
1632
+ t14 = t("findPage");
1633
+ $[30] = t;
1634
+ $[31] = t14;
1635
+ } else t14 = $[31];
1636
+ let t15;
1637
+ if ($[32] !== t) {
1638
+ t15 = t("filter");
1639
+ $[32] = t;
1640
+ $[33] = t15;
1641
+ } else t15 = $[33];
1642
+ let t16;
1643
+ if ($[34] === Symbol.for("react.memo_cache_sentinel")) {
1644
+ t16 = /* @__PURE__ */ jsx(SearchIcon, {});
1645
+ $[34] = t16;
1646
+ } else t16 = $[34];
1647
+ let t17;
1648
+ if ($[35] !== t14 || $[36] !== t15) {
1649
+ t17 = /* @__PURE__ */ jsx(Header$1, { children: /* @__PURE__ */ jsx(Search, {
1650
+ "aria-label": t14,
1651
+ placeholder: t15,
1652
+ searchIndicator: t16
1653
+ }) });
1654
+ $[35] = t14;
1655
+ $[36] = t15;
1656
+ $[37] = t17;
1657
+ } else t17 = $[37];
1658
+ let t18;
1659
+ if ($[38] !== t) {
1660
+ t18 = t("platform");
1661
+ $[38] = t;
1662
+ $[39] = t18;
1663
+ } else t18 = $[39];
1664
+ let t19;
1665
+ if ($[40] !== t18) {
1666
+ t19 = /* @__PURE__ */ jsx(NavLabel, { children: t18 });
1667
+ $[40] = t18;
1668
+ $[41] = t19;
1669
+ } else t19 = $[41];
1670
+ let t20;
1671
+ if ($[42] !== t) {
1672
+ t20 = PAGES.map((t21) => {
1673
+ const [page, Glyph, current, count] = t21;
1674
+ return /* @__PURE__ */ jsxs(NavList.Item, { children: [/* @__PURE__ */ jsxs(NavList.Link, {
1675
+ "aria-current": current,
1676
+ href: `#${page}`,
1677
+ tooltip: t(page),
1678
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(page) })]
1679
+ }), count === void 0 ? null : /* @__PURE__ */ jsx(NavList.Badge, { children: count })] }, page);
1680
+ });
1681
+ $[42] = t;
1682
+ $[43] = t20;
1683
+ } else t20 = $[43];
1684
+ let t21;
1685
+ if ($[44] !== t20) {
1686
+ t21 = /* @__PURE__ */ jsx(NavList.Root, { children: t20 });
1687
+ $[44] = t20;
1688
+ $[45] = t21;
1689
+ } else t21 = $[45];
1690
+ let t22;
1691
+ if ($[46] !== t19 || $[47] !== t21) {
1692
+ t22 = /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(Nav, { children: [t19, t21] }) });
1693
+ $[46] = t19;
1694
+ $[47] = t21;
1695
+ $[48] = t22;
1696
+ } else t22 = $[48];
1697
+ let t23;
1698
+ if ($[49] !== t) {
1699
+ t23 = t("version");
1700
+ $[49] = t;
1701
+ $[50] = t23;
1702
+ } else t23 = $[50];
1703
+ let t24;
1704
+ if ($[51] !== t23) {
1705
+ t24 = /* @__PURE__ */ jsx(Footer$1, { children: /* @__PURE__ */ jsx(Text, {
1706
+ size: "sm",
1707
+ tone: "muted",
1708
+ children: t23
1709
+ }) });
1710
+ $[51] = t23;
1711
+ $[52] = t24;
1712
+ } else t24 = $[52];
1713
+ let t25;
1714
+ if ($[53] !== t17 || $[54] !== t22 || $[55] !== t24) {
1715
+ t25 = /* @__PURE__ */ jsx(Navbar, {
1716
+ collapse: "icons",
1717
+ foldsBelow: "sm",
1718
+ shortcut: "b",
1719
+ children: /* @__PURE__ */ jsxs(Root$1, {
1720
+ variant: "subtle",
1721
+ children: [
1722
+ t17,
1723
+ t22,
1724
+ t24
1725
+ ]
1726
+ })
1727
+ });
1728
+ $[53] = t17;
1729
+ $[54] = t22;
1730
+ $[55] = t24;
1731
+ $[56] = t25;
1732
+ } else t25 = $[56];
1733
+ let t26;
1734
+ if ($[57] === Symbol.for("react.memo_cache_sentinel")) {
1735
+ t26 = /* @__PURE__ */ jsx(Rail, {});
1736
+ $[57] = t26;
1737
+ } else t26 = $[57];
1738
+ let t27;
1739
+ if ($[58] !== t) {
1740
+ t27 = t("runs");
1741
+ $[58] = t;
1742
+ $[59] = t27;
1743
+ } else t27 = $[59];
1744
+ let t28;
1745
+ if ($[60] !== runs || $[61] !== t27) {
1746
+ t28 = /* @__PURE__ */ jsx(Heading, {
1747
+ as: "h2",
1748
+ id: runs,
1749
+ size: "sm",
1750
+ children: t27
1751
+ });
1752
+ $[60] = runs;
1753
+ $[61] = t27;
1754
+ $[62] = t28;
1755
+ } else t28 = $[62];
1756
+ let t29;
1757
+ if ($[63] !== t) {
1758
+ t29 = /* @__PURE__ */ jsx(Table.Header, { children: /* @__PURE__ */ jsx(Table.Row, { children: [
1759
+ "run",
1760
+ "branch",
1761
+ "status",
1762
+ "duration"
1763
+ ].map((column) => /* @__PURE__ */ jsx(Table.ColumnHeader, { children: t(column) }, column)) }) });
1764
+ $[63] = t;
1765
+ $[64] = t29;
1766
+ } else t29 = $[64];
1767
+ let t30;
1768
+ if ($[65] !== t) {
1769
+ t30 = RUNS.map((t31) => {
1770
+ const [run, branch, palette, state, took] = t31;
1771
+ return /* @__PURE__ */ jsxs(Table.Row, { children: [
1772
+ /* @__PURE__ */ jsxs(Table.RowHeader, { children: ["#", run] }),
1773
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Code, {
1774
+ size: "sm",
1775
+ children: branch
1776
+ }) }),
1777
+ /* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsxs(Status.Root, {
1778
+ palette,
1779
+ size: "inherit",
1780
+ children: [/* @__PURE__ */ jsx(Status.Indicator, {}), t(state)]
1781
+ }) }),
1782
+ /* @__PURE__ */ jsx(Table.Cell, { children: took })
1783
+ ] }, run);
1784
+ });
1785
+ $[65] = t;
1786
+ $[66] = t30;
1787
+ } else t30 = $[66];
1788
+ let t31;
1789
+ if ($[67] !== t30) {
1790
+ t31 = /* @__PURE__ */ jsx(Table.Body, { children: t30 });
1791
+ $[67] = t30;
1792
+ $[68] = t31;
1793
+ } else t31 = $[68];
1794
+ let t32;
1795
+ if ($[69] !== t29 || $[70] !== t31) {
1796
+ t32 = /* @__PURE__ */ jsxs(Table.Root, { children: [t29, t31] });
1797
+ $[69] = t29;
1798
+ $[70] = t31;
1799
+ $[71] = t32;
1800
+ } else t32 = $[71];
1801
+ let t33;
1802
+ if ($[72] !== runs || $[73] !== t32) {
1803
+ t33 = /* @__PURE__ */ jsx(Table.Scroller, {
1804
+ "aria-labelledby": runs,
1805
+ size: "sm",
1806
+ variant: "surface",
1807
+ children: t32
1808
+ });
1809
+ $[72] = runs;
1810
+ $[73] = t32;
1811
+ $[74] = t33;
1812
+ } else t33 = $[74];
1813
+ let t34;
1814
+ if ($[75] !== t28 || $[76] !== t33) {
1815
+ t34 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsxs(Section, { children: [t28, t33] }) });
1816
+ $[75] = t28;
1817
+ $[76] = t33;
1818
+ $[77] = t34;
1819
+ } else t34 = $[77];
1820
+ let t35;
1821
+ if ($[78] !== t) {
1822
+ t35 = t("run4128");
1823
+ $[78] = t;
1824
+ $[79] = t35;
1825
+ } else t35 = $[79];
1826
+ let t36;
1827
+ if ($[80] !== t35) {
1828
+ t36 = /* @__PURE__ */ jsx(Heading, {
1829
+ as: "h2",
1830
+ size: "xs",
1831
+ children: t35
1832
+ });
1833
+ $[80] = t35;
1834
+ $[81] = t36;
1835
+ } else t36 = $[81];
1836
+ let t37;
1837
+ if ($[82] !== t) {
1838
+ t37 = t("status");
1839
+ $[82] = t;
1840
+ $[83] = t37;
1841
+ } else t37 = $[83];
1842
+ let t38;
1843
+ if ($[84] !== t37) {
1844
+ t38 = /* @__PURE__ */ jsx(DataList.ItemLabel, { children: t37 });
1845
+ $[84] = t37;
1846
+ $[85] = t38;
1847
+ } else t38 = $[85];
1848
+ let t39;
1849
+ if ($[86] === Symbol.for("react.memo_cache_sentinel")) {
1850
+ t39 = /* @__PURE__ */ jsx(Status.Indicator, {});
1851
+ $[86] = t39;
1852
+ } else t39 = $[86];
1853
+ let t40;
1854
+ if ($[87] !== t) {
1855
+ t40 = t("passed");
1856
+ $[87] = t;
1857
+ $[88] = t40;
1858
+ } else t40 = $[88];
1859
+ let t41;
1860
+ if ($[89] !== t40) {
1861
+ t41 = /* @__PURE__ */ jsx(DataList.ItemValue, { children: /* @__PURE__ */ jsxs(Status.Root, {
1862
+ palette: "success",
1863
+ size: "inherit",
1864
+ children: [t39, t40]
1865
+ }) });
1866
+ $[89] = t40;
1867
+ $[90] = t41;
1868
+ } else t41 = $[90];
1869
+ let t42;
1870
+ if ($[91] !== t38 || $[92] !== t41) {
1871
+ t42 = /* @__PURE__ */ jsxs(DataList.Item, { children: [t38, t41] });
1872
+ $[91] = t38;
1873
+ $[92] = t41;
1874
+ $[93] = t42;
1875
+ } else t42 = $[93];
1876
+ let t43;
1877
+ if ($[94] !== t) {
1878
+ t43 = FACTS$1.map((t44) => {
1879
+ const [label, value] = t44;
1880
+ return /* @__PURE__ */ jsxs(DataList.Item, { children: [/* @__PURE__ */ jsx(DataList.ItemLabel, { children: t(label) }), /* @__PURE__ */ jsx(DataList.ItemValue, { children: t(value) })] }, label);
1881
+ });
1882
+ $[94] = t;
1883
+ $[95] = t43;
1884
+ } else t43 = $[95];
1885
+ let t44;
1886
+ if ($[96] !== t42 || $[97] !== t43) {
1887
+ t44 = /* @__PURE__ */ jsxs(DataList.Root, {
1888
+ orientation: "horizontal",
1889
+ size: "sm",
1890
+ children: [t42, t43]
1891
+ });
1892
+ $[96] = t42;
1893
+ $[97] = t43;
1894
+ $[98] = t44;
1895
+ } else t44 = $[98];
1896
+ let t45;
1897
+ if ($[99] !== t36 || $[100] !== t44) {
1898
+ t45 = /* @__PURE__ */ jsx(Aside, {
1899
+ width: "18rem",
1900
+ children: /* @__PURE__ */ jsxs(Section, { children: [t36, t44] })
1901
+ });
1902
+ $[99] = t36;
1903
+ $[100] = t44;
1904
+ $[101] = t45;
1905
+ } else t45 = $[101];
1906
+ let t46;
1907
+ if ($[102] !== t25 || $[103] !== t34 || $[104] !== t45) {
1908
+ t46 = /* @__PURE__ */ jsxs(Body, { children: [
1909
+ t25,
1910
+ t26,
1911
+ t34,
1912
+ t45
1913
+ ] });
1914
+ $[102] = t25;
1915
+ $[103] = t34;
1916
+ $[104] = t45;
1917
+ $[105] = t46;
1918
+ } else t46 = $[105];
1919
+ let t47;
1920
+ if ($[106] !== t) {
1921
+ t47 = t("statusBar");
1922
+ $[106] = t;
1923
+ $[107] = t47;
1924
+ } else t47 = $[107];
1925
+ let t48;
1926
+ if ($[108] === Symbol.for("react.memo_cache_sentinel")) {
1927
+ t48 = /* @__PURE__ */ jsx(Status.Indicator, {});
1928
+ $[108] = t48;
1929
+ } else t48 = $[108];
1930
+ let t49;
1931
+ if ($[109] !== t) {
1932
+ t49 = t("connected");
1933
+ $[109] = t;
1934
+ $[110] = t49;
1935
+ } else t49 = $[110];
1936
+ let t50;
1937
+ if ($[111] !== t49) {
1938
+ t50 = /* @__PURE__ */ jsxs(Status.Root, {
1939
+ palette: "success",
1940
+ size: "sm",
1941
+ children: [t48, t49]
1942
+ });
1943
+ $[111] = t49;
1944
+ $[112] = t50;
1945
+ } else t50 = $[112];
1946
+ let t51;
1947
+ if ($[113] !== t) {
1948
+ t51 = t("agents");
1949
+ $[113] = t;
1950
+ $[114] = t51;
1951
+ } else t51 = $[114];
1952
+ let t52;
1953
+ if ($[115] !== t51) {
1954
+ t52 = /* @__PURE__ */ jsx(Text, {
1955
+ as: "span",
1956
+ size: "sm",
1957
+ tone: "muted",
1958
+ children: t51
1959
+ });
1960
+ $[115] = t51;
1961
+ $[116] = t52;
1962
+ } else t52 = $[116];
1963
+ let t53;
1964
+ if ($[117] !== t47 || $[118] !== t50 || $[119] !== t52) {
1965
+ t53 = /* @__PURE__ */ jsxs(Status$1, {
1966
+ label: t47,
1967
+ children: [t50, t52]
1968
+ });
1969
+ $[117] = t47;
1970
+ $[118] = t50;
1971
+ $[119] = t52;
1972
+ $[120] = t53;
1973
+ } else t53 = $[120];
1974
+ let t54;
1975
+ if ($[121] !== props || $[122] !== t13 || $[123] !== t46 || $[124] !== t53) {
1976
+ t54 = /* @__PURE__ */ jsxs(Root$2, {
1977
+ ...props,
1978
+ children: [
1979
+ t13,
1980
+ t46,
1981
+ t53
1982
+ ]
1983
+ });
1984
+ $[121] = props;
1985
+ $[122] = t13;
1986
+ $[123] = t46;
1987
+ $[124] = t53;
1988
+ $[125] = t54;
1989
+ } else t54 = $[125];
1990
+ return t54;
1991
+ }
1992
+ const source$9 = "import { type ReactElement, useId } from \"react\";\n\nimport {\n GitBranchIcon,\n LayersIcon,\n MenuIcon,\n PanelRightIcon,\n PlayIcon,\n SearchIcon,\n SettingsIcon,\n ShieldCheckIcon,\n} from \"lucide-react\";\n\nimport { DataList, Table } from \"@stealthscale/component-collections\";\nimport { Status } from \"@stealthscale/component-data\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Code, Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst PAGES = [\n [\"runs\", PlayIcon, \"page\", \"12\"],\n [\"pipelines\", GitBranchIcon, undefined, undefined],\n [\"approvals\", ShieldCheckIcon, undefined, \"3\"],\n [\"environments\", LayersIcon, undefined, undefined],\n [\"settings\", SettingsIcon, undefined, undefined],\n] as const;\n\nconst RUNS = [\n [\"4128\", \"main\", \"success\", \"passed\", \"4m 12s\"],\n [\"4127\", \"main\", \"success\", \"passed\", \"4m 34s\"],\n [\"4126\", \"fix/retry\", \"error\", \"failed\", \"1m 08s\"],\n] as const;\n\nconst FACTS = [\n [\"started\", \"clock\"],\n [\"duration\", \"took\"],\n [\"trigger\", \"push\"],\n] as const;\n\nexport function Console(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n const runs = useId();\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"ledger\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item aria-label={t(\"navigation\")} as={AppShell.Trigger} shape=\"square\">\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"ledger\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action primary>{t(\"newRun\")}</Toolbar.Action>\n <Toolbar.Item\n aria-label={t(\"details\")}\n as={AppShell.Trigger}\n panel=\"aside\"\n shape=\"square\"\n >\n <PanelRightIcon />\n </Toolbar.Item>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar collapse=\"icons\" foldsBelow=\"sm\" shortcut=\"b\">\n <Sidebar.Root variant=\"subtle\">\n <Sidebar.Header>\n <Sidebar.Search\n aria-label={t(\"findPage\")}\n placeholder={t(\"filter\")}\n searchIndicator={<SearchIcon />}\n />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Nav>\n <Sidebar.NavLabel>{t(\"platform\")}</Sidebar.NavLabel>\n <NavList.Root>\n {PAGES.map(([page, Glyph, current, count]) => (\n <NavList.Item key={page}>\n <NavList.Link aria-current={current} href={`#${page}`} tooltip={t(page)}>\n <Glyph />\n <span>{t(page)}</span>\n </NavList.Link>\n {count === undefined ? null : <NavList.Badge>{count}</NavList.Badge>}\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Text size=\"sm\" tone=\"muted\">\n {t(\"version\")}\n </Text>\n </Sidebar.Footer>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Rail />\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" id={runs} size=\"sm\">\n {t(\"runs\")}\n </Heading>\n <Table.Scroller aria-labelledby={runs} size=\"sm\" variant=\"surface\">\n <Table.Root>\n <Table.Header>\n <Table.Row>\n {[\"run\", \"branch\", \"status\", \"duration\"].map((column) => (\n <Table.ColumnHeader key={column}>{t(column)}</Table.ColumnHeader>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {RUNS.map(([run, branch, palette, state, took]) => (\n <Table.Row key={run}>\n <Table.RowHeader>#{run}</Table.RowHeader>\n <Table.Cell>\n <Code size=\"sm\">{branch}</Code>\n </Table.Cell>\n <Table.Cell>\n <Status.Root palette={palette} size=\"inherit\">\n <Status.Indicator />\n {t(state)}\n </Status.Root>\n </Table.Cell>\n <Table.Cell>{took}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n </Table.Scroller>\n </AppShell.Section>\n </AppShell.Main>\n <AppShell.Aside width=\"18rem\">\n <AppShell.Section>\n <Heading as=\"h2\" size=\"xs\">\n {t(\"run4128\")}\n </Heading>\n <DataList.Root orientation=\"horizontal\" size=\"sm\">\n <DataList.Item>\n <DataList.ItemLabel>{t(\"status\")}</DataList.ItemLabel>\n <DataList.ItemValue>\n <Status.Root palette=\"success\" size=\"inherit\">\n <Status.Indicator />\n {t(\"passed\")}\n </Status.Root>\n </DataList.ItemValue>\n </DataList.Item>\n {FACTS.map(([label, value]) => (\n <DataList.Item key={label}>\n <DataList.ItemLabel>{t(label)}</DataList.ItemLabel>\n <DataList.ItemValue>{t(value)}</DataList.ItemValue>\n </DataList.Item>\n ))}\n </DataList.Root>\n </AppShell.Section>\n </AppShell.Aside>\n </AppShell.Body>\n <AppShell.Status label={t(\"statusBar\")}>\n <Status.Root palette=\"success\" size=\"sm\">\n <Status.Indicator />\n {t(\"connected\")}\n </Status.Root>\n <Text as=\"span\" size=\"sm\" tone=\"muted\">\n {t(\"agents\")}\n </Text>\n </AppShell.Status>\n </AppShell.Root>\n );\n}\n";
1993
+ //#endregion
1994
+ //#region src/app-shell/examples/files.example.tsx
1995
+ var files_example_exports = /* @__PURE__ */ __exportAll({
1996
+ Files: () => Files,
1997
+ source: () => source$8
1998
+ });
1999
+ const FOLDERS$1 = [
2000
+ ["contracts", "page"],
2001
+ ["invoices", void 0],
2002
+ ["receipts", void 0],
2003
+ ["reports", void 0]
2004
+ ];
2005
+ const DOCUMENTS = [
2006
+ "agreementNorthwind",
2007
+ "orderLedger",
2008
+ "renewalRelay"
2009
+ ];
2010
+ const WIDTH = 240;
2011
+ function Files(props) {
2012
+ const $ = c(65);
2013
+ const { t } = useWords("app-shell");
2014
+ const [width, setWidth] = useState(WIDTH);
2015
+ let t0;
2016
+ if ($[0] !== t) {
2017
+ t0 = t("filesApp");
2018
+ $[0] = t;
2019
+ $[1] = t0;
2020
+ } else t0 = $[1];
2021
+ let t1;
2022
+ if ($[2] !== t) {
2023
+ t1 = t("moreFiles");
2024
+ $[2] = t;
2025
+ $[3] = t1;
2026
+ } else t1 = $[3];
2027
+ let t2;
2028
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
2029
+ t2 = /* @__PURE__ */ jsx(EllipsisIcon, { size: "1em" });
2030
+ $[4] = t2;
2031
+ } else t2 = $[4];
2032
+ let t3;
2033
+ if ($[5] !== t) {
2034
+ t3 = t("folders");
2035
+ $[5] = t;
2036
+ $[6] = t3;
2037
+ } else t3 = $[6];
2038
+ let t4;
2039
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
2040
+ t4 = /* @__PURE__ */ jsx(MenuIcon, {});
2041
+ $[7] = t4;
2042
+ } else t4 = $[7];
2043
+ let t5;
2044
+ if ($[8] !== t3) {
2045
+ t5 = /* @__PURE__ */ jsx(Item, {
2046
+ "aria-label": t3,
2047
+ as: Trigger,
2048
+ panel: "folders",
2049
+ shape: "square",
2050
+ children: t4
2051
+ });
2052
+ $[8] = t3;
2053
+ $[9] = t5;
2054
+ } else t5 = $[9];
2055
+ let t6;
2056
+ if ($[10] !== t) {
2057
+ t6 = t("filesApp");
2058
+ $[10] = t;
2059
+ $[11] = t6;
2060
+ } else t6 = $[11];
2061
+ let t7;
2062
+ if ($[12] !== t6) {
2063
+ t7 = /* @__PURE__ */ jsx(Text, {
2064
+ as: "span",
2065
+ size: "sm",
2066
+ weight: "semibold",
2067
+ children: t6
2068
+ });
2069
+ $[12] = t6;
2070
+ $[13] = t7;
2071
+ } else t7 = $[13];
2072
+ let t8;
2073
+ if ($[14] !== t5 || $[15] !== t7) {
2074
+ t8 = /* @__PURE__ */ jsxs(Start, { children: [t5, t7] });
2075
+ $[14] = t5;
2076
+ $[15] = t7;
2077
+ $[16] = t8;
2078
+ } else t8 = $[16];
2079
+ let t9;
2080
+ if ($[17] !== t || $[18] !== width) {
2081
+ t9 = t("foldersWidth", { width });
2082
+ $[17] = t;
2083
+ $[18] = width;
2084
+ $[19] = t9;
2085
+ } else t9 = $[19];
2086
+ let t10;
2087
+ if ($[20] !== t9) {
2088
+ t10 = /* @__PURE__ */ jsx(Text, {
2089
+ as: "output",
2090
+ size: "sm",
2091
+ tone: "muted",
2092
+ children: t9
2093
+ });
2094
+ $[20] = t9;
2095
+ $[21] = t10;
2096
+ } else t10 = $[21];
2097
+ let t11;
2098
+ if ($[22] === Symbol.for("react.memo_cache_sentinel")) {
2099
+ t11 = () => {
2100
+ setWidth(WIDTH);
2101
+ };
2102
+ $[22] = t11;
2103
+ } else t11 = $[22];
2104
+ let t12;
2105
+ if ($[23] !== t) {
2106
+ t12 = t("resetWidth");
2107
+ $[23] = t;
2108
+ $[24] = t12;
2109
+ } else t12 = $[24];
2110
+ let t13;
2111
+ if ($[25] !== t12) {
2112
+ t13 = /* @__PURE__ */ jsx(Action, {
2113
+ onClick: t11,
2114
+ children: t12
2115
+ });
2116
+ $[25] = t12;
2117
+ $[26] = t13;
2118
+ } else t13 = $[26];
2119
+ let t14;
2120
+ if ($[27] !== t10 || $[28] !== t13) {
2121
+ t14 = /* @__PURE__ */ jsxs(End, { children: [t10, t13] });
2122
+ $[27] = t10;
2123
+ $[28] = t13;
2124
+ $[29] = t14;
2125
+ } else t14 = $[29];
2126
+ let t15;
2127
+ if ($[30] !== t0 || $[31] !== t1 || $[32] !== t14 || $[33] !== t8) {
2128
+ t15 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
2129
+ "aria-label": t0,
2130
+ more: t1,
2131
+ moreIcon: t2,
2132
+ size: "sm",
2133
+ children: [t8, t14]
2134
+ }) });
2135
+ $[30] = t0;
2136
+ $[31] = t1;
2137
+ $[32] = t14;
2138
+ $[33] = t8;
2139
+ $[34] = t15;
2140
+ } else t15 = $[34];
2141
+ let t16;
2142
+ if ($[35] !== t) {
2143
+ t16 = t("folders");
2144
+ $[35] = t;
2145
+ $[36] = t16;
2146
+ } else t16 = $[36];
2147
+ let t17;
2148
+ if ($[37] !== t16) {
2149
+ t17 = /* @__PURE__ */ jsx(NavLabel, { children: t16 });
2150
+ $[37] = t16;
2151
+ $[38] = t17;
2152
+ } else t17 = $[38];
2153
+ let t18;
2154
+ if ($[39] !== t) {
2155
+ t18 = FOLDERS$1.map((t19) => {
2156
+ const [folder, current] = t19;
2157
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
2158
+ "aria-current": current,
2159
+ href: `#${folder}`,
2160
+ children: [/* @__PURE__ */ jsx(FolderIcon, {}), /* @__PURE__ */ jsx("span", { children: t(folder) })]
2161
+ }) }, folder);
2162
+ });
2163
+ $[39] = t;
2164
+ $[40] = t18;
2165
+ } else t18 = $[40];
2166
+ let t19;
2167
+ if ($[41] !== t18) {
2168
+ t19 = /* @__PURE__ */ jsx(NavList.Root, { children: t18 });
2169
+ $[41] = t18;
2170
+ $[42] = t19;
2171
+ } else t19 = $[42];
2172
+ let t20;
2173
+ if ($[43] !== t17 || $[44] !== t19) {
2174
+ t20 = /* @__PURE__ */ jsx(Root$1, { children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(Nav, { children: [t17, t19] }) }) });
2175
+ $[43] = t17;
2176
+ $[44] = t19;
2177
+ $[45] = t20;
2178
+ } else t20 = $[45];
2179
+ let t21;
2180
+ if ($[46] !== t20 || $[47] !== width) {
2181
+ t21 = /* @__PURE__ */ jsx(Navbar, {
2182
+ maxSize: 360,
2183
+ minSize: 200,
2184
+ name: "folders",
2185
+ onSizeChange: setWidth,
2186
+ resizable: true,
2187
+ size: width,
2188
+ children: t20
2189
+ });
2190
+ $[46] = t20;
2191
+ $[47] = width;
2192
+ $[48] = t21;
2193
+ } else t21 = $[48];
2194
+ let t22;
2195
+ if ($[49] !== t) {
2196
+ t22 = t("resizeFolders");
2197
+ $[49] = t;
2198
+ $[50] = t22;
2199
+ } else t22 = $[50];
2200
+ let t23;
2201
+ if ($[51] !== t22) {
2202
+ t23 = /* @__PURE__ */ jsx(Rail, {
2203
+ panel: "folders",
2204
+ resizeLabel: t22
2205
+ });
2206
+ $[51] = t22;
2207
+ $[52] = t23;
2208
+ } else t23 = $[52];
2209
+ let t24;
2210
+ if ($[53] !== t) {
2211
+ t24 = DOCUMENTS.map((document) => /* @__PURE__ */ jsxs(Stack, {
2212
+ direction: "row",
2213
+ gap: "xs",
2214
+ children: [/* @__PURE__ */ jsx(FileTextIcon, {
2215
+ "aria-hidden": true,
2216
+ size: "1em"
2217
+ }), /* @__PURE__ */ jsx(Text, {
2218
+ size: "sm",
2219
+ children: t(document)
2220
+ })]
2221
+ }, document));
2222
+ $[53] = t;
2223
+ $[54] = t24;
2224
+ } else t24 = $[54];
2225
+ let t25;
2226
+ if ($[55] !== t24) {
2227
+ t25 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsx(Section, { children: t24 }) });
2228
+ $[55] = t24;
2229
+ $[56] = t25;
2230
+ } else t25 = $[56];
2231
+ let t26;
2232
+ if ($[57] !== t21 || $[58] !== t23 || $[59] !== t25) {
2233
+ t26 = /* @__PURE__ */ jsxs(Body, { children: [
2234
+ t21,
2235
+ t23,
2236
+ t25
2237
+ ] });
2238
+ $[57] = t21;
2239
+ $[58] = t23;
2240
+ $[59] = t25;
2241
+ $[60] = t26;
2242
+ } else t26 = $[60];
2243
+ let t27;
2244
+ if ($[61] !== props || $[62] !== t15 || $[63] !== t26) {
2245
+ t27 = /* @__PURE__ */ jsxs(Root$2, {
2246
+ ...props,
2247
+ children: [t15, t26]
2248
+ });
2249
+ $[61] = props;
2250
+ $[62] = t15;
2251
+ $[63] = t26;
2252
+ $[64] = t27;
2253
+ } else t27 = $[64];
2254
+ return t27;
2255
+ }
2256
+ const source$8 = "import { type ReactElement, useState } from \"react\";\n\nimport { EllipsisIcon, FileTextIcon, FolderIcon, MenuIcon } from \"lucide-react\";\n\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst FOLDERS = [\n [\"contracts\", \"page\"],\n [\"invoices\", undefined],\n [\"receipts\", undefined],\n [\"reports\", undefined],\n] as const;\n\nconst DOCUMENTS = [\"agreementNorthwind\", \"orderLedger\", \"renewalRelay\"] as const;\n\nconst WIDTH = 240;\n\nexport function Files(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n const [width, setWidth] = useState(WIDTH);\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Header>\n <Toolbar.Root\n aria-label={t(\"filesApp\")}\n more={t(\"moreFiles\")}\n moreIcon={<EllipsisIcon size=\"1em\" />}\n size=\"sm\"\n >\n <Toolbar.Start>\n <Toolbar.Item\n aria-label={t(\"folders\")}\n as={AppShell.Trigger}\n panel=\"folders\"\n shape=\"square\"\n >\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"filesApp\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Text as=\"output\" size=\"sm\" tone=\"muted\">\n {t(\"foldersWidth\", { width })}\n </Text>\n <Toolbar.Action\n onClick={() => {\n setWidth(WIDTH);\n }}\n >\n {t(\"resetWidth\")}\n </Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar\n maxSize={360}\n minSize={200}\n name=\"folders\"\n onSizeChange={setWidth}\n resizable\n size={width}\n >\n <Sidebar.Root>\n <Sidebar.Content>\n <Sidebar.Nav>\n <Sidebar.NavLabel>{t(\"folders\")}</Sidebar.NavLabel>\n <NavList.Root>\n {FOLDERS.map(([folder, current]) => (\n <NavList.Item key={folder}>\n <NavList.Link aria-current={current} href={`#${folder}`}>\n <FolderIcon />\n <span>{t(folder)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Rail panel=\"folders\" resizeLabel={t(\"resizeFolders\")} />\n <AppShell.Main>\n <AppShell.Section>\n {DOCUMENTS.map((document) => (\n <Stack direction=\"row\" gap=\"xs\" key={document}>\n <FileTextIcon aria-hidden size=\"1em\" />\n <Text size=\"sm\">{t(document)}</Text>\n </Stack>\n ))}\n </AppShell.Section>\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
2257
+ //#endregion
2258
+ //#region src/app-shell/examples/handbook.example.tsx
2259
+ var handbook_example_exports = /* @__PURE__ */ __exportAll({
2260
+ Handbook: () => Handbook,
2261
+ source: () => source$7
2262
+ });
2263
+ const CHAPTERS = [
2264
+ [
2265
+ "gettingStarted",
2266
+ CompassIcon,
2267
+ void 0
2268
+ ],
2269
+ [
2270
+ "workingHere",
2271
+ BriefcaseIcon,
2272
+ "page"
2273
+ ],
2274
+ [
2275
+ "tools",
2276
+ WrenchIcon,
2277
+ void 0
2278
+ ],
2279
+ [
2280
+ "onCall",
2281
+ BookOpenIcon,
2282
+ void 0
2283
+ ],
2284
+ [
2285
+ "leave",
2286
+ CalendarIcon,
2287
+ void 0
2288
+ ]
2289
+ ];
2290
+ const SECTIONS$2 = [
2291
+ "hours",
2292
+ "meetings",
2293
+ "writing"
2294
+ ];
2295
+ function Handbook(props) {
2296
+ const $ = c(59);
2297
+ const { t } = useWords("app-shell");
2298
+ let t0;
2299
+ if ($[0] !== t) {
2300
+ t0 = t("handbookName");
2301
+ $[0] = t;
2302
+ $[1] = t0;
2303
+ } else t0 = $[1];
2304
+ let t1;
2305
+ if ($[2] !== t0) {
2306
+ t1 = /* @__PURE__ */ jsx(NavLabel, { children: t0 });
2307
+ $[2] = t0;
2308
+ $[3] = t1;
2309
+ } else t1 = $[3];
2310
+ let t2;
2311
+ if ($[4] !== t) {
2312
+ t2 = CHAPTERS.map((t3) => {
2313
+ const [chapter, Glyph, current] = t3;
2314
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
2315
+ "aria-current": current,
2316
+ href: `#${chapter}`,
2317
+ tooltip: t(chapter),
2318
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(chapter) })]
2319
+ }) }, chapter);
2320
+ });
2321
+ $[4] = t;
2322
+ $[5] = t2;
2323
+ } else t2 = $[5];
2324
+ let t3;
2325
+ if ($[6] !== t2) {
2326
+ t3 = /* @__PURE__ */ jsx(NavList.Root, { children: t2 });
2327
+ $[6] = t2;
2328
+ $[7] = t3;
2329
+ } else t3 = $[7];
2330
+ let t4;
2331
+ if ($[8] !== t1 || $[9] !== t3) {
2332
+ t4 = /* @__PURE__ */ jsx(Navbar, {
2333
+ collapse: "icons",
2334
+ foldsBelow: "sm",
2335
+ width: "13rem",
2336
+ children: /* @__PURE__ */ jsx(Root$1, { children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(Nav, { children: [t1, t3] }) }) })
2337
+ });
2338
+ $[8] = t1;
2339
+ $[9] = t3;
2340
+ $[10] = t4;
2341
+ } else t4 = $[10];
2342
+ let t5;
2343
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
2344
+ t5 = /* @__PURE__ */ jsx(Rail, {});
2345
+ $[11] = t5;
2346
+ } else t5 = $[11];
2347
+ let t6;
2348
+ if ($[12] !== t) {
2349
+ t6 = t("handbookBrand");
2350
+ $[12] = t;
2351
+ $[13] = t6;
2352
+ } else t6 = $[13];
2353
+ let t7;
2354
+ if ($[14] !== t) {
2355
+ t7 = t("navigation");
2356
+ $[14] = t;
2357
+ $[15] = t7;
2358
+ } else t7 = $[15];
2359
+ let t8;
2360
+ if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
2361
+ t8 = /* @__PURE__ */ jsx(MenuIcon, {});
2362
+ $[16] = t8;
2363
+ } else t8 = $[16];
2364
+ let t9;
2365
+ if ($[17] !== t7) {
2366
+ t9 = /* @__PURE__ */ jsx(Item, {
2367
+ "aria-label": t7,
2368
+ as: Trigger,
2369
+ shape: "square",
2370
+ children: t8
2371
+ });
2372
+ $[17] = t7;
2373
+ $[18] = t9;
2374
+ } else t9 = $[18];
2375
+ let t10;
2376
+ if ($[19] !== t) {
2377
+ t10 = t("handbookBrand");
2378
+ $[19] = t;
2379
+ $[20] = t10;
2380
+ } else t10 = $[20];
2381
+ let t11;
2382
+ if ($[21] !== t10) {
2383
+ t11 = /* @__PURE__ */ jsx(Text, {
2384
+ as: "span",
2385
+ size: "sm",
2386
+ weight: "semibold",
2387
+ children: t10
2388
+ });
2389
+ $[21] = t10;
2390
+ $[22] = t11;
2391
+ } else t11 = $[22];
2392
+ let t12;
2393
+ if ($[23] !== t11 || $[24] !== t9) {
2394
+ t12 = /* @__PURE__ */ jsxs(Start, { children: [t9, t11] });
2395
+ $[23] = t11;
2396
+ $[24] = t9;
2397
+ $[25] = t12;
2398
+ } else t12 = $[25];
2399
+ let t13;
2400
+ if ($[26] !== t12 || $[27] !== t6) {
2401
+ t13 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsx(Root, {
2402
+ "aria-label": t6,
2403
+ size: "sm",
2404
+ children: t12
2405
+ }) });
2406
+ $[26] = t12;
2407
+ $[27] = t6;
2408
+ $[28] = t13;
2409
+ } else t13 = $[28];
2410
+ let t14;
2411
+ if ($[29] !== t) {
2412
+ t14 = t("workingHere");
2413
+ $[29] = t;
2414
+ $[30] = t14;
2415
+ } else t14 = $[30];
2416
+ let t15;
2417
+ if ($[31] !== t14) {
2418
+ t15 = /* @__PURE__ */ jsx(Heading, {
2419
+ as: "h2",
2420
+ size: "md",
2421
+ children: t14
2422
+ });
2423
+ $[31] = t14;
2424
+ $[32] = t15;
2425
+ } else t15 = $[32];
2426
+ let t16;
2427
+ if ($[33] !== t) {
2428
+ t16 = t("workingHereAbout");
2429
+ $[33] = t;
2430
+ $[34] = t16;
2431
+ } else t16 = $[34];
2432
+ let t17;
2433
+ if ($[35] !== t16) {
2434
+ t17 = /* @__PURE__ */ jsx(Text, {
2435
+ size: "sm",
2436
+ tone: "muted",
2437
+ children: t16
2438
+ });
2439
+ $[35] = t16;
2440
+ $[36] = t17;
2441
+ } else t17 = $[36];
2442
+ let t18;
2443
+ if ($[37] !== t15 || $[38] !== t17) {
2444
+ t18 = /* @__PURE__ */ jsxs(Section, { children: [t15, t17] });
2445
+ $[37] = t15;
2446
+ $[38] = t17;
2447
+ $[39] = t18;
2448
+ } else t18 = $[39];
2449
+ let t19;
2450
+ if ($[40] !== t) {
2451
+ t19 = SECTIONS$2.map((section) => /* @__PURE__ */ jsxs(Section, { children: [
2452
+ /* @__PURE__ */ jsx(Heading, {
2453
+ as: "h3",
2454
+ size: "xs",
2455
+ children: t(section)
2456
+ }),
2457
+ /* @__PURE__ */ jsx(Text, {
2458
+ size: "sm",
2459
+ children: t(`${section}One`)
2460
+ }),
2461
+ /* @__PURE__ */ jsx(Text, {
2462
+ size: "sm",
2463
+ children: t(`${section}Two`)
2464
+ })
2465
+ ] }, section));
2466
+ $[40] = t;
2467
+ $[41] = t19;
2468
+ } else t19 = $[41];
2469
+ let t20;
2470
+ if ($[42] !== t18 || $[43] !== t19) {
2471
+ t20 = /* @__PURE__ */ jsxs(Main, { children: [t18, t19] });
2472
+ $[42] = t18;
2473
+ $[43] = t19;
2474
+ $[44] = t20;
2475
+ } else t20 = $[44];
2476
+ let t21;
2477
+ if ($[45] !== t) {
2478
+ t21 = t("update");
2479
+ $[45] = t;
2480
+ $[46] = t21;
2481
+ } else t21 = $[46];
2482
+ let t22;
2483
+ if ($[47] !== t21) {
2484
+ t22 = /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsx(Text, {
2485
+ size: "sm",
2486
+ tone: "muted",
2487
+ children: t21
2488
+ }) });
2489
+ $[47] = t21;
2490
+ $[48] = t22;
2491
+ } else t22 = $[48];
2492
+ let t23;
2493
+ if ($[49] !== t13 || $[50] !== t20 || $[51] !== t22) {
2494
+ t23 = /* @__PURE__ */ jsxs(Pane, { children: [
2495
+ t13,
2496
+ t20,
2497
+ t22
2498
+ ] });
2499
+ $[49] = t13;
2500
+ $[50] = t20;
2501
+ $[51] = t22;
2502
+ $[52] = t23;
2503
+ } else t23 = $[52];
2504
+ let t24;
2505
+ if ($[53] !== t23 || $[54] !== t4) {
2506
+ t24 = /* @__PURE__ */ jsxs(Body, { children: [
2507
+ t4,
2508
+ t5,
2509
+ t23
2510
+ ] });
2511
+ $[53] = t23;
2512
+ $[54] = t4;
2513
+ $[55] = t24;
2514
+ } else t24 = $[55];
2515
+ let t25;
2516
+ if ($[56] !== props || $[57] !== t24) {
2517
+ t25 = /* @__PURE__ */ jsx(Root$2, {
2518
+ variant: "inset",
2519
+ ...props,
2520
+ children: t24
2521
+ });
2522
+ $[56] = props;
2523
+ $[57] = t24;
2524
+ $[58] = t25;
2525
+ } else t25 = $[58];
2526
+ return t25;
2527
+ }
2528
+ const source$7 = "import { type ReactElement } from \"react\";\n\nimport {\n BookOpenIcon,\n BriefcaseIcon,\n CalendarIcon,\n CompassIcon,\n MenuIcon,\n WrenchIcon,\n} from \"lucide-react\";\n\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst CHAPTERS = [\n [\"gettingStarted\", CompassIcon, undefined],\n [\"workingHere\", BriefcaseIcon, \"page\"],\n [\"tools\", WrenchIcon, undefined],\n [\"onCall\", BookOpenIcon, undefined],\n [\"leave\", CalendarIcon, undefined],\n] as const;\n\nconst SECTIONS = [\"hours\", \"meetings\", \"writing\"] as const;\n\nexport function Handbook(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root variant=\"inset\" {...props}>\n <AppShell.Body>\n <AppShell.Navbar collapse=\"icons\" foldsBelow=\"sm\" width=\"13rem\">\n <Sidebar.Root>\n <Sidebar.Content>\n <Sidebar.Nav>\n <Sidebar.NavLabel>{t(\"handbookName\")}</Sidebar.NavLabel>\n <NavList.Root>\n {CHAPTERS.map(([chapter, Glyph, current]) => (\n <NavList.Item key={chapter}>\n <NavList.Link\n aria-current={current}\n href={`#${chapter}`}\n tooltip={t(chapter)}\n >\n <Glyph />\n <span>{t(chapter)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Rail />\n <AppShell.Pane>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"handbookBrand\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item aria-label={t(\"navigation\")} as={AppShell.Trigger} shape=\"square\">\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"handbookBrand\")}\n </Text>\n </Toolbar.Start>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" size=\"md\">\n {t(\"workingHere\")}\n </Heading>\n <Text size=\"sm\" tone=\"muted\">\n {t(\"workingHereAbout\")}\n </Text>\n </AppShell.Section>\n {SECTIONS.map((section) => (\n <AppShell.Section key={section}>\n <Heading as=\"h3\" size=\"xs\">\n {t(section)}\n </Heading>\n <Text size=\"sm\">{t(`${section}One`)}</Text>\n <Text size=\"sm\">{t(`${section}Two`)}</Text>\n </AppShell.Section>\n ))}\n </AppShell.Main>\n <AppShell.Footer>\n <Text size=\"sm\" tone=\"muted\">\n {t(\"update\")}\n </Text>\n </AppShell.Footer>\n </AppShell.Pane>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
2529
+ //#endregion
2530
+ //#region src/app-shell/examples/journal.example.tsx
2531
+ var journal_example_exports = /* @__PURE__ */ __exportAll({
2532
+ Journal: () => Journal,
2533
+ source: () => source$6
2534
+ });
2535
+ const SECTIONS$1 = [
2536
+ [
2537
+ "journal-moved",
2538
+ "whyMoved",
2539
+ "moved"
2540
+ ],
2541
+ [
2542
+ "journal-broke",
2543
+ "whatBroke",
2544
+ "broke"
2545
+ ],
2546
+ [
2547
+ "journal-kept",
2548
+ "whatKept",
2549
+ "kept"
2550
+ ],
2551
+ [
2552
+ "journal-next",
2553
+ "whatNext",
2554
+ "next"
2555
+ ]
2556
+ ];
2557
+ const ITEMS = SECTIONS$1.map(([value]) => ({
2558
+ depth: 2,
2559
+ value
2560
+ }));
2561
+ function Journal(props) {
2562
+ const $ = c(45);
2563
+ const { t } = useWords("app-shell");
2564
+ let t0;
2565
+ if ($[0] !== t) {
2566
+ t0 = t("journalBrand");
2567
+ $[0] = t;
2568
+ $[1] = t0;
2569
+ } else t0 = $[1];
2570
+ let t1;
2571
+ if ($[2] !== t) {
2572
+ t1 = t("contents");
2573
+ $[2] = t;
2574
+ $[3] = t1;
2575
+ } else t1 = $[3];
2576
+ let t2;
2577
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
2578
+ t2 = /* @__PURE__ */ jsx(MenuIcon, {});
2579
+ $[4] = t2;
2580
+ } else t2 = $[4];
2581
+ let t3;
2582
+ if ($[5] !== t1) {
2583
+ t3 = /* @__PURE__ */ jsx(Item, {
2584
+ "aria-label": t1,
2585
+ as: Trigger,
2586
+ panel: "contents",
2587
+ shape: "square",
2588
+ children: t2
2589
+ });
2590
+ $[5] = t1;
2591
+ $[6] = t3;
2592
+ } else t3 = $[6];
2593
+ let t4;
2594
+ if ($[7] !== t) {
2595
+ t4 = t("journalBrand");
2596
+ $[7] = t;
2597
+ $[8] = t4;
2598
+ } else t4 = $[8];
2599
+ let t5;
2600
+ if ($[9] !== t4) {
2601
+ t5 = /* @__PURE__ */ jsx(Text, {
2602
+ as: "span",
2603
+ size: "sm",
2604
+ weight: "semibold",
2605
+ children: t4
2606
+ });
2607
+ $[9] = t4;
2608
+ $[10] = t5;
2609
+ } else t5 = $[10];
2610
+ let t6;
2611
+ if ($[11] !== t3 || $[12] !== t5) {
2612
+ t6 = /* @__PURE__ */ jsxs(Start, { children: [t3, t5] });
2613
+ $[11] = t3;
2614
+ $[12] = t5;
2615
+ $[13] = t6;
2616
+ } else t6 = $[13];
2617
+ let t7;
2618
+ if ($[14] !== t) {
2619
+ t7 = t("subscribe");
2620
+ $[14] = t;
2621
+ $[15] = t7;
2622
+ } else t7 = $[15];
2623
+ let t8;
2624
+ if ($[16] !== t7) {
2625
+ t8 = /* @__PURE__ */ jsx(End, { children: /* @__PURE__ */ jsx(Action, {
2626
+ primary: true,
2627
+ children: t7
2628
+ }) });
2629
+ $[16] = t7;
2630
+ $[17] = t8;
2631
+ } else t8 = $[17];
2632
+ let t9;
2633
+ if ($[18] !== t0 || $[19] !== t6 || $[20] !== t8) {
2634
+ t9 = /* @__PURE__ */ jsx(Header, {
2635
+ sticky: true,
2636
+ children: /* @__PURE__ */ jsxs(Root, {
2637
+ "aria-label": t0,
2638
+ size: "sm",
2639
+ children: [t6, t8]
2640
+ })
2641
+ });
2642
+ $[18] = t0;
2643
+ $[19] = t6;
2644
+ $[20] = t8;
2645
+ $[21] = t9;
2646
+ } else t9 = $[21];
2647
+ let t10;
2648
+ if ($[22] !== t) {
2649
+ t10 = t("contents");
2650
+ $[22] = t;
2651
+ $[23] = t10;
2652
+ } else t10 = $[23];
2653
+ let t11;
2654
+ if ($[24] !== t10) {
2655
+ t11 = /* @__PURE__ */ jsx(Toc.Title, { children: t10 });
2656
+ $[24] = t10;
2657
+ $[25] = t11;
2658
+ } else t11 = $[25];
2659
+ let t12;
2660
+ if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
2661
+ t12 = /* @__PURE__ */ jsx(Toc.Indicator, {});
2662
+ $[26] = t12;
2663
+ } else t12 = $[26];
2664
+ let t13;
2665
+ if ($[27] !== t) {
2666
+ t13 = SECTIONS$1.map((t14) => {
2667
+ const [value, heading] = t14;
2668
+ return /* @__PURE__ */ jsx(Toc.Item, {
2669
+ item: {
2670
+ depth: 2,
2671
+ value
2672
+ },
2673
+ children: /* @__PURE__ */ jsx(Toc.Link, {
2674
+ href: `#${value}`,
2675
+ item: {
2676
+ depth: 2,
2677
+ value
2678
+ },
2679
+ children: t(heading)
2680
+ })
2681
+ }, value);
2682
+ });
2683
+ $[27] = t;
2684
+ $[28] = t13;
2685
+ } else t13 = $[28];
2686
+ let t14;
2687
+ if ($[29] !== t13) {
2688
+ t14 = /* @__PURE__ */ jsxs(Toc.List, { children: [t12, t13] });
2689
+ $[29] = t13;
2690
+ $[30] = t14;
2691
+ } else t14 = $[30];
2692
+ let t15;
2693
+ if ($[31] !== t11 || $[32] !== t14) {
2694
+ t15 = /* @__PURE__ */ jsx(Navbar, {
2695
+ foldsBelow: "sm",
2696
+ name: "contents",
2697
+ width: "12rem",
2698
+ children: /* @__PURE__ */ jsx(Section, {
2699
+ grows: true,
2700
+ scrolls: true,
2701
+ children: /* @__PURE__ */ jsxs(Toc.Root, {
2702
+ items: ITEMS,
2703
+ size: "sm",
2704
+ children: [t11, t14]
2705
+ })
2706
+ })
2707
+ });
2708
+ $[31] = t11;
2709
+ $[32] = t14;
2710
+ $[33] = t15;
2711
+ } else t15 = $[33];
2712
+ let t16;
2713
+ if ($[34] !== t) {
2714
+ t16 = SECTIONS$1.map((t17) => {
2715
+ const [value_0, heading_0, body] = t17;
2716
+ return /* @__PURE__ */ jsxs(Section, { children: [
2717
+ /* @__PURE__ */ jsx(Heading, {
2718
+ as: "h2",
2719
+ id: value_0,
2720
+ size: "xs",
2721
+ children: t(heading_0)
2722
+ }),
2723
+ /* @__PURE__ */ jsx(Text, {
2724
+ size: "sm",
2725
+ children: t(`${body}One`)
2726
+ }),
2727
+ /* @__PURE__ */ jsx(Text, {
2728
+ size: "sm",
2729
+ children: t(`${body}Two`)
2730
+ })
2731
+ ] }, value_0);
2732
+ });
2733
+ $[34] = t;
2734
+ $[35] = t16;
2735
+ } else t16 = $[35];
2736
+ let t17;
2737
+ if ($[36] !== t16) {
2738
+ t17 = /* @__PURE__ */ jsx(Main, { children: t16 });
2739
+ $[36] = t16;
2740
+ $[37] = t17;
2741
+ } else t17 = $[37];
2742
+ let t18;
2743
+ if ($[38] !== t15 || $[39] !== t17) {
2744
+ t18 = /* @__PURE__ */ jsxs(Body, { children: [t15, t17] });
2745
+ $[38] = t15;
2746
+ $[39] = t17;
2747
+ $[40] = t18;
2748
+ } else t18 = $[40];
2749
+ let t19;
2750
+ if ($[41] !== props || $[42] !== t18 || $[43] !== t9) {
2751
+ t19 = /* @__PURE__ */ jsxs(Root$2, {
2752
+ scroll: "window",
2753
+ ...props,
2754
+ children: [t9, t18]
2755
+ });
2756
+ $[41] = props;
2757
+ $[42] = t18;
2758
+ $[43] = t9;
2759
+ $[44] = t19;
2760
+ } else t19 = $[44];
2761
+ return t19;
2762
+ }
2763
+ const source$6 = "import { type ReactElement } from \"react\";\n\nimport { MenuIcon } from \"lucide-react\";\n\nimport { Toc } from \"@stealthscale/component-navigation\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Toolbar } from \"@stealthscale/component-screen\";\n\nconst SECTIONS = [\n [\"journal-moved\", \"whyMoved\", \"moved\"],\n [\"journal-broke\", \"whatBroke\", \"broke\"],\n [\"journal-kept\", \"whatKept\", \"kept\"],\n [\"journal-next\", \"whatNext\", \"next\"],\n] as const;\n\nconst ITEMS: Toc.TocItem[] = SECTIONS.map(([value]) => ({ depth: 2, value }));\n\nexport function Journal(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root scroll=\"window\" {...props}>\n <AppShell.Header sticky>\n <Toolbar.Root aria-label={t(\"journalBrand\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item\n aria-label={t(\"contents\")}\n as={AppShell.Trigger}\n panel=\"contents\"\n shape=\"square\"\n >\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"journalBrand\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action primary>{t(\"subscribe\")}</Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar foldsBelow=\"sm\" name=\"contents\" width=\"12rem\">\n <AppShell.Section grows scrolls>\n <Toc.Root items={ITEMS} size=\"sm\">\n <Toc.Title>{t(\"contents\")}</Toc.Title>\n <Toc.List>\n <Toc.Indicator />\n {SECTIONS.map(([value, heading]) => (\n <Toc.Item item={{ depth: 2, value }} key={value}>\n <Toc.Link href={`#${value}`} item={{ depth: 2, value }}>\n {t(heading)}\n </Toc.Link>\n </Toc.Item>\n ))}\n </Toc.List>\n </Toc.Root>\n </AppShell.Section>\n </AppShell.Navbar>\n <AppShell.Main>\n {SECTIONS.map(([value, heading, body]) => (\n <AppShell.Section key={value}>\n <Heading as=\"h2\" id={value} size=\"xs\">\n {t(heading)}\n </Heading>\n <Text size=\"sm\">{t(`${body}One`)}</Text>\n <Text size=\"sm\">{t(`${body}Two`)}</Text>\n </AppShell.Section>\n ))}\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
2764
+ //#endregion
2765
+ //#region src/app-shell/examples/mail.example.tsx
2766
+ var mail_example_exports = /* @__PURE__ */ __exportAll({
2767
+ Mail: () => Mail,
2768
+ source: () => source$5
2769
+ });
2770
+ const FOLDERS = [
2771
+ [
2772
+ "inbox",
2773
+ InboxIcon,
2774
+ "page",
2775
+ "12"
2776
+ ],
2777
+ [
2778
+ "starred",
2779
+ StarIcon,
2780
+ void 0,
2781
+ void 0
2782
+ ],
2783
+ [
2784
+ "sent",
2785
+ SendIcon,
2786
+ void 0,
2787
+ void 0
2788
+ ],
2789
+ [
2790
+ "archive",
2791
+ ArchiveIcon,
2792
+ void 0,
2793
+ void 0
2794
+ ],
2795
+ [
2796
+ "spam",
2797
+ ShieldAlertIcon,
2798
+ void 0,
2799
+ "3"
2800
+ ]
2801
+ ];
2802
+ const MAIL = [
2803
+ "invoiceOverdue",
2804
+ "offsite",
2805
+ "buildFailed",
2806
+ "lunch"
2807
+ ];
2808
+ const ACTIONS = [
2809
+ ["reply", ReplyIcon],
2810
+ ["forward", ForwardIcon],
2811
+ ["archive", ArchiveIcon]
2812
+ ];
2813
+ function Mail(props) {
2814
+ const $ = c(97);
2815
+ const { t } = useWords("app-shell");
2816
+ let t0;
2817
+ if ($[0] !== t) {
2818
+ t0 = MAIL.map((id) => ({
2819
+ from: t(`${id}From`),
2820
+ id,
2821
+ subject: t(id)
2822
+ }));
2823
+ $[0] = t;
2824
+ $[1] = t0;
2825
+ } else t0 = $[1];
2826
+ let t1;
2827
+ if ($[2] !== t0) {
2828
+ t1 = {
2829
+ itemToString: _temp$1,
2830
+ itemToValue: _temp2,
2831
+ rows: t0
2832
+ };
2833
+ $[2] = t0;
2834
+ $[3] = t1;
2835
+ } else t1 = $[3];
2836
+ const { collection } = useListCollection(t1);
2837
+ let t2;
2838
+ if ($[4] !== t) {
2839
+ t2 = t("post");
2840
+ $[4] = t;
2841
+ $[5] = t2;
2842
+ } else t2 = $[5];
2843
+ let t3;
2844
+ if ($[6] !== t) {
2845
+ t3 = t("folders");
2846
+ $[6] = t;
2847
+ $[7] = t3;
2848
+ } else t3 = $[7];
2849
+ let t4;
2850
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
2851
+ t4 = /* @__PURE__ */ jsx(MenuIcon, {});
2852
+ $[8] = t4;
2853
+ } else t4 = $[8];
2854
+ let t5;
2855
+ if ($[9] !== t3) {
2856
+ t5 = /* @__PURE__ */ jsx(Item, {
2857
+ "aria-label": t3,
2858
+ as: Trigger,
2859
+ panel: "folders",
2860
+ shape: "square",
2861
+ children: t4
2862
+ });
2863
+ $[9] = t3;
2864
+ $[10] = t5;
2865
+ } else t5 = $[10];
2866
+ let t6;
2867
+ if ($[11] !== t) {
2868
+ t6 = t("post");
2869
+ $[11] = t;
2870
+ $[12] = t6;
2871
+ } else t6 = $[12];
2872
+ let t7;
2873
+ if ($[13] !== t6) {
2874
+ t7 = /* @__PURE__ */ jsx(Text, {
2875
+ as: "span",
2876
+ size: "sm",
2877
+ weight: "semibold",
2878
+ children: t6
2879
+ });
2880
+ $[13] = t6;
2881
+ $[14] = t7;
2882
+ } else t7 = $[14];
2883
+ let t8;
2884
+ if ($[15] !== t5 || $[16] !== t7) {
2885
+ t8 = /* @__PURE__ */ jsxs(Start, { children: [t5, t7] });
2886
+ $[15] = t5;
2887
+ $[16] = t7;
2888
+ $[17] = t8;
2889
+ } else t8 = $[17];
2890
+ let t9;
2891
+ if ($[18] !== t) {
2892
+ t9 = t("compose");
2893
+ $[18] = t;
2894
+ $[19] = t9;
2895
+ } else t9 = $[19];
2896
+ let t10;
2897
+ if ($[20] !== t9) {
2898
+ t10 = /* @__PURE__ */ jsx(End, { children: /* @__PURE__ */ jsx(Action, {
2899
+ primary: true,
2900
+ children: t9
2901
+ }) });
2902
+ $[20] = t9;
2903
+ $[21] = t10;
2904
+ } else t10 = $[21];
2905
+ let t11;
2906
+ if ($[22] !== t10 || $[23] !== t2 || $[24] !== t8) {
2907
+ t11 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
2908
+ "aria-label": t2,
2909
+ size: "sm",
2910
+ children: [t8, t10]
2911
+ }) });
2912
+ $[22] = t10;
2913
+ $[23] = t2;
2914
+ $[24] = t8;
2915
+ $[25] = t11;
2916
+ } else t11 = $[25];
2917
+ let t12;
2918
+ if ($[26] !== t) {
2919
+ t12 = t("folders");
2920
+ $[26] = t;
2921
+ $[27] = t12;
2922
+ } else t12 = $[27];
2923
+ let t13;
2924
+ if ($[28] !== t) {
2925
+ t13 = FOLDERS.map((t14) => {
2926
+ const [folder, Glyph, current, count] = t14;
2927
+ return /* @__PURE__ */ jsxs(NavList.Item, { children: [/* @__PURE__ */ jsxs(NavList.Link, {
2928
+ "aria-current": current,
2929
+ href: `#${folder}`,
2930
+ tooltip: t(folder),
2931
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(folder) })]
2932
+ }), count === void 0 ? null : /* @__PURE__ */ jsx(NavList.Badge, { children: count })] }, folder);
2933
+ });
2934
+ $[28] = t;
2935
+ $[29] = t13;
2936
+ } else t13 = $[29];
2937
+ let t14;
2938
+ if ($[30] !== t13) {
2939
+ t14 = /* @__PURE__ */ jsx(NavList.Root, { children: t13 });
2940
+ $[30] = t13;
2941
+ $[31] = t14;
2942
+ } else t14 = $[31];
2943
+ let t15;
2944
+ if ($[32] !== t12 || $[33] !== t14) {
2945
+ t15 = /* @__PURE__ */ jsx(Navbar, {
2946
+ collapse: "icons",
2947
+ foldsBelow: "sm",
2948
+ name: "folders",
2949
+ width: "11rem",
2950
+ children: /* @__PURE__ */ jsx(Root$1, {
2951
+ variant: "subtle",
2952
+ children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(Nav, {
2953
+ "aria-label": t12,
2954
+ children: t14
2955
+ }) })
2956
+ })
2957
+ });
2958
+ $[32] = t12;
2959
+ $[33] = t14;
2960
+ $[34] = t15;
2961
+ } else t15 = $[34];
2962
+ let t16;
2963
+ if ($[35] === Symbol.for("react.memo_cache_sentinel")) {
2964
+ t16 = /* @__PURE__ */ jsx(Rail, { panel: "folders" });
2965
+ $[35] = t16;
2966
+ } else t16 = $[35];
2967
+ let t17;
2968
+ if ($[36] === Symbol.for("react.memo_cache_sentinel")) {
2969
+ t17 = ["invoiceOverdue"];
2970
+ $[36] = t17;
2971
+ } else t17 = $[36];
2972
+ let t18;
2973
+ if ($[37] !== t) {
2974
+ t18 = t("inbox");
2975
+ $[37] = t;
2976
+ $[38] = t18;
2977
+ } else t18 = $[38];
2978
+ let t19;
2979
+ if ($[39] === Symbol.for("react.memo_cache_sentinel")) {
2980
+ t19 = /* @__PURE__ */ jsx(CheckIcon, { size: "100%" });
2981
+ $[39] = t19;
2982
+ } else t19 = $[39];
2983
+ let t20;
2984
+ if ($[40] !== collection || $[41] !== t18) {
2985
+ t20 = /* @__PURE__ */ jsx(Navbar, {
2986
+ foldsBelow: "sm",
2987
+ name: "list",
2988
+ width: "16rem",
2989
+ children: /* @__PURE__ */ jsx(Section, {
2990
+ grows: true,
2991
+ scrolls: true,
2992
+ children: /* @__PURE__ */ jsx(Listbox.Simple, {
2993
+ collection,
2994
+ defaultValue: t17,
2995
+ description: _temp3,
2996
+ label: t18,
2997
+ mark: t19,
2998
+ size: "sm"
2999
+ })
3000
+ })
3001
+ });
3002
+ $[40] = collection;
3003
+ $[41] = t18;
3004
+ $[42] = t20;
3005
+ } else t20 = $[42];
3006
+ let t21;
3007
+ if ($[43] !== t) {
3008
+ t21 = t("messageActions");
3009
+ $[43] = t;
3010
+ $[44] = t21;
3011
+ } else t21 = $[44];
3012
+ let t22;
3013
+ if ($[45] !== t) {
3014
+ t22 = ACTIONS.map((t23) => {
3015
+ const [action, Glyph_0] = t23;
3016
+ return /* @__PURE__ */ jsx(Action, {
3017
+ icon: /* @__PURE__ */ jsx(Glyph_0, {}),
3018
+ children: t(action)
3019
+ }, action);
3020
+ });
3021
+ $[45] = t;
3022
+ $[46] = t22;
3023
+ } else t22 = $[46];
3024
+ let t23;
3025
+ if ($[47] !== t22) {
3026
+ t23 = /* @__PURE__ */ jsx(Start, { children: t22 });
3027
+ $[47] = t22;
3028
+ $[48] = t23;
3029
+ } else t23 = $[48];
3030
+ let t24;
3031
+ if ($[49] !== t21 || $[50] !== t23) {
3032
+ t24 = /* @__PURE__ */ jsx(Root, {
3033
+ "aria-label": t21,
3034
+ size: "sm",
3035
+ children: t23
3036
+ });
3037
+ $[49] = t21;
3038
+ $[50] = t23;
3039
+ $[51] = t24;
3040
+ } else t24 = $[51];
3041
+ let t25;
3042
+ if ($[52] !== t) {
3043
+ t25 = t("invoiceOverdue");
3044
+ $[52] = t;
3045
+ $[53] = t25;
3046
+ } else t25 = $[53];
3047
+ let t26;
3048
+ if ($[54] !== t25) {
3049
+ t26 = /* @__PURE__ */ jsx(Heading, {
3050
+ as: "h2",
3051
+ size: "sm",
3052
+ children: t25
3053
+ });
3054
+ $[54] = t25;
3055
+ $[55] = t26;
3056
+ } else t26 = $[55];
3057
+ let t27;
3058
+ if ($[56] !== t) {
3059
+ t27 = t("accounts");
3060
+ $[56] = t;
3061
+ $[57] = t27;
3062
+ } else t27 = $[57];
3063
+ let t28;
3064
+ if ($[58] === Symbol.for("react.memo_cache_sentinel")) {
3065
+ t28 = /* @__PURE__ */ jsx(Avatar.Fallback, {});
3066
+ $[58] = t28;
3067
+ } else t28 = $[58];
3068
+ let t29;
3069
+ if ($[59] !== t27) {
3070
+ t29 = /* @__PURE__ */ jsx(Avatar.Root, {
3071
+ "aria-hidden": true,
3072
+ name: t27,
3073
+ palette: "accent",
3074
+ size: "sm",
3075
+ children: t28
3076
+ });
3077
+ $[59] = t27;
3078
+ $[60] = t29;
3079
+ } else t29 = $[60];
3080
+ let t30;
3081
+ if ($[61] !== t) {
3082
+ t30 = t("accounts");
3083
+ $[61] = t;
3084
+ $[62] = t30;
3085
+ } else t30 = $[62];
3086
+ let t31;
3087
+ if ($[63] !== t30) {
3088
+ t31 = /* @__PURE__ */ jsx(Text, {
3089
+ size: "sm",
3090
+ weight: "semibold",
3091
+ children: t30
3092
+ });
3093
+ $[63] = t30;
3094
+ $[64] = t31;
3095
+ } else t31 = $[64];
3096
+ let t32;
3097
+ if ($[65] !== t) {
3098
+ t32 = t("accountsWhen");
3099
+ $[65] = t;
3100
+ $[66] = t32;
3101
+ } else t32 = $[66];
3102
+ let t33;
3103
+ if ($[67] !== t32) {
3104
+ t33 = /* @__PURE__ */ jsx(Text, {
3105
+ size: "xs",
3106
+ tone: "muted",
3107
+ children: t32
3108
+ });
3109
+ $[67] = t32;
3110
+ $[68] = t33;
3111
+ } else t33 = $[68];
3112
+ let t34;
3113
+ if ($[69] !== t31 || $[70] !== t33) {
3114
+ t34 = /* @__PURE__ */ jsxs(Stack, {
3115
+ gap: "xs",
3116
+ children: [t31, t33]
3117
+ });
3118
+ $[69] = t31;
3119
+ $[70] = t33;
3120
+ $[71] = t34;
3121
+ } else t34 = $[71];
3122
+ let t35;
3123
+ if ($[72] !== t29 || $[73] !== t34) {
3124
+ t35 = /* @__PURE__ */ jsxs(Stack, {
3125
+ direction: "row",
3126
+ gap: "sm",
3127
+ children: [t29, t34]
3128
+ });
3129
+ $[72] = t29;
3130
+ $[73] = t34;
3131
+ $[74] = t35;
3132
+ } else t35 = $[74];
3133
+ let t36;
3134
+ if ($[75] !== t) {
3135
+ t36 = t("invoiceBody");
3136
+ $[75] = t;
3137
+ $[76] = t36;
3138
+ } else t36 = $[76];
3139
+ let t37;
3140
+ if ($[77] !== t36) {
3141
+ t37 = /* @__PURE__ */ jsx(Text, {
3142
+ size: "sm",
3143
+ children: t36
3144
+ });
3145
+ $[77] = t36;
3146
+ $[78] = t37;
3147
+ } else t37 = $[78];
3148
+ let t38;
3149
+ if ($[79] !== t) {
3150
+ t38 = t("invoiceThanks");
3151
+ $[79] = t;
3152
+ $[80] = t38;
3153
+ } else t38 = $[80];
3154
+ let t39;
3155
+ if ($[81] !== t38) {
3156
+ t39 = /* @__PURE__ */ jsx(Text, {
3157
+ size: "sm",
3158
+ children: t38
3159
+ });
3160
+ $[81] = t38;
3161
+ $[82] = t39;
3162
+ } else t39 = $[82];
3163
+ let t40;
3164
+ if ($[83] !== t24 || $[84] !== t26 || $[85] !== t35 || $[86] !== t37 || $[87] !== t39) {
3165
+ t40 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsxs(Section, { children: [
3166
+ t24,
3167
+ t26,
3168
+ t35,
3169
+ t37,
3170
+ t39
3171
+ ] }) });
3172
+ $[83] = t24;
3173
+ $[84] = t26;
3174
+ $[85] = t35;
3175
+ $[86] = t37;
3176
+ $[87] = t39;
3177
+ $[88] = t40;
3178
+ } else t40 = $[88];
3179
+ let t41;
3180
+ if ($[89] !== t15 || $[90] !== t20 || $[91] !== t40) {
3181
+ t41 = /* @__PURE__ */ jsxs(Body, { children: [
3182
+ t15,
3183
+ t16,
3184
+ t20,
3185
+ t40
3186
+ ] });
3187
+ $[89] = t15;
3188
+ $[90] = t20;
3189
+ $[91] = t40;
3190
+ $[92] = t41;
3191
+ } else t41 = $[92];
3192
+ let t42;
3193
+ if ($[93] !== props || $[94] !== t11 || $[95] !== t41) {
3194
+ t42 = /* @__PURE__ */ jsxs(Root$2, {
3195
+ ...props,
3196
+ children: [t11, t41]
3197
+ });
3198
+ $[93] = props;
3199
+ $[94] = t11;
3200
+ $[95] = t41;
3201
+ $[96] = t42;
3202
+ } else t42 = $[96];
3203
+ return t42;
3204
+ }
3205
+ function _temp3(message_1) {
3206
+ return message_1.from;
3207
+ }
3208
+ function _temp2(message_0) {
3209
+ return message_0.id;
3210
+ }
3211
+ function _temp$1(message) {
3212
+ return message.subject;
3213
+ }
3214
+ const source$5 = "import { type ReactElement } from \"react\";\n\nimport {\n ArchiveIcon,\n CheckIcon,\n ForwardIcon,\n InboxIcon,\n MenuIcon,\n ReplyIcon,\n SendIcon,\n ShieldAlertIcon,\n StarIcon,\n} from \"lucide-react\";\n\nimport { Listbox, useListCollection } from \"@stealthscale/component-collections\";\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { Avatar } from \"@stealthscale/component-media\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\ninterface Message {\n readonly from: string;\n readonly id: string;\n readonly subject: string;\n}\n\nconst FOLDERS = [\n [\"inbox\", InboxIcon, \"page\", \"12\"],\n [\"starred\", StarIcon, undefined, undefined],\n [\"sent\", SendIcon, undefined, undefined],\n [\"archive\", ArchiveIcon, undefined, undefined],\n [\"spam\", ShieldAlertIcon, undefined, \"3\"],\n] as const;\n\nconst MAIL = [\"invoiceOverdue\", \"offsite\", \"buildFailed\", \"lunch\"] as const;\n\nconst ACTIONS = [\n [\"reply\", ReplyIcon],\n [\"forward\", ForwardIcon],\n [\"archive\", ArchiveIcon],\n] as const;\n\nexport function Mail(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n const { collection } = useListCollection<Message>({\n itemToString: (message) => message.subject,\n itemToValue: (message) => message.id,\n rows: MAIL.map((id) => ({ from: t(`${id}From`), id, subject: t(id) })),\n });\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"post\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item\n aria-label={t(\"folders\")}\n as={AppShell.Trigger}\n panel=\"folders\"\n shape=\"square\"\n >\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"post\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action primary>{t(\"compose\")}</Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar collapse=\"icons\" foldsBelow=\"sm\" name=\"folders\" width=\"11rem\">\n <Sidebar.Root variant=\"subtle\">\n <Sidebar.Content>\n <Sidebar.Nav aria-label={t(\"folders\")}>\n <NavList.Root>\n {FOLDERS.map(([folder, Glyph, current, count]) => (\n <NavList.Item key={folder}>\n <NavList.Link aria-current={current} href={`#${folder}`} tooltip={t(folder)}>\n <Glyph />\n <span>{t(folder)}</span>\n </NavList.Link>\n {count === undefined ? null : <NavList.Badge>{count}</NavList.Badge>}\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Rail panel=\"folders\" />\n <AppShell.Navbar foldsBelow=\"sm\" name=\"list\" width=\"16rem\">\n <AppShell.Section grows scrolls>\n <Listbox.Simple<Message>\n collection={collection}\n defaultValue={[\"invoiceOverdue\"]}\n description={(message) => message.from}\n label={t(\"inbox\")}\n mark={<CheckIcon size=\"100%\" />}\n size=\"sm\"\n />\n </AppShell.Section>\n </AppShell.Navbar>\n <AppShell.Main>\n <AppShell.Section>\n <Toolbar.Root aria-label={t(\"messageActions\")} size=\"sm\">\n <Toolbar.Start>\n {ACTIONS.map(([action, Glyph]) => (\n <Toolbar.Action icon={<Glyph />} key={action}>\n {t(action)}\n </Toolbar.Action>\n ))}\n </Toolbar.Start>\n </Toolbar.Root>\n <Heading as=\"h2\" size=\"sm\">\n {t(\"invoiceOverdue\")}\n </Heading>\n <Stack direction=\"row\" gap=\"sm\">\n <Avatar.Root aria-hidden name={t(\"accounts\")} palette=\"accent\" size=\"sm\">\n <Avatar.Fallback />\n </Avatar.Root>\n <Stack gap=\"xs\">\n <Text size=\"sm\" weight=\"semibold\">\n {t(\"accounts\")}\n </Text>\n <Text size=\"xs\" tone=\"muted\">\n {t(\"accountsWhen\")}\n </Text>\n </Stack>\n </Stack>\n <Text size=\"sm\">{t(\"invoiceBody\")}</Text>\n <Text size=\"sm\">{t(\"invoiceThanks\")}</Text>\n </AppShell.Section>\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
3215
+ //#endregion
3216
+ //#region src/app-shell/examples/player.example.tsx
3217
+ var player_example_exports = /* @__PURE__ */ __exportAll({
3218
+ Player: () => Player,
3219
+ source: () => source$4
3220
+ });
3221
+ const PLACES = [
3222
+ [
3223
+ "library",
3224
+ LibraryIcon,
3225
+ "page"
3226
+ ],
3227
+ [
3228
+ "playlists",
3229
+ ListMusicIcon,
3230
+ void 0
3231
+ ],
3232
+ [
3233
+ "radio",
3234
+ RadioIcon,
3235
+ void 0
3236
+ ]
3237
+ ];
3238
+ const TRACKS = [
3239
+ [
3240
+ "Northern Lights",
3241
+ "Halden Quartet",
3242
+ "4:05"
3243
+ ],
3244
+ [
3245
+ "Tidewater",
3246
+ "Mara Okafor",
3247
+ "3:41"
3248
+ ],
3249
+ [
3250
+ "Slow Harbour",
3251
+ "The Ledger Band",
3252
+ "5:12"
3253
+ ],
3254
+ [
3255
+ "Paper Kites",
3256
+ "Jonas Berg",
3257
+ "2:58"
3258
+ ],
3259
+ [
3260
+ "Ember and Ash",
3261
+ "Halden Quartet",
3262
+ "4:27"
3263
+ ],
3264
+ [
3265
+ "Glasswork",
3266
+ "Lantern",
3267
+ "3:33"
3268
+ ],
3269
+ [
3270
+ "Low Tide",
3271
+ "Mara Okafor",
3272
+ "4:49"
3273
+ ],
3274
+ [
3275
+ "Coastline",
3276
+ "Pebble",
3277
+ "3:15"
3278
+ ],
3279
+ [
3280
+ "Night Shift",
3281
+ "The Ledger Band",
3282
+ "6:02"
3283
+ ],
3284
+ [
3285
+ "Quiet Hours",
3286
+ "Lantern",
3287
+ "4:11"
3288
+ ],
3289
+ [
3290
+ "First Light",
3291
+ "Jonas Berg",
3292
+ "3:07"
3293
+ ],
3294
+ [
3295
+ "Driftwood",
3296
+ "Pebble",
3297
+ "5:36"
3298
+ ]
3299
+ ];
3300
+ const CONTROLS = [
3301
+ ["previous", SkipBackIcon],
3302
+ ["pause", PauseIcon],
3303
+ ["next", SkipForwardIcon]
3304
+ ];
3305
+ function Player(props) {
3306
+ const $ = c(77);
3307
+ const { t } = useWords("app-shell");
3308
+ const library = useId();
3309
+ let t0;
3310
+ if ($[0] !== t) {
3311
+ t0 = t("tracks");
3312
+ $[0] = t;
3313
+ $[1] = t0;
3314
+ } else t0 = $[1];
3315
+ let t1;
3316
+ if ($[2] !== t) {
3317
+ t1 = t("navigation");
3318
+ $[2] = t;
3319
+ $[3] = t1;
3320
+ } else t1 = $[3];
3321
+ let t2;
3322
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
3323
+ t2 = /* @__PURE__ */ jsx(MenuIcon, {});
3324
+ $[4] = t2;
3325
+ } else t2 = $[4];
3326
+ let t3;
3327
+ if ($[5] !== t1) {
3328
+ t3 = /* @__PURE__ */ jsx(Item, {
3329
+ "aria-label": t1,
3330
+ as: Trigger,
3331
+ shape: "square",
3332
+ children: t2
3333
+ });
3334
+ $[5] = t1;
3335
+ $[6] = t3;
3336
+ } else t3 = $[6];
3337
+ let t4;
3338
+ if ($[7] !== t) {
3339
+ t4 = t("tracks");
3340
+ $[7] = t;
3341
+ $[8] = t4;
3342
+ } else t4 = $[8];
3343
+ let t5;
3344
+ if ($[9] !== t4) {
3345
+ t5 = /* @__PURE__ */ jsx(Text, {
3346
+ as: "span",
3347
+ size: "sm",
3348
+ weight: "semibold",
3349
+ children: t4
3350
+ });
3351
+ $[9] = t4;
3352
+ $[10] = t5;
3353
+ } else t5 = $[10];
3354
+ let t6;
3355
+ if ($[11] !== t3 || $[12] !== t5) {
3356
+ t6 = /* @__PURE__ */ jsxs(Start, { children: [t3, t5] });
3357
+ $[11] = t3;
3358
+ $[12] = t5;
3359
+ $[13] = t6;
3360
+ } else t6 = $[13];
3361
+ let t7;
3362
+ if ($[14] !== t0 || $[15] !== t6) {
3363
+ t7 = /* @__PURE__ */ jsx(Header, {
3364
+ sticky: true,
3365
+ children: /* @__PURE__ */ jsx(Root, {
3366
+ "aria-label": t0,
3367
+ size: "sm",
3368
+ children: t6
3369
+ })
3370
+ });
3371
+ $[14] = t0;
3372
+ $[15] = t6;
3373
+ $[16] = t7;
3374
+ } else t7 = $[16];
3375
+ let t8;
3376
+ if ($[17] !== t) {
3377
+ t8 = t("tracks");
3378
+ $[17] = t;
3379
+ $[18] = t8;
3380
+ } else t8 = $[18];
3381
+ let t9;
3382
+ if ($[19] !== t) {
3383
+ t9 = PLACES.map((t10) => {
3384
+ const [place, Glyph, current] = t10;
3385
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
3386
+ "aria-current": current,
3387
+ href: `#${place}`,
3388
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(place) })]
3389
+ }) }, place);
3390
+ });
3391
+ $[19] = t;
3392
+ $[20] = t9;
3393
+ } else t9 = $[20];
3394
+ let t10;
3395
+ if ($[21] !== t9) {
3396
+ t10 = /* @__PURE__ */ jsx(NavList.Root, { children: t9 });
3397
+ $[21] = t9;
3398
+ $[22] = t10;
3399
+ } else t10 = $[22];
3400
+ let t11;
3401
+ if ($[23] !== t10 || $[24] !== t8) {
3402
+ t11 = /* @__PURE__ */ jsx(Navbar, {
3403
+ foldsBelow: "sm",
3404
+ width: "11rem",
3405
+ children: /* @__PURE__ */ jsx(Root$1, {
3406
+ variant: "subtle",
3407
+ children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(Nav, {
3408
+ "aria-label": t8,
3409
+ children: t10
3410
+ }) })
3411
+ })
3412
+ });
3413
+ $[23] = t10;
3414
+ $[24] = t8;
3415
+ $[25] = t11;
3416
+ } else t11 = $[25];
3417
+ let t12;
3418
+ if ($[26] !== t) {
3419
+ t12 = t("library");
3420
+ $[26] = t;
3421
+ $[27] = t12;
3422
+ } else t12 = $[27];
3423
+ let t13;
3424
+ if ($[28] !== library || $[29] !== t12) {
3425
+ t13 = /* @__PURE__ */ jsx(Heading, {
3426
+ as: "h2",
3427
+ id: library,
3428
+ size: "sm",
3429
+ children: t12
3430
+ });
3431
+ $[28] = library;
3432
+ $[29] = t12;
3433
+ $[30] = t13;
3434
+ } else t13 = $[30];
3435
+ let t14;
3436
+ if ($[31] !== t) {
3437
+ t14 = /* @__PURE__ */ jsx(Table.Header, { children: /* @__PURE__ */ jsx(Table.Row, { children: [
3438
+ "trackTitle",
3439
+ "artist",
3440
+ "length"
3441
+ ].map((column) => /* @__PURE__ */ jsx(Table.ColumnHeader, { children: t(column) }, column)) }) });
3442
+ $[31] = t;
3443
+ $[32] = t14;
3444
+ } else t14 = $[32];
3445
+ let t15;
3446
+ if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
3447
+ t15 = /* @__PURE__ */ jsx(Table.Body, { children: TRACKS.map(_temp) });
3448
+ $[33] = t15;
3449
+ } else t15 = $[33];
3450
+ let t16;
3451
+ if ($[34] !== t14) {
3452
+ t16 = /* @__PURE__ */ jsxs(Table.Root, { children: [t14, t15] });
3453
+ $[34] = t14;
3454
+ $[35] = t16;
3455
+ } else t16 = $[35];
3456
+ let t17;
3457
+ if ($[36] !== library || $[37] !== t16) {
3458
+ t17 = /* @__PURE__ */ jsx(Table.Scroller, {
3459
+ "aria-labelledby": library,
3460
+ size: "sm",
3461
+ children: t16
3462
+ });
3463
+ $[36] = library;
3464
+ $[37] = t16;
3465
+ $[38] = t17;
3466
+ } else t17 = $[38];
3467
+ let t18;
3468
+ if ($[39] !== t13 || $[40] !== t17) {
3469
+ t18 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsxs(Section, { children: [t13, t17] }) });
3470
+ $[39] = t13;
3471
+ $[40] = t17;
3472
+ $[41] = t18;
3473
+ } else t18 = $[41];
3474
+ let t19;
3475
+ if ($[42] !== t11 || $[43] !== t18) {
3476
+ t19 = /* @__PURE__ */ jsxs(Body, { children: [t11, t18] });
3477
+ $[42] = t11;
3478
+ $[43] = t18;
3479
+ $[44] = t19;
3480
+ } else t19 = $[44];
3481
+ let t20;
3482
+ if ($[45] !== t) {
3483
+ t20 = t("position");
3484
+ $[45] = t;
3485
+ $[46] = t20;
3486
+ } else t20 = $[46];
3487
+ let t21;
3488
+ if ($[47] !== t) {
3489
+ t21 = t("played");
3490
+ $[47] = t;
3491
+ $[48] = t21;
3492
+ } else t21 = $[48];
3493
+ let t22;
3494
+ if ($[49] === Symbol.for("react.memo_cache_sentinel")) {
3495
+ t22 = /* @__PURE__ */ jsx(Progress.Range, {});
3496
+ $[49] = t22;
3497
+ } else t22 = $[49];
3498
+ let t23;
3499
+ if ($[50] !== t20 || $[51] !== t21) {
3500
+ t23 = /* @__PURE__ */ jsx(Progress.Root, {
3501
+ max: 245,
3502
+ size: "xs",
3503
+ value: 161,
3504
+ children: /* @__PURE__ */ jsx(Progress.Track, {
3505
+ "aria-label": t20,
3506
+ "aria-valuetext": t21,
3507
+ children: t22
3508
+ })
3509
+ });
3510
+ $[50] = t20;
3511
+ $[51] = t21;
3512
+ $[52] = t23;
3513
+ } else t23 = $[52];
3514
+ let t24;
3515
+ if ($[53] !== t) {
3516
+ t24 = t("playback");
3517
+ $[53] = t;
3518
+ $[54] = t24;
3519
+ } else t24 = $[54];
3520
+ let t25;
3521
+ if ($[55] !== t) {
3522
+ t25 = CONTROLS.map((t26) => {
3523
+ const [control, Glyph_0] = t26;
3524
+ return /* @__PURE__ */ jsx(Item, {
3525
+ "aria-label": t(control),
3526
+ as: IconButton,
3527
+ variant: "ghost",
3528
+ children: /* @__PURE__ */ jsx(Glyph_0, {})
3529
+ }, control);
3530
+ });
3531
+ $[55] = t;
3532
+ $[56] = t25;
3533
+ } else t25 = $[56];
3534
+ let t26;
3535
+ if ($[57] !== t25) {
3536
+ t26 = /* @__PURE__ */ jsx(Start, { children: t25 });
3537
+ $[57] = t25;
3538
+ $[58] = t26;
3539
+ } else t26 = $[58];
3540
+ let t27;
3541
+ if ($[59] === Symbol.for("react.memo_cache_sentinel")) {
3542
+ t27 = /* @__PURE__ */ jsx(Span, {
3543
+ weight: "semibold",
3544
+ children: TRACKS[0][0]
3545
+ });
3546
+ $[59] = t27;
3547
+ } else t27 = $[59];
3548
+ let t28;
3549
+ if ($[60] === Symbol.for("react.memo_cache_sentinel")) {
3550
+ t28 = /* @__PURE__ */ jsx(Center, { children: /* @__PURE__ */ jsxs(Text, {
3551
+ as: "span",
3552
+ size: "sm",
3553
+ children: [
3554
+ t27,
3555
+ " ",
3556
+ /* @__PURE__ */ jsx(Span, {
3557
+ tone: "muted",
3558
+ children: TRACKS[0][1]
3559
+ })
3560
+ ]
3561
+ }) });
3562
+ $[60] = t28;
3563
+ } else t28 = $[60];
3564
+ let t29;
3565
+ if ($[61] !== t) {
3566
+ t29 = t("time");
3567
+ $[61] = t;
3568
+ $[62] = t29;
3569
+ } else t29 = $[62];
3570
+ let t30;
3571
+ if ($[63] !== t29) {
3572
+ t30 = /* @__PURE__ */ jsx(End, { children: /* @__PURE__ */ jsx(Text, {
3573
+ as: "span",
3574
+ size: "sm",
3575
+ tone: "muted",
3576
+ children: t29
3577
+ }) });
3578
+ $[63] = t29;
3579
+ $[64] = t30;
3580
+ } else t30 = $[64];
3581
+ let t31;
3582
+ if ($[65] !== t24 || $[66] !== t26 || $[67] !== t30) {
3583
+ t31 = /* @__PURE__ */ jsxs(Root, {
3584
+ "aria-label": t24,
3585
+ size: "sm",
3586
+ children: [
3587
+ t26,
3588
+ t28,
3589
+ t30
3590
+ ]
3591
+ });
3592
+ $[65] = t24;
3593
+ $[66] = t26;
3594
+ $[67] = t30;
3595
+ $[68] = t31;
3596
+ } else t31 = $[68];
3597
+ let t32;
3598
+ if ($[69] !== t23 || $[70] !== t31) {
3599
+ t32 = /* @__PURE__ */ jsx(Footer, {
3600
+ sticky: true,
3601
+ children: /* @__PURE__ */ jsxs(Stack, {
3602
+ gap: "xs",
3603
+ children: [t23, t31]
3604
+ })
3605
+ });
3606
+ $[69] = t23;
3607
+ $[70] = t31;
3608
+ $[71] = t32;
3609
+ } else t32 = $[71];
3610
+ let t33;
3611
+ if ($[72] !== props || $[73] !== t19 || $[74] !== t32 || $[75] !== t7) {
3612
+ t33 = /* @__PURE__ */ jsxs(Root$2, {
3613
+ scroll: "window",
3614
+ ...props,
3615
+ children: [
3616
+ t7,
3617
+ t19,
3618
+ t32
3619
+ ]
3620
+ });
3621
+ $[72] = props;
3622
+ $[73] = t19;
3623
+ $[74] = t32;
3624
+ $[75] = t7;
3625
+ $[76] = t33;
3626
+ } else t33 = $[76];
3627
+ return t33;
3628
+ }
3629
+ function _temp(t0) {
3630
+ const [title, artist, length] = t0;
3631
+ return /* @__PURE__ */ jsxs(Table.Row, { children: [
3632
+ /* @__PURE__ */ jsx(Table.RowHeader, { children: title }),
3633
+ /* @__PURE__ */ jsx(Table.Cell, { children: artist }),
3634
+ /* @__PURE__ */ jsx(Table.Cell, { children: length })
3635
+ ] }, title);
3636
+ }
3637
+ const source$4 = "import { type ReactElement, useId } from \"react\";\n\nimport {\n LibraryIcon,\n ListMusicIcon,\n MenuIcon,\n PauseIcon,\n RadioIcon,\n SkipBackIcon,\n SkipForwardIcon,\n} from \"lucide-react\";\n\nimport { IconButton } from \"@stealthscale/component-actions\";\nimport { Table } from \"@stealthscale/component-collections\";\nimport { Progress } from \"@stealthscale/component-feedback\";\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Heading, Span, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst PLACES = [\n [\"library\", LibraryIcon, \"page\"],\n [\"playlists\", ListMusicIcon, undefined],\n [\"radio\", RadioIcon, undefined],\n] as const;\n\nconst TRACKS = [\n [\"Northern Lights\", \"Halden Quartet\", \"4:05\"],\n [\"Tidewater\", \"Mara Okafor\", \"3:41\"],\n [\"Slow Harbour\", \"The Ledger Band\", \"5:12\"],\n [\"Paper Kites\", \"Jonas Berg\", \"2:58\"],\n [\"Ember and Ash\", \"Halden Quartet\", \"4:27\"],\n [\"Glasswork\", \"Lantern\", \"3:33\"],\n [\"Low Tide\", \"Mara Okafor\", \"4:49\"],\n [\"Coastline\", \"Pebble\", \"3:15\"],\n [\"Night Shift\", \"The Ledger Band\", \"6:02\"],\n [\"Quiet Hours\", \"Lantern\", \"4:11\"],\n [\"First Light\", \"Jonas Berg\", \"3:07\"],\n [\"Driftwood\", \"Pebble\", \"5:36\"],\n] as const;\n\nconst CONTROLS = [\n [\"previous\", SkipBackIcon],\n [\"pause\", PauseIcon],\n [\"next\", SkipForwardIcon],\n] as const;\n\nexport function Player(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n const library = useId();\n\n return (\n <AppShell.Root scroll=\"window\" {...props}>\n <AppShell.Header sticky>\n <Toolbar.Root aria-label={t(\"tracks\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item aria-label={t(\"navigation\")} as={AppShell.Trigger} shape=\"square\">\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"tracks\")}\n </Text>\n </Toolbar.Start>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Navbar foldsBelow=\"sm\" width=\"11rem\">\n <Sidebar.Root variant=\"subtle\">\n <Sidebar.Content>\n <Sidebar.Nav aria-label={t(\"tracks\")}>\n <NavList.Root>\n {PLACES.map(([place, Glyph, current]) => (\n <NavList.Item key={place}>\n <NavList.Link aria-current={current} href={`#${place}`}>\n <Glyph />\n <span>{t(place)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" id={library} size=\"sm\">\n {t(\"library\")}\n </Heading>\n <Table.Scroller aria-labelledby={library} size=\"sm\">\n <Table.Root>\n <Table.Header>\n <Table.Row>\n {[\"trackTitle\", \"artist\", \"length\"].map((column) => (\n <Table.ColumnHeader key={column}>{t(column)}</Table.ColumnHeader>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {TRACKS.map(([title, artist, length]) => (\n <Table.Row key={title}>\n <Table.RowHeader>{title}</Table.RowHeader>\n <Table.Cell>{artist}</Table.Cell>\n <Table.Cell>{length}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Root>\n </Table.Scroller>\n </AppShell.Section>\n </AppShell.Main>\n </AppShell.Body>\n <AppShell.Footer sticky>\n <Stack gap=\"xs\">\n <Progress.Root max={245} size=\"xs\" value={161}>\n <Progress.Track aria-label={t(\"position\")} aria-valuetext={t(\"played\")}>\n <Progress.Range />\n </Progress.Track>\n </Progress.Root>\n <Toolbar.Root aria-label={t(\"playback\")} size=\"sm\">\n <Toolbar.Start>\n {CONTROLS.map(([control, Glyph]) => (\n <Toolbar.Item aria-label={t(control)} as={IconButton} key={control} variant=\"ghost\">\n <Glyph />\n </Toolbar.Item>\n ))}\n </Toolbar.Start>\n <Toolbar.Center>\n <Text as=\"span\" size=\"sm\">\n <Span weight=\"semibold\">{TRACKS[0][0]}</Span>{\" \"}\n <Span tone=\"muted\">{TRACKS[0][1]}</Span>\n </Text>\n </Toolbar.Center>\n <Toolbar.End>\n <Text as=\"span\" size=\"sm\" tone=\"muted\">\n {t(\"time\")}\n </Text>\n </Toolbar.End>\n </Toolbar.Root>\n </Stack>\n </AppShell.Footer>\n </AppShell.Root>\n );\n}\n";
3638
+ //#endregion
3639
+ //#region src/app-shell/examples/reader.example.tsx
3640
+ var reader_example_exports = /* @__PURE__ */ __exportAll({
3641
+ Reader: () => Reader,
3642
+ source: () => source$3
3643
+ });
3644
+ const NOTES = [
3645
+ "retries",
3646
+ "idempotency",
3647
+ "outage"
3648
+ ];
3649
+ const TOPICS = ["reliability", "queues"];
3650
+ function Reader(props) {
3651
+ const $ = c(71);
3652
+ const { t } = useWords("app-shell");
3653
+ let t0;
3654
+ if ($[0] !== t) {
3655
+ t0 = t("fieldNotes");
3656
+ $[0] = t;
3657
+ $[1] = t0;
3658
+ } else t0 = $[1];
3659
+ let t1;
3660
+ if ($[2] !== t) {
3661
+ t1 = t("fieldNotes");
3662
+ $[2] = t;
3663
+ $[3] = t1;
3664
+ } else t1 = $[3];
3665
+ let t2;
3666
+ if ($[4] !== t1) {
3667
+ t2 = /* @__PURE__ */ jsx(Start, { children: /* @__PURE__ */ jsx(Text, {
3668
+ as: "span",
3669
+ size: "sm",
3670
+ weight: "semibold",
3671
+ children: t1
3672
+ }) });
3673
+ $[4] = t1;
3674
+ $[5] = t2;
3675
+ } else t2 = $[5];
3676
+ let t3;
3677
+ if ($[6] !== t) {
3678
+ t3 = t("related");
3679
+ $[6] = t;
3680
+ $[7] = t3;
3681
+ } else t3 = $[7];
3682
+ let t4;
3683
+ if ($[8] !== t3) {
3684
+ t4 = /* @__PURE__ */ jsx(End, { children: /* @__PURE__ */ jsx(Item, {
3685
+ as: Trigger,
3686
+ panel: "aside",
3687
+ children: t3
3688
+ }) });
3689
+ $[8] = t3;
3690
+ $[9] = t4;
3691
+ } else t4 = $[9];
3692
+ let t5;
3693
+ if ($[10] !== t0 || $[11] !== t2 || $[12] !== t4) {
3694
+ t5 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
3695
+ "aria-label": t0,
3696
+ size: "sm",
3697
+ children: [t2, t4]
3698
+ }) });
3699
+ $[10] = t0;
3700
+ $[11] = t2;
3701
+ $[12] = t4;
3702
+ $[13] = t5;
3703
+ } else t5 = $[13];
3704
+ let t6;
3705
+ if ($[14] !== t) {
3706
+ t6 = t("whyMoved");
3707
+ $[14] = t;
3708
+ $[15] = t6;
3709
+ } else t6 = $[15];
3710
+ let t7;
3711
+ if ($[16] !== t6) {
3712
+ t7 = /* @__PURE__ */ jsx(Heading, {
3713
+ as: "h2",
3714
+ size: "md",
3715
+ children: t6
3716
+ });
3717
+ $[16] = t6;
3718
+ $[17] = t7;
3719
+ } else t7 = $[17];
3720
+ let t8;
3721
+ if ($[18] !== t) {
3722
+ t8 = t("byline");
3723
+ $[18] = t;
3724
+ $[19] = t8;
3725
+ } else t8 = $[19];
3726
+ let t9;
3727
+ if ($[20] !== t8) {
3728
+ t9 = /* @__PURE__ */ jsx(Text, {
3729
+ size: "sm",
3730
+ tone: "muted",
3731
+ children: t8
3732
+ });
3733
+ $[20] = t8;
3734
+ $[21] = t9;
3735
+ } else t9 = $[21];
3736
+ let t10;
3737
+ if ($[22] !== t) {
3738
+ t10 = t("movedOne");
3739
+ $[22] = t;
3740
+ $[23] = t10;
3741
+ } else t10 = $[23];
3742
+ let t11;
3743
+ if ($[24] !== t10) {
3744
+ t11 = /* @__PURE__ */ jsx(Text, {
3745
+ size: "sm",
3746
+ children: t10
3747
+ });
3748
+ $[24] = t10;
3749
+ $[25] = t11;
3750
+ } else t11 = $[25];
3751
+ let t12;
3752
+ if ($[26] !== t) {
3753
+ t12 = t("movedQuote");
3754
+ $[26] = t;
3755
+ $[27] = t12;
3756
+ } else t12 = $[27];
3757
+ let t13;
3758
+ if ($[28] !== t12) {
3759
+ t13 = /* @__PURE__ */ jsx(Blockquote.Root, {
3760
+ size: "sm",
3761
+ children: /* @__PURE__ */ jsx(Blockquote.Content, { children: t12 })
3762
+ });
3763
+ $[28] = t12;
3764
+ $[29] = t13;
3765
+ } else t13 = $[29];
3766
+ let t14;
3767
+ if ($[30] !== t) {
3768
+ t14 = t("whatBroke");
3769
+ $[30] = t;
3770
+ $[31] = t14;
3771
+ } else t14 = $[31];
3772
+ let t15;
3773
+ if ($[32] !== t14) {
3774
+ t15 = /* @__PURE__ */ jsx(Heading, {
3775
+ as: "h3",
3776
+ size: "xs",
3777
+ children: t14
3778
+ });
3779
+ $[32] = t14;
3780
+ $[33] = t15;
3781
+ } else t15 = $[33];
3782
+ let t16;
3783
+ if ($[34] !== t) {
3784
+ t16 = t("brokeOne");
3785
+ $[34] = t;
3786
+ $[35] = t16;
3787
+ } else t16 = $[35];
3788
+ let t17;
3789
+ if ($[36] !== t16) {
3790
+ t17 = /* @__PURE__ */ jsx(Text, {
3791
+ size: "sm",
3792
+ children: t16
3793
+ });
3794
+ $[36] = t16;
3795
+ $[37] = t17;
3796
+ } else t17 = $[37];
3797
+ let t18;
3798
+ if ($[38] !== t) {
3799
+ t18 = t("brokeTwo");
3800
+ $[38] = t;
3801
+ $[39] = t18;
3802
+ } else t18 = $[39];
3803
+ let t19;
3804
+ if ($[40] !== t18) {
3805
+ t19 = /* @__PURE__ */ jsx(Text, {
3806
+ size: "sm",
3807
+ children: t18
3808
+ });
3809
+ $[40] = t18;
3810
+ $[41] = t19;
3811
+ } else t19 = $[41];
3812
+ let t20;
3813
+ if ($[42] !== t11 || $[43] !== t13 || $[44] !== t15 || $[45] !== t17 || $[46] !== t19 || $[47] !== t7 || $[48] !== t9) {
3814
+ t20 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsxs(Section, { children: [
3815
+ t7,
3816
+ t9,
3817
+ t11,
3818
+ t13,
3819
+ t15,
3820
+ t17,
3821
+ t19
3822
+ ] }) });
3823
+ $[42] = t11;
3824
+ $[43] = t13;
3825
+ $[44] = t15;
3826
+ $[45] = t17;
3827
+ $[46] = t19;
3828
+ $[47] = t7;
3829
+ $[48] = t9;
3830
+ $[49] = t20;
3831
+ } else t20 = $[49];
3832
+ let t21;
3833
+ if ($[50] !== t) {
3834
+ t21 = t("related");
3835
+ $[50] = t;
3836
+ $[51] = t21;
3837
+ } else t21 = $[51];
3838
+ let t22;
3839
+ if ($[52] !== t21) {
3840
+ t22 = /* @__PURE__ */ jsx(Heading, {
3841
+ as: "h2",
3842
+ size: "xs",
3843
+ children: t21
3844
+ });
3845
+ $[52] = t21;
3846
+ $[53] = t22;
3847
+ } else t22 = $[53];
3848
+ let t23;
3849
+ if ($[54] !== t) {
3850
+ t23 = NOTES.map((note) => /* @__PURE__ */ jsx(Text, {
3851
+ size: "sm",
3852
+ children: /* @__PURE__ */ jsx(Link, {
3853
+ href: `#${note}`,
3854
+ children: t(note)
3855
+ })
3856
+ }, note));
3857
+ $[54] = t;
3858
+ $[55] = t23;
3859
+ } else t23 = $[55];
3860
+ let t24;
3861
+ if ($[56] !== t) {
3862
+ t24 = TOPICS.map((topic) => /* @__PURE__ */ jsx(Tag.Root, {
3863
+ size: "sm",
3864
+ children: /* @__PURE__ */ jsx(Tag.Label, { children: t(topic) })
3865
+ }, topic));
3866
+ $[56] = t;
3867
+ $[57] = t24;
3868
+ } else t24 = $[57];
3869
+ let t25;
3870
+ if ($[58] !== t24) {
3871
+ t25 = /* @__PURE__ */ jsx(Stack, {
3872
+ direction: "row",
3873
+ gap: "xs",
3874
+ wrap: true,
3875
+ children: t24
3876
+ });
3877
+ $[58] = t24;
3878
+ $[59] = t25;
3879
+ } else t25 = $[59];
3880
+ let t26;
3881
+ if ($[60] !== t22 || $[61] !== t23 || $[62] !== t25) {
3882
+ t26 = /* @__PURE__ */ jsx(Aside, {
3883
+ folds: "under",
3884
+ width: "15rem",
3885
+ children: /* @__PURE__ */ jsxs(Section, { children: [
3886
+ t22,
3887
+ t23,
3888
+ t25
3889
+ ] })
3890
+ });
3891
+ $[60] = t22;
3892
+ $[61] = t23;
3893
+ $[62] = t25;
3894
+ $[63] = t26;
3895
+ } else t26 = $[63];
3896
+ let t27;
3897
+ if ($[64] !== t20 || $[65] !== t26) {
3898
+ t27 = /* @__PURE__ */ jsxs(Body, { children: [t20, t26] });
3899
+ $[64] = t20;
3900
+ $[65] = t26;
3901
+ $[66] = t27;
3902
+ } else t27 = $[66];
3903
+ let t28;
3904
+ if ($[67] !== props || $[68] !== t27 || $[69] !== t5) {
3905
+ t28 = /* @__PURE__ */ jsxs(Root$2, {
3906
+ content: "constrained",
3907
+ ...props,
3908
+ children: [t5, t27]
3909
+ });
3910
+ $[67] = props;
3911
+ $[68] = t27;
3912
+ $[69] = t5;
3913
+ $[70] = t28;
3914
+ } else t28 = $[70];
3915
+ return t28;
3916
+ }
3917
+ const source$3 = "import { type ReactElement } from \"react\";\n\nimport { Tag } from \"@stealthscale/component-data\";\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { Link } from \"@stealthscale/component-navigation\";\nimport { Blockquote, Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Toolbar } from \"@stealthscale/component-screen\";\n\nconst NOTES = [\"retries\", \"idempotency\", \"outage\"] as const;\n\nconst TOPICS = [\"reliability\", \"queues\"] as const;\n\nexport function Reader(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root content=\"constrained\" {...props}>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"fieldNotes\")} size=\"sm\">\n <Toolbar.Start>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"fieldNotes\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Item as={AppShell.Trigger} panel=\"aside\">\n {t(\"related\")}\n </Toolbar.Item>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" size=\"md\">\n {t(\"whyMoved\")}\n </Heading>\n <Text size=\"sm\" tone=\"muted\">\n {t(\"byline\")}\n </Text>\n <Text size=\"sm\">{t(\"movedOne\")}</Text>\n <Blockquote.Root size=\"sm\">\n <Blockquote.Content>{t(\"movedQuote\")}</Blockquote.Content>\n </Blockquote.Root>\n <Heading as=\"h3\" size=\"xs\">\n {t(\"whatBroke\")}\n </Heading>\n <Text size=\"sm\">{t(\"brokeOne\")}</Text>\n <Text size=\"sm\">{t(\"brokeTwo\")}</Text>\n </AppShell.Section>\n </AppShell.Main>\n <AppShell.Aside folds=\"under\" width=\"15rem\">\n <AppShell.Section>\n <Heading as=\"h2\" size=\"xs\">\n {t(\"related\")}\n </Heading>\n {NOTES.map((note) => (\n <Text key={note} size=\"sm\">\n <Link href={`#${note}`}>{t(note)}</Link>\n </Text>\n ))}\n <Stack direction=\"row\" gap=\"xs\" wrap>\n {TOPICS.map((topic) => (\n <Tag.Root key={topic} size=\"sm\">\n <Tag.Label>{t(topic)}</Tag.Label>\n </Tag.Root>\n ))}\n </Stack>\n </AppShell.Section>\n </AppShell.Aside>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
3918
+ //#endregion
3919
+ //#region src/app-shell/examples/storefront.example.tsx
3920
+ var storefront_example_exports = /* @__PURE__ */ __exportAll({
3921
+ Storefront: () => Storefront,
3922
+ source: () => source$2
3923
+ });
3924
+ const PRODUCTS = [
3925
+ ["mug", "£18.00"],
3926
+ ["bowl", "£24.00"],
3927
+ ["plate", "£16.00"],
3928
+ ["jug", "£32.00"],
3929
+ ["vase", "£45.00"],
3930
+ ["teapot", "£58.00"]
3931
+ ];
3932
+ function Storefront(props) {
3933
+ const $ = c(41);
3934
+ const { t } = useWords("app-shell");
3935
+ let t0;
3936
+ if ($[0] !== t) {
3937
+ t0 = t("northwind");
3938
+ $[0] = t;
3939
+ $[1] = t0;
3940
+ } else t0 = $[1];
3941
+ let t1;
3942
+ if ($[2] !== t) {
3943
+ t1 = t("northwind");
3944
+ $[2] = t;
3945
+ $[3] = t1;
3946
+ } else t1 = $[3];
3947
+ let t2;
3948
+ if ($[4] !== t1) {
3949
+ t2 = /* @__PURE__ */ jsx(Start, { children: /* @__PURE__ */ jsx(Text, {
3950
+ as: "span",
3951
+ size: "sm",
3952
+ weight: "semibold",
3953
+ children: t1
3954
+ }) });
3955
+ $[4] = t1;
3956
+ $[5] = t2;
3957
+ } else t2 = $[5];
3958
+ let t3;
3959
+ if ($[6] !== t) {
3960
+ t3 = t("searchProducts");
3961
+ $[6] = t;
3962
+ $[7] = t3;
3963
+ } else t3 = $[7];
3964
+ let t4;
3965
+ if ($[8] !== t) {
3966
+ t4 = t("searchProducts");
3967
+ $[8] = t;
3968
+ $[9] = t4;
3969
+ } else t4 = $[9];
3970
+ let t5;
3971
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
3972
+ t5 = /* @__PURE__ */ jsx(SearchIcon, {});
3973
+ $[10] = t5;
3974
+ } else t5 = $[10];
3975
+ let t6;
3976
+ if ($[11] !== t3 || $[12] !== t4) {
3977
+ t6 = /* @__PURE__ */ jsx(Search$1, {
3978
+ "aria-label": t3,
3979
+ placeholder: t4,
3980
+ searchIndicator: t5
3981
+ });
3982
+ $[11] = t3;
3983
+ $[12] = t4;
3984
+ $[13] = t6;
3985
+ } else t6 = $[13];
3986
+ let t7;
3987
+ if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
3988
+ t7 = /* @__PURE__ */ jsx(ShoppingBagIcon, {});
3989
+ $[14] = t7;
3990
+ } else t7 = $[14];
3991
+ let t8;
3992
+ if ($[15] !== t) {
3993
+ t8 = t("basket");
3994
+ $[15] = t;
3995
+ $[16] = t8;
3996
+ } else t8 = $[16];
3997
+ let t9;
3998
+ if ($[17] !== t8) {
3999
+ t9 = /* @__PURE__ */ jsx(Action, {
4000
+ icon: t7,
4001
+ children: t8
4002
+ });
4003
+ $[17] = t8;
4004
+ $[18] = t9;
4005
+ } else t9 = $[18];
4006
+ let t10;
4007
+ if ($[19] !== t6 || $[20] !== t9) {
4008
+ t10 = /* @__PURE__ */ jsxs(End, { children: [t6, t9] });
4009
+ $[19] = t6;
4010
+ $[20] = t9;
4011
+ $[21] = t10;
4012
+ } else t10 = $[21];
4013
+ let t11;
4014
+ if ($[22] !== t0 || $[23] !== t10 || $[24] !== t2) {
4015
+ t11 = /* @__PURE__ */ jsx(Header, {
4016
+ sticky: true,
4017
+ children: /* @__PURE__ */ jsxs(Root, {
4018
+ "aria-label": t0,
4019
+ size: "sm",
4020
+ children: [t2, t10]
4021
+ })
4022
+ });
4023
+ $[22] = t0;
4024
+ $[23] = t10;
4025
+ $[24] = t2;
4026
+ $[25] = t11;
4027
+ } else t11 = $[25];
4028
+ let t12;
4029
+ if ($[26] !== t) {
4030
+ t12 = t("newIn");
4031
+ $[26] = t;
4032
+ $[27] = t12;
4033
+ } else t12 = $[27];
4034
+ let t13;
4035
+ if ($[28] !== t12) {
4036
+ t13 = /* @__PURE__ */ jsx(Heading, {
4037
+ as: "h2",
4038
+ size: "sm",
4039
+ children: t12
4040
+ });
4041
+ $[28] = t12;
4042
+ $[29] = t13;
4043
+ } else t13 = $[29];
4044
+ let t14;
4045
+ if ($[30] !== t) {
4046
+ t14 = PRODUCTS.map((t15) => {
4047
+ const [product, price] = t15;
4048
+ return /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsxs(Card.Root, {
4049
+ justify: "between",
4050
+ size: "sm",
4051
+ variant: "outline",
4052
+ children: [/* @__PURE__ */ jsxs(Card.Header, { children: [/* @__PURE__ */ jsx(Card.Title, { children: t(product) }), /* @__PURE__ */ jsx(Card.Description, { children: t(`${product}About`) })] }), /* @__PURE__ */ jsxs(Card.Footer, { children: [/* @__PURE__ */ jsx(Text, {
4053
+ as: "span",
4054
+ size: "sm",
4055
+ weight: "semibold",
4056
+ children: price
4057
+ }), /* @__PURE__ */ jsx(Button, {
4058
+ size: "xs",
4059
+ variant: "outline",
4060
+ children: t("add")
4061
+ })] })]
4062
+ }) }, product);
4063
+ });
4064
+ $[30] = t;
4065
+ $[31] = t14;
4066
+ } else t14 = $[31];
4067
+ let t15;
4068
+ if ($[32] !== t14) {
4069
+ t15 = /* @__PURE__ */ jsx(Grid.Root, {
4070
+ columns: "fit-xs",
4071
+ gap: "md",
4072
+ children: t14
4073
+ });
4074
+ $[32] = t14;
4075
+ $[33] = t15;
4076
+ } else t15 = $[33];
4077
+ let t16;
4078
+ if ($[34] !== t13 || $[35] !== t15) {
4079
+ t16 = /* @__PURE__ */ jsx(Body, { children: /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsxs(Section, { children: [t13, t15] }) }) });
4080
+ $[34] = t13;
4081
+ $[35] = t15;
4082
+ $[36] = t16;
4083
+ } else t16 = $[36];
4084
+ let t17;
4085
+ if ($[37] !== props || $[38] !== t11 || $[39] !== t16) {
4086
+ t17 = /* @__PURE__ */ jsxs(Root$2, {
4087
+ scroll: "window",
4088
+ ...props,
4089
+ children: [t11, t16]
4090
+ });
4091
+ $[37] = props;
4092
+ $[38] = t11;
4093
+ $[39] = t16;
4094
+ $[40] = t17;
4095
+ } else t17 = $[40];
4096
+ return t17;
4097
+ }
4098
+ const source$2 = "import { type ReactElement } from \"react\";\n\nimport { SearchIcon, ShoppingBagIcon } from \"lucide-react\";\n\nimport { Button } from \"@stealthscale/component-actions\";\nimport { Grid } from \"@stealthscale/component-layout\";\nimport { Card } from \"@stealthscale/component-surfaces\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Toolbar } from \"@stealthscale/component-screen\";\n\nconst PRODUCTS = [\n [\"mug\", \"£18.00\"],\n [\"bowl\", \"£24.00\"],\n [\"plate\", \"£16.00\"],\n [\"jug\", \"£32.00\"],\n [\"vase\", \"£45.00\"],\n [\"teapot\", \"£58.00\"],\n] as const;\n\nexport function Storefront(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root scroll=\"window\" {...props}>\n <AppShell.Header sticky>\n <Toolbar.Root aria-label={t(\"northwind\")} size=\"sm\">\n <Toolbar.Start>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"northwind\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Search\n aria-label={t(\"searchProducts\")}\n placeholder={t(\"searchProducts\")}\n searchIndicator={<SearchIcon />}\n />\n <Toolbar.Action icon={<ShoppingBagIcon />}>{t(\"basket\")}</Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Body>\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" size=\"sm\">\n {t(\"newIn\")}\n </Heading>\n <Grid.Root columns=\"fit-xs\" gap=\"md\">\n {PRODUCTS.map(([product, price]) => (\n <Grid.Item key={product}>\n <Card.Root justify=\"between\" size=\"sm\" variant=\"outline\">\n <Card.Header>\n <Card.Title>{t(product)}</Card.Title>\n <Card.Description>{t(`${product}About`)}</Card.Description>\n </Card.Header>\n <Card.Footer>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {price}\n </Text>\n <Button size=\"xs\" variant=\"outline\">\n {t(\"add\")}\n </Button>\n </Card.Footer>\n </Card.Root>\n </Grid.Item>\n ))}\n </Grid.Root>\n </AppShell.Section>\n </AppShell.Main>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
4099
+ //#endregion
4100
+ //#region src/app-shell/examples/suite.example.tsx
4101
+ var suite_example_exports = /* @__PURE__ */ __exportAll({
4102
+ Suite: () => Suite,
4103
+ source: () => source$1
4104
+ });
4105
+ const APPS = [
4106
+ [
4107
+ "mailApp",
4108
+ MailIcon,
4109
+ void 0
4110
+ ],
4111
+ [
4112
+ "calendarApp",
4113
+ CalendarIcon,
4114
+ void 0
4115
+ ],
4116
+ [
4117
+ "filesApp",
4118
+ FolderIcon,
4119
+ void 0
4120
+ ],
4121
+ [
4122
+ "settings",
4123
+ SettingsIcon,
4124
+ "page"
4125
+ ]
4126
+ ];
4127
+ const SECTIONS = [
4128
+ [
4129
+ "profile",
4130
+ UserIcon,
4131
+ void 0
4132
+ ],
4133
+ [
4134
+ "notifications",
4135
+ BellIcon,
4136
+ "page"
4137
+ ],
4138
+ [
4139
+ "security",
4140
+ ShieldIcon,
4141
+ void 0
4142
+ ],
4143
+ [
4144
+ "plan",
4145
+ CreditCardIcon,
4146
+ void 0
4147
+ ]
4148
+ ];
4149
+ const RULES = [
4150
+ "notifyMentions",
4151
+ "notifyDigest",
4152
+ "notifyQuiet"
4153
+ ];
4154
+ function Suite(props) {
4155
+ const $ = c(80);
4156
+ const { t } = useWords("app-shell");
4157
+ let t0;
4158
+ if ($[0] !== t) {
4159
+ t0 = t("apps");
4160
+ $[0] = t;
4161
+ $[1] = t0;
4162
+ } else t0 = $[1];
4163
+ let t1;
4164
+ if ($[2] !== t) {
4165
+ t1 = APPS.map((t2) => {
4166
+ const [app, Glyph, current] = t2;
4167
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
4168
+ "aria-current": current,
4169
+ href: `#${app}`,
4170
+ tooltip: t(app),
4171
+ children: [/* @__PURE__ */ jsx(Glyph, {}), /* @__PURE__ */ jsx("span", { children: t(app) })]
4172
+ }) }, app);
4173
+ });
4174
+ $[2] = t;
4175
+ $[3] = t1;
4176
+ } else t1 = $[3];
4177
+ let t2;
4178
+ if ($[4] !== t1) {
4179
+ t2 = /* @__PURE__ */ jsx(NavList.Root, { children: t1 });
4180
+ $[4] = t1;
4181
+ $[5] = t2;
4182
+ } else t2 = $[5];
4183
+ let t3;
4184
+ if ($[6] !== t0 || $[7] !== t2) {
4185
+ t3 = /* @__PURE__ */ jsx(Navbar, {
4186
+ folds: "hide",
4187
+ name: "apps",
4188
+ width: "4rem",
4189
+ children: /* @__PURE__ */ jsx(Root$1, {
4190
+ iconic: true,
4191
+ children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(Nav, {
4192
+ "aria-label": t0,
4193
+ children: t2
4194
+ }) })
4195
+ })
4196
+ });
4197
+ $[6] = t0;
4198
+ $[7] = t2;
4199
+ $[8] = t3;
4200
+ } else t3 = $[8];
4201
+ let t4;
4202
+ if ($[9] !== t) {
4203
+ t4 = t("settings");
4204
+ $[9] = t;
4205
+ $[10] = t4;
4206
+ } else t4 = $[10];
4207
+ let t5;
4208
+ if ($[11] !== t4) {
4209
+ t5 = /* @__PURE__ */ jsx(NavLabel, { children: t4 });
4210
+ $[11] = t4;
4211
+ $[12] = t5;
4212
+ } else t5 = $[12];
4213
+ let t6;
4214
+ if ($[13] !== t) {
4215
+ t6 = SECTIONS.map((t7) => {
4216
+ const [section, Glyph_0, current_0] = t7;
4217
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
4218
+ "aria-current": current_0,
4219
+ href: `#${section}`,
4220
+ children: [/* @__PURE__ */ jsx(Glyph_0, {}), /* @__PURE__ */ jsx("span", { children: t(section) })]
4221
+ }) }, section);
4222
+ });
4223
+ $[13] = t;
4224
+ $[14] = t6;
4225
+ } else t6 = $[14];
4226
+ let t7;
4227
+ if ($[15] !== t6) {
4228
+ t7 = /* @__PURE__ */ jsx(NavList.Root, { children: t6 });
4229
+ $[15] = t6;
4230
+ $[16] = t7;
4231
+ } else t7 = $[16];
4232
+ let t8;
4233
+ if ($[17] !== t5 || $[18] !== t7) {
4234
+ t8 = /* @__PURE__ */ jsx(Navbar, {
4235
+ name: "sections",
4236
+ resizable: true,
4237
+ children: /* @__PURE__ */ jsx(Root$1, { children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(Nav, { children: [t5, t7] }) }) })
4238
+ });
4239
+ $[17] = t5;
4240
+ $[18] = t7;
4241
+ $[19] = t8;
4242
+ } else t8 = $[19];
4243
+ let t9;
4244
+ if ($[20] !== t) {
4245
+ t9 = t("resizeSections");
4246
+ $[20] = t;
4247
+ $[21] = t9;
4248
+ } else t9 = $[21];
4249
+ let t10;
4250
+ if ($[22] !== t9) {
4251
+ t10 = /* @__PURE__ */ jsx(Rail, {
4252
+ panel: "sections",
4253
+ resizeLabel: t9
4254
+ });
4255
+ $[22] = t9;
4256
+ $[23] = t10;
4257
+ } else t10 = $[23];
4258
+ let t11;
4259
+ if ($[24] !== t) {
4260
+ t11 = t("northwind");
4261
+ $[24] = t;
4262
+ $[25] = t11;
4263
+ } else t11 = $[25];
4264
+ let t12;
4265
+ if ($[26] !== t) {
4266
+ t12 = t("navigation");
4267
+ $[26] = t;
4268
+ $[27] = t12;
4269
+ } else t12 = $[27];
4270
+ let t13;
4271
+ if ($[28] === Symbol.for("react.memo_cache_sentinel")) {
4272
+ t13 = /* @__PURE__ */ jsx(MenuIcon, {});
4273
+ $[28] = t13;
4274
+ } else t13 = $[28];
4275
+ let t14;
4276
+ if ($[29] !== t12) {
4277
+ t14 = /* @__PURE__ */ jsx(Item, {
4278
+ "aria-label": t12,
4279
+ as: Trigger,
4280
+ panel: "sections",
4281
+ shape: "square",
4282
+ children: t13
4283
+ });
4284
+ $[29] = t12;
4285
+ $[30] = t14;
4286
+ } else t14 = $[30];
4287
+ let t15;
4288
+ if ($[31] !== t) {
4289
+ t15 = t("northwind");
4290
+ $[31] = t;
4291
+ $[32] = t15;
4292
+ } else t15 = $[32];
4293
+ let t16;
4294
+ if ($[33] !== t15) {
4295
+ t16 = /* @__PURE__ */ jsx(Text, {
4296
+ as: "span",
4297
+ size: "sm",
4298
+ weight: "semibold",
4299
+ children: t15
4300
+ });
4301
+ $[33] = t15;
4302
+ $[34] = t16;
4303
+ } else t16 = $[34];
4304
+ let t17;
4305
+ if ($[35] !== t14 || $[36] !== t16) {
4306
+ t17 = /* @__PURE__ */ jsxs(Start, { children: [t14, t16] });
4307
+ $[35] = t14;
4308
+ $[36] = t16;
4309
+ $[37] = t17;
4310
+ } else t17 = $[37];
4311
+ let t18;
4312
+ if ($[38] !== t11 || $[39] !== t17) {
4313
+ t18 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsx(Root, {
4314
+ "aria-label": t11,
4315
+ size: "sm",
4316
+ children: t17
4317
+ }) });
4318
+ $[38] = t11;
4319
+ $[39] = t17;
4320
+ $[40] = t18;
4321
+ } else t18 = $[40];
4322
+ let t19;
4323
+ if ($[41] !== t) {
4324
+ t19 = t("notifications");
4325
+ $[41] = t;
4326
+ $[42] = t19;
4327
+ } else t19 = $[42];
4328
+ let t20;
4329
+ if ($[43] !== t19) {
4330
+ t20 = /* @__PURE__ */ jsx(Heading, {
4331
+ as: "h2",
4332
+ size: "md",
4333
+ children: t19
4334
+ });
4335
+ $[43] = t19;
4336
+ $[44] = t20;
4337
+ } else t20 = $[44];
4338
+ let t21;
4339
+ if ($[45] !== t) {
4340
+ t21 = t("notificationsAbout");
4341
+ $[45] = t;
4342
+ $[46] = t21;
4343
+ } else t21 = $[46];
4344
+ let t22;
4345
+ if ($[47] !== t21) {
4346
+ t22 = /* @__PURE__ */ jsx(Text, {
4347
+ size: "sm",
4348
+ tone: "muted",
4349
+ children: t21
4350
+ });
4351
+ $[47] = t21;
4352
+ $[48] = t22;
4353
+ } else t22 = $[48];
4354
+ let t23;
4355
+ if ($[49] !== t20 || $[50] !== t22) {
4356
+ t23 = /* @__PURE__ */ jsxs(Section, { children: [t20, t22] });
4357
+ $[49] = t20;
4358
+ $[50] = t22;
4359
+ $[51] = t23;
4360
+ } else t23 = $[51];
4361
+ let t24;
4362
+ if ($[52] !== t) {
4363
+ t24 = RULES.map((rule) => /* @__PURE__ */ jsx(Text, {
4364
+ size: "sm",
4365
+ children: t(rule)
4366
+ }, rule));
4367
+ $[52] = t;
4368
+ $[53] = t24;
4369
+ } else t24 = $[53];
4370
+ let t25;
4371
+ if ($[54] !== t24) {
4372
+ t25 = /* @__PURE__ */ jsx(Section, { children: t24 });
4373
+ $[54] = t24;
4374
+ $[55] = t25;
4375
+ } else t25 = $[55];
4376
+ let t26;
4377
+ if ($[56] !== t23 || $[57] !== t25) {
4378
+ t26 = /* @__PURE__ */ jsxs(Main, { children: [t23, t25] });
4379
+ $[56] = t23;
4380
+ $[57] = t25;
4381
+ $[58] = t26;
4382
+ } else t26 = $[58];
4383
+ let t27;
4384
+ if ($[59] !== t) {
4385
+ t27 = t("apps");
4386
+ $[59] = t;
4387
+ $[60] = t27;
4388
+ } else t27 = $[60];
4389
+ let t28;
4390
+ if ($[61] !== t) {
4391
+ t28 = APPS.map((t29) => {
4392
+ const [app_0, Glyph_1, current_1] = t29;
4393
+ return /* @__PURE__ */ jsx(Link$1, {
4394
+ current: current_1 === "page",
4395
+ href: `#${app_0}`,
4396
+ icon: /* @__PURE__ */ jsx(Glyph_1, {}),
4397
+ children: t(app_0)
4398
+ }, app_0);
4399
+ });
4400
+ $[61] = t;
4401
+ $[62] = t28;
4402
+ } else t28 = $[62];
4403
+ let t29;
4404
+ if ($[63] !== t28) {
4405
+ t29 = /* @__PURE__ */ jsx(Center, { children: t28 });
4406
+ $[63] = t28;
4407
+ $[64] = t29;
4408
+ } else t29 = $[64];
4409
+ let t30;
4410
+ if ($[65] !== t27 || $[66] !== t29) {
4411
+ t30 = /* @__PURE__ */ jsx(Footer, {
4412
+ when: "narrow",
4413
+ children: /* @__PURE__ */ jsx(Root, {
4414
+ "aria-label": t27,
4415
+ size: "sm",
4416
+ children: t29
4417
+ })
4418
+ });
4419
+ $[65] = t27;
4420
+ $[66] = t29;
4421
+ $[67] = t30;
4422
+ } else t30 = $[67];
4423
+ let t31;
4424
+ if ($[68] !== t18 || $[69] !== t26 || $[70] !== t30) {
4425
+ t31 = /* @__PURE__ */ jsxs(Pane, { children: [
4426
+ t18,
4427
+ t26,
4428
+ t30
4429
+ ] });
4430
+ $[68] = t18;
4431
+ $[69] = t26;
4432
+ $[70] = t30;
4433
+ $[71] = t31;
4434
+ } else t31 = $[71];
4435
+ let t32;
4436
+ if ($[72] !== t10 || $[73] !== t3 || $[74] !== t31 || $[75] !== t8) {
4437
+ t32 = /* @__PURE__ */ jsxs(Body, { children: [
4438
+ t3,
4439
+ t8,
4440
+ t10,
4441
+ t31
4442
+ ] });
4443
+ $[72] = t10;
4444
+ $[73] = t3;
4445
+ $[74] = t31;
4446
+ $[75] = t8;
4447
+ $[76] = t32;
4448
+ } else t32 = $[76];
4449
+ let t33;
4450
+ if ($[77] !== props || $[78] !== t32) {
4451
+ t33 = /* @__PURE__ */ jsx(Root$2, {
4452
+ variant: "inset",
4453
+ ...props,
4454
+ children: t32
4455
+ });
4456
+ $[77] = props;
4457
+ $[78] = t32;
4458
+ $[79] = t33;
4459
+ } else t33 = $[79];
4460
+ return t33;
4461
+ }
4462
+ const source$1 = "import { type ReactElement } from \"react\";\n\nimport {\n BellIcon,\n CalendarIcon,\n CreditCardIcon,\n FolderIcon,\n MailIcon,\n MenuIcon,\n SettingsIcon,\n ShieldIcon,\n UserIcon,\n} from \"lucide-react\";\n\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst APPS = [\n [\"mailApp\", MailIcon, undefined],\n [\"calendarApp\", CalendarIcon, undefined],\n [\"filesApp\", FolderIcon, undefined],\n [\"settings\", SettingsIcon, \"page\"],\n] as const;\n\nconst SECTIONS = [\n [\"profile\", UserIcon, undefined],\n [\"notifications\", BellIcon, \"page\"],\n [\"security\", ShieldIcon, undefined],\n [\"plan\", CreditCardIcon, undefined],\n] as const;\n\nconst RULES = [\"notifyMentions\", \"notifyDigest\", \"notifyQuiet\"] as const;\n\nexport function Suite(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root variant=\"inset\" {...props}>\n <AppShell.Body>\n <AppShell.Navbar folds=\"hide\" name=\"apps\" width=\"4rem\">\n <Sidebar.Root iconic>\n <Sidebar.Content>\n <Sidebar.Nav aria-label={t(\"apps\")}>\n <NavList.Root>\n {APPS.map(([app, Glyph, current]) => (\n <NavList.Item key={app}>\n <NavList.Link aria-current={current} href={`#${app}`} tooltip={t(app)}>\n <Glyph />\n <span>{t(app)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Navbar name=\"sections\" resizable>\n <Sidebar.Root>\n <Sidebar.Content>\n <Sidebar.Nav>\n <Sidebar.NavLabel>{t(\"settings\")}</Sidebar.NavLabel>\n <NavList.Root>\n {SECTIONS.map(([section, Glyph, current]) => (\n <NavList.Item key={section}>\n <NavList.Link aria-current={current} href={`#${section}`}>\n <Glyph />\n <span>{t(section)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Rail panel=\"sections\" resizeLabel={t(\"resizeSections\")} />\n <AppShell.Pane>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"northwind\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item\n aria-label={t(\"navigation\")}\n as={AppShell.Trigger}\n panel=\"sections\"\n shape=\"square\"\n >\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"northwind\")}\n </Text>\n </Toolbar.Start>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" size=\"md\">\n {t(\"notifications\")}\n </Heading>\n <Text size=\"sm\" tone=\"muted\">\n {t(\"notificationsAbout\")}\n </Text>\n </AppShell.Section>\n <AppShell.Section>\n {RULES.map((rule) => (\n <Text key={rule} size=\"sm\">\n {t(rule)}\n </Text>\n ))}\n </AppShell.Section>\n </AppShell.Main>\n <AppShell.Footer when=\"narrow\">\n <Toolbar.Root aria-label={t(\"apps\")} size=\"sm\">\n <Toolbar.Center>\n {APPS.map(([app, Glyph, current]) => (\n <Toolbar.Link\n current={current === \"page\"}\n href={`#${app}`}\n icon={<Glyph />}\n key={app}\n >\n {t(app)}\n </Toolbar.Link>\n ))}\n </Toolbar.Center>\n </Toolbar.Root>\n </AppShell.Footer>\n </AppShell.Pane>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
4463
+ //#endregion
4464
+ //#region src/app-shell/examples/tracker.example.tsx
4465
+ var tracker_example_exports = /* @__PURE__ */ __exportAll({
4466
+ Tracker: () => Tracker,
4467
+ source: () => source
4468
+ });
4469
+ const PROJECTS = [
4470
+ ["projectCheckout", "page"],
4471
+ ["projectPayouts", void 0],
4472
+ ["projectSearch", void 0]
4473
+ ];
4474
+ const FACTS = [
4475
+ ["assignee", "mara"],
4476
+ ["priority", "priorityHigh"],
4477
+ ["opened", "openedWhen"]
4478
+ ];
4479
+ function Tracker(props) {
4480
+ const $ = c(97);
4481
+ const { t } = useWords("app-shell");
4482
+ let t0;
4483
+ if ($[0] !== t) {
4484
+ t0 = t("projects");
4485
+ $[0] = t;
4486
+ $[1] = t0;
4487
+ } else t0 = $[1];
4488
+ let t1;
4489
+ if ($[2] !== t0) {
4490
+ t1 = /* @__PURE__ */ jsx(NavLabel, { children: t0 });
4491
+ $[2] = t0;
4492
+ $[3] = t1;
4493
+ } else t1 = $[3];
4494
+ let t2;
4495
+ if ($[4] !== t) {
4496
+ t2 = PROJECTS.map((t3) => {
4497
+ const [project, current] = t3;
4498
+ return /* @__PURE__ */ jsx(NavList.Item, { children: /* @__PURE__ */ jsxs(NavList.Link, {
4499
+ "aria-current": current,
4500
+ href: `#${project}`,
4501
+ children: [/* @__PURE__ */ jsx(FolderKanbanIcon, {}), /* @__PURE__ */ jsx("span", { children: t(project) })]
4502
+ }) }, project);
4503
+ });
4504
+ $[4] = t;
4505
+ $[5] = t2;
4506
+ } else t2 = $[5];
4507
+ let t3;
4508
+ if ($[6] !== t2) {
4509
+ t3 = /* @__PURE__ */ jsx(NavList.Root, { children: t2 });
4510
+ $[6] = t2;
4511
+ $[7] = t3;
4512
+ } else t3 = $[7];
4513
+ let t4;
4514
+ if ($[8] !== t1 || $[9] !== t3) {
4515
+ t4 = /* @__PURE__ */ jsx(Navbar, { children: /* @__PURE__ */ jsx(Root$1, { children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(Nav, { children: [t1, t3] }) }) }) });
4516
+ $[8] = t1;
4517
+ $[9] = t3;
4518
+ $[10] = t4;
4519
+ } else t4 = $[10];
4520
+ let t5;
4521
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
4522
+ t5 = /* @__PURE__ */ jsx(Rail, {});
4523
+ $[11] = t5;
4524
+ } else t5 = $[11];
4525
+ let t6;
4526
+ if ($[12] !== t) {
4527
+ t6 = t("issue");
4528
+ $[12] = t;
4529
+ $[13] = t6;
4530
+ } else t6 = $[13];
4531
+ let t7;
4532
+ if ($[14] !== t) {
4533
+ t7 = t("navigation");
4534
+ $[14] = t;
4535
+ $[15] = t7;
4536
+ } else t7 = $[15];
4537
+ let t8;
4538
+ if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
4539
+ t8 = /* @__PURE__ */ jsx(MenuIcon, {});
4540
+ $[16] = t8;
4541
+ } else t8 = $[16];
4542
+ let t9;
4543
+ if ($[17] !== t7) {
4544
+ t9 = /* @__PURE__ */ jsx(Item, {
4545
+ "aria-label": t7,
4546
+ as: Trigger,
4547
+ shape: "square",
4548
+ children: t8
4549
+ });
4550
+ $[17] = t7;
4551
+ $[18] = t9;
4552
+ } else t9 = $[18];
4553
+ let t10;
4554
+ if ($[19] !== t) {
4555
+ t10 = t("issue");
4556
+ $[19] = t;
4557
+ $[20] = t10;
4558
+ } else t10 = $[20];
4559
+ let t11;
4560
+ if ($[21] !== t10) {
4561
+ t11 = /* @__PURE__ */ jsx(Text, {
4562
+ as: "span",
4563
+ size: "sm",
4564
+ weight: "semibold",
4565
+ children: t10
4566
+ });
4567
+ $[21] = t10;
4568
+ $[22] = t11;
4569
+ } else t11 = $[22];
4570
+ let t12;
4571
+ if ($[23] !== t11 || $[24] !== t9) {
4572
+ t12 = /* @__PURE__ */ jsxs(Start, { children: [t9, t11] });
4573
+ $[23] = t11;
4574
+ $[24] = t9;
4575
+ $[25] = t12;
4576
+ } else t12 = $[25];
4577
+ let t13;
4578
+ if ($[26] !== t) {
4579
+ t13 = t("resolve");
4580
+ $[26] = t;
4581
+ $[27] = t13;
4582
+ } else t13 = $[27];
4583
+ let t14;
4584
+ if ($[28] !== t13) {
4585
+ t14 = /* @__PURE__ */ jsx(Action, {
4586
+ primary: true,
4587
+ children: t13
4588
+ });
4589
+ $[28] = t13;
4590
+ $[29] = t14;
4591
+ } else t14 = $[29];
4592
+ let t15;
4593
+ if ($[30] !== t) {
4594
+ t15 = t("details");
4595
+ $[30] = t;
4596
+ $[31] = t15;
4597
+ } else t15 = $[31];
4598
+ let t16;
4599
+ if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
4600
+ t16 = /* @__PURE__ */ jsx(PanelRightIcon, {});
4601
+ $[32] = t16;
4602
+ } else t16 = $[32];
4603
+ let t17;
4604
+ if ($[33] !== t15) {
4605
+ t17 = /* @__PURE__ */ jsx(Item, {
4606
+ "aria-label": t15,
4607
+ as: Trigger,
4608
+ panel: "aside",
4609
+ shape: "square",
4610
+ children: t16
4611
+ });
4612
+ $[33] = t15;
4613
+ $[34] = t17;
4614
+ } else t17 = $[34];
4615
+ let t18;
4616
+ if ($[35] !== t14 || $[36] !== t17) {
4617
+ t18 = /* @__PURE__ */ jsxs(End, { children: [t14, t17] });
4618
+ $[35] = t14;
4619
+ $[36] = t17;
4620
+ $[37] = t18;
4621
+ } else t18 = $[37];
4622
+ let t19;
4623
+ if ($[38] !== t12 || $[39] !== t18 || $[40] !== t6) {
4624
+ t19 = /* @__PURE__ */ jsx(Header, { children: /* @__PURE__ */ jsxs(Root, {
4625
+ "aria-label": t6,
4626
+ size: "sm",
4627
+ children: [t12, t18]
4628
+ }) });
4629
+ $[38] = t12;
4630
+ $[39] = t18;
4631
+ $[40] = t6;
4632
+ $[41] = t19;
4633
+ } else t19 = $[41];
4634
+ let t20;
4635
+ if ($[42] !== t) {
4636
+ t20 = t("issueTitle");
4637
+ $[42] = t;
4638
+ $[43] = t20;
4639
+ } else t20 = $[43];
4640
+ let t21;
4641
+ if ($[44] !== t20) {
4642
+ t21 = /* @__PURE__ */ jsx(Heading, {
4643
+ as: "h2",
4644
+ size: "sm",
4645
+ children: t20
4646
+ });
4647
+ $[44] = t20;
4648
+ $[45] = t21;
4649
+ } else t21 = $[45];
4650
+ let t22;
4651
+ if ($[46] !== t) {
4652
+ t22 = t("issueOne");
4653
+ $[46] = t;
4654
+ $[47] = t22;
4655
+ } else t22 = $[47];
4656
+ let t23;
4657
+ if ($[48] !== t22) {
4658
+ t23 = /* @__PURE__ */ jsx(Text, {
4659
+ size: "sm",
4660
+ children: t22
4661
+ });
4662
+ $[48] = t22;
4663
+ $[49] = t23;
4664
+ } else t23 = $[49];
4665
+ let t24;
4666
+ if ($[50] !== t) {
4667
+ t24 = t("issueTwo");
4668
+ $[50] = t;
4669
+ $[51] = t24;
4670
+ } else t24 = $[51];
4671
+ let t25;
4672
+ if ($[52] !== t24) {
4673
+ t25 = /* @__PURE__ */ jsx(Text, {
4674
+ size: "sm",
4675
+ children: t24
4676
+ });
4677
+ $[52] = t24;
4678
+ $[53] = t25;
4679
+ } else t25 = $[53];
4680
+ let t26;
4681
+ if ($[54] !== t21 || $[55] !== t23 || $[56] !== t25) {
4682
+ t26 = /* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsxs(Section, { children: [
4683
+ t21,
4684
+ t23,
4685
+ t25
4686
+ ] }) });
4687
+ $[54] = t21;
4688
+ $[55] = t23;
4689
+ $[56] = t25;
4690
+ $[57] = t26;
4691
+ } else t26 = $[57];
4692
+ let t27;
4693
+ if ($[58] !== t) {
4694
+ t27 = t("issueUpdated");
4695
+ $[58] = t;
4696
+ $[59] = t27;
4697
+ } else t27 = $[59];
4698
+ let t28;
4699
+ if ($[60] !== t27) {
4700
+ t28 = /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsx(Text, {
4701
+ size: "sm",
4702
+ tone: "muted",
4703
+ children: t27
4704
+ }) });
4705
+ $[60] = t27;
4706
+ $[61] = t28;
4707
+ } else t28 = $[61];
4708
+ let t29;
4709
+ if ($[62] !== t19 || $[63] !== t26 || $[64] !== t28) {
4710
+ t29 = /* @__PURE__ */ jsxs(Pane, { children: [
4711
+ t19,
4712
+ t26,
4713
+ t28
4714
+ ] });
4715
+ $[62] = t19;
4716
+ $[63] = t26;
4717
+ $[64] = t28;
4718
+ $[65] = t29;
4719
+ } else t29 = $[65];
4720
+ let t30;
4721
+ if ($[66] !== t) {
4722
+ t30 = t("details");
4723
+ $[66] = t;
4724
+ $[67] = t30;
4725
+ } else t30 = $[67];
4726
+ let t31;
4727
+ if ($[68] !== t30) {
4728
+ t31 = /* @__PURE__ */ jsx(Heading, {
4729
+ as: "h2",
4730
+ size: "xs",
4731
+ children: t30
4732
+ });
4733
+ $[68] = t30;
4734
+ $[69] = t31;
4735
+ } else t31 = $[69];
4736
+ let t32;
4737
+ if ($[70] !== t) {
4738
+ t32 = t("status");
4739
+ $[70] = t;
4740
+ $[71] = t32;
4741
+ } else t32 = $[71];
4742
+ let t33;
4743
+ if ($[72] !== t32) {
4744
+ t33 = /* @__PURE__ */ jsx(DataList.ItemLabel, { children: t32 });
4745
+ $[72] = t32;
4746
+ $[73] = t33;
4747
+ } else t33 = $[73];
4748
+ let t34;
4749
+ if ($[74] === Symbol.for("react.memo_cache_sentinel")) {
4750
+ t34 = /* @__PURE__ */ jsx(Status.Indicator, {});
4751
+ $[74] = t34;
4752
+ } else t34 = $[74];
4753
+ let t35;
4754
+ if ($[75] !== t) {
4755
+ t35 = t("inProgress");
4756
+ $[75] = t;
4757
+ $[76] = t35;
4758
+ } else t35 = $[76];
4759
+ let t36;
4760
+ if ($[77] !== t35) {
4761
+ t36 = /* @__PURE__ */ jsx(DataList.ItemValue, { children: /* @__PURE__ */ jsxs(Status.Root, {
4762
+ palette: "warning",
4763
+ size: "inherit",
4764
+ children: [t34, t35]
4765
+ }) });
4766
+ $[77] = t35;
4767
+ $[78] = t36;
4768
+ } else t36 = $[78];
4769
+ let t37;
4770
+ if ($[79] !== t33 || $[80] !== t36) {
4771
+ t37 = /* @__PURE__ */ jsxs(DataList.Item, { children: [t33, t36] });
4772
+ $[79] = t33;
4773
+ $[80] = t36;
4774
+ $[81] = t37;
4775
+ } else t37 = $[81];
4776
+ let t38;
4777
+ if ($[82] !== t) {
4778
+ t38 = FACTS.map((t39) => {
4779
+ const [label, value] = t39;
4780
+ return /* @__PURE__ */ jsxs(DataList.Item, { children: [/* @__PURE__ */ jsx(DataList.ItemLabel, { children: t(label) }), /* @__PURE__ */ jsx(DataList.ItemValue, { children: t(value) })] }, label);
4781
+ });
4782
+ $[82] = t;
4783
+ $[83] = t38;
4784
+ } else t38 = $[83];
4785
+ let t39;
4786
+ if ($[84] !== t37 || $[85] !== t38) {
4787
+ t39 = /* @__PURE__ */ jsxs(DataList.Root, {
4788
+ orientation: "horizontal",
4789
+ size: "sm",
4790
+ children: [t37, t38]
4791
+ });
4792
+ $[84] = t37;
4793
+ $[85] = t38;
4794
+ $[86] = t39;
4795
+ } else t39 = $[86];
4796
+ let t40;
4797
+ if ($[87] !== t31 || $[88] !== t39) {
4798
+ t40 = /* @__PURE__ */ jsx(Aside, {
4799
+ width: "16rem",
4800
+ children: /* @__PURE__ */ jsxs(Section, { children: [t31, t39] })
4801
+ });
4802
+ $[87] = t31;
4803
+ $[88] = t39;
4804
+ $[89] = t40;
4805
+ } else t40 = $[89];
4806
+ let t41;
4807
+ if ($[90] !== t29 || $[91] !== t4 || $[92] !== t40) {
4808
+ t41 = /* @__PURE__ */ jsxs(Body, { children: [
4809
+ t4,
4810
+ t5,
4811
+ t29,
4812
+ t40
4813
+ ] });
4814
+ $[90] = t29;
4815
+ $[91] = t4;
4816
+ $[92] = t40;
4817
+ $[93] = t41;
4818
+ } else t41 = $[93];
4819
+ let t42;
4820
+ if ($[94] !== props || $[95] !== t41) {
4821
+ t42 = /* @__PURE__ */ jsx(Root$2, {
4822
+ ...props,
4823
+ children: t41
4824
+ });
4825
+ $[94] = props;
4826
+ $[95] = t41;
4827
+ $[96] = t42;
4828
+ } else t42 = $[96];
4829
+ return t42;
4830
+ }
4831
+ const source = "import { type ReactElement } from \"react\";\n\nimport { FolderKanbanIcon, MenuIcon, PanelRightIcon } from \"lucide-react\";\n\nimport { DataList } from \"@stealthscale/component-collections\";\nimport { Status } from \"@stealthscale/component-data\";\nimport { NavList } from \"@stealthscale/component-navigation\";\nimport { Heading, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { AppShell, Sidebar, Toolbar } from \"@stealthscale/component-screen\";\n\nconst PROJECTS = [\n [\"projectCheckout\", \"page\"],\n [\"projectPayouts\", undefined],\n [\"projectSearch\", undefined],\n] as const;\n\nconst FACTS = [\n [\"assignee\", \"mara\"],\n [\"priority\", \"priorityHigh\"],\n [\"opened\", \"openedWhen\"],\n] as const;\n\nexport function Tracker(props: AppShell.RootProps): ReactElement {\n const { t } = useWords(\"app-shell\");\n\n return (\n <AppShell.Root {...props}>\n <AppShell.Body>\n <AppShell.Navbar>\n <Sidebar.Root>\n <Sidebar.Content>\n <Sidebar.Nav>\n <Sidebar.NavLabel>{t(\"projects\")}</Sidebar.NavLabel>\n <NavList.Root>\n {PROJECTS.map(([project, current]) => (\n <NavList.Item key={project}>\n <NavList.Link aria-current={current} href={`#${project}`}>\n <FolderKanbanIcon />\n <span>{t(project)}</span>\n </NavList.Link>\n </NavList.Item>\n ))}\n </NavList.Root>\n </Sidebar.Nav>\n </Sidebar.Content>\n </Sidebar.Root>\n </AppShell.Navbar>\n <AppShell.Rail />\n <AppShell.Pane>\n <AppShell.Header>\n <Toolbar.Root aria-label={t(\"issue\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Item aria-label={t(\"navigation\")} as={AppShell.Trigger} shape=\"square\">\n <MenuIcon />\n </Toolbar.Item>\n <Text as=\"span\" size=\"sm\" weight=\"semibold\">\n {t(\"issue\")}\n </Text>\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action primary>{t(\"resolve\")}</Toolbar.Action>\n <Toolbar.Item\n aria-label={t(\"details\")}\n as={AppShell.Trigger}\n panel=\"aside\"\n shape=\"square\"\n >\n <PanelRightIcon />\n </Toolbar.Item>\n </Toolbar.End>\n </Toolbar.Root>\n </AppShell.Header>\n <AppShell.Main>\n <AppShell.Section>\n <Heading as=\"h2\" size=\"sm\">\n {t(\"issueTitle\")}\n </Heading>\n <Text size=\"sm\">{t(\"issueOne\")}</Text>\n <Text size=\"sm\">{t(\"issueTwo\")}</Text>\n </AppShell.Section>\n </AppShell.Main>\n <AppShell.Footer>\n <Text size=\"sm\" tone=\"muted\">\n {t(\"issueUpdated\")}\n </Text>\n </AppShell.Footer>\n </AppShell.Pane>\n <AppShell.Aside width=\"16rem\">\n <AppShell.Section>\n <Heading as=\"h2\" size=\"xs\">\n {t(\"details\")}\n </Heading>\n <DataList.Root orientation=\"horizontal\" size=\"sm\">\n <DataList.Item>\n <DataList.ItemLabel>{t(\"status\")}</DataList.ItemLabel>\n <DataList.ItemValue>\n <Status.Root palette=\"warning\" size=\"inherit\">\n <Status.Indicator />\n {t(\"inProgress\")}\n </Status.Root>\n </DataList.ItemValue>\n </DataList.Item>\n {FACTS.map(([label, value]) => (\n <DataList.Item key={label}>\n <DataList.ItemLabel>{t(label)}</DataList.ItemLabel>\n <DataList.ItemValue>{t(value)}</DataList.ItemValue>\n </DataList.Item>\n ))}\n </DataList.Root>\n </AppShell.Section>\n </AppShell.Aside>\n </AppShell.Body>\n </AppShell.Root>\n );\n}\n";
4832
+ //#endregion
4833
+ //#region src/app-shell/app-shell.specimen.tsx
4834
+ /**
4835
+ * Returns a scene that renders one application in a window.
4836
+ *
4837
+ * @param name - The scene's key under `app-shell`, and the example's name.
4838
+ * @param example - The example module.
4839
+ * @param Application - The example's component.
4840
+ * @param window - The window's height, whether it scrolls and the axes the scene renders.
4841
+ * @returns The scene.
4842
+ */
4843
+ function applied(name, example, Application, window) {
4844
+ return {
4845
+ about: `app-shell.${name}.about`,
4846
+ axes: [...window.axes ?? []],
4847
+ draw: () => /* @__PURE__ */ jsx(Screen, {
4848
+ scrolls: window.scrolls ?? false,
4849
+ size: window.size,
4850
+ children: /* @__PURE__ */ jsx(Application, {})
4851
+ }),
4852
+ example,
4853
+ frame: "bleed",
4854
+ title: `app-shell.${name}.title`
4855
+ };
4856
+ }
4857
+ var app_shell_specimen_default = specimen({
4858
+ about: "app-shell.about",
4859
+ id: "components/screen/app-shell",
4860
+ imports: "import { AppShell } from \"@stealthscale/component-screen\";",
4861
+ scenes: [
4862
+ applied("console", console_example_exports, Console, { size: "lg" }),
4863
+ applied("chat", chat_example_exports, Chat, { size: "sm" }),
4864
+ applied("suite", suite_example_exports, Suite, { size: "sm" }),
4865
+ applied("tracker", tracker_example_exports, Tracker, { size: "sm" }),
4866
+ applied("files", files_example_exports, Files, { size: "sm" }),
4867
+ applied("mail", mail_example_exports, Mail, { size: "sm" }),
4868
+ applied("checkout", checkout_example_exports, Checkout, { size: "sm" }),
4869
+ applied("handbook", handbook_example_exports, Handbook, {
4870
+ axes: ["variant"],
4871
+ size: "md"
4872
+ }),
4873
+ applied("canvas", canvas_example_exports, Canvas, {
4874
+ axes: ["divided", "variant"],
4875
+ size: "sm"
4876
+ }),
4877
+ applied("billing", billing_example_exports, Billing, { size: "sm" }),
4878
+ applied("reader", reader_example_exports, Reader, {
4879
+ axes: ["content"],
4880
+ size: "sm"
4881
+ }),
4882
+ applied("storefront", storefront_example_exports, Storefront, {
4883
+ axes: ["scroll"],
4884
+ scrolls: true,
4885
+ size: "xs"
4886
+ }),
4887
+ applied("journal", journal_example_exports, Journal, {
4888
+ scrolls: true,
4889
+ size: "xs"
4890
+ }),
4891
+ applied("player", player_example_exports, Player, {
4892
+ scrolls: true,
4893
+ size: "xs"
4894
+ })
4895
+ ],
4896
+ title: "app-shell.title"
4897
+ });
4898
+ //#endregion
4899
+ export { app_shell_specimen_default as default };