@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,1045 @@
1
+ import { t as __exportAll } from "../../rolldown-runtime-D7D4PA-g.js";
2
+ import { t as recipe } from "../../recipes-Cmy1leBm.js";
3
+ import { a as Start, c as Root, d as End, f as Center, i as Title, l as Link, o as Separator, p as Action, qt as Item, s as Search, u as Group$1 } from "../../shared-DxlFabHA.js";
4
+ import { c } from "react/compiler-runtime";
5
+ import { Button, IconButton } from "@stealthscale/component-actions";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { useState } from "react";
8
+ import { Stack } from "@stealthscale/component-layout";
9
+ import { Room, Sample, scenesOf, specimen, useWords } from "@stealthscale/specimen";
10
+ import { BoldIcon, Columns3Icon, DownloadIcon, EllipsisIcon, FunnelIcon, ItalicIcon, MenuIcon, PlusIcon, SearchIcon, ShareIcon, UnderlineIcon, XIcon } from "lucide-react";
11
+ import { Text } from "@stealthscale/component-typography";
12
+ //#region src/toolbar/examples/editor.example.tsx
13
+ var editor_example_exports = /* @__PURE__ */ __exportAll({
14
+ Editor: () => Editor,
15
+ source: () => source$5
16
+ });
17
+ const MARKS = [
18
+ {
19
+ Mark: BoldIcon,
20
+ name: "bold"
21
+ },
22
+ {
23
+ Mark: ItalicIcon,
24
+ name: "italic"
25
+ },
26
+ {
27
+ Mark: UnderlineIcon,
28
+ name: "underline"
29
+ }
30
+ ];
31
+ function Editor(props) {
32
+ const $ = c(32);
33
+ const { t } = useWords("toolbar");
34
+ let t0;
35
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
36
+ t0 = [];
37
+ $[0] = t0;
38
+ } else t0 = $[0];
39
+ const [marked, setMarked] = useState(t0);
40
+ let t1;
41
+ if ($[1] !== t) {
42
+ t1 = t("editing");
43
+ $[1] = t;
44
+ $[2] = t1;
45
+ } else t1 = $[2];
46
+ let t2;
47
+ if ($[3] !== t) {
48
+ t2 = t("menu");
49
+ $[3] = t;
50
+ $[4] = t2;
51
+ } else t2 = $[4];
52
+ let t3;
53
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
54
+ t3 = /* @__PURE__ */ jsx(MenuIcon, { size: "1em" });
55
+ $[5] = t3;
56
+ } else t3 = $[5];
57
+ let t4;
58
+ if ($[6] !== t2) {
59
+ t4 = /* @__PURE__ */ jsx(Start, { children: /* @__PURE__ */ jsx(Item, {
60
+ "aria-label": t2,
61
+ as: IconButton,
62
+ variant: "ghost",
63
+ children: t3
64
+ }) });
65
+ $[6] = t2;
66
+ $[7] = t4;
67
+ } else t4 = $[7];
68
+ let t5;
69
+ if ($[8] !== t) {
70
+ t5 = t("draft");
71
+ $[8] = t;
72
+ $[9] = t5;
73
+ } else t5 = $[9];
74
+ let t6;
75
+ if ($[10] !== t5) {
76
+ t6 = /* @__PURE__ */ jsx(Center, { children: /* @__PURE__ */ jsx(Text, {
77
+ size: "sm",
78
+ weight: "medium",
79
+ children: t5
80
+ }) });
81
+ $[10] = t5;
82
+ $[11] = t6;
83
+ } else t6 = $[11];
84
+ let t7;
85
+ if ($[12] !== marked || $[13] !== t) {
86
+ t7 = MARKS.map((t8) => {
87
+ const { Mark, name } = t8;
88
+ return /* @__PURE__ */ jsx(Item, {
89
+ "aria-label": t(name),
90
+ "aria-pressed": marked.includes(name),
91
+ as: IconButton,
92
+ onClick: () => {
93
+ setMarked((held) => held.includes(name) ? held.filter((each) => each !== name) : [...held, name]);
94
+ },
95
+ variant: "outline",
96
+ children: /* @__PURE__ */ jsx(Mark, { size: "1em" })
97
+ }, name);
98
+ });
99
+ $[12] = marked;
100
+ $[13] = t;
101
+ $[14] = t7;
102
+ } else t7 = $[14];
103
+ let t8;
104
+ if ($[15] !== t7) {
105
+ t8 = /* @__PURE__ */ jsx(Group$1, { children: t7 });
106
+ $[15] = t7;
107
+ $[16] = t8;
108
+ } else t8 = $[16];
109
+ let t9;
110
+ if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
111
+ t9 = /* @__PURE__ */ jsx(Separator, {});
112
+ $[17] = t9;
113
+ } else t9 = $[17];
114
+ let t10;
115
+ if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
116
+ t10 = /* @__PURE__ */ jsx(ShareIcon, { size: "1em" });
117
+ $[18] = t10;
118
+ } else t10 = $[18];
119
+ let t11;
120
+ if ($[19] !== t) {
121
+ t11 = t("share");
122
+ $[19] = t;
123
+ $[20] = t11;
124
+ } else t11 = $[20];
125
+ let t12;
126
+ if ($[21] !== t11) {
127
+ t12 = /* @__PURE__ */ jsx(Action, {
128
+ icon: t10,
129
+ primary: true,
130
+ children: t11
131
+ });
132
+ $[21] = t11;
133
+ $[22] = t12;
134
+ } else t12 = $[22];
135
+ let t13;
136
+ if ($[23] !== t12 || $[24] !== t8) {
137
+ t13 = /* @__PURE__ */ jsxs(End, { children: [
138
+ t8,
139
+ t9,
140
+ t12
141
+ ] });
142
+ $[23] = t12;
143
+ $[24] = t8;
144
+ $[25] = t13;
145
+ } else t13 = $[25];
146
+ let t14;
147
+ if ($[26] !== props || $[27] !== t1 || $[28] !== t13 || $[29] !== t4 || $[30] !== t6) {
148
+ t14 = /* @__PURE__ */ jsxs(Root, {
149
+ "aria-label": t1,
150
+ size: "sm",
151
+ ...props,
152
+ children: [
153
+ t4,
154
+ t6,
155
+ t13
156
+ ]
157
+ });
158
+ $[26] = props;
159
+ $[27] = t1;
160
+ $[28] = t13;
161
+ $[29] = t4;
162
+ $[30] = t6;
163
+ $[31] = t14;
164
+ } else t14 = $[31];
165
+ return t14;
166
+ }
167
+ const source$5 = "import { type ReactElement, useState } from \"react\";\n\nimport { BoldIcon, ItalicIcon, MenuIcon, ShareIcon, UnderlineIcon } from \"lucide-react\";\n\nimport { IconButton } from \"@stealthscale/component-actions\";\nimport { Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Toolbar } from \"@stealthscale/component-screen\";\n\nconst MARKS = [\n { Mark: BoldIcon, name: \"bold\" },\n { Mark: ItalicIcon, name: \"italic\" },\n { Mark: UnderlineIcon, name: \"underline\" },\n] as const;\n\nexport function Editor(props: Omit<Toolbar.RootProps, \"aria-label\">): ReactElement {\n const { t } = useWords(\"toolbar\");\n const [marked, setMarked] = useState<readonly string[]>([]);\n\n return (\n <Toolbar.Root aria-label={t(\"editing\")} size=\"sm\" {...props}>\n <Toolbar.Start>\n <Toolbar.Item aria-label={t(\"menu\")} as={IconButton} variant=\"ghost\">\n <MenuIcon size=\"1em\" />\n </Toolbar.Item>\n </Toolbar.Start>\n <Toolbar.Center>\n <Text size=\"sm\" weight=\"medium\">\n {t(\"draft\")}\n </Text>\n </Toolbar.Center>\n <Toolbar.End>\n <Toolbar.Group>\n {MARKS.map(({ Mark, name }) => (\n <Toolbar.Item\n aria-label={t(name)}\n aria-pressed={marked.includes(name)}\n as={IconButton}\n key={name}\n onClick={() => {\n setMarked((held) =>\n held.includes(name) ? held.filter((each) => each !== name) : [...held, name],\n );\n }}\n variant=\"outline\"\n >\n <Mark size=\"1em\" />\n </Toolbar.Item>\n ))}\n </Toolbar.Group>\n <Toolbar.Separator />\n <Toolbar.Action icon={<ShareIcon size=\"1em\" />} primary>\n {t(\"share\")}\n </Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n );\n}\n";
168
+ //#endregion
169
+ //#region src/toolbar/examples/invoices.example.tsx
170
+ var invoices_example_exports = /* @__PURE__ */ __exportAll({
171
+ Invoices: () => Invoices,
172
+ source: () => source$4
173
+ });
174
+ function Invoices(props) {
175
+ const $ = c(48);
176
+ const { t } = useWords("toolbar");
177
+ let t0;
178
+ if ($[0] !== t) {
179
+ t0 = t("invoices");
180
+ $[0] = t;
181
+ $[1] = t0;
182
+ } else t0 = $[1];
183
+ let t1;
184
+ if ($[2] !== t) {
185
+ t1 = t("more");
186
+ $[2] = t;
187
+ $[3] = t1;
188
+ } else t1 = $[3];
189
+ let t2;
190
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
191
+ t2 = /* @__PURE__ */ jsx(EllipsisIcon, { size: "1em" });
192
+ $[4] = t2;
193
+ } else t2 = $[4];
194
+ let t3;
195
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
196
+ t3 = /* @__PURE__ */ jsx(FunnelIcon, { size: "1em" });
197
+ $[5] = t3;
198
+ } else t3 = $[5];
199
+ let t4;
200
+ if ($[6] !== t) {
201
+ t4 = t("filter");
202
+ $[6] = t;
203
+ $[7] = t4;
204
+ } else t4 = $[7];
205
+ let t5;
206
+ if ($[8] !== t4) {
207
+ t5 = /* @__PURE__ */ jsx(Action, {
208
+ icon: t3,
209
+ priority: "primary",
210
+ children: t4
211
+ });
212
+ $[8] = t4;
213
+ $[9] = t5;
214
+ } else t5 = $[9];
215
+ let t6;
216
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
217
+ t6 = /* @__PURE__ */ jsx(DownloadIcon, { size: "1em" });
218
+ $[10] = t6;
219
+ } else t6 = $[10];
220
+ let t7;
221
+ if ($[11] !== t) {
222
+ t7 = t("export");
223
+ $[11] = t;
224
+ $[12] = t7;
225
+ } else t7 = $[12];
226
+ let t8;
227
+ if ($[13] !== t7) {
228
+ t8 = /* @__PURE__ */ jsx(Action, {
229
+ icon: t6,
230
+ children: t7
231
+ });
232
+ $[13] = t7;
233
+ $[14] = t8;
234
+ } else t8 = $[14];
235
+ let t9;
236
+ if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
237
+ t9 = /* @__PURE__ */ jsx(Separator, {});
238
+ $[15] = t9;
239
+ } else t9 = $[15];
240
+ let t10;
241
+ if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
242
+ t10 = /* @__PURE__ */ jsx(Columns3Icon, { size: "1em" });
243
+ $[16] = t10;
244
+ } else t10 = $[16];
245
+ let t11;
246
+ if ($[17] !== t) {
247
+ t11 = t("columns");
248
+ $[17] = t;
249
+ $[18] = t11;
250
+ } else t11 = $[18];
251
+ let t12;
252
+ if ($[19] !== t11) {
253
+ t12 = /* @__PURE__ */ jsx(Action, {
254
+ icon: t10,
255
+ priority: "tertiary",
256
+ children: t11
257
+ });
258
+ $[19] = t11;
259
+ $[20] = t12;
260
+ } else t12 = $[20];
261
+ let t13;
262
+ if ($[21] !== t12 || $[22] !== t5 || $[23] !== t8) {
263
+ t13 = /* @__PURE__ */ jsxs(Start, { children: [
264
+ t5,
265
+ t8,
266
+ t9,
267
+ t12
268
+ ] });
269
+ $[21] = t12;
270
+ $[22] = t5;
271
+ $[23] = t8;
272
+ $[24] = t13;
273
+ } else t13 = $[24];
274
+ let t14;
275
+ if ($[25] !== t) {
276
+ t14 = t("april");
277
+ $[25] = t;
278
+ $[26] = t14;
279
+ } else t14 = $[26];
280
+ let t15;
281
+ if ($[27] !== t14) {
282
+ t15 = /* @__PURE__ */ jsx(Center, { children: /* @__PURE__ */ jsx(Text, {
283
+ weight: "medium",
284
+ children: t14
285
+ }) });
286
+ $[27] = t14;
287
+ $[28] = t15;
288
+ } else t15 = $[28];
289
+ let t16;
290
+ if ($[29] !== t) {
291
+ t16 = t("search");
292
+ $[29] = t;
293
+ $[30] = t16;
294
+ } else t16 = $[30];
295
+ let t17;
296
+ if ($[31] === Symbol.for("react.memo_cache_sentinel")) {
297
+ t17 = /* @__PURE__ */ jsx(XIcon, { size: "1em" });
298
+ $[31] = t17;
299
+ } else t17 = $[31];
300
+ let t18;
301
+ if ($[32] !== t) {
302
+ t18 = t("clearSearch");
303
+ $[32] = t;
304
+ $[33] = t18;
305
+ } else t18 = $[33];
306
+ let t19;
307
+ if ($[34] !== t) {
308
+ t19 = t("search");
309
+ $[34] = t;
310
+ $[35] = t19;
311
+ } else t19 = $[35];
312
+ let t20;
313
+ if ($[36] === Symbol.for("react.memo_cache_sentinel")) {
314
+ t20 = /* @__PURE__ */ jsx(SearchIcon, { size: "1em" });
315
+ $[36] = t20;
316
+ } else t20 = $[36];
317
+ let t21;
318
+ if ($[37] !== t16 || $[38] !== t18 || $[39] !== t19) {
319
+ t21 = /* @__PURE__ */ jsx(Search, {
320
+ "aria-label": t16,
321
+ clearIndicator: t17,
322
+ clearLabel: t18,
323
+ placeholder: t19,
324
+ searchIndicator: t20
325
+ });
326
+ $[37] = t16;
327
+ $[38] = t18;
328
+ $[39] = t19;
329
+ $[40] = t21;
330
+ } else t21 = $[40];
331
+ let t22;
332
+ if ($[41] !== props || $[42] !== t0 || $[43] !== t1 || $[44] !== t13 || $[45] !== t15 || $[46] !== t21) {
333
+ t22 = /* @__PURE__ */ jsxs(Root, {
334
+ "aria-label": t0,
335
+ more: t1,
336
+ moreIcon: t2,
337
+ ...props,
338
+ children: [
339
+ t13,
340
+ t15,
341
+ t21
342
+ ]
343
+ });
344
+ $[41] = props;
345
+ $[42] = t0;
346
+ $[43] = t1;
347
+ $[44] = t13;
348
+ $[45] = t15;
349
+ $[46] = t21;
350
+ $[47] = t22;
351
+ } else t22 = $[47];
352
+ return t22;
353
+ }
354
+ const source$4 = "import { type ReactElement } from \"react\";\n\nimport {\n Columns3Icon,\n DownloadIcon,\n EllipsisIcon,\n FunnelIcon,\n SearchIcon,\n XIcon,\n} from \"lucide-react\";\n\nimport { Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Toolbar } from \"@stealthscale/component-screen\";\n\nexport function Invoices(props: Omit<Toolbar.RootProps, \"aria-label\">): ReactElement {\n const { t } = useWords(\"toolbar\");\n\n return (\n <Toolbar.Root\n aria-label={t(\"invoices\")}\n more={t(\"more\")}\n moreIcon={<EllipsisIcon size=\"1em\" />}\n {...props}\n >\n <Toolbar.Start>\n <Toolbar.Action icon={<FunnelIcon size=\"1em\" />} priority=\"primary\">\n {t(\"filter\")}\n </Toolbar.Action>\n <Toolbar.Action icon={<DownloadIcon size=\"1em\" />}>{t(\"export\")}</Toolbar.Action>\n <Toolbar.Separator />\n <Toolbar.Action icon={<Columns3Icon size=\"1em\" />} priority=\"tertiary\">\n {t(\"columns\")}\n </Toolbar.Action>\n </Toolbar.Start>\n <Toolbar.Center>\n <Text weight=\"medium\">{t(\"april\")}</Text>\n </Toolbar.Center>\n <Toolbar.Search\n aria-label={t(\"search\")}\n clearIndicator={<XIcon size=\"1em\" />}\n clearLabel={t(\"clearSearch\")}\n placeholder={t(\"search\")}\n searchIndicator={<SearchIcon size=\"1em\" />}\n />\n </Toolbar.Root>\n );\n}\n";
355
+ //#endregion
356
+ //#region src/toolbar/examples/loose.example.tsx
357
+ var loose_example_exports = /* @__PURE__ */ __exportAll({
358
+ Loose: () => Loose,
359
+ source: () => source$3
360
+ });
361
+ const MODES = ["light", "dark"];
362
+ function Loose() {
363
+ const $ = c(15);
364
+ const { t } = useWords("toolbar");
365
+ const [mode, setMode] = useState("light");
366
+ let t0;
367
+ if ($[0] !== t) {
368
+ t0 = t("catalogue");
369
+ $[0] = t;
370
+ $[1] = t0;
371
+ } else t0 = $[1];
372
+ let t1;
373
+ if ($[2] !== t) {
374
+ t1 = t("pages");
375
+ $[2] = t;
376
+ $[3] = t1;
377
+ } else t1 = $[3];
378
+ let t2;
379
+ if ($[4] !== t1) {
380
+ t2 = /* @__PURE__ */ jsx(Start, { children: /* @__PURE__ */ jsx(Link, {
381
+ href: "#pages",
382
+ children: t1
383
+ }) });
384
+ $[4] = t1;
385
+ $[5] = t2;
386
+ } else t2 = $[5];
387
+ let t3;
388
+ if ($[6] !== mode || $[7] !== t) {
389
+ t3 = MODES.map((each) => /* @__PURE__ */ jsx(Button, {
390
+ "aria-pressed": mode === each,
391
+ onClick: () => {
392
+ setMode(each);
393
+ },
394
+ variant: "ghost",
395
+ children: t(each)
396
+ }, each));
397
+ $[6] = mode;
398
+ $[7] = t;
399
+ $[8] = t3;
400
+ } else t3 = $[8];
401
+ let t4;
402
+ if ($[9] !== t3) {
403
+ t4 = /* @__PURE__ */ jsx(End, { children: t3 });
404
+ $[9] = t3;
405
+ $[10] = t4;
406
+ } else t4 = $[10];
407
+ let t5;
408
+ if ($[11] !== t0 || $[12] !== t2 || $[13] !== t4) {
409
+ t5 = /* @__PURE__ */ jsxs(Root, {
410
+ "aria-label": t0,
411
+ size: "sm",
412
+ children: [t2, t4]
413
+ });
414
+ $[11] = t0;
415
+ $[12] = t2;
416
+ $[13] = t4;
417
+ $[14] = t5;
418
+ } else t5 = $[14];
419
+ return t5;
420
+ }
421
+ const source$3 = "import { type ReactElement, useState } from \"react\";\n\nimport { Button } from \"@stealthscale/component-actions\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Toolbar } from \"@stealthscale/component-screen\";\n\nconst MODES = [\"light\", \"dark\"] as const;\n\nexport function Loose(): ReactElement {\n const { t } = useWords(\"toolbar\");\n const [mode, setMode] = useState<(typeof MODES)[number]>(\"light\");\n\n return (\n <Toolbar.Root aria-label={t(\"catalogue\")} size=\"sm\">\n <Toolbar.Start>\n <Toolbar.Link href=\"#pages\">{t(\"pages\")}</Toolbar.Link>\n </Toolbar.Start>\n <Toolbar.End>\n {MODES.map((each) => (\n <Button\n aria-pressed={mode === each}\n key={each}\n onClick={() => {\n setMode(each);\n }}\n variant=\"ghost\"\n >\n {t(each)}\n </Button>\n ))}\n </Toolbar.End>\n </Toolbar.Root>\n );\n}\n";
422
+ //#endregion
423
+ //#region src/toolbar/examples/orders.example.tsx
424
+ var orders_example_exports = /* @__PURE__ */ __exportAll({
425
+ Orders: () => Orders,
426
+ source: () => source$2
427
+ });
428
+ const VIEWS = [
429
+ "open",
430
+ "shipped",
431
+ "returned",
432
+ "closed"
433
+ ];
434
+ function Orders(props) {
435
+ const $ = c(38);
436
+ const { t } = useWords("toolbar");
437
+ let t0;
438
+ if ($[0] !== t) {
439
+ t0 = t("orders");
440
+ $[0] = t;
441
+ $[1] = t0;
442
+ } else t0 = $[1];
443
+ let t1;
444
+ if ($[2] !== t) {
445
+ t1 = t("moreOrders");
446
+ $[2] = t;
447
+ $[3] = t1;
448
+ } else t1 = $[3];
449
+ let t2;
450
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
451
+ t2 = /* @__PURE__ */ jsx(EllipsisIcon, { size: "1em" });
452
+ $[4] = t2;
453
+ } else t2 = $[4];
454
+ let t3;
455
+ if ($[5] !== t) {
456
+ t3 = VIEWS.map((view) => /* @__PURE__ */ jsx(Link, {
457
+ current: view === "open",
458
+ href: `#${view}`,
459
+ children: t(view)
460
+ }, view));
461
+ $[5] = t;
462
+ $[6] = t3;
463
+ } else t3 = $[6];
464
+ let t4;
465
+ if ($[7] !== t3) {
466
+ t4 = /* @__PURE__ */ jsx(Start, { children: t3 });
467
+ $[7] = t3;
468
+ $[8] = t4;
469
+ } else t4 = $[8];
470
+ let t5;
471
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
472
+ t5 = /* @__PURE__ */ jsx(DownloadIcon, { size: "1em" });
473
+ $[9] = t5;
474
+ } else t5 = $[9];
475
+ let t6;
476
+ if ($[10] !== t) {
477
+ t6 = t("export");
478
+ $[10] = t;
479
+ $[11] = t6;
480
+ } else t6 = $[11];
481
+ let t7;
482
+ if ($[12] !== t6) {
483
+ t7 = /* @__PURE__ */ jsx(Action, {
484
+ icon: t5,
485
+ children: t6
486
+ });
487
+ $[12] = t6;
488
+ $[13] = t7;
489
+ } else t7 = $[13];
490
+ let t8;
491
+ if ($[14] !== t) {
492
+ t8 = t("print");
493
+ $[14] = t;
494
+ $[15] = t8;
495
+ } else t8 = $[15];
496
+ let t9;
497
+ if ($[16] !== t8) {
498
+ t9 = /* @__PURE__ */ jsx(Action, { children: t8 });
499
+ $[16] = t8;
500
+ $[17] = t9;
501
+ } else t9 = $[17];
502
+ let t10;
503
+ if ($[18] !== t) {
504
+ t10 = t("import");
505
+ $[18] = t;
506
+ $[19] = t10;
507
+ } else t10 = $[19];
508
+ let t11;
509
+ if ($[20] !== t10) {
510
+ t11 = /* @__PURE__ */ jsx(Action, { children: t10 });
511
+ $[20] = t10;
512
+ $[21] = t11;
513
+ } else t11 = $[21];
514
+ let t12;
515
+ if ($[22] === Symbol.for("react.memo_cache_sentinel")) {
516
+ t12 = /* @__PURE__ */ jsx(PlusIcon, { size: "1em" });
517
+ $[22] = t12;
518
+ } else t12 = $[22];
519
+ let t13;
520
+ if ($[23] !== t) {
521
+ t13 = t("newOrder");
522
+ $[23] = t;
523
+ $[24] = t13;
524
+ } else t13 = $[24];
525
+ let t14;
526
+ if ($[25] !== t13) {
527
+ t14 = /* @__PURE__ */ jsx(Action, {
528
+ icon: t12,
529
+ primary: true,
530
+ priority: "primary",
531
+ children: t13
532
+ });
533
+ $[25] = t13;
534
+ $[26] = t14;
535
+ } else t14 = $[26];
536
+ let t15;
537
+ if ($[27] !== t11 || $[28] !== t14 || $[29] !== t7 || $[30] !== t9) {
538
+ t15 = /* @__PURE__ */ jsxs(End, { children: [
539
+ t7,
540
+ t9,
541
+ t11,
542
+ t14
543
+ ] });
544
+ $[27] = t11;
545
+ $[28] = t14;
546
+ $[29] = t7;
547
+ $[30] = t9;
548
+ $[31] = t15;
549
+ } else t15 = $[31];
550
+ let t16;
551
+ if ($[32] !== props || $[33] !== t0 || $[34] !== t1 || $[35] !== t15 || $[36] !== t4) {
552
+ t16 = /* @__PURE__ */ jsxs(Root, {
553
+ "aria-label": t0,
554
+ more: t1,
555
+ moreIcon: t2,
556
+ size: "sm",
557
+ ...props,
558
+ children: [t4, t15]
559
+ });
560
+ $[32] = props;
561
+ $[33] = t0;
562
+ $[34] = t1;
563
+ $[35] = t15;
564
+ $[36] = t4;
565
+ $[37] = t16;
566
+ } else t16 = $[37];
567
+ return t16;
568
+ }
569
+ const source$2 = "import { type ReactElement } from \"react\";\n\nimport { DownloadIcon, EllipsisIcon, PlusIcon } from \"lucide-react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Toolbar } from \"@stealthscale/component-screen\";\n\nconst VIEWS = [\"open\", \"shipped\", \"returned\", \"closed\"] as const;\n\nexport function Orders(props: Omit<Toolbar.RootProps, \"aria-label\">): ReactElement {\n const { t } = useWords(\"toolbar\");\n\n return (\n <Toolbar.Root\n aria-label={t(\"orders\")}\n more={t(\"moreOrders\")}\n moreIcon={<EllipsisIcon size=\"1em\" />}\n size=\"sm\"\n {...props}\n >\n <Toolbar.Start>\n {VIEWS.map((view) => (\n <Toolbar.Link current={view === \"open\"} href={`#${view}`} key={view}>\n {t(view)}\n </Toolbar.Link>\n ))}\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action icon={<DownloadIcon size=\"1em\" />}>{t(\"export\")}</Toolbar.Action>\n <Toolbar.Action>{t(\"print\")}</Toolbar.Action>\n <Toolbar.Action>{t(\"import\")}</Toolbar.Action>\n <Toolbar.Action icon={<PlusIcon size=\"1em\" />} primary priority=\"primary\">\n {t(\"newOrder\")}\n </Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n );\n}\n";
570
+ //#endregion
571
+ //#region src/toolbar/examples/product.example.tsx
572
+ var product_example_exports = /* @__PURE__ */ __exportAll({
573
+ Product: () => Product,
574
+ source: () => source$1
575
+ });
576
+ const SECTIONS = [
577
+ "overview",
578
+ "deploys",
579
+ "settings"
580
+ ];
581
+ function Product(props) {
582
+ const $ = c(25);
583
+ const { t } = useWords("toolbar");
584
+ let t0;
585
+ if ($[0] !== t) {
586
+ t0 = t("ledger");
587
+ $[0] = t;
588
+ $[1] = t0;
589
+ } else t0 = $[1];
590
+ let t1;
591
+ if ($[2] !== t) {
592
+ t1 = t("moreLedger");
593
+ $[2] = t;
594
+ $[3] = t1;
595
+ } else t1 = $[3];
596
+ let t2;
597
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
598
+ t2 = /* @__PURE__ */ jsx(EllipsisIcon, { size: "1em" });
599
+ $[4] = t2;
600
+ } else t2 = $[4];
601
+ let t3;
602
+ if ($[5] !== t) {
603
+ t3 = t("ledger");
604
+ $[5] = t;
605
+ $[6] = t3;
606
+ } else t3 = $[6];
607
+ let t4;
608
+ if ($[7] !== t3) {
609
+ t4 = /* @__PURE__ */ jsx(Title, { children: t3 });
610
+ $[7] = t3;
611
+ $[8] = t4;
612
+ } else t4 = $[8];
613
+ let t5;
614
+ if ($[9] !== t) {
615
+ t5 = SECTIONS.map((section) => /* @__PURE__ */ jsx(Link, {
616
+ current: section === "overview",
617
+ href: `#${section}`,
618
+ children: t(section)
619
+ }, section));
620
+ $[9] = t;
621
+ $[10] = t5;
622
+ } else t5 = $[10];
623
+ let t6;
624
+ if ($[11] !== t4 || $[12] !== t5) {
625
+ t6 = /* @__PURE__ */ jsxs(Start, { children: [t4, t5] });
626
+ $[11] = t4;
627
+ $[12] = t5;
628
+ $[13] = t6;
629
+ } else t6 = $[13];
630
+ let t7;
631
+ if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
632
+ t7 = /* @__PURE__ */ jsx(PlusIcon, { size: "1em" });
633
+ $[14] = t7;
634
+ } else t7 = $[14];
635
+ let t8;
636
+ if ($[15] !== t) {
637
+ t8 = t("newDeploy");
638
+ $[15] = t;
639
+ $[16] = t8;
640
+ } else t8 = $[16];
641
+ let t9;
642
+ if ($[17] !== t8) {
643
+ t9 = /* @__PURE__ */ jsx(End, { children: /* @__PURE__ */ jsx(Action, {
644
+ icon: t7,
645
+ primary: true,
646
+ priority: "primary",
647
+ children: t8
648
+ }) });
649
+ $[17] = t8;
650
+ $[18] = t9;
651
+ } else t9 = $[18];
652
+ let t10;
653
+ if ($[19] !== props || $[20] !== t0 || $[21] !== t1 || $[22] !== t6 || $[23] !== t9) {
654
+ t10 = /* @__PURE__ */ jsxs(Root, {
655
+ "aria-label": t0,
656
+ more: t1,
657
+ moreIcon: t2,
658
+ size: "sm",
659
+ ...props,
660
+ children: [t6, t9]
661
+ });
662
+ $[19] = props;
663
+ $[20] = t0;
664
+ $[21] = t1;
665
+ $[22] = t6;
666
+ $[23] = t9;
667
+ $[24] = t10;
668
+ } else t10 = $[24];
669
+ return t10;
670
+ }
671
+ const source$1 = "import { type ReactElement } from \"react\";\n\nimport { EllipsisIcon, PlusIcon } from \"lucide-react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Toolbar } from \"@stealthscale/component-screen\";\n\nconst SECTIONS = [\"overview\", \"deploys\", \"settings\"] as const;\n\nexport function Product(props: Omit<Toolbar.RootProps, \"aria-label\">): ReactElement {\n const { t } = useWords(\"toolbar\");\n\n return (\n <Toolbar.Root\n aria-label={t(\"ledger\")}\n more={t(\"moreLedger\")}\n moreIcon={<EllipsisIcon size=\"1em\" />}\n size=\"sm\"\n {...props}\n >\n <Toolbar.Start>\n <Toolbar.Title>{t(\"ledger\")}</Toolbar.Title>\n {SECTIONS.map((section) => (\n <Toolbar.Link current={section === \"overview\"} href={`#${section}`} key={section}>\n {t(section)}\n </Toolbar.Link>\n ))}\n </Toolbar.Start>\n <Toolbar.End>\n <Toolbar.Action icon={<PlusIcon size=\"1em\" />} primary priority=\"primary\">\n {t(\"newDeploy\")}\n </Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n );\n}\n";
672
+ //#endregion
673
+ //#region src/toolbar/examples/publishing.example.tsx
674
+ var publishing_example_exports = /* @__PURE__ */ __exportAll({
675
+ Publishing: () => Publishing,
676
+ source: () => source
677
+ });
678
+ function Publishing(props) {
679
+ const $ = c(62);
680
+ const { t } = useWords("toolbar");
681
+ let t0;
682
+ if ($[0] !== t) {
683
+ t0 = t("publishing");
684
+ $[0] = t;
685
+ $[1] = t0;
686
+ } else t0 = $[1];
687
+ let t1;
688
+ if ($[2] !== t) {
689
+ t1 = t("morePublishing");
690
+ $[2] = t;
691
+ $[3] = t1;
692
+ } else t1 = $[3];
693
+ let t2;
694
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
695
+ t2 = /* @__PURE__ */ jsx(EllipsisIcon, { size: "1em" });
696
+ $[4] = t2;
697
+ } else t2 = $[4];
698
+ let t3;
699
+ if ($[5] !== t) {
700
+ t3 = t("find");
701
+ $[5] = t;
702
+ $[6] = t3;
703
+ } else t3 = $[6];
704
+ let t4;
705
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
706
+ t4 = /* @__PURE__ */ jsx(XIcon, { size: "1em" });
707
+ $[7] = t4;
708
+ } else t4 = $[7];
709
+ let t5;
710
+ if ($[8] !== t) {
711
+ t5 = t("clearFind");
712
+ $[8] = t;
713
+ $[9] = t5;
714
+ } else t5 = $[9];
715
+ let t6;
716
+ if ($[10] !== t) {
717
+ t6 = t("findPlaceholder");
718
+ $[10] = t;
719
+ $[11] = t6;
720
+ } else t6 = $[11];
721
+ let t7;
722
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
723
+ t7 = /* @__PURE__ */ jsx(SearchIcon, { size: "1em" });
724
+ $[12] = t7;
725
+ } else t7 = $[12];
726
+ let t8;
727
+ if ($[13] !== t3 || $[14] !== t5 || $[15] !== t6) {
728
+ t8 = /* @__PURE__ */ jsx(Search, {
729
+ "aria-label": t3,
730
+ clearIndicator: t4,
731
+ clearLabel: t5,
732
+ placeholder: t6,
733
+ searchIndicator: t7
734
+ });
735
+ $[13] = t3;
736
+ $[14] = t5;
737
+ $[15] = t6;
738
+ $[16] = t8;
739
+ } else t8 = $[16];
740
+ let t9;
741
+ if ($[17] !== t) {
742
+ t9 = t("drafts");
743
+ $[17] = t;
744
+ $[18] = t9;
745
+ } else t9 = $[18];
746
+ let t10;
747
+ if ($[19] !== t9) {
748
+ t10 = /* @__PURE__ */ jsx(Link, {
749
+ current: true,
750
+ href: "#drafts",
751
+ children: t9
752
+ });
753
+ $[19] = t9;
754
+ $[20] = t10;
755
+ } else t10 = $[20];
756
+ let t11;
757
+ if ($[21] !== t) {
758
+ t11 = t("published");
759
+ $[21] = t;
760
+ $[22] = t11;
761
+ } else t11 = $[22];
762
+ let t12;
763
+ if ($[23] !== t11) {
764
+ t12 = /* @__PURE__ */ jsx(Link, {
765
+ href: "#published",
766
+ children: t11
767
+ });
768
+ $[23] = t11;
769
+ $[24] = t12;
770
+ } else t12 = $[24];
771
+ let t13;
772
+ if ($[25] !== t10 || $[26] !== t12) {
773
+ t13 = /* @__PURE__ */ jsxs(Start, { children: [t10, t12] });
774
+ $[25] = t10;
775
+ $[26] = t12;
776
+ $[27] = t13;
777
+ } else t13 = $[27];
778
+ let t14;
779
+ if ($[28] !== t) {
780
+ t14 = t("longTitle");
781
+ $[28] = t;
782
+ $[29] = t14;
783
+ } else t14 = $[29];
784
+ let t15;
785
+ if ($[30] !== t14) {
786
+ t15 = /* @__PURE__ */ jsx(Center, { children: /* @__PURE__ */ jsx(Text, {
787
+ size: "sm",
788
+ weight: "medium",
789
+ children: t14
790
+ }) });
791
+ $[30] = t14;
792
+ $[31] = t15;
793
+ } else t15 = $[31];
794
+ let t16;
795
+ if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
796
+ t16 = /* @__PURE__ */ jsx(ShareIcon, { size: "1em" });
797
+ $[32] = t16;
798
+ } else t16 = $[32];
799
+ let t17;
800
+ if ($[33] !== t) {
801
+ t17 = t("share");
802
+ $[33] = t;
803
+ $[34] = t17;
804
+ } else t17 = $[34];
805
+ let t18;
806
+ if ($[35] !== t17) {
807
+ t18 = /* @__PURE__ */ jsx(Action, {
808
+ icon: t16,
809
+ children: t17
810
+ });
811
+ $[35] = t17;
812
+ $[36] = t18;
813
+ } else t18 = $[36];
814
+ let t19;
815
+ if ($[37] !== t) {
816
+ t19 = t("export");
817
+ $[37] = t;
818
+ $[38] = t19;
819
+ } else t19 = $[38];
820
+ let t20;
821
+ if ($[39] !== t19) {
822
+ t20 = /* @__PURE__ */ jsx(Action, { children: t19 });
823
+ $[39] = t19;
824
+ $[40] = t20;
825
+ } else t20 = $[40];
826
+ let t21;
827
+ if ($[41] !== t) {
828
+ t21 = t("duplicate");
829
+ $[41] = t;
830
+ $[42] = t21;
831
+ } else t21 = $[42];
832
+ let t22;
833
+ if ($[43] !== t21) {
834
+ t22 = /* @__PURE__ */ jsx(Action, { children: t21 });
835
+ $[43] = t21;
836
+ $[44] = t22;
837
+ } else t22 = $[44];
838
+ let t23;
839
+ if ($[45] !== t) {
840
+ t23 = t("publish");
841
+ $[45] = t;
842
+ $[46] = t23;
843
+ } else t23 = $[46];
844
+ let t24;
845
+ if ($[47] !== t23) {
846
+ t24 = /* @__PURE__ */ jsx(Action, {
847
+ primary: true,
848
+ children: t23
849
+ });
850
+ $[47] = t23;
851
+ $[48] = t24;
852
+ } else t24 = $[48];
853
+ let t25;
854
+ if ($[49] !== t18 || $[50] !== t20 || $[51] !== t22 || $[52] !== t24) {
855
+ t25 = /* @__PURE__ */ jsxs(End, { children: [
856
+ t18,
857
+ t20,
858
+ t22,
859
+ t24
860
+ ] });
861
+ $[49] = t18;
862
+ $[50] = t20;
863
+ $[51] = t22;
864
+ $[52] = t24;
865
+ $[53] = t25;
866
+ } else t25 = $[53];
867
+ let t26;
868
+ if ($[54] !== props || $[55] !== t0 || $[56] !== t1 || $[57] !== t13 || $[58] !== t15 || $[59] !== t25 || $[60] !== t8) {
869
+ t26 = /* @__PURE__ */ jsxs(Root, {
870
+ "aria-label": t0,
871
+ more: t1,
872
+ moreIcon: t2,
873
+ size: "sm",
874
+ ...props,
875
+ children: [
876
+ t8,
877
+ t13,
878
+ t15,
879
+ t25
880
+ ]
881
+ });
882
+ $[54] = props;
883
+ $[55] = t0;
884
+ $[56] = t1;
885
+ $[57] = t13;
886
+ $[58] = t15;
887
+ $[59] = t25;
888
+ $[60] = t8;
889
+ $[61] = t26;
890
+ } else t26 = $[61];
891
+ return t26;
892
+ }
893
+ const source = "import { type ReactElement } from \"react\";\n\nimport { EllipsisIcon, SearchIcon, ShareIcon, XIcon } from \"lucide-react\";\n\nimport { Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Toolbar } from \"@stealthscale/component-screen\";\n\nexport function Publishing(props: Omit<Toolbar.RootProps, \"aria-label\">): ReactElement {\n const { t } = useWords(\"toolbar\");\n\n return (\n <Toolbar.Root\n aria-label={t(\"publishing\")}\n more={t(\"morePublishing\")}\n moreIcon={<EllipsisIcon size=\"1em\" />}\n size=\"sm\"\n {...props}\n >\n <Toolbar.Search\n aria-label={t(\"find\")}\n clearIndicator={<XIcon size=\"1em\" />}\n clearLabel={t(\"clearFind\")}\n placeholder={t(\"findPlaceholder\")}\n searchIndicator={<SearchIcon size=\"1em\" />}\n />\n <Toolbar.Start>\n <Toolbar.Link current href=\"#drafts\">\n {t(\"drafts\")}\n </Toolbar.Link>\n <Toolbar.Link href=\"#published\">{t(\"published\")}</Toolbar.Link>\n </Toolbar.Start>\n <Toolbar.Center>\n <Text size=\"sm\" weight=\"medium\">\n {t(\"longTitle\")}\n </Text>\n </Toolbar.Center>\n <Toolbar.End>\n <Toolbar.Action icon={<ShareIcon size=\"1em\" />}>{t(\"share\")}</Toolbar.Action>\n <Toolbar.Action>{t(\"export\")}</Toolbar.Action>\n <Toolbar.Action>{t(\"duplicate\")}</Toolbar.Action>\n <Toolbar.Action primary>{t(\"publish\")}</Toolbar.Action>\n </Toolbar.End>\n </Toolbar.Root>\n );\n}\n";
894
+ //#endregion
895
+ //#region src/toolbar/toolbar.specimen.tsx
896
+ /**
897
+ * Catalogue page for the toolbar.
898
+ *
899
+ * @remarks
900
+ * Every hand-written scene renders its toolbar plain inside an outlined sample, the box a
901
+ * toolbar is placed in on a page. The folding scene renders the publishing example twice: at the
902
+ * card's width and in a room a phone's width, because the row folds on its own width. The
903
+ * crowded scene renders the orders example outlined, at the card's width and in a room of
904
+ * `sizes.2xl`: the room is wider than the `sm` breakpoint and narrower than the example's
905
+ * controls, so the row folds because it is crowded. The orders row has no search and no centre,
906
+ * which would shrink before the row overflows. The sizes scene renders the editor at every size.
907
+ * `scenesOf` generates the looks and the corners from the invoices example, and the corners
908
+ * render on an outlined row, because a plain row has no edge. The samples and the rooms never
909
+ * appear in the examples. The words are keys under `toolbar` in
910
+ * `locales/en/specimen/toolbar.json`.
911
+ */
912
+ /**
913
+ * Hand-written scene for a toolbar with three bands, a group and a separator.
914
+ */
915
+ const whole = {
916
+ about: "toolbar.whole.about",
917
+ draw: () => /* @__PURE__ */ jsx(Sample, {
918
+ place: "stretch",
919
+ variant: "outline",
920
+ children: /* @__PURE__ */ jsx(Editor, {})
921
+ }),
922
+ example: editor_example_exports,
923
+ title: "toolbar.whole.title"
924
+ };
925
+ /**
926
+ * Hand-written scene for a title before the links of the row.
927
+ */
928
+ const titled = {
929
+ about: "toolbar.titled.about",
930
+ draw: () => /* @__PURE__ */ jsx(Sample, {
931
+ place: "stretch",
932
+ variant: "outline",
933
+ children: /* @__PURE__ */ jsx(Product, {})
934
+ }),
935
+ example: product_example_exports,
936
+ title: "toolbar.titled.title"
937
+ };
938
+ /**
939
+ * Hand-written scene for one toolbar wide and at a phone's width.
940
+ */
941
+ const folding = {
942
+ about: "toolbar.folding.about",
943
+ draw: () => /* @__PURE__ */ jsxs(Stack, {
944
+ gap: "lg",
945
+ children: [/* @__PURE__ */ jsx(Sample, {
946
+ place: "stretch",
947
+ variant: "outline",
948
+ children: /* @__PURE__ */ jsx(Publishing, {})
949
+ }), /* @__PURE__ */ jsx(Room, {
950
+ size: "sm",
951
+ children: /* @__PURE__ */ jsx(Sample, {
952
+ place: "stretch",
953
+ variant: "outline",
954
+ children: /* @__PURE__ */ jsx(Publishing, {})
955
+ })
956
+ })]
957
+ }),
958
+ example: publishing_example_exports,
959
+ title: "toolbar.folding.title"
960
+ };
961
+ /**
962
+ * Hand-written scene for one toolbar at the card's width and in a room its controls do not fit.
963
+ */
964
+ const crowded = {
965
+ about: "toolbar.crowded.about",
966
+ draw: () => /* @__PURE__ */ jsxs(Stack, {
967
+ gap: "lg",
968
+ children: [/* @__PURE__ */ jsx(Orders, { variant: "outline" }), /* @__PURE__ */ jsx(Room, {
969
+ size: "2xl",
970
+ children: /* @__PURE__ */ jsx(Orders, { variant: "outline" })
971
+ })]
972
+ }),
973
+ example: orders_example_exports,
974
+ props: { variant: "outline" },
975
+ title: "toolbar.crowded.title"
976
+ };
977
+ /**
978
+ * Sizes the sizes scene renders, from the smallest.
979
+ */
980
+ const SIZES = [
981
+ "sm",
982
+ "md",
983
+ "lg"
984
+ ];
985
+ /**
986
+ * Hand-written scene for the editor at every size.
987
+ */
988
+ const sizes = {
989
+ about: "toolbar.size.about",
990
+ axes: ["size"],
991
+ draw: () => /* @__PURE__ */ jsx(Stack, {
992
+ gap: "lg",
993
+ children: SIZES.map((size) => /* @__PURE__ */ jsx(Sample, {
994
+ place: "stretch",
995
+ variant: "outline",
996
+ children: /* @__PURE__ */ jsx(Editor, { size })
997
+ }, size))
998
+ }),
999
+ example: editor_example_exports,
1000
+ props: { size: "sm" },
1001
+ title: "toolbar.size.title"
1002
+ };
1003
+ /**
1004
+ * Hand-written scene for controls with tab stops of their own.
1005
+ */
1006
+ const loose = {
1007
+ about: "toolbar.loose.about",
1008
+ draw: () => /* @__PURE__ */ jsx(Sample, {
1009
+ place: "stretch",
1010
+ variant: "outline",
1011
+ children: /* @__PURE__ */ jsx(Loose, {})
1012
+ }),
1013
+ example: loose_example_exports,
1014
+ title: "toolbar.loose.title"
1015
+ };
1016
+ var toolbar_specimen_default = specimen({
1017
+ about: "toolbar.about",
1018
+ id: "components/screen/toolbar",
1019
+ imports: "import { Toolbar } from \"@stealthscale/component-screen\";",
1020
+ scenes: [
1021
+ whole,
1022
+ titled,
1023
+ folding,
1024
+ crowded,
1025
+ sizes,
1026
+ loose,
1027
+ ...scenesOf(recipe, {
1028
+ axes: {
1029
+ radius: {
1030
+ direction: "column",
1031
+ with: { variant: "outline" }
1032
+ },
1033
+ variant: { direction: "column" }
1034
+ },
1035
+ draw: (props) => /* @__PURE__ */ jsx(Invoices, { ...props }),
1036
+ example: invoices_example_exports,
1037
+ namespace: "toolbar",
1038
+ order: ["variant", "radius"],
1039
+ skip: { size: "The sizes scene renders every size with its controls at the same size." }
1040
+ })
1041
+ ],
1042
+ title: "toolbar.title"
1043
+ });
1044
+ //#endregion
1045
+ export { crowded, toolbar_specimen_default as default, folding, loose, sizes, titled, whole };