@stealthscale/component-media 0.2.1 → 0.2.2

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.
@@ -0,0 +1,800 @@
1
+ import { t as __exportAll } from "../../rolldown-runtime-D7D4PA-g.js";
2
+ import { o as recipe$1, s as recipe } from "../../recipes-CBo6SSP8.js";
3
+ import { A as Badge, D as Image, E as Root, O as Group, k as Fallback } from "../../shared-DH0DrBx7.js";
4
+ import { c } from "react/compiler-runtime";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { Matrix, scenesOf, specimen, useWords } from "@stealthscale/specimen";
7
+ import { BadgeCheckIcon, BotIcon, WarehouseIcon } from "lucide-react";
8
+ import { Stack } from "@stealthscale/component-layout";
9
+ import { Span, Text } from "@stealthscale/component-typography";
10
+ //#region src/avatar/examples/bram.webp
11
+ var bram_default = "data:image/webp;base64,UklGRoYCAABXRUJQVlA4IHoCAABQFACdASrAAMAAPsFap1CnpKMiohHKQPAYCWVu4DBp7ynxxw88e/Uw8Nq3wDhA/f5/u7rAGeqiTxd0EeYxNOTh4MNZhycmAztAdOK/lPfcORNiJG75UNj1R1d+TQS05lTPUGOYMAya00pni2g8M59yFr17pReOrYz2nsI389oU9W0dRqzvTed88iEerrx3SKKu48BVW9p7PUjE/Ubds9BstMeBvDXQZ/2XVQAA/s60p//fff35rm+/7S9mvZosE9hE3D98EOqh7al/QOoYnlSpxU8D5qOKLjNsiXXqP0DZUaD4NdhRccauEoW4WQNNPJlbkJYsioBiF9yAAG8OQBVL3UQuY64Zt14enfElXH4IH3Ntz5eXJbzJTrebZsjkhj4OR0pHGEH1bp33udqWjxHHW2T1JjhKGf5cI3GH3Ii4tD3FzFX7ffVKc04AASYqO8fQfRgOHI0j8W5c77NAAFgUeZq/1FYo292n3TJf0lpWcvnO45S8GAy8wmwWC5Mad0/u1/0eJkLFdOlnKtj4vMggZo9Ap0QUn7Xnz3lD6BJjV3/TFabI7bdUeXvFsSGO1+98e0p3fk4WLrSZUnmrRFkmZ40GVQ2O1zUJHmudzC00BY6YiyzSGZlykLEg7qJ9yhU7DdWs7qjO8bGmKd9WsjZhpoovBxf3TjHDkkFfS5UrGbd1iuCQbTBvwjTrvKDt34I6sDmrJuO8lB9BprZ7lnGePUBWXy0JG6IPe1ZNlezusz4RVM1cRBwmXq6mxYvKhtxESo5ulBorCnwZ24Zkmj9tHv4L1hU56mTu5Qg4XlOzTBJtT6qgSOg8bNKEx3sfch5sCxjOPwpJwAAA";
12
+ //#endregion
13
+ //#region src/avatar/examples/badged.example.tsx
14
+ var badged_example_exports = /* @__PURE__ */ __exportAll({
15
+ Badged: () => Badged,
16
+ source: () => source$7
17
+ });
18
+ function Badged(props) {
19
+ const $ = c(12);
20
+ const { t } = useWords("avatar");
21
+ let t0;
22
+ if ($[0] !== t) {
23
+ t0 = t("bram");
24
+ $[0] = t;
25
+ $[1] = t0;
26
+ } else t0 = $[1];
27
+ let t1;
28
+ let t2;
29
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
30
+ t1 = /* @__PURE__ */ jsx(Fallback, {});
31
+ t2 = /* @__PURE__ */ jsx(Image, { src: bram_default });
32
+ $[2] = t1;
33
+ $[3] = t2;
34
+ } else {
35
+ t1 = $[2];
36
+ t2 = $[3];
37
+ }
38
+ let t3;
39
+ if ($[4] !== t) {
40
+ t3 = t("unread");
41
+ $[4] = t;
42
+ $[5] = t3;
43
+ } else t3 = $[5];
44
+ let t4;
45
+ if ($[6] !== props || $[7] !== t3) {
46
+ t4 = /* @__PURE__ */ jsx(Badge, {
47
+ label: t3,
48
+ ...props,
49
+ children: "3"
50
+ });
51
+ $[6] = props;
52
+ $[7] = t3;
53
+ $[8] = t4;
54
+ } else t4 = $[8];
55
+ let t5;
56
+ if ($[9] !== t0 || $[10] !== t4) {
57
+ t5 = /* @__PURE__ */ jsxs(Root, {
58
+ name: t0,
59
+ size: "lg",
60
+ children: [
61
+ t1,
62
+ t2,
63
+ t4
64
+ ]
65
+ });
66
+ $[9] = t0;
67
+ $[10] = t4;
68
+ $[11] = t5;
69
+ } else t5 = $[11];
70
+ return t5;
71
+ }
72
+ const source$7 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nimport bram from \"./bram.webp\";\n\nexport function Badged(props: Avatar.BadgeProps): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Avatar.Root name={t(\"bram\")} size=\"lg\">\n <Avatar.Fallback />\n <Avatar.Image src={bram} />\n <Avatar.Badge label={t(\"unread\")} {...props}>\n 3\n </Avatar.Badge>\n </Avatar.Root>\n );\n}\n";
73
+ //#endregion
74
+ //#region src/avatar/examples/ada.webp
75
+ var ada_default = "data:image/webp;base64,UklGRmwCAABXRUJQVlA4IGACAACwFACdASrAAMAAPsFSpVEnqKOiodIKwRAYCWdu4DN6B1/GcNrLnxapwdkA4QSmvp/n3bvyAQrvTRbZkxvHbkhi0M0XHWbzJ9rDmi1POQ0ZiKR6jCNwvdyIsnCtdD+FiJI5zON32nnbVSkK5G/2uDt3QTk3Or0mbeKOtbkz3fMB04YSfounWYy1AIZ9lsYm3ooGgkdAFb2LX/bAe5enAN/Q39xZ1iZaV9mJLxj6cAAA/tAmEWxH/jf40fapMffCexM/qWa6yBQzgwkY0jGkvo4XhnV70I6kDl5bxBM/LFiFmqnpf8Fi2xzzzbyRAYztyZHVo1ndzi0/fo8E3QHf+WWawiPVx1YlsaI+Fftyreaa8TT4DCZR9q3uw2FxmzBLz53iz98mtKDBCo9StuyNIcdqL87iXlbrg3a3UGDgpKhYDk8lS6PjyjeiH6yeawmVZtYAH7MBYiajYTTPXl74xpp+x5YliC75NXdXkackSxdYrcZ0VCWdafuyDMNF4kcb56EXUopnCS+EzPrk08v4RNdILbtr+HnaNTABAehprNbUAyvM0dLC9qsGOywLrASu6+bT9uztCoAStLRLfMvkgKWbGmH+UNurhTSZ8czQ9mxReLbJISjUvWmKeUggxmHt7Gv7G753B22sA8DBJXYNzEYizf9Z9/dMiSZdlyJ5KM844wiGqMTAsc0JYwJD5ntaIRlkA+x5O0dUpSg3BGBT+0/eSh0CYNkvhPqH6xjArXpfgwQ/Shmv4ZGyKw7alGA22C3YNImBEyl+8LbbSqzMp1K8on0qgm2puzUS6MutfmkwAA==";
76
+ //#endregion
77
+ //#region src/avatar/examples/cleo.webp
78
+ var cleo_default = "data:image/webp;base64,UklGRiABAABXRUJQVlA4IBQBAAAQDQCdASrAAMAAPtFosVMoJaSioEgBABoJaW7hdrBXFx29ABPa9FXCDIRGRWt7zeCl6EHJff/yruWJVXCDYt7zYZ4Z45HQY5PX3/1lgIMTf7zY5FidPEffQ4UWWenhNGyihEYh9TqqTXbjYGQzIIao4AD+/tbX/an2Ed+HaM+FrKtXy77YEmbUdEALoLGCJ06b8vYMzvFqG4yiK7Ojg6DMVfFYLP3LkB6TfcEch3ue2QOjB565EcLFaEtTQ3G4/W5kPhO0F2fx6I7tju5rp8M2rhEEERr16JxUalLP7R8fM7cmJChubkpXBX03GsMPsiSHFUbZ/xO8aLbPcOJE6lxVXeRifbzok54Z3PEFcmgr+YqvcAA=";
79
+ //#endregion
80
+ //#region src/avatar/examples/devi.webp
81
+ var devi_default = "data:image/webp;base64,UklGRgYBAABXRUJQVlA4IPoAAADwDgCdASrAAMAAPtFosFMoJaSioEgBABoJaW7hdngWJ+z/6LIAAAU0qgFWTboGTWmJ1V2XHwK68iizLfz8QaBPLORTWZb+fJfOtHiLnVS3UUF/Efm8P1UAqybbr9CkqoSVlkXBVk5GnpKrdTpwqAVZNfoudaQrRHH5eIudl5z0ogD+/uk3n/8gx8lPoa2+/8UAxNX+UAD1+QMliZfaYkOZnY2S34qL1XtFn3AAPQfgAqAUa7Nv8xh6QobLheKXqID40ACQRI9SD7SbARnosESVkPKFnwk0YB2Bp5rkaQHDH387Tu/WtkE7FQkMv5ZGF7fA4cB+FDLiBwAA";
82
+ //#endregion
83
+ //#region src/avatar/examples/badges.example.tsx
84
+ var badges_example_exports = /* @__PURE__ */ __exportAll({
85
+ Badges: () => Badges,
86
+ source: () => source$6
87
+ });
88
+ function Badges() {
89
+ const $ = c(50);
90
+ const { t } = useWords("avatar");
91
+ let t0;
92
+ if ($[0] !== t) {
93
+ t0 = t("ada");
94
+ $[0] = t;
95
+ $[1] = t0;
96
+ } else t0 = $[1];
97
+ let t1;
98
+ let t2;
99
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
100
+ t1 = /* @__PURE__ */ jsx(Fallback, {});
101
+ t2 = /* @__PURE__ */ jsx(Image, { src: ada_default });
102
+ $[2] = t1;
103
+ $[3] = t2;
104
+ } else {
105
+ t1 = $[2];
106
+ t2 = $[3];
107
+ }
108
+ let t3;
109
+ if ($[4] !== t) {
110
+ t3 = t("online");
111
+ $[4] = t;
112
+ $[5] = t3;
113
+ } else t3 = $[5];
114
+ let t4;
115
+ if ($[6] !== t3) {
116
+ t4 = /* @__PURE__ */ jsx(Badge, {
117
+ label: t3,
118
+ palette: "success"
119
+ });
120
+ $[6] = t3;
121
+ $[7] = t4;
122
+ } else t4 = $[7];
123
+ let t5;
124
+ if ($[8] !== t0 || $[9] !== t4) {
125
+ t5 = /* @__PURE__ */ jsxs(Root, {
126
+ name: t0,
127
+ size: "lg",
128
+ children: [
129
+ t1,
130
+ t2,
131
+ t4
132
+ ]
133
+ });
134
+ $[8] = t0;
135
+ $[9] = t4;
136
+ $[10] = t5;
137
+ } else t5 = $[10];
138
+ let t6;
139
+ if ($[11] !== t) {
140
+ t6 = t("bram");
141
+ $[11] = t;
142
+ $[12] = t6;
143
+ } else t6 = $[12];
144
+ let t7;
145
+ let t8;
146
+ if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
147
+ t7 = /* @__PURE__ */ jsx(Fallback, {});
148
+ t8 = /* @__PURE__ */ jsx(Image, { src: bram_default });
149
+ $[13] = t7;
150
+ $[14] = t8;
151
+ } else {
152
+ t7 = $[13];
153
+ t8 = $[14];
154
+ }
155
+ let t9;
156
+ if ($[15] !== t) {
157
+ t9 = t("unread");
158
+ $[15] = t;
159
+ $[16] = t9;
160
+ } else t9 = $[16];
161
+ let t10;
162
+ if ($[17] !== t9) {
163
+ t10 = /* @__PURE__ */ jsx(Badge, {
164
+ label: t9,
165
+ palette: "error",
166
+ placement: "top-end",
167
+ children: "3"
168
+ });
169
+ $[17] = t9;
170
+ $[18] = t10;
171
+ } else t10 = $[18];
172
+ let t11;
173
+ if ($[19] !== t10 || $[20] !== t6) {
174
+ t11 = /* @__PURE__ */ jsxs(Root, {
175
+ name: t6,
176
+ size: "lg",
177
+ children: [
178
+ t7,
179
+ t8,
180
+ t10
181
+ ]
182
+ });
183
+ $[19] = t10;
184
+ $[20] = t6;
185
+ $[21] = t11;
186
+ } else t11 = $[21];
187
+ let t12;
188
+ if ($[22] !== t) {
189
+ t12 = t("cleo");
190
+ $[22] = t;
191
+ $[23] = t12;
192
+ } else t12 = $[23];
193
+ let t13;
194
+ let t14;
195
+ if ($[24] === Symbol.for("react.memo_cache_sentinel")) {
196
+ t13 = /* @__PURE__ */ jsx(Fallback, {});
197
+ t14 = /* @__PURE__ */ jsx(Image, { src: cleo_default });
198
+ $[24] = t13;
199
+ $[25] = t14;
200
+ } else {
201
+ t13 = $[24];
202
+ t14 = $[25];
203
+ }
204
+ let t15;
205
+ if ($[26] !== t) {
206
+ t15 = t("holiday");
207
+ $[26] = t;
208
+ $[27] = t15;
209
+ } else t15 = $[27];
210
+ let t16;
211
+ if ($[28] !== t15) {
212
+ t16 = /* @__PURE__ */ jsx(Badge, {
213
+ label: t15,
214
+ variant: "subtle",
215
+ children: "🌴"
216
+ });
217
+ $[28] = t15;
218
+ $[29] = t16;
219
+ } else t16 = $[29];
220
+ let t17;
221
+ if ($[30] !== t12 || $[31] !== t16) {
222
+ t17 = /* @__PURE__ */ jsxs(Root, {
223
+ name: t12,
224
+ size: "lg",
225
+ children: [
226
+ t13,
227
+ t14,
228
+ t16
229
+ ]
230
+ });
231
+ $[30] = t12;
232
+ $[31] = t16;
233
+ $[32] = t17;
234
+ } else t17 = $[32];
235
+ let t18;
236
+ if ($[33] !== t) {
237
+ t18 = t("devi");
238
+ $[33] = t;
239
+ $[34] = t18;
240
+ } else t18 = $[34];
241
+ let t19;
242
+ let t20;
243
+ if ($[35] === Symbol.for("react.memo_cache_sentinel")) {
244
+ t19 = /* @__PURE__ */ jsx(Fallback, {});
245
+ t20 = /* @__PURE__ */ jsx(Image, { src: devi_default });
246
+ $[35] = t19;
247
+ $[36] = t20;
248
+ } else {
249
+ t19 = $[35];
250
+ t20 = $[36];
251
+ }
252
+ let t21;
253
+ if ($[37] !== t) {
254
+ t21 = t("verified");
255
+ $[37] = t;
256
+ $[38] = t21;
257
+ } else t21 = $[38];
258
+ let t22;
259
+ if ($[39] === Symbol.for("react.memo_cache_sentinel")) {
260
+ t22 = /* @__PURE__ */ jsx(BadgeCheckIcon, {});
261
+ $[39] = t22;
262
+ } else t22 = $[39];
263
+ let t23;
264
+ if ($[40] !== t21) {
265
+ t23 = /* @__PURE__ */ jsx(Badge, {
266
+ label: t21,
267
+ palette: "primary",
268
+ children: t22
269
+ });
270
+ $[40] = t21;
271
+ $[41] = t23;
272
+ } else t23 = $[41];
273
+ let t24;
274
+ if ($[42] !== t18 || $[43] !== t23) {
275
+ t24 = /* @__PURE__ */ jsxs(Root, {
276
+ name: t18,
277
+ size: "lg",
278
+ children: [
279
+ t19,
280
+ t20,
281
+ t23
282
+ ]
283
+ });
284
+ $[42] = t18;
285
+ $[43] = t23;
286
+ $[44] = t24;
287
+ } else t24 = $[44];
288
+ let t25;
289
+ if ($[45] !== t11 || $[46] !== t17 || $[47] !== t24 || $[48] !== t5) {
290
+ t25 = /* @__PURE__ */ jsxs(Stack, {
291
+ direction: "row",
292
+ gap: "xl",
293
+ children: [
294
+ t5,
295
+ t11,
296
+ t17,
297
+ t24
298
+ ]
299
+ });
300
+ $[45] = t11;
301
+ $[46] = t17;
302
+ $[47] = t24;
303
+ $[48] = t5;
304
+ $[49] = t25;
305
+ } else t25 = $[49];
306
+ return t25;
307
+ }
308
+ const source$6 = "import { type ReactElement } from \"react\";\n\nimport { BadgeCheckIcon } from \"lucide-react\";\n\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nimport ada from \"./ada.webp\";\nimport bram from \"./bram.webp\";\nimport cleo from \"./cleo.webp\";\nimport devi from \"./devi.webp\";\n\nexport function Badges(): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Stack direction=\"row\" gap=\"xl\">\n <Avatar.Root name={t(\"ada\")} size=\"lg\">\n <Avatar.Fallback />\n <Avatar.Image src={ada} />\n <Avatar.Badge label={t(\"online\")} palette=\"success\" />\n </Avatar.Root>\n <Avatar.Root name={t(\"bram\")} size=\"lg\">\n <Avatar.Fallback />\n <Avatar.Image src={bram} />\n <Avatar.Badge label={t(\"unread\")} palette=\"error\" placement=\"top-end\">\n 3\n </Avatar.Badge>\n </Avatar.Root>\n <Avatar.Root name={t(\"cleo\")} size=\"lg\">\n <Avatar.Fallback />\n <Avatar.Image src={cleo} />\n <Avatar.Badge label={t(\"holiday\")} variant=\"subtle\">\n 🌴\n </Avatar.Badge>\n </Avatar.Root>\n <Avatar.Root name={t(\"devi\")} size=\"lg\">\n <Avatar.Fallback />\n <Avatar.Image src={devi} />\n <Avatar.Badge label={t(\"verified\")} palette=\"primary\">\n <BadgeCheckIcon />\n </Avatar.Badge>\n </Avatar.Root>\n </Stack>\n );\n}\n";
309
+ //#endregion
310
+ //#region src/avatar/examples/byline.example.tsx
311
+ var byline_example_exports = /* @__PURE__ */ __exportAll({
312
+ Byline: () => Byline,
313
+ source: () => source$5
314
+ });
315
+ function Byline() {
316
+ const $ = c(18);
317
+ const { t } = useWords("avatar");
318
+ let t0;
319
+ if ($[0] !== t) {
320
+ t0 = t("ada");
321
+ $[0] = t;
322
+ $[1] = t0;
323
+ } else t0 = $[1];
324
+ let t1;
325
+ let t2;
326
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
327
+ t1 = /* @__PURE__ */ jsx(Fallback, {});
328
+ t2 = /* @__PURE__ */ jsx(Image, { src: ada_default });
329
+ $[2] = t1;
330
+ $[3] = t2;
331
+ } else {
332
+ t1 = $[2];
333
+ t2 = $[3];
334
+ }
335
+ let t3;
336
+ if ($[4] !== t0) {
337
+ t3 = /* @__PURE__ */ jsxs(Root, {
338
+ "aria-hidden": true,
339
+ name: t0,
340
+ size: "2xs",
341
+ children: [t1, t2]
342
+ });
343
+ $[4] = t0;
344
+ $[5] = t3;
345
+ } else t3 = $[5];
346
+ let t4;
347
+ if ($[6] !== t) {
348
+ t4 = t("ada");
349
+ $[6] = t;
350
+ $[7] = t4;
351
+ } else t4 = $[7];
352
+ let t5;
353
+ if ($[8] !== t4) {
354
+ t5 = /* @__PURE__ */ jsx(Span, {
355
+ weight: "semibold",
356
+ children: t4
357
+ });
358
+ $[8] = t4;
359
+ $[9] = t5;
360
+ } else t5 = $[9];
361
+ let t6;
362
+ if ($[10] !== t) {
363
+ t6 = t("commented");
364
+ $[10] = t;
365
+ $[11] = t6;
366
+ } else t6 = $[11];
367
+ let t7;
368
+ if ($[12] !== t6) {
369
+ t7 = /* @__PURE__ */ jsx(Span, {
370
+ tone: "muted",
371
+ children: t6
372
+ });
373
+ $[12] = t6;
374
+ $[13] = t7;
375
+ } else t7 = $[13];
376
+ let t8;
377
+ if ($[14] !== t3 || $[15] !== t5 || $[16] !== t7) {
378
+ t8 = /* @__PURE__ */ jsxs(Text, {
379
+ size: "sm",
380
+ children: [
381
+ t3,
382
+ " ",
383
+ t5,
384
+ " ",
385
+ t7
386
+ ]
387
+ });
388
+ $[14] = t3;
389
+ $[15] = t5;
390
+ $[16] = t7;
391
+ $[17] = t8;
392
+ } else t8 = $[17];
393
+ return t8;
394
+ }
395
+ const source$5 = "import { type ReactElement } from \"react\";\n\nimport { Span, Text } from \"@stealthscale/component-typography\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nimport ada from \"./ada.webp\";\n\nexport function Byline(): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Text size=\"sm\">\n <Avatar.Root aria-hidden name={t(\"ada\")} size=\"2xs\">\n <Avatar.Fallback />\n <Avatar.Image src={ada} />\n </Avatar.Root>{\" \"}\n <Span weight=\"semibold\">{t(\"ada\")}</Span> <Span tone=\"muted\">{t(\"commented\")}</Span>\n </Text>\n );\n}\n";
396
+ //#endregion
397
+ //#region src/avatar/examples/person.example.tsx
398
+ var person_example_exports = /* @__PURE__ */ __exportAll({
399
+ Person: () => Person,
400
+ source: () => source$4
401
+ });
402
+ function Person(props) {
403
+ const $ = c(6);
404
+ const { t } = useWords("avatar");
405
+ let t0;
406
+ if ($[0] !== t) {
407
+ t0 = t("ada");
408
+ $[0] = t;
409
+ $[1] = t0;
410
+ } else t0 = $[1];
411
+ let t1;
412
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
413
+ t1 = /* @__PURE__ */ jsx(Fallback, {});
414
+ $[2] = t1;
415
+ } else t1 = $[2];
416
+ let t2;
417
+ if ($[3] !== props || $[4] !== t0) {
418
+ t2 = /* @__PURE__ */ jsx(Root, {
419
+ name: t0,
420
+ ...props,
421
+ children: t1
422
+ });
423
+ $[3] = props;
424
+ $[4] = t0;
425
+ $[5] = t2;
426
+ } else t2 = $[5];
427
+ return t2;
428
+ }
429
+ const source$4 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nexport function Person(props: Avatar.RootProps): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Avatar.Root name={t(\"ada\")} {...props}>\n <Avatar.Fallback />\n </Avatar.Root>\n );\n}\n";
430
+ //#endregion
431
+ //#region src/avatar/examples/pictures.example.tsx
432
+ var pictures_example_exports = /* @__PURE__ */ __exportAll({
433
+ Pictures: () => Pictures,
434
+ source: () => source$3
435
+ });
436
+ const PEOPLE = [
437
+ ["ada", ada_default],
438
+ ["bram", bram_default],
439
+ ["cleo", void 0]
440
+ ];
441
+ function Pictures() {
442
+ const $ = c(4);
443
+ const { t } = useWords("avatar");
444
+ let t0;
445
+ if ($[0] !== t) {
446
+ t0 = PEOPLE.map((t1) => {
447
+ const [person, picture] = t1;
448
+ return /* @__PURE__ */ jsxs(Root, {
449
+ name: t(person),
450
+ children: [/* @__PURE__ */ jsx(Fallback, {}), picture === void 0 ? null : /* @__PURE__ */ jsx(Image, { src: picture })]
451
+ }, person);
452
+ });
453
+ $[0] = t;
454
+ $[1] = t0;
455
+ } else t0 = $[1];
456
+ let t1;
457
+ if ($[2] !== t0) {
458
+ t1 = /* @__PURE__ */ jsx(Group, {
459
+ size: "lg",
460
+ children: t0
461
+ });
462
+ $[2] = t0;
463
+ $[3] = t1;
464
+ } else t1 = $[3];
465
+ return t1;
466
+ }
467
+ const source$3 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nimport ada from \"./ada.webp\";\nimport bram from \"./bram.webp\";\n\nconst PEOPLE = [\n [\"ada\", ada],\n [\"bram\", bram],\n [\"cleo\", undefined],\n] as const;\n\nexport function Pictures(): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Avatar.Group size=\"lg\">\n {PEOPLE.map(([person, picture]) => (\n <Avatar.Root key={person} name={t(person)}>\n <Avatar.Fallback />\n {picture === undefined ? null : <Avatar.Image src={picture} />}\n </Avatar.Root>\n ))}\n </Avatar.Group>\n );\n}\n";
468
+ //#endregion
469
+ //#region src/avatar/examples/presence.example.tsx
470
+ var presence_example_exports = /* @__PURE__ */ __exportAll({
471
+ Presence: () => Presence,
472
+ source: () => source$2
473
+ });
474
+ function Presence(props) {
475
+ const $ = c(11);
476
+ const { t } = useWords("avatar");
477
+ let t0;
478
+ if ($[0] !== t) {
479
+ t0 = t("ada");
480
+ $[0] = t;
481
+ $[1] = t0;
482
+ } else t0 = $[1];
483
+ let t1;
484
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
485
+ t1 = /* @__PURE__ */ jsx(Fallback, {});
486
+ $[2] = t1;
487
+ } else t1 = $[2];
488
+ let t2;
489
+ if ($[3] !== t) {
490
+ t2 = t("online");
491
+ $[3] = t;
492
+ $[4] = t2;
493
+ } else t2 = $[4];
494
+ let t3;
495
+ if ($[5] !== t2) {
496
+ t3 = /* @__PURE__ */ jsx(Badge, {
497
+ label: t2,
498
+ palette: "success"
499
+ });
500
+ $[5] = t2;
501
+ $[6] = t3;
502
+ } else t3 = $[6];
503
+ let t4;
504
+ if ($[7] !== props || $[8] !== t0 || $[9] !== t3) {
505
+ t4 = /* @__PURE__ */ jsxs(Root, {
506
+ name: t0,
507
+ ...props,
508
+ children: [t1, t3]
509
+ });
510
+ $[7] = props;
511
+ $[8] = t0;
512
+ $[9] = t3;
513
+ $[10] = t4;
514
+ } else t4 = $[10];
515
+ return t4;
516
+ }
517
+ const source$2 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nexport function Presence(props: Avatar.RootProps): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Avatar.Root name={t(\"ada\")} {...props}>\n <Avatar.Fallback />\n <Avatar.Badge label={t(\"online\")} palette=\"success\" />\n </Avatar.Root>\n );\n}\n";
518
+ //#endregion
519
+ //#region src/avatar/examples/services.example.tsx
520
+ var services_example_exports = /* @__PURE__ */ __exportAll({
521
+ Services: () => Services,
522
+ source: () => source$1
523
+ });
524
+ function Services() {
525
+ const $ = c(19);
526
+ const { t } = useWords("avatar");
527
+ let t0;
528
+ if ($[0] !== t) {
529
+ t0 = t("deployBot");
530
+ $[0] = t;
531
+ $[1] = t0;
532
+ } else t0 = $[1];
533
+ let t1;
534
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
535
+ t1 = /* @__PURE__ */ jsx(Fallback, { children: /* @__PURE__ */ jsx(BotIcon, {}) });
536
+ $[2] = t1;
537
+ } else t1 = $[2];
538
+ let t2;
539
+ if ($[3] !== t0) {
540
+ t2 = /* @__PURE__ */ jsx(Root, {
541
+ name: t0,
542
+ palette: "primary",
543
+ shape: "square",
544
+ variant: "solid",
545
+ children: t1
546
+ });
547
+ $[3] = t0;
548
+ $[4] = t2;
549
+ } else t2 = $[4];
550
+ let t3;
551
+ if ($[5] !== t) {
552
+ t3 = t("warehouse");
553
+ $[5] = t;
554
+ $[6] = t3;
555
+ } else t3 = $[6];
556
+ let t4;
557
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
558
+ t4 = /* @__PURE__ */ jsx(Fallback, { children: /* @__PURE__ */ jsx(WarehouseIcon, {}) });
559
+ $[7] = t4;
560
+ } else t4 = $[7];
561
+ let t5;
562
+ if ($[8] !== t3) {
563
+ t5 = /* @__PURE__ */ jsx(Root, {
564
+ name: t3,
565
+ palette: "accent",
566
+ shape: "rounded",
567
+ children: t4
568
+ });
569
+ $[8] = t3;
570
+ $[9] = t5;
571
+ } else t5 = $[9];
572
+ let t6;
573
+ if ($[10] !== t) {
574
+ t6 = t("northwind");
575
+ $[10] = t;
576
+ $[11] = t6;
577
+ } else t6 = $[11];
578
+ let t7;
579
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
580
+ t7 = /* @__PURE__ */ jsx(Fallback, {});
581
+ $[12] = t7;
582
+ } else t7 = $[12];
583
+ let t8;
584
+ if ($[13] !== t6) {
585
+ t8 = /* @__PURE__ */ jsx(Root, {
586
+ name: t6,
587
+ shape: "rounded",
588
+ variant: "outline",
589
+ children: t7
590
+ });
591
+ $[13] = t6;
592
+ $[14] = t8;
593
+ } else t8 = $[14];
594
+ let t9;
595
+ if ($[15] !== t2 || $[16] !== t5 || $[17] !== t8) {
596
+ t9 = /* @__PURE__ */ jsxs(Stack, {
597
+ direction: "row",
598
+ gap: "md",
599
+ children: [
600
+ t2,
601
+ t5,
602
+ t8
603
+ ]
604
+ });
605
+ $[15] = t2;
606
+ $[16] = t5;
607
+ $[17] = t8;
608
+ $[18] = t9;
609
+ } else t9 = $[18];
610
+ return t9;
611
+ }
612
+ const source$1 = "import { type ReactElement } from \"react\";\n\nimport { BotIcon, WarehouseIcon } from \"lucide-react\";\n\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nexport function Services(): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Stack direction=\"row\" gap=\"md\">\n <Avatar.Root name={t(\"deployBot\")} palette=\"primary\" shape=\"square\" variant=\"solid\">\n <Avatar.Fallback>\n <BotIcon />\n </Avatar.Fallback>\n </Avatar.Root>\n <Avatar.Root name={t(\"warehouse\")} palette=\"accent\" shape=\"rounded\">\n <Avatar.Fallback>\n <WarehouseIcon />\n </Avatar.Fallback>\n </Avatar.Root>\n <Avatar.Root name={t(\"northwind\")} shape=\"rounded\" variant=\"outline\">\n <Avatar.Fallback />\n </Avatar.Root>\n </Stack>\n );\n}\n";
613
+ //#endregion
614
+ //#region src/avatar/examples/team.example.tsx
615
+ var team_example_exports = /* @__PURE__ */ __exportAll({
616
+ Team: () => Team,
617
+ source: () => source
618
+ });
619
+ const TEAM = [
620
+ ["ada", ada_default],
621
+ ["bram", bram_default],
622
+ ["cleo", cleo_default],
623
+ ["devi", devi_default]
624
+ ];
625
+ function Team(props) {
626
+ const $ = c(11);
627
+ const { t } = useWords("avatar");
628
+ let t0;
629
+ if ($[0] !== t) {
630
+ t0 = TEAM.map((t1) => {
631
+ const [person, picture] = t1;
632
+ return /* @__PURE__ */ jsxs(Root, {
633
+ name: t(person),
634
+ children: [/* @__PURE__ */ jsx(Fallback, {}), /* @__PURE__ */ jsx(Image, { src: picture })]
635
+ }, person);
636
+ });
637
+ $[0] = t;
638
+ $[1] = t0;
639
+ } else t0 = $[1];
640
+ let t1;
641
+ if ($[2] !== t) {
642
+ t1 = t("more");
643
+ $[2] = t;
644
+ $[3] = t1;
645
+ } else t1 = $[3];
646
+ let t2;
647
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
648
+ t2 = /* @__PURE__ */ jsx(Fallback, { children: "+3" });
649
+ $[4] = t2;
650
+ } else t2 = $[4];
651
+ let t3;
652
+ if ($[5] !== t1) {
653
+ t3 = /* @__PURE__ */ jsx(Root, {
654
+ name: t1,
655
+ children: t2
656
+ });
657
+ $[5] = t1;
658
+ $[6] = t3;
659
+ } else t3 = $[6];
660
+ let t4;
661
+ if ($[7] !== props || $[8] !== t0 || $[9] !== t3) {
662
+ t4 = /* @__PURE__ */ jsxs(Group, {
663
+ ...props,
664
+ children: [t0, t3]
665
+ });
666
+ $[7] = props;
667
+ $[8] = t0;
668
+ $[9] = t3;
669
+ $[10] = t4;
670
+ } else t4 = $[10];
671
+ return t4;
672
+ }
673
+ const source = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { Avatar } from \"@stealthscale/component-media\";\n\nimport ada from \"./ada.webp\";\nimport bram from \"./bram.webp\";\nimport cleo from \"./cleo.webp\";\nimport devi from \"./devi.webp\";\n\nconst TEAM = [\n [\"ada\", ada],\n [\"bram\", bram],\n [\"cleo\", cleo],\n [\"devi\", devi],\n] as const;\n\nexport function Team(props: Avatar.GroupProps): ReactElement {\n const { t } = useWords(\"avatar\");\n\n return (\n <Avatar.Group {...props}>\n {TEAM.map(([person, picture]) => (\n <Avatar.Root key={person} name={t(person)}>\n <Avatar.Fallback />\n <Avatar.Image src={picture} />\n </Avatar.Root>\n ))}\n <Avatar.Root name={t(\"more\")}>\n <Avatar.Fallback>+3</Avatar.Fallback>\n </Avatar.Root>\n </Avatar.Group>\n );\n}\n";
674
+ //#endregion
675
+ //#region src/avatar/avatar.specimen.tsx
676
+ /**
677
+ * Catalogue page for the avatar.
678
+ *
679
+ * @remarks
680
+ * `scenesOf` generates the size, shape, palette and effect scenes from the avatar recipe, each
681
+ * rendering one person's initials. The palette scene crosses the looks, and the effect scene uses
682
+ * the primary palette. It generates the badge's palette, placement and look scenes from the badge
683
+ * recipe on a large avatar with a count. Hand-written scenes render pictures beside initials, a
684
+ * team group, the four kinds of badge, a status dot at every size, a byline beside a name in
685
+ * words, and services with icons. The pictures are generated gradients beside the examples, so no
686
+ * scene loads from the network. The words are keys under `avatar` in
687
+ * `locales/en/specimen/avatar.json`.
688
+ */
689
+ /**
690
+ * Sizes of the status scene, smallest first.
691
+ */
692
+ const SIZES = [
693
+ "2xs",
694
+ "xs",
695
+ "sm",
696
+ "md",
697
+ "lg",
698
+ "xl",
699
+ "2xl"
700
+ ];
701
+ /**
702
+ * Hand-written scene for pictures beside a person without one.
703
+ */
704
+ const pictures = {
705
+ about: "avatar.pictures.about",
706
+ draw: Pictures,
707
+ example: pictures_example_exports,
708
+ title: "avatar.pictures.title"
709
+ };
710
+ /**
711
+ * Hand-written scene for a group with a count of the people left out.
712
+ */
713
+ const team = {
714
+ about: "avatar.team.about",
715
+ draw: Team,
716
+ example: team_example_exports,
717
+ title: "avatar.team.title"
718
+ };
719
+ /**
720
+ * Hand-written scene for a status dot, a count, an emoji and an icon.
721
+ */
722
+ const badges = {
723
+ about: "avatar.badges.about",
724
+ draw: Badges,
725
+ example: badges_example_exports,
726
+ title: "avatar.badges.title"
727
+ };
728
+ /**
729
+ * Hand-written scene for a status dot at every size.
730
+ */
731
+ const presence = {
732
+ about: "avatar.presence.about",
733
+ draw: () => /* @__PURE__ */ jsx(Matrix, {
734
+ knob: "size",
735
+ of: SIZES,
736
+ children: (size) => /* @__PURE__ */ jsx(Presence, { size })
737
+ }),
738
+ example: presence_example_exports,
739
+ props: { size: "2xs" },
740
+ title: "avatar.presence.title"
741
+ };
742
+ /**
743
+ * Hand-written scene for an avatar beside the same name in words.
744
+ */
745
+ const byline = {
746
+ about: "avatar.byline.about",
747
+ draw: Byline,
748
+ example: byline_example_exports,
749
+ title: "avatar.byline.title"
750
+ };
751
+ /**
752
+ * Hand-written scene for services and companies in square and rounded boxes.
753
+ */
754
+ const services = {
755
+ about: "avatar.services.about",
756
+ draw: Services,
757
+ example: services_example_exports,
758
+ title: "avatar.services.title"
759
+ };
760
+ var avatar_specimen_default = specimen({
761
+ about: "avatar.about",
762
+ id: "components/media/avatar",
763
+ imports: "import { Avatar } from \"@stealthscale/component-media\";",
764
+ scenes: [
765
+ ...scenesOf(recipe, {
766
+ axes: {
767
+ effect: { with: { palette: "primary" } },
768
+ palette: { across: "variant" }
769
+ },
770
+ draw: (props) => /* @__PURE__ */ jsx(Person, { ...props }),
771
+ example: person_example_exports,
772
+ namespace: "avatar",
773
+ order: [
774
+ "size",
775
+ "shape",
776
+ "palette",
777
+ "effect"
778
+ ]
779
+ }),
780
+ pictures,
781
+ team,
782
+ badges,
783
+ presence,
784
+ ...scenesOf(recipe$1, {
785
+ draw: (props) => /* @__PURE__ */ jsx(Badged, { ...props }),
786
+ example: badged_example_exports,
787
+ namespace: "avatar.badge",
788
+ order: [
789
+ "placement",
790
+ "palette",
791
+ "variant"
792
+ ]
793
+ }),
794
+ byline,
795
+ services
796
+ ],
797
+ title: "avatar.title"
798
+ });
799
+ //#endregion
800
+ export { badges, byline, avatar_specimen_default as default, pictures, presence, services, team };