@typecaast/skins 0.1.0 → 0.2.0

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 (91) hide show
  1. package/dist/chunk-3WKOSJVB.js +320 -0
  2. package/dist/chunk-3WKOSJVB.js.map +1 -0
  3. package/dist/chunk-6K2ANTPJ.cjs +722 -0
  4. package/dist/chunk-6K2ANTPJ.cjs.map +1 -0
  5. package/dist/chunk-7IC3DRCQ.js +718 -0
  6. package/dist/chunk-7IC3DRCQ.js.map +1 -0
  7. package/dist/chunk-AMP2ZMTF.cjs +275 -0
  8. package/dist/chunk-AMP2ZMTF.cjs.map +1 -0
  9. package/dist/chunk-BMB4ZKAU.cjs +32 -0
  10. package/dist/chunk-BMB4ZKAU.cjs.map +1 -0
  11. package/dist/chunk-CAHWYIXY.js +272 -0
  12. package/dist/chunk-CAHWYIXY.js.map +1 -0
  13. package/dist/chunk-CCT33UVA.cjs +591 -0
  14. package/dist/chunk-CCT33UVA.cjs.map +1 -0
  15. package/dist/chunk-E5K2XXQL.cjs +469 -0
  16. package/dist/chunk-E5K2XXQL.cjs.map +1 -0
  17. package/dist/chunk-FEXZ3X5C.cjs +255 -0
  18. package/dist/chunk-FEXZ3X5C.cjs.map +1 -0
  19. package/dist/chunk-JDPMZ572.js +466 -0
  20. package/dist/chunk-JDPMZ572.js.map +1 -0
  21. package/dist/chunk-JZVM4T2A.js +29 -0
  22. package/dist/chunk-JZVM4T2A.js.map +1 -0
  23. package/dist/chunk-KTQVRSDX.cjs +323 -0
  24. package/dist/chunk-KTQVRSDX.cjs.map +1 -0
  25. package/dist/chunk-M54H2ZJJ.js +252 -0
  26. package/dist/chunk-M54H2ZJJ.js.map +1 -0
  27. package/dist/chunk-NCSI7C7I.js +561 -0
  28. package/dist/chunk-NCSI7C7I.js.map +1 -0
  29. package/dist/chunk-OC7WDISK.js +343 -0
  30. package/dist/chunk-OC7WDISK.js.map +1 -0
  31. package/dist/chunk-UC43JQYK.cjs +346 -0
  32. package/dist/chunk-UC43JQYK.cjs.map +1 -0
  33. package/dist/chunk-UFC4ODW5.js +587 -0
  34. package/dist/chunk-UFC4ODW5.js.map +1 -0
  35. package/dist/chunk-UKWBCC7E.cjs +567 -0
  36. package/dist/chunk-UKWBCC7E.cjs.map +1 -0
  37. package/dist/claude-code/index.cjs +19 -0
  38. package/dist/claude-code/index.cjs.map +1 -0
  39. package/dist/claude-code/index.d.cts +6 -0
  40. package/dist/claude-code/index.d.ts +6 -0
  41. package/dist/claude-code/index.js +4 -0
  42. package/dist/claude-code/index.js.map +1 -0
  43. package/dist/cursor/index.cjs +19 -0
  44. package/dist/cursor/index.cjs.map +1 -0
  45. package/dist/cursor/index.d.cts +6 -0
  46. package/dist/cursor/index.d.ts +6 -0
  47. package/dist/cursor/index.js +4 -0
  48. package/dist/cursor/index.js.map +1 -0
  49. package/dist/discord/index.cjs +19 -0
  50. package/dist/discord/index.cjs.map +1 -0
  51. package/dist/discord/index.d.cts +6 -0
  52. package/dist/discord/index.d.ts +6 -0
  53. package/dist/discord/index.js +4 -0
  54. package/dist/discord/index.js.map +1 -0
  55. package/dist/imessage/index.cjs +20 -0
  56. package/dist/imessage/index.cjs.map +1 -0
  57. package/dist/imessage/index.d.cts +6 -0
  58. package/dist/imessage/index.d.ts +6 -0
  59. package/dist/imessage/index.js +5 -0
  60. package/dist/imessage/index.js.map +1 -0
  61. package/dist/index.cjs +52 -2664
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +49 -27
  64. package/dist/index.d.ts +49 -27
  65. package/dist/index.js +20 -2656
  66. package/dist/index.js.map +1 -1
  67. package/dist/messages-macos/index.cjs +20 -0
  68. package/dist/messages-macos/index.cjs.map +1 -0
  69. package/dist/messages-macos/index.d.cts +10 -0
  70. package/dist/messages-macos/index.d.ts +10 -0
  71. package/dist/messages-macos/index.js +5 -0
  72. package/dist/messages-macos/index.js.map +1 -0
  73. package/dist/slack/index.cjs +19 -0
  74. package/dist/slack/index.cjs.map +1 -0
  75. package/dist/slack/index.d.cts +6 -0
  76. package/dist/slack/index.d.ts +6 -0
  77. package/dist/slack/index.js +4 -0
  78. package/dist/slack/index.js.map +1 -0
  79. package/dist/telegram/index.cjs +19 -0
  80. package/dist/telegram/index.cjs.map +1 -0
  81. package/dist/telegram/index.d.cts +6 -0
  82. package/dist/telegram/index.d.ts +6 -0
  83. package/dist/telegram/index.js +4 -0
  84. package/dist/telegram/index.js.map +1 -0
  85. package/dist/whatsapp/index.cjs +19 -0
  86. package/dist/whatsapp/index.cjs.map +1 -0
  87. package/dist/whatsapp/index.d.cts +6 -0
  88. package/dist/whatsapp/index.d.ts +6 -0
  89. package/dist/whatsapp/index.js +4 -0
  90. package/dist/whatsapp/index.js.map +1 -0
  91. package/package.json +49 -5
package/dist/index.cjs CHANGED
@@ -1,2684 +1,72 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
- var zod = require('zod');
4
- var skinKit = require('@typecaast/skin-kit');
5
- var jsxRuntime = require('react/jsx-runtime');
4
+ var chunkE5K2XXQL_cjs = require('./chunk-E5K2XXQL.cjs');
5
+ var chunkFEXZ3X5C_cjs = require('./chunk-FEXZ3X5C.cjs');
6
+ var chunkKTQVRSDX_cjs = require('./chunk-KTQVRSDX.cjs');
7
+ var chunkBMB4ZKAU_cjs = require('./chunk-BMB4ZKAU.cjs');
8
+ var chunkUC43JQYK_cjs = require('./chunk-UC43JQYK.cjs');
9
+ var chunkAMP2ZMTF_cjs = require('./chunk-AMP2ZMTF.cjs');
10
+ require('./chunk-UKWBCC7E.cjs');
11
+ var chunkCCT33UVA_cjs = require('./chunk-CCT33UVA.cjs');
12
+ var chunk6K2ANTPJ_cjs = require('./chunk-6K2ANTPJ.cjs');
6
13
 
7
- // src/slack/index.ts
8
-
9
- // src/slack/tokens.ts
10
- var SLACK_COLORS = {
11
- light: {
12
- bg: "#ffffff",
13
- text: "#1d1c1d",
14
- subtle: "#616061",
15
- border: "#e2e2e2",
16
- headerBg: "#ffffff",
17
- link: "#1264a3",
18
- mentionText: "#1264a3",
19
- mentionBg: "#e8f5fa",
20
- codeText: "#e01e5a",
21
- codeBg: "#f6f6f6",
22
- codeBorder: "#e2e2e2",
23
- reactionBg: "#f8f8f8",
24
- reactionBorder: "#e2e2e2",
25
- reactionText: "#454245",
26
- composerBg: "#ffffff",
27
- composerBorder: "#8d8d8d",
28
- placeholder: "#8d8d8d",
29
- primary: "#007a5a",
30
- primaryText: "#ffffff",
31
- buttonBorder: "#d1d1d1",
32
- buttonText: "#1d1c1d",
33
- appBadgeBg: "#e8e8e8",
34
- appBadgeText: "#616061",
35
- cardBar: "#dddddd",
36
- caret: "#1264a3"
37
- },
38
- dark: {
39
- bg: "#1a1d21",
40
- text: "#d1d2d3",
41
- subtle: "#ababad",
42
- border: "#35373b",
43
- headerBg: "#1a1d21",
44
- link: "#1d9bd1",
45
- mentionText: "#1d9bd1",
46
- mentionBg: "rgba(29,155,209,0.12)",
47
- codeText: "#e06c9a",
48
- codeBg: "#222529",
49
- codeBorder: "#35373b",
50
- reactionBg: "#222529",
51
- reactionBorder: "#35373b",
52
- reactionText: "#d1d2d3",
53
- composerBg: "#222529",
54
- composerBorder: "#565856",
55
- placeholder: "#9a9b9d",
56
- primary: "#007a5a",
57
- primaryText: "#ffffff",
58
- buttonBorder: "#565856",
59
- buttonText: "#d1d2d3",
60
- appBadgeBg: "#35373b",
61
- appBadgeText: "#ababad",
62
- cardBar: "#35373b",
63
- caret: "#1d9bd1"
64
- }
65
- };
66
- var slackTokens = {
67
- light: { colors: SLACK_COLORS.light },
68
- dark: { colors: SLACK_COLORS.dark }
69
- };
70
-
71
- // src/slack/fonts.ts
72
- var slackFonts = [
73
- {
74
- family: "Lato",
75
- weights: [400, 700, 900],
76
- sources: [
77
- {
78
- url: "https://fonts.gstatic.com/s/lato/v24/S6uyw4BMUTPHjx4wXiWtFCc.woff2",
79
- weight: 400,
80
- format: "woff2"
81
- },
82
- {
83
- url: "https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh6UVSwiPGQ3q5d0.woff2",
84
- weight: 700,
85
- format: "woff2"
86
- },
87
- {
88
- url: "https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh50XSwiPGQ3q5d0.woff2",
89
- weight: 900,
90
- format: "woff2"
91
- }
92
- ]
93
- }
94
- ];
95
- var SLACK_FONT_STACK = 'Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
96
- var AVATAR_RADIUS = 8;
97
- function formatTime(atMs) {
98
- const base = 9 * 3600 * 1e3;
99
- const total = Math.floor((base + atMs) / 1e3);
100
- const h = Math.floor(total / 3600) % 24;
101
- const m = Math.floor(total % 3600 / 60);
102
- const ampm = h >= 12 ? "PM" : "AM";
103
- const hr = h % 12 === 0 ? 12 : h % 12;
104
- return `${hr}:${String(m).padStart(2, "0")} ${ampm}`;
105
- }
106
- function initials(name) {
107
- return name.split(/\s+/).map((w) => w.charAt(0)).slice(0, 2).join("").toUpperCase();
108
- }
109
- function markStyles(c) {
110
- return {
111
- link: { color: c.link, textDecoration: "none" },
112
- mention: {
113
- color: c.mentionText,
114
- background: c.mentionBg,
115
- borderRadius: 3,
116
- padding: "0 2px",
117
- fontWeight: 600
118
- },
119
- code: {
120
- color: c.codeText,
121
- background: c.codeBg,
122
- border: `1px solid ${c.codeBorder}`,
123
- borderRadius: 3,
124
- padding: "1px 4px",
125
- fontFamily: "Menlo, Monaco, Consolas, monospace",
126
- fontSize: "0.85em"
127
- }
128
- };
129
- }
130
- var Avatar = ({ theme, participant, size = 36 }) => {
131
- const c = SLACK_COLORS[theme];
132
- if (participant.avatar) {
133
- return /* @__PURE__ */ jsxRuntime.jsx(
134
- "img",
135
- {
136
- src: participant.avatar,
137
- alt: participant.name,
138
- width: size,
139
- height: size,
140
- style: {
141
- width: size,
142
- height: size,
143
- borderRadius: AVATAR_RADIUS,
144
- objectFit: "cover",
145
- display: "block"
146
- }
147
- }
148
- );
149
- }
150
- return /* @__PURE__ */ jsxRuntime.jsx(
151
- "div",
152
- {
153
- "aria-label": participant.name,
154
- style: {
155
- width: size,
156
- height: size,
157
- borderRadius: AVATAR_RADIUS,
158
- background: participant.color ?? "#4a154b",
159
- color: "#ffffff",
160
- display: "flex",
161
- alignItems: "center",
162
- justifyContent: "center",
163
- fontWeight: 700,
164
- fontSize: size * 0.4,
165
- border: theme === "dark" ? `1px solid ${c.border}` : void 0
166
- },
167
- children: initials(participant.name)
168
- }
169
- );
170
- };
171
- var Reaction = ({ theme, reaction }) => {
172
- const c = SLACK_COLORS[theme];
173
- return /* @__PURE__ */ jsxRuntime.jsxs(
174
- "span",
175
- {
176
- style: {
177
- ...skinKit.popIn(reaction.progress),
178
- display: "inline-flex",
179
- alignItems: "center",
180
- gap: 4,
181
- background: c.reactionBg,
182
- border: `1px solid ${c.reactionBorder}`,
183
- color: c.reactionText,
184
- borderRadius: 12,
185
- padding: "1px 7px",
186
- height: 22,
187
- fontSize: 12
188
- },
189
- children: [
190
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 13 }, children: reaction.emoji }),
191
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 600, fontVariantNumeric: "tabular-nums" }, children: reaction.count })
192
- ]
193
- }
194
- );
195
- };
196
- var TypingIndicator = ({ theme, typing, author }) => {
197
- const c = SLACK_COLORS[theme];
198
- return /* @__PURE__ */ jsxRuntime.jsxs(
199
- "div",
200
- {
201
- style: {
202
- display: "flex",
203
- alignItems: "center",
204
- gap: 6,
205
- padding: "2px 16px 4px 60px",
206
- color: c.subtle,
207
- fontSize: 12
208
- },
209
- children: [
210
- /* @__PURE__ */ jsxRuntime.jsx(skinKit.TypingDots, { progress: typing.progress, color: c.subtle, size: 5 }),
211
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
212
- author.name,
213
- " is typing\u2026"
214
- ] })
215
- ]
216
- }
217
- );
218
- };
219
- var Caret = ({ color }) => /* @__PURE__ */ jsxRuntime.jsx(
220
- "span",
221
- {
222
- style: {
223
- display: "inline-block",
224
- width: 1.5,
225
- height: "1.05em",
226
- background: color,
227
- marginLeft: 1,
228
- verticalAlign: "text-bottom"
229
- }
230
- }
231
- );
232
- var Composer = ({ theme, composer }) => {
233
- const c = SLACK_COLORS[theme];
234
- const hasText = composer.text.length > 0;
235
- return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: "0 0 auto", padding: "4px 16px 14px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
236
- "div",
237
- {
238
- style: {
239
- border: `1px solid ${c.composerBorder}`,
240
- borderRadius: 8,
241
- background: c.composerBg,
242
- padding: "9px 12px",
243
- minHeight: 22,
244
- fontSize: 15,
245
- color: c.text
246
- },
247
- children: hasText ? /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
248
- composer.text,
249
- /* @__PURE__ */ jsxRuntime.jsx(Caret, { color: c.caret })
250
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.placeholder }, children: "Reply\u2026" })
251
- }
252
- ) });
14
+ // src/registry.ts
15
+ var builtinSkins = {
16
+ slack: chunkCCT33UVA_cjs.slack,
17
+ telegram: chunk6K2ANTPJ_cjs.telegram,
18
+ "claude-code": chunkFEXZ3X5C_cjs.claudeCode,
19
+ imessage: chunkBMB4ZKAU_cjs.imessage,
20
+ whatsapp: chunkE5K2XXQL_cjs.whatsapp,
21
+ cursor: chunkKTQVRSDX_cjs.cursor,
22
+ "messages-macos": chunkAMP2ZMTF_cjs.messagesMacos,
23
+ discord: chunkUC43JQYK_cjs.discord
253
24
  };
254
- function buttonStyle(c, primary) {
255
- const base = {
256
- borderRadius: 4,
257
- padding: "7px 12px",
258
- fontWeight: 700,
259
- fontSize: 13,
260
- cursor: "default",
261
- fontFamily: "inherit",
262
- lineHeight: 1
263
- };
264
- return primary ? { ...base, background: c.primary, color: c.primaryText, border: "none" } : {
265
- ...base,
266
- background: "transparent",
267
- color: c.buttonText,
268
- border: `1px solid ${c.buttonBorder}`
269
- };
25
+ function getSkin(id) {
26
+ return builtinSkins[id];
270
27
  }
271
- var SystemMessage = ({ theme, message, author }) => {
272
- const c = SLACK_COLORS[theme];
273
- const actions = message.system?.actions ?? [];
274
- return /* @__PURE__ */ jsxRuntime.jsxs(
275
- "div",
276
- {
277
- style: {
278
- display: "flex",
279
- gap: 8,
280
- padding: "8px 16px 2px",
281
- ...skinKit.fadeSlideIn(message.revealProgress)
282
- },
283
- children: [
284
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: "0 0 36px", width: 36 }, children: author ? /* @__PURE__ */ jsxRuntime.jsx(Avatar, { theme, participant: author, size: 36 }) : null }),
285
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
286
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
287
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 700, color: c.text }, children: author?.name ?? "App" }),
288
- /* @__PURE__ */ jsxRuntime.jsx(
289
- "span",
290
- {
291
- style: {
292
- fontSize: 10,
293
- fontWeight: 700,
294
- letterSpacing: 0.4,
295
- background: c.appBadgeBg,
296
- color: c.appBadgeText,
297
- borderRadius: 2,
298
- padding: "1px 4px"
299
- },
300
- children: "APP"
301
- }
302
- ),
303
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, color: c.subtle }, children: formatTime(message.atMs) })
304
- ] }),
305
- /* @__PURE__ */ jsxRuntime.jsxs(
306
- "div",
307
- {
308
- style: {
309
- marginTop: 4,
310
- borderLeft: `4px solid ${c.cardBar}`,
311
- borderRadius: 2,
312
- paddingLeft: 12
313
- },
314
- children: [
315
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { color: c.text }, children: /* @__PURE__ */ jsxRuntime.jsx(skinKit.MessageContent, { nodes: message.content, styles: markStyles(c) }) }),
316
- actions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: 8, marginTop: 8 }, children: actions.map((a, i) => /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", style: buttonStyle(c, i === 0), children: a.label }, i)) }) : null
317
- ]
318
- }
319
- )
320
- ] })
321
- ]
322
- }
323
- );
324
- };
325
- var Message = ({ theme, message, author }) => {
326
- const c = SLACK_COLORS[theme];
327
- const grouped = message.isGrouped;
328
- return /* @__PURE__ */ jsxRuntime.jsxs(
329
- "div",
330
- {
331
- style: {
332
- display: "flex",
333
- gap: 8,
334
- padding: grouped ? "2px 16px" : "8px 16px 2px",
335
- ...skinKit.fadeSlideIn(message.revealProgress)
336
- },
337
- children: [
338
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: "0 0 36px", width: 36 }, children: grouped ? null : /* @__PURE__ */ jsxRuntime.jsx(Avatar, { theme, participant: author, size: 36 }) }),
339
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
340
- grouped ? null : /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "baseline", gap: 8 }, children: [
341
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 700, color: c.text }, children: author.name }),
342
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, color: c.subtle }, children: formatTime(message.atMs) })
343
- ] }),
344
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { color: c.text, wordBreak: "break-word" }, children: /* @__PURE__ */ jsxRuntime.jsx(
345
- skinKit.MessageContent,
346
- {
347
- nodes: message.content,
348
- styles: markStyles(c),
349
- imageStyle: {
350
- borderRadius: 8,
351
- marginTop: 4,
352
- border: `1px solid ${c.border}`,
353
- maxWidth: 360
354
- }
355
- }
356
- ) }),
357
- message.reactions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
358
- "div",
359
- {
360
- style: {
361
- display: "flex",
362
- gap: 4,
363
- marginTop: 4,
364
- flexWrap: "wrap"
365
- },
366
- children: message.reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsx(Reaction, { theme, reaction: r }, i))
367
- }
368
- ) : null
369
- ] })
370
- ]
371
- }
372
- );
373
- };
374
- var Frame = ({
375
- theme,
376
- options,
377
- children
378
- }) => {
379
- const c = SLACK_COLORS[theme];
380
- const channel = typeof options?.channel === "string" ? options.channel : "#general";
381
- return /* @__PURE__ */ jsxRuntime.jsxs(
382
- "div",
383
- {
384
- style: {
385
- fontFamily: SLACK_FONT_STACK,
386
- background: c.bg,
387
- color: c.text,
388
- display: "flex",
389
- flexDirection: "column",
390
- height: "100%",
391
- width: "100%",
392
- fontSize: 15,
393
- lineHeight: 1.46668,
394
- WebkitFontSmoothing: "antialiased"
395
- },
396
- children: [
397
- /* @__PURE__ */ jsxRuntime.jsxs(
398
- "header",
399
- {
400
- style: {
401
- flex: "0 0 auto",
402
- padding: "10px 16px",
403
- borderBottom: `1px solid ${c.border}`,
404
- display: "flex",
405
- alignItems: "baseline",
406
- gap: 8
407
- },
408
- children: [
409
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 900, fontSize: 18, color: c.text }, children: "Thread" }),
410
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.subtle, fontSize: 13 }, children: channel })
411
- ]
412
- }
413
- ),
414
- /* @__PURE__ */ jsxRuntime.jsx(
415
- "div",
416
- {
417
- style: {
418
- flex: "1 1 auto",
419
- minHeight: 0,
420
- display: "flex",
421
- flexDirection: "column"
422
- },
423
- children
424
- }
425
- )
426
- ]
427
- }
428
- );
429
- };
430
- var slackComponents = {
431
- Frame,
432
- Message,
433
- TypingIndicator,
434
- Reaction,
435
- Composer,
436
- SystemMessage,
437
- Avatar
438
- };
439
28
 
440
- // src/slack/capabilities.ts
441
- var slackCapabilities = {
442
- events: {
443
- message: "native",
444
- reaction: "native",
445
- typing: "native",
446
- // "X is typing…"
447
- composerType: "native",
448
- send: "native",
449
- edit: "native",
450
- delete: "native",
451
- readReceipt: "unsupported",
452
- // Slack has no per-message read receipts in threads
453
- system: "native",
454
- // app/PR cards
455
- beat: "native"
456
- },
457
- content: {
458
- text: true,
459
- image: true
460
- },
461
- reactions: true,
462
- threads: true,
463
- readReceipts: false
464
- };
465
-
466
- // src/slack/index.ts
467
- var slackOptionsSchema = zod.z.object({
468
- /** Channel label shown in the thread header (e.g. `"#alerts"`). */
469
- channel: zod.z.string().optional(),
470
- showThreadHeader: zod.z.boolean().optional()
29
+ Object.defineProperty(exports, "whatsapp", {
30
+ enumerable: true,
31
+ get: function () { return chunkE5K2XXQL_cjs.whatsapp; }
471
32
  });
472
- var slack = skinKit.defineSkin({
473
- id: "slack",
474
- meta: {
475
- name: "Slack",
476
- defaultCanvas: { width: 880, height: 720 },
477
- supportsThemes: ["light", "dark"],
478
- capabilities: slackCapabilities,
479
- optionsSchema: slackOptionsSchema,
480
- fonts: slackFonts
481
- },
482
- components: slackComponents,
483
- tokens: slackTokens
33
+ Object.defineProperty(exports, "claudeCode", {
34
+ enumerable: true,
35
+ get: function () { return chunkFEXZ3X5C_cjs.claudeCode; }
484
36
  });
485
-
486
- // src/claude-code/tokens.ts
487
- var TUI_COLORS = {
488
- bg: "#1a1a1a",
489
- titleBar: "#2a2a2a",
490
- border: "#3a3a3a",
491
- text: "#e6e6e6",
492
- dim: "#8b8b8b",
493
- prompt: "#d97757",
494
- // Claude coral
495
- accent: "#d97757",
496
- spinner: "#d97757",
497
- system: "#7aa2f7",
498
- // tool/blue
499
- cursor: "#d97757",
500
- dotRed: "#ff5f56",
501
- dotYellow: "#ffbd2e",
502
- dotGreen: "#27c93f"
503
- };
504
- var MONO_STACK = '"JetBrains Mono", "SF Mono", Menlo, Monaco, "Cascadia Code", "Roboto Mono", monospace';
505
- function flatten(content) {
506
- return content.map((node) => {
507
- if (node.type === "text") {
508
- const spans = node.spans;
509
- return spans.map(
510
- (s) => typeof s.value === "string" ? s.value : typeof s.label === "string" ? s.label : typeof s.href === "string" ? s.href : ""
511
- ).join("");
512
- }
513
- if (node.type === "image") {
514
- const alt = node.alt;
515
- return `[image${alt ? `: ${alt}` : ""}]`;
516
- }
517
- return "";
518
- }).join(" ");
519
- }
520
- function streamed(text, progress) {
521
- if (progress >= 1) return text;
522
- return text.slice(0, Math.round(progress * text.length));
523
- }
524
- var lineStyle = {
525
- padding: "2px 0",
526
- whiteSpace: "pre-wrap",
527
- wordBreak: "break-word"
528
- };
529
- var Avatar2 = () => null;
530
- var Reaction2 = ({ reaction }) => /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { color: TUI_COLORS.dim }, children: [
531
- " ",
532
- reaction.emoji
533
- ] });
534
- var SPINNER = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
535
- var TypingIndicator2 = ({ typing }) => {
536
- const frame = Math.floor(typing.progress * SPINNER.length * 6) % SPINNER.length;
537
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { ...lineStyle, color: TUI_COLORS.dim }, children: [
538
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.spinner }, children: SPINNER[frame] }),
539
- " Thinking\u2026"
540
- ] });
541
- };
542
- var Message2 = ({ message }) => {
543
- const text = streamed(flatten(message.content), message.revealProgress);
544
- if (message.isSelf) {
545
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { ...lineStyle, display: "flex", gap: 8 }, children: [
546
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.prompt }, children: "\u276F" }),
547
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.text }, children: text })
548
- ] });
549
- }
550
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { ...lineStyle, display: "flex", gap: 8 }, children: [
551
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.accent }, children: "\u23FA" }),
552
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.text }, children: text })
553
- ] });
554
- };
555
- var SystemMessage2 = ({ message }) => {
556
- const text = streamed(flatten(message.content), message.revealProgress);
557
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { ...lineStyle, display: "flex", gap: 8, color: TUI_COLORS.dim }, children: [
558
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.system }, children: "\u23BF" }),
559
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: text })
560
- ] });
561
- };
562
- var Composer2 = ({ composer }) => /* @__PURE__ */ jsxRuntime.jsxs(
563
- "div",
564
- {
565
- style: {
566
- display: "flex",
567
- gap: 8,
568
- padding: "6px 0 2px",
569
- marginTop: 6,
570
- borderTop: `1px solid ${TUI_COLORS.border}`
571
- },
572
- children: [
573
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.prompt }, children: "\u276F" }),
574
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { whiteSpace: "pre-wrap", color: TUI_COLORS.text }, children: [
575
- composer.text,
576
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: TUI_COLORS.cursor }, children: "\u2588" })
577
- ] })
578
- ]
579
- }
580
- );
581
- var Dot = ({ color }) => /* @__PURE__ */ jsxRuntime.jsx(
582
- "span",
583
- {
584
- style: {
585
- width: 11,
586
- height: 11,
587
- borderRadius: "50%",
588
- background: color,
589
- display: "inline-block"
590
- }
591
- }
592
- );
593
- var Frame2 = ({
594
- options,
595
- children
596
- }) => {
597
- const title = typeof options?.title === "string" ? options.title : "claude \u2014 typecaast";
598
- return /* @__PURE__ */ jsxRuntime.jsxs(
599
- "div",
600
- {
601
- style: {
602
- fontFamily: MONO_STACK,
603
- background: TUI_COLORS.bg,
604
- color: TUI_COLORS.text,
605
- display: "flex",
606
- flexDirection: "column",
607
- height: "100%",
608
- width: "100%",
609
- fontSize: 13,
610
- lineHeight: 1.5,
611
- WebkitFontSmoothing: "antialiased"
612
- },
613
- children: [
614
- /* @__PURE__ */ jsxRuntime.jsxs(
615
- "div",
616
- {
617
- style: {
618
- flex: "0 0 auto",
619
- height: 30,
620
- background: TUI_COLORS.titleBar,
621
- display: "flex",
622
- alignItems: "center",
623
- gap: 8,
624
- padding: "0 12px",
625
- borderBottom: `1px solid ${TUI_COLORS.border}`
626
- },
627
- children: [
628
- /* @__PURE__ */ jsxRuntime.jsx(Dot, { color: TUI_COLORS.dotRed }),
629
- /* @__PURE__ */ jsxRuntime.jsx(Dot, { color: TUI_COLORS.dotYellow }),
630
- /* @__PURE__ */ jsxRuntime.jsx(Dot, { color: TUI_COLORS.dotGreen }),
631
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: 6, color: TUI_COLORS.dim, fontSize: 12 }, children: title })
632
- ]
633
- }
634
- ),
635
- /* @__PURE__ */ jsxRuntime.jsx(
636
- "div",
637
- {
638
- style: {
639
- flex: "1 1 auto",
640
- minHeight: 0,
641
- display: "flex",
642
- flexDirection: "column",
643
- padding: "10px 14px",
644
- overflow: "hidden"
645
- },
646
- children
647
- }
648
- )
649
- ]
650
- }
651
- );
652
- };
653
- var tuiComponents = {
654
- Frame: Frame2,
655
- Message: Message2,
656
- TypingIndicator: TypingIndicator2,
657
- Reaction: Reaction2,
658
- Composer: Composer2,
659
- SystemMessage: SystemMessage2,
660
- Avatar: Avatar2
661
- };
662
-
663
- // src/claude-code/capabilities.ts
664
- var tuiCapabilities = {
665
- events: {
666
- message: "native",
667
- composerType: "native",
668
- send: "native",
669
- typing: "native",
670
- // spinner
671
- system: "native",
672
- // tool/output lines
673
- reaction: "unsupported",
674
- readReceipt: "unsupported",
675
- edit: "native",
676
- delete: "native",
677
- beat: "native"
678
- },
679
- content: {
680
- text: true,
681
- image: false
682
- // terminals don't render images
683
- },
684
- reactions: false,
685
- threads: false,
686
- readReceipts: false
687
- };
688
-
689
- // src/claude-code/fonts.ts
690
- var tuiFonts = [
691
- {
692
- family: "JetBrains Mono",
693
- weights: [400, 700],
694
- sources: [
695
- {
696
- url: "https://cdn.jsdelivr.net/fontsource/fonts/jetbrains-mono@latest/latin-400-normal.woff2",
697
- weight: 400,
698
- format: "woff2"
699
- },
700
- {
701
- url: "https://cdn.jsdelivr.net/fontsource/fonts/jetbrains-mono@latest/latin-700-normal.woff2",
702
- weight: 700,
703
- format: "woff2"
704
- }
705
- ]
706
- }
707
- ];
708
-
709
- // src/claude-code/index.ts
710
- var tuiOptionsSchema = zod.z.object({
711
- /** Title-bar label (e.g. `"claude — zsh"`). */
712
- title: zod.z.string().optional()
37
+ Object.defineProperty(exports, "cursor", {
38
+ enumerable: true,
39
+ get: function () { return chunkKTQVRSDX_cjs.cursor; }
713
40
  });
714
- var claudeCode = skinKit.defineSkin({
715
- id: "claude-code",
716
- meta: {
717
- name: "Claude Code (TUI)",
718
- defaultCanvas: { width: 720, height: 480 },
719
- supportsThemes: ["dark"],
720
- capabilities: tuiCapabilities,
721
- optionsSchema: tuiOptionsSchema,
722
- fonts: tuiFonts
723
- },
724
- components: tuiComponents
41
+ Object.defineProperty(exports, "imessage", {
42
+ enumerable: true,
43
+ get: function () { return chunkBMB4ZKAU_cjs.imessage; }
725
44
  });
726
-
727
- // src/imessage/tokens.ts
728
- var IMESSAGE_COLORS = {
729
- light: {
730
- bg: "#ffffff",
731
- text: "#000000",
732
- subtle: "#8e8e93",
733
- selfBubble: "#0b93f6",
734
- selfText: "#ffffff",
735
- otherBubble: "#e9e9eb",
736
- otherText: "#000000",
737
- navBg: "rgba(249,249,249,0.94)",
738
- navBorder: "rgba(0,0,0,0.12)",
739
- statusText: "#000000",
740
- composerBg: "#ffffff",
741
- composerBorder: "#d1d1d6",
742
- placeholder: "#8e8e93",
743
- keyboardBg: "#d1d4db",
744
- keyBg: "#ffffff",
745
- keyText: "#000000",
746
- keyShadow: "rgba(0,0,0,0.28)",
747
- tapbackBg: "#e9e9eb",
748
- link: "#0b93f6"
749
- },
750
- dark: {
751
- bg: "#000000",
752
- text: "#ffffff",
753
- subtle: "#8e8e93",
754
- selfBubble: "#0b93f6",
755
- selfText: "#ffffff",
756
- otherBubble: "#26252a",
757
- otherText: "#ffffff",
758
- navBg: "rgba(22,22,22,0.92)",
759
- navBorder: "rgba(255,255,255,0.12)",
760
- statusText: "#ffffff",
761
- composerBg: "#1c1c1e",
762
- composerBorder: "#38383a",
763
- placeholder: "#8e8e93",
764
- keyboardBg: "#1c1c1e",
765
- keyBg: "#6b6b6f",
766
- keyText: "#ffffff",
767
- keyShadow: "rgba(0,0,0,0.5)",
768
- tapbackBg: "#26252a",
769
- link: "#0b93f6"
770
- }
771
- };
772
- var IMESSAGE_FONT_STACK = 'Inter, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif';
773
- var imessageTokens = {
774
- light: {
775
- colors: IMESSAGE_COLORS.light
776
- },
777
- dark: { colors: IMESSAGE_COLORS.dark }
778
- };
779
- var RADIUS = 18;
780
- var TAIL = 5;
781
- function initials2(name) {
782
- return name.split(/\s+/).map((w) => w.charAt(0)).slice(0, 2).join("").toUpperCase();
783
- }
784
- function markStyles2(c) {
785
- return {
786
- link: { color: c.link, textDecoration: "underline" },
787
- code: {
788
- fontFamily: "Menlo, monospace",
789
- fontSize: "0.9em"
790
- }
791
- };
792
- }
793
- var StatusBar = ({ theme }) => {
794
- const c = IMESSAGE_COLORS[theme];
795
- return /* @__PURE__ */ jsxRuntime.jsxs(
796
- "div",
797
- {
798
- style: {
799
- flex: "0 0 auto",
800
- height: 44,
801
- display: "flex",
802
- alignItems: "center",
803
- justifyContent: "space-between",
804
- padding: "0 24px",
805
- color: c.statusText,
806
- fontWeight: 600,
807
- fontSize: 15
808
- },
809
- children: [
810
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "9:41" }),
811
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
812
- /* @__PURE__ */ jsxRuntime.jsx(
813
- "span",
814
- {
815
- style: { display: "inline-flex", alignItems: "flex-end", gap: 1.5 },
816
- children: [5, 7, 9, 11].map((h, i) => /* @__PURE__ */ jsxRuntime.jsx(
817
- "span",
818
- {
819
- style: {
820
- width: 3,
821
- height: h,
822
- borderRadius: 1,
823
- background: c.statusText
824
- }
825
- },
826
- i
827
- ))
828
- }
829
- ),
830
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 13, fontWeight: 600 }, children: "5G" }),
831
- /* @__PURE__ */ jsxRuntime.jsx(
832
- "span",
833
- {
834
- style: {
835
- display: "inline-block",
836
- width: 24,
837
- height: 12,
838
- borderRadius: 3,
839
- border: `1px solid ${c.statusText}`,
840
- position: "relative",
841
- opacity: 0.9
842
- },
843
- children: /* @__PURE__ */ jsxRuntime.jsx(
844
- "span",
845
- {
846
- style: {
847
- position: "absolute",
848
- inset: 1.5,
849
- width: "70%",
850
- borderRadius: 1,
851
- background: c.statusText
852
- }
853
- }
854
- )
855
- }
856
- )
857
- ] })
858
- ]
859
- }
860
- );
861
- };
862
- var Avatar3 = ({ participant, size = 30 }) => {
863
- if (participant.avatar) {
864
- return /* @__PURE__ */ jsxRuntime.jsx(
865
- "img",
866
- {
867
- src: participant.avatar,
868
- alt: participant.name,
869
- width: size,
870
- height: size,
871
- style: {
872
- width: size,
873
- height: size,
874
- borderRadius: "50%",
875
- objectFit: "cover"
876
- }
877
- }
878
- );
879
- }
880
- return /* @__PURE__ */ jsxRuntime.jsx(
881
- "div",
882
- {
883
- style: {
884
- width: size,
885
- height: size,
886
- borderRadius: "50%",
887
- background: participant.color ?? "#a9a9af",
888
- color: "#fff",
889
- display: "flex",
890
- alignItems: "center",
891
- justifyContent: "center",
892
- fontSize: size * 0.4,
893
- fontWeight: 500
894
- },
895
- children: initials2(participant.name)
896
- }
897
- );
898
- };
899
- var NavBar = ({ theme, title, participant }) => {
900
- const c = IMESSAGE_COLORS[theme];
901
- return /* @__PURE__ */ jsxRuntime.jsxs(
902
- "div",
903
- {
904
- style: {
905
- flex: "0 0 auto",
906
- display: "flex",
907
- flexDirection: "column",
908
- alignItems: "center",
909
- gap: 3,
910
- padding: "4px 0 8px",
911
- background: c.navBg,
912
- borderBottom: `0.5px solid ${c.navBorder}`,
913
- backdropFilter: "blur(20px)"
914
- },
915
- children: [
916
- participant ? /* @__PURE__ */ jsxRuntime.jsx(Avatar3, { theme, participant, size: 42 }) : null,
917
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: 11, fontWeight: 500, color: c.text }, children: [
918
- title,
919
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: 3, color: c.subtle }, children: "\u203A" })
920
- ] })
921
- ]
922
- }
923
- );
924
- };
925
- var Reaction3 = ({ theme, reaction }) => {
926
- const c = IMESSAGE_COLORS[theme];
927
- return /* @__PURE__ */ jsxRuntime.jsx(
928
- "span",
929
- {
930
- style: {
931
- ...skinKit.popIn(reaction.progress),
932
- display: "inline-flex",
933
- alignItems: "center",
934
- justifyContent: "center",
935
- background: c.tapbackBg,
936
- borderRadius: 12,
937
- padding: "2px 6px",
938
- fontSize: 12,
939
- boxShadow: `0 1px 2px ${theme === "dark" ? "rgba(0,0,0,0.5)" : "rgba(0,0,0,0.15)"}`
940
- },
941
- children: reaction.emoji
942
- }
943
- );
944
- };
945
- var Message3 = ({ theme, message }) => {
946
- const c = IMESSAGE_COLORS[theme];
947
- const self = message.isSelf;
948
- const bubbleStyle = {
949
- maxWidth: "72%",
950
- padding: "7px 12px",
951
- borderRadius: RADIUS,
952
- background: self ? c.selfBubble : c.otherBubble,
953
- color: self ? c.selfText : c.otherText,
954
- fontSize: 16,
955
- lineHeight: 1.3,
956
- wordBreak: "break-word",
957
- ...self ? { borderBottomRightRadius: TAIL } : { borderBottomLeftRadius: TAIL }
958
- };
959
- return /* @__PURE__ */ jsxRuntime.jsx(
960
- "div",
961
- {
962
- style: {
963
- display: "flex",
964
- justifyContent: self ? "flex-end" : "flex-start",
965
- padding: message.isGrouped ? "1px 12px" : "3px 12px",
966
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 6 })
967
- },
968
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { position: "relative" }, children: [
969
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: bubbleStyle, children: /* @__PURE__ */ jsxRuntime.jsx(
970
- skinKit.MessageContent,
971
- {
972
- nodes: message.content,
973
- styles: markStyles2(c),
974
- imageStyle: { borderRadius: 14, maxWidth: 240, marginTop: 2 }
975
- }
976
- ) }),
977
- message.reactions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
978
- "div",
979
- {
980
- style: {
981
- position: "absolute",
982
- top: -14,
983
- ...self ? { left: -6 } : { right: -6 },
984
- display: "flex",
985
- gap: 2
986
- },
987
- children: message.reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsx(Reaction3, { theme, reaction: r }, i))
988
- }
989
- ) : null
990
- ] })
991
- }
992
- );
993
- };
994
- var TypingIndicator3 = ({ theme, typing }) => {
995
- const c = IMESSAGE_COLORS[theme];
996
- return /* @__PURE__ */ jsxRuntime.jsx(
997
- "div",
998
- {
999
- style: {
1000
- display: "flex",
1001
- justifyContent: "flex-start",
1002
- padding: "3px 12px"
1003
- },
1004
- children: /* @__PURE__ */ jsxRuntime.jsx(
1005
- "div",
1006
- {
1007
- style: {
1008
- background: c.otherBubble,
1009
- borderRadius: RADIUS,
1010
- borderBottomLeftRadius: TAIL,
1011
- padding: "10px 14px"
1012
- },
1013
- children: /* @__PURE__ */ jsxRuntime.jsx(
1014
- skinKit.TypingDots,
1015
- {
1016
- progress: typing.progress,
1017
- color: c.subtle,
1018
- size: 8,
1019
- gap: 5
1020
- }
1021
- )
1022
- }
1023
- )
1024
- }
1025
- );
1026
- };
1027
- var SystemMessage3 = ({ theme, message }) => {
1028
- const c = IMESSAGE_COLORS[theme];
1029
- const text = message.content.map(
1030
- (n) => n.type === "text" ? n.spans.map((s) => s.value ?? "").join("") : ""
1031
- ).join(" ");
1032
- return /* @__PURE__ */ jsxRuntime.jsx(
1033
- "div",
1034
- {
1035
- style: {
1036
- textAlign: "center",
1037
- color: c.subtle,
1038
- fontSize: 12,
1039
- fontWeight: 500,
1040
- padding: "8px 0",
1041
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 0 })
1042
- },
1043
- children: text
1044
- }
1045
- );
1046
- };
1047
- var Composer3 = ({ theme, composer }) => {
1048
- const c = IMESSAGE_COLORS[theme];
1049
- const hasText = composer.text.length > 0;
1050
- return /* @__PURE__ */ jsxRuntime.jsxs(
1051
- "div",
1052
- {
1053
- style: {
1054
- flex: "0 0 auto",
1055
- display: "flex",
1056
- alignItems: "flex-end",
1057
- gap: 8,
1058
- padding: "8px 12px"
1059
- },
1060
- children: [
1061
- /* @__PURE__ */ jsxRuntime.jsx(
1062
- "span",
1063
- {
1064
- style: {
1065
- width: 30,
1066
- height: 30,
1067
- borderRadius: "50%",
1068
- background: theme === "dark" ? "#1c1c1e" : "#e9e9eb",
1069
- color: c.subtle,
1070
- display: "flex",
1071
- alignItems: "center",
1072
- justifyContent: "center",
1073
- fontSize: 20
1074
- },
1075
- children: "+"
1076
- }
1077
- ),
1078
- /* @__PURE__ */ jsxRuntime.jsx(
1079
- "div",
1080
- {
1081
- style: {
1082
- flex: 1,
1083
- minHeight: 34,
1084
- display: "flex",
1085
- alignItems: "center",
1086
- border: `1px solid ${c.composerBorder}`,
1087
- borderRadius: 18,
1088
- padding: "5px 12px",
1089
- background: c.composerBg,
1090
- color: c.text,
1091
- fontSize: 16
1092
- },
1093
- children: hasText ? /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1094
- composer.text,
1095
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.selfBubble }, children: "|" })
1096
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.placeholder }, children: "iMessage" })
1097
- }
1098
- ),
1099
- hasText ? /* @__PURE__ */ jsxRuntime.jsx(
1100
- "span",
1101
- {
1102
- style: {
1103
- width: 30,
1104
- height: 30,
1105
- borderRadius: "50%",
1106
- background: c.selfBubble,
1107
- color: "#fff",
1108
- display: "flex",
1109
- alignItems: "center",
1110
- justifyContent: "center",
1111
- fontSize: 17
1112
- },
1113
- children: "\u2191"
1114
- }
1115
- ) : null
1116
- ]
1117
- }
1118
- );
1119
- };
1120
- var KEY_ROWS = [
1121
- ["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"],
1122
- ["a", "s", "d", "f", "g", "h", "j", "k", "l"],
1123
- ["\u21E7", "z", "x", "c", "v", "b", "n", "m", "\u232B"]
1124
- ];
1125
- var Keyboard = ({ theme }) => {
1126
- const c = IMESSAGE_COLORS[theme];
1127
- const key = (label, wide = false) => /* @__PURE__ */ jsxRuntime.jsx(
1128
- "span",
1129
- {
1130
- style: {
1131
- flex: wide ? 1.6 : 1,
1132
- textAlign: "center",
1133
- padding: "9px 0",
1134
- borderRadius: 5,
1135
- background: label === "\u21E7" || label === "\u232B" ? "transparent" : c.keyBg,
1136
- color: c.keyText,
1137
- fontSize: 16,
1138
- fontWeight: 400,
1139
- boxShadow: label === "\u21E7" || label === "\u232B" ? "none" : `0 1px 0 ${c.keyShadow}`,
1140
- textTransform: label.length === 1 ? "uppercase" : "none"
1141
- },
1142
- children: label
1143
- },
1144
- label
1145
- );
1146
- return /* @__PURE__ */ jsxRuntime.jsxs(
1147
- "div",
1148
- {
1149
- style: {
1150
- flex: "0 0 auto",
1151
- background: c.keyboardBg,
1152
- padding: "6px 3px 4px",
1153
- display: "flex",
1154
- flexDirection: "column",
1155
- gap: 7
1156
- },
1157
- children: [
1158
- KEY_ROWS.map((row, i) => /* @__PURE__ */ jsxRuntime.jsx(
1159
- "div",
1160
- {
1161
- style: {
1162
- display: "flex",
1163
- gap: 5,
1164
- padding: i === 1 ? "0 18px" : "0 3px"
1165
- },
1166
- children: row.map((k) => key(k, k === "\u21E7" || k === "\u232B"))
1167
- },
1168
- i
1169
- )),
1170
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", gap: 5, padding: "0 3px" }, children: [
1171
- key("123", true),
1172
- key("space", false),
1173
- key("return", true)
1174
- ] })
1175
- ]
1176
- }
1177
- );
1178
- };
1179
- var Frame3 = ({
1180
- theme,
1181
- options,
1182
- children
1183
- }) => {
1184
- const c = IMESSAGE_COLORS[theme];
1185
- const contact = typeof options?.contact === "string" ? options.contact : "Messages";
1186
- const showKeyboard = options?.keyboard !== false;
1187
- return /* @__PURE__ */ jsxRuntime.jsxs(
1188
- "div",
1189
- {
1190
- style: {
1191
- fontFamily: IMESSAGE_FONT_STACK,
1192
- background: c.bg,
1193
- color: c.text,
1194
- display: "flex",
1195
- flexDirection: "column",
1196
- height: "100%",
1197
- width: "100%",
1198
- WebkitFontSmoothing: "antialiased"
1199
- },
1200
- children: [
1201
- /* @__PURE__ */ jsxRuntime.jsx(StatusBar, { theme }),
1202
- /* @__PURE__ */ jsxRuntime.jsx(NavBar, { theme, title: contact }),
1203
- /* @__PURE__ */ jsxRuntime.jsx(
1204
- "div",
1205
- {
1206
- style: {
1207
- flex: "1 1 auto",
1208
- minHeight: 0,
1209
- display: "flex",
1210
- flexDirection: "column",
1211
- justifyContent: "flex-end",
1212
- overflow: "hidden",
1213
- paddingBottom: 4
1214
- },
1215
- children
1216
- }
1217
- ),
1218
- showKeyboard ? /* @__PURE__ */ jsxRuntime.jsx(Keyboard, { theme }) : null
1219
- ]
1220
- }
1221
- );
1222
- };
1223
- var imessageComponents = {
1224
- Frame: Frame3,
1225
- Message: Message3,
1226
- TypingIndicator: TypingIndicator3,
1227
- Reaction: Reaction3,
1228
- Composer: Composer3,
1229
- SystemMessage: SystemMessage3,
1230
- Avatar: Avatar3
1231
- };
1232
-
1233
- // src/imessage/capabilities.ts
1234
- var imessageCapabilities = {
1235
- events: {
1236
- message: "native",
1237
- composerType: "native",
1238
- send: "native",
1239
- typing: "native",
1240
- // dot bubble
1241
- reaction: "native",
1242
- // tapbacks
1243
- readReceipt: "native",
1244
- // "Delivered" / "Read"
1245
- edit: "native",
1246
- delete: "native",
1247
- system: "fallback",
1248
- // rendered as centered grey text, not an app card
1249
- beat: "native"
1250
- },
1251
- content: {
1252
- text: true,
1253
- image: true
1254
- },
1255
- reactions: true,
1256
- threads: false,
1257
- readReceipts: true
1258
- };
1259
-
1260
- // src/imessage/fonts.ts
1261
- var imessageFonts = [
1262
- {
1263
- family: "Inter",
1264
- intended: "SF Pro",
1265
- weights: [400, 500, 600],
1266
- sources: [
1267
- {
1268
- url: "https://cdn.jsdelivr.net/fontsource/fonts/inter@latest/latin-400-normal.woff2",
1269
- weight: 400,
1270
- format: "woff2"
1271
- },
1272
- {
1273
- url: "https://cdn.jsdelivr.net/fontsource/fonts/inter@latest/latin-600-normal.woff2",
1274
- weight: 600,
1275
- format: "woff2"
1276
- }
1277
- ]
1278
- }
1279
- ];
1280
-
1281
- // src/imessage/index.ts
1282
- var imessageOptionsSchema = zod.z.object({
1283
- /** Contact name shown in the nav bar. */
1284
- contact: zod.z.string().optional(),
1285
- /** Show the on-screen keyboard (default true). */
1286
- keyboard: zod.z.boolean().optional()
45
+ Object.defineProperty(exports, "discord", {
46
+ enumerable: true,
47
+ get: function () { return chunkUC43JQYK_cjs.discord; }
1287
48
  });
1288
- var imessage = skinKit.defineSkin({
1289
- id: "imessage",
1290
- meta: {
1291
- name: "iMessage (iOS)",
1292
- defaultCanvas: { width: 390, height: 844 },
1293
- supportsThemes: ["light", "dark"],
1294
- capabilities: imessageCapabilities,
1295
- optionsSchema: imessageOptionsSchema,
1296
- fonts: imessageFonts
1297
- },
1298
- components: imessageComponents,
1299
- tokens: imessageTokens
49
+ Object.defineProperty(exports, "messagesMacos", {
50
+ enumerable: true,
51
+ get: function () { return chunkAMP2ZMTF_cjs.messagesMacos; }
1300
52
  });
1301
-
1302
- // src/whatsapp/tokens.ts
1303
- var WHATSAPP_COLORS = {
1304
- light: {
1305
- wallpaper: "#efeae2",
1306
- header: "#008069",
1307
- headerText: "#ffffff",
1308
- headerSubtle: "rgba(255,255,255,0.8)",
1309
- text: "#111b21",
1310
- subtle: "#667781",
1311
- selfBubble: "#d9fdd3",
1312
- selfText: "#111b21",
1313
- otherBubble: "#ffffff",
1314
- otherText: "#111b21",
1315
- bubbleTime: "#667781",
1316
- tick: "#53bdeb",
1317
- composerBar: "#f0f2f5",
1318
- inputBg: "#ffffff",
1319
- placeholder: "#8696a0",
1320
- accent: "#00a884",
1321
- reactionBg: "#ffffff"
1322
- },
1323
- dark: {
1324
- wallpaper: "#0b141a",
1325
- header: "#202c33",
1326
- headerText: "#e9edef",
1327
- headerSubtle: "#8696a0",
1328
- text: "#e9edef",
1329
- subtle: "#8696a0",
1330
- selfBubble: "#005c4b",
1331
- selfText: "#e9edef",
1332
- otherBubble: "#202c33",
1333
- otherText: "#e9edef",
1334
- bubbleTime: "#8696a0",
1335
- tick: "#53bdeb",
1336
- composerBar: "#202c33",
1337
- inputBg: "#2a3942",
1338
- placeholder: "#8696a0",
1339
- accent: "#00a884",
1340
- reactionBg: "#2a3942"
1341
- }
1342
- };
1343
- var WHATSAPP_FONT_STACK = '"Helvetica Neue", Helvetica, -apple-system, "Segoe UI", Roboto, Arial, sans-serif';
1344
- var whatsappTokens = {
1345
- light: {
1346
- colors: WHATSAPP_COLORS.light
1347
- },
1348
- dark: { colors: WHATSAPP_COLORS.dark }
1349
- };
1350
- var RADIUS2 = 8;
1351
- function formatTime2(atMs) {
1352
- const base = 9 * 3600 * 1e3;
1353
- const total = Math.floor((base + atMs) / 1e3);
1354
- const h = Math.floor(total / 3600) % 24;
1355
- const m = Math.floor(total % 3600 / 60);
1356
- const ampm = h >= 12 ? "PM" : "AM";
1357
- const hr = h % 12 === 0 ? 12 : h % 12;
1358
- return `${hr}:${String(m).padStart(2, "0")} ${ampm}`;
1359
- }
1360
- function initials3(name) {
1361
- return name.split(/\s+/).map((w) => w.charAt(0)).slice(0, 2).join("").toUpperCase();
1362
- }
1363
- var Avatar4 = ({ participant, size = 40 }) => {
1364
- if (participant.avatar) {
1365
- return /* @__PURE__ */ jsxRuntime.jsx(
1366
- "img",
1367
- {
1368
- src: participant.avatar,
1369
- alt: participant.name,
1370
- width: size,
1371
- height: size,
1372
- style: {
1373
- width: size,
1374
- height: size,
1375
- borderRadius: "50%",
1376
- objectFit: "cover"
1377
- }
1378
- }
1379
- );
1380
- }
1381
- return /* @__PURE__ */ jsxRuntime.jsx(
1382
- "div",
1383
- {
1384
- style: {
1385
- width: size,
1386
- height: size,
1387
- borderRadius: "50%",
1388
- background: participant.color ?? "#6a7175",
1389
- color: "#fff",
1390
- display: "flex",
1391
- alignItems: "center",
1392
- justifyContent: "center",
1393
- fontSize: size * 0.4,
1394
- fontWeight: 500
1395
- },
1396
- children: initials3(participant.name)
1397
- }
1398
- );
1399
- };
1400
- var DoubleTick = ({ color }) => /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color, fontSize: 13, letterSpacing: -3, marginLeft: 3 }, children: "\u2713\u2713" });
1401
- var Reaction4 = ({ theme, reaction }) => {
1402
- const c = WHATSAPP_COLORS[theme];
1403
- return /* @__PURE__ */ jsxRuntime.jsx(
1404
- "span",
1405
- {
1406
- style: {
1407
- ...skinKit.popIn(reaction.progress),
1408
- display: "inline-flex",
1409
- alignItems: "center",
1410
- background: c.reactionBg,
1411
- borderRadius: 12,
1412
- padding: "1px 5px",
1413
- fontSize: 12,
1414
- boxShadow: `0 1px 2px rgba(0,0,0,${theme === "dark" ? 0.4 : 0.18})`
1415
- },
1416
- children: reaction.emoji
1417
- }
1418
- );
1419
- };
1420
- var Message4 = ({ theme, message }) => {
1421
- const c = WHATSAPP_COLORS[theme];
1422
- const self = message.isSelf;
1423
- const bubble = {
1424
- position: "relative",
1425
- maxWidth: "78%",
1426
- padding: "6px 8px 5px 9px",
1427
- borderRadius: RADIUS2,
1428
- background: self ? c.selfBubble : c.otherBubble,
1429
- color: self ? c.selfText : c.otherText,
1430
- fontSize: 14.2,
1431
- lineHeight: 1.32,
1432
- wordBreak: "break-word",
1433
- boxShadow: `0 1px 0.5px rgba(0,0,0,${theme === "dark" ? 0.2 : 0.13})`,
1434
- ...self ? { borderTopRightRadius: 0 } : { borderTopLeftRadius: 0 }
1435
- };
1436
- return /* @__PURE__ */ jsxRuntime.jsx(
1437
- "div",
1438
- {
1439
- style: {
1440
- display: "flex",
1441
- justifyContent: self ? "flex-end" : "flex-start",
1442
- padding: message.isGrouped ? "1px 12px" : "3px 12px",
1443
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 5 })
1444
- },
1445
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { position: "relative" }, children: [
1446
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: bubble, children: [
1447
- /* @__PURE__ */ jsxRuntime.jsx(
1448
- skinKit.MessageContent,
1449
- {
1450
- nodes: message.content,
1451
- imageStyle: { borderRadius: 6, maxWidth: 240, marginBottom: 2 }
1452
- }
1453
- ),
1454
- /* @__PURE__ */ jsxRuntime.jsxs(
1455
- "span",
1456
- {
1457
- style: {
1458
- float: "right",
1459
- marginLeft: 8,
1460
- marginTop: 2,
1461
- fontSize: 11,
1462
- color: c.bubbleTime,
1463
- display: "inline-flex",
1464
- alignItems: "center",
1465
- whiteSpace: "nowrap"
1466
- },
1467
- children: [
1468
- formatTime2(message.atMs),
1469
- self ? /* @__PURE__ */ jsxRuntime.jsx(DoubleTick, { color: c.tick }) : null
1470
- ]
1471
- }
1472
- )
1473
- ] }),
1474
- message.reactions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1475
- "div",
1476
- {
1477
- style: {
1478
- position: "absolute",
1479
- bottom: -10,
1480
- ...self ? { right: 8 } : { left: 8 },
1481
- display: "flex",
1482
- gap: 2
1483
- },
1484
- children: message.reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsx(Reaction4, { theme, reaction: r }, i))
1485
- }
1486
- ) : null
1487
- ] })
1488
- }
1489
- );
1490
- };
1491
- var TypingIndicator4 = ({ theme, typing }) => {
1492
- const c = WHATSAPP_COLORS[theme];
1493
- return /* @__PURE__ */ jsxRuntime.jsx(
1494
- "div",
1495
- {
1496
- style: {
1497
- display: "flex",
1498
- justifyContent: "flex-start",
1499
- padding: "3px 12px"
1500
- },
1501
- children: /* @__PURE__ */ jsxRuntime.jsx(
1502
- "div",
1503
- {
1504
- style: {
1505
- background: c.otherBubble,
1506
- borderRadius: RADIUS2,
1507
- borderTopLeftRadius: 0,
1508
- padding: "9px 12px",
1509
- boxShadow: `0 1px 0.5px rgba(0,0,0,${theme === "dark" ? 0.2 : 0.13})`
1510
- },
1511
- children: /* @__PURE__ */ jsxRuntime.jsx(
1512
- skinKit.TypingDots,
1513
- {
1514
- progress: typing.progress,
1515
- color: c.subtle,
1516
- size: 7,
1517
- gap: 4
1518
- }
1519
- )
1520
- }
1521
- )
1522
- }
1523
- );
1524
- };
1525
- var SystemMessage4 = ({ theme, message }) => {
1526
- const c = WHATSAPP_COLORS[theme];
1527
- const text = message.content.map(
1528
- (n) => n.type === "text" ? n.spans.map((s) => s.value ?? "").join("") : ""
1529
- ).join(" ");
1530
- return /* @__PURE__ */ jsxRuntime.jsx(
1531
- "div",
1532
- {
1533
- style: {
1534
- display: "flex",
1535
- justifyContent: "center",
1536
- padding: "6px 0",
1537
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 0 })
1538
- },
1539
- children: /* @__PURE__ */ jsxRuntime.jsx(
1540
- "span",
1541
- {
1542
- style: {
1543
- background: theme === "dark" ? "#182229" : "#ffffff",
1544
- color: c.subtle,
1545
- fontSize: 12.5,
1546
- padding: "5px 12px",
1547
- borderRadius: 8,
1548
- boxShadow: `0 1px 0.5px rgba(0,0,0,0.13)`
1549
- },
1550
- children: text
1551
- }
1552
- )
1553
- }
1554
- );
1555
- };
1556
- var Composer4 = ({ theme, composer }) => {
1557
- const c = WHATSAPP_COLORS[theme];
1558
- const hasText = composer.text.length > 0;
1559
- return /* @__PURE__ */ jsxRuntime.jsxs(
1560
- "div",
1561
- {
1562
- style: {
1563
- flex: "0 0 auto",
1564
- display: "flex",
1565
- alignItems: "flex-end",
1566
- gap: 8,
1567
- padding: "8px 10px",
1568
- background: c.composerBar
1569
- },
1570
- children: [
1571
- /* @__PURE__ */ jsxRuntime.jsxs(
1572
- "div",
1573
- {
1574
- style: {
1575
- flex: 1,
1576
- minHeight: 40,
1577
- display: "flex",
1578
- alignItems: "center",
1579
- gap: 8,
1580
- background: c.inputBg,
1581
- borderRadius: 22,
1582
- padding: "8px 14px",
1583
- color: c.text,
1584
- fontSize: 15
1585
- },
1586
- children: [
1587
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.subtle, fontSize: 18 }, children: "\u{1F642}" }),
1588
- hasText ? /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1589
- composer.text,
1590
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.accent }, children: "|" })
1591
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.placeholder }, children: "Message" })
1592
- ]
1593
- }
1594
- ),
1595
- /* @__PURE__ */ jsxRuntime.jsx(
1596
- "span",
1597
- {
1598
- style: {
1599
- width: 40,
1600
- height: 40,
1601
- borderRadius: "50%",
1602
- background: c.accent,
1603
- color: "#fff",
1604
- display: "flex",
1605
- alignItems: "center",
1606
- justifyContent: "center",
1607
- fontSize: 18
1608
- },
1609
- children: hasText ? "\u27A4" : "\u{1F3A4}"
1610
- }
1611
- )
1612
- ]
1613
- }
1614
- );
1615
- };
1616
- var Frame4 = ({
1617
- theme,
1618
- options,
1619
- children
1620
- }) => {
1621
- const c = WHATSAPP_COLORS[theme];
1622
- const contact = typeof options?.contact === "string" ? options.contact : "WhatsApp";
1623
- const status = typeof options?.status === "string" ? options.status : "online";
1624
- return /* @__PURE__ */ jsxRuntime.jsxs(
1625
- "div",
1626
- {
1627
- style: {
1628
- fontFamily: WHATSAPP_FONT_STACK,
1629
- background: c.wallpaper,
1630
- color: c.text,
1631
- display: "flex",
1632
- flexDirection: "column",
1633
- height: "100%",
1634
- width: "100%",
1635
- WebkitFontSmoothing: "antialiased"
1636
- },
1637
- children: [
1638
- /* @__PURE__ */ jsxRuntime.jsxs(
1639
- "div",
1640
- {
1641
- style: {
1642
- flex: "0 0 auto",
1643
- display: "flex",
1644
- alignItems: "center",
1645
- gap: 10,
1646
- padding: "8px 12px",
1647
- background: c.header,
1648
- color: c.headerText
1649
- },
1650
- children: [
1651
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 22, marginRight: -2 }, children: "\u2039" }),
1652
- /* @__PURE__ */ jsxRuntime.jsx(
1653
- "div",
1654
- {
1655
- style: {
1656
- width: 38,
1657
- height: 38,
1658
- borderRadius: "50%",
1659
- background: "#6a7175",
1660
- color: "#fff",
1661
- display: "flex",
1662
- alignItems: "center",
1663
- justifyContent: "center",
1664
- fontSize: 15,
1665
- fontWeight: 500
1666
- },
1667
- children: initials3(contact)
1668
- }
1669
- ),
1670
- /* @__PURE__ */ jsxRuntime.jsxs(
1671
- "div",
1672
- {
1673
- style: { display: "flex", flexDirection: "column", lineHeight: 1.2 },
1674
- children: [
1675
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 16, fontWeight: 600 }, children: contact }),
1676
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, color: c.headerSubtle }, children: status })
1677
- ]
1678
- }
1679
- )
1680
- ]
1681
- }
1682
- ),
1683
- /* @__PURE__ */ jsxRuntime.jsx(
1684
- "div",
1685
- {
1686
- style: {
1687
- flex: "1 1 auto",
1688
- minHeight: 0,
1689
- display: "flex",
1690
- flexDirection: "column",
1691
- justifyContent: "flex-end",
1692
- overflow: "hidden",
1693
- padding: "6px 0"
1694
- },
1695
- children
1696
- }
1697
- )
1698
- ]
1699
- }
1700
- );
1701
- };
1702
- var whatsappComponents = {
1703
- Frame: Frame4,
1704
- Message: Message4,
1705
- TypingIndicator: TypingIndicator4,
1706
- Reaction: Reaction4,
1707
- Composer: Composer4,
1708
- SystemMessage: SystemMessage4,
1709
- Avatar: Avatar4
1710
- };
1711
-
1712
- // src/whatsapp/capabilities.ts
1713
- var whatsappCapabilities = {
1714
- events: {
1715
- message: "native",
1716
- composerType: "native",
1717
- send: "native",
1718
- typing: "native",
1719
- reaction: "native",
1720
- readReceipt: "native",
1721
- // double ticks
1722
- edit: "native",
1723
- delete: "native",
1724
- system: "fallback",
1725
- // centred system pill
1726
- beat: "native"
1727
- },
1728
- content: {
1729
- text: true,
1730
- image: true
1731
- },
1732
- reactions: true,
1733
- threads: false,
1734
- readReceipts: true
1735
- };
1736
-
1737
- // src/whatsapp/index.ts
1738
- var whatsappOptionsSchema = zod.z.object({
1739
- /** Contact / group name in the header. */
1740
- contact: zod.z.string().optional(),
1741
- /** Header subtitle (e.g. `"online"`, `"last seen recently"`). */
1742
- status: zod.z.string().optional()
1743
- });
1744
- var whatsapp = skinKit.defineSkin({
1745
- id: "whatsapp",
1746
- meta: {
1747
- name: "WhatsApp",
1748
- defaultCanvas: { width: 390, height: 760 },
1749
- supportsThemes: ["light", "dark"],
1750
- capabilities: whatsappCapabilities,
1751
- optionsSchema: whatsappOptionsSchema
1752
- },
1753
- components: whatsappComponents,
1754
- tokens: whatsappTokens
1755
- });
1756
-
1757
- // src/cursor/tokens.ts
1758
- var CURSOR_COLORS = {
1759
- dark: {
1760
- bg: "#1a1a1a",
1761
- header: "#1a1a1a",
1762
- border: "#2d2d2d",
1763
- text: "#d4d4d4",
1764
- dim: "#858585",
1765
- userBg: "#262626",
1766
- userBorder: "#333333",
1767
- codeBg: "#2a2a2a",
1768
- codeText: "#ce9178",
1769
- accent: "#4d9fff",
1770
- composerBg: "#202020",
1771
- composerBorder: "#3a3a3a",
1772
- placeholder: "#6e6e6e",
1773
- chipBg: "#2a2a2a",
1774
- link: "#4d9fff"
1775
- },
1776
- light: {
1777
- bg: "#ffffff",
1778
- header: "#ffffff",
1779
- border: "#e8e8e8",
1780
- text: "#1e1e1e",
1781
- dim: "#6e6e6e",
1782
- userBg: "#f4f4f4",
1783
- userBorder: "#e8e8e8",
1784
- codeBg: "#f0f0f0",
1785
- codeText: "#a31515",
1786
- accent: "#0a72ff",
1787
- composerBg: "#f9f9f9",
1788
- composerBorder: "#e2e2e2",
1789
- placeholder: "#9a9a9a",
1790
- chipBg: "#f0f0f0",
1791
- link: "#0a72ff"
1792
- }
1793
- };
1794
- var CURSOR_FONT_STACK = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, sans-serif';
1795
- var cursorTokens = {
1796
- light: { colors: CURSOR_COLORS.light },
1797
- dark: { colors: CURSOR_COLORS.dark }
1798
- };
1799
- function markStyles3(c) {
1800
- return {
1801
- link: { color: c.link, textDecoration: "none" },
1802
- code: {
1803
- fontFamily: "Menlo, Monaco, monospace",
1804
- fontSize: "0.86em",
1805
- background: c.codeBg,
1806
- color: c.codeText,
1807
- borderRadius: 4,
1808
- padding: "1px 4px"
1809
- }
1810
- };
1811
- }
1812
- var Avatar5 = () => null;
1813
- var Reaction5 = () => null;
1814
- var Message5 = ({ theme, message }) => {
1815
- const c = CURSOR_COLORS[theme];
1816
- const self = message.isSelf;
1817
- if (self) {
1818
- return /* @__PURE__ */ jsxRuntime.jsx(
1819
- "div",
1820
- {
1821
- style: { padding: "5px 12px", ...skinKit.fadeSlideIn(message.revealProgress) },
1822
- children: /* @__PURE__ */ jsxRuntime.jsx(
1823
- "div",
1824
- {
1825
- style: {
1826
- background: c.userBg,
1827
- border: `1px solid ${c.userBorder}`,
1828
- borderRadius: 8,
1829
- padding: "8px 11px",
1830
- color: c.text,
1831
- fontSize: 13,
1832
- lineHeight: 1.5
1833
- },
1834
- children: /* @__PURE__ */ jsxRuntime.jsx(skinKit.MessageContent, { nodes: message.content, styles: markStyles3(c) })
1835
- }
1836
- )
1837
- }
1838
- );
1839
- }
1840
- return /* @__PURE__ */ jsxRuntime.jsx(
1841
- "div",
1842
- {
1843
- style: {
1844
- padding: "5px 12px 9px",
1845
- color: c.text,
1846
- fontSize: 13,
1847
- lineHeight: 1.6,
1848
- ...skinKit.fadeSlideIn(message.revealProgress)
1849
- },
1850
- children: /* @__PURE__ */ jsxRuntime.jsx(skinKit.MessageContent, { nodes: message.content, styles: markStyles3(c) })
1851
- }
1852
- );
1853
- };
1854
- var SystemMessage5 = ({ theme, message }) => {
1855
- const c = CURSOR_COLORS[theme];
1856
- const text = message.content.map(
1857
- (n) => n.type === "text" ? n.spans.map((s) => s.value ?? "").join("") : ""
1858
- ).join(" ");
1859
- return /* @__PURE__ */ jsxRuntime.jsx(
1860
- "div",
1861
- {
1862
- style: {
1863
- margin: "4px 12px",
1864
- padding: "6px 10px",
1865
- borderLeft: `2px solid ${c.accent}`,
1866
- background: c.userBg,
1867
- borderRadius: 4,
1868
- color: c.dim,
1869
- fontSize: 12,
1870
- fontFamily: "Menlo, monospace",
1871
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 0 })
1872
- },
1873
- children: text
1874
- }
1875
- );
1876
- };
1877
- var TypingIndicator5 = ({ theme, typing }) => {
1878
- const c = CURSOR_COLORS[theme];
1879
- return /* @__PURE__ */ jsxRuntime.jsxs(
1880
- "div",
1881
- {
1882
- style: {
1883
- display: "flex",
1884
- alignItems: "center",
1885
- gap: 7,
1886
- padding: "5px 12px",
1887
- color: c.dim,
1888
- fontSize: 12.5
1889
- },
1890
- children: [
1891
- /* @__PURE__ */ jsxRuntime.jsx(skinKit.TypingDots, { progress: typing.progress, color: c.accent, size: 5 }),
1892
- "Generating\u2026"
1893
- ]
1894
- }
1895
- );
1896
- };
1897
- var Composer5 = ({ theme, composer }) => {
1898
- const c = CURSOR_COLORS[theme];
1899
- const hasText = composer.text.length > 0;
1900
- const chip = {
1901
- fontSize: 11,
1902
- color: c.dim,
1903
- background: c.chipBg,
1904
- borderRadius: 5,
1905
- padding: "2px 7px"
1906
- };
1907
- return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: "0 0 auto", padding: "8px 12px 12px" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
1908
- "div",
1909
- {
1910
- style: {
1911
- border: `1px solid ${c.composerBorder}`,
1912
- borderRadius: 10,
1913
- background: c.composerBg,
1914
- padding: "9px 11px",
1915
- color: c.text,
1916
- fontSize: 13
1917
- },
1918
- children: [
1919
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { minHeight: 18 }, children: hasText ? /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1920
- composer.text,
1921
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.accent }, children: "\u258D" })
1922
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: c.placeholder }, children: "Plan, search, build anything" }) }),
1923
- /* @__PURE__ */ jsxRuntime.jsxs(
1924
- "div",
1925
- {
1926
- style: {
1927
- display: "flex",
1928
- alignItems: "center",
1929
- justifyContent: "space-between",
1930
- marginTop: 9
1931
- },
1932
- children: [
1933
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", gap: 6 }, children: [
1934
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: chip, children: "\u221E Agent" }),
1935
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: chip, children: "claude-4.5-sonnet" })
1936
- ] }),
1937
- /* @__PURE__ */ jsxRuntime.jsx(
1938
- "span",
1939
- {
1940
- style: {
1941
- width: 22,
1942
- height: 22,
1943
- borderRadius: 6,
1944
- background: hasText ? c.accent : c.chipBg,
1945
- color: hasText ? "#fff" : c.dim,
1946
- display: "flex",
1947
- alignItems: "center",
1948
- justifyContent: "center",
1949
- fontSize: 13
1950
- },
1951
- children: "\u2191"
1952
- }
1953
- )
1954
- ]
1955
- }
1956
- )
1957
- ]
1958
- }
1959
- ) });
1960
- };
1961
- var Frame5 = ({
1962
- theme,
1963
- options,
1964
- children
1965
- }) => {
1966
- const c = CURSOR_COLORS[theme];
1967
- const title = typeof options?.title === "string" ? options.title : "Chat";
1968
- return /* @__PURE__ */ jsxRuntime.jsxs(
1969
- "div",
1970
- {
1971
- style: {
1972
- fontFamily: CURSOR_FONT_STACK,
1973
- background: c.bg,
1974
- color: c.text,
1975
- display: "flex",
1976
- flexDirection: "column",
1977
- height: "100%",
1978
- width: "100%",
1979
- WebkitFontSmoothing: "antialiased"
1980
- },
1981
- children: [
1982
- /* @__PURE__ */ jsxRuntime.jsxs(
1983
- "div",
1984
- {
1985
- style: {
1986
- flex: "0 0 auto",
1987
- display: "flex",
1988
- alignItems: "center",
1989
- gap: 8,
1990
- padding: "8px 12px",
1991
- borderBottom: `1px solid ${c.border}`,
1992
- fontSize: 12,
1993
- color: c.dim
1994
- },
1995
- children: [
1996
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 600, color: c.text }, children: title }),
1997
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { marginLeft: "auto", fontSize: 14 }, children: "\uFF0B" }),
1998
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 14 }, children: "\u22EF" })
1999
- ]
2000
- }
2001
- ),
2002
- /* @__PURE__ */ jsxRuntime.jsx(
2003
- "div",
2004
- {
2005
- style: {
2006
- flex: "1 1 auto",
2007
- minHeight: 0,
2008
- display: "flex",
2009
- flexDirection: "column",
2010
- justifyContent: "flex-end",
2011
- overflow: "hidden",
2012
- padding: "6px 0"
2013
- },
2014
- children
2015
- }
2016
- )
2017
- ]
2018
- }
2019
- );
2020
- };
2021
- var cursorComponents = {
2022
- Frame: Frame5,
2023
- Message: Message5,
2024
- TypingIndicator: TypingIndicator5,
2025
- Reaction: Reaction5,
2026
- Composer: Composer5,
2027
- SystemMessage: SystemMessage5,
2028
- Avatar: Avatar5
2029
- };
2030
-
2031
- // src/cursor/index.ts
2032
- var cursorCapabilities = {
2033
- events: {
2034
- message: "native",
2035
- composerType: "native",
2036
- send: "native",
2037
- typing: "native",
2038
- system: "native",
2039
- reaction: "unsupported",
2040
- readReceipt: "unsupported",
2041
- edit: "native",
2042
- delete: "native",
2043
- beat: "native"
2044
- },
2045
- content: { text: true, image: true },
2046
- reactions: false,
2047
- threads: false,
2048
- readReceipts: false
2049
- };
2050
- var cursorOptionsSchema = zod.z.object({
2051
- title: zod.z.string().optional()
2052
- });
2053
- var cursor = skinKit.defineSkin({
2054
- id: "cursor",
2055
- meta: {
2056
- name: "Cursor panel",
2057
- defaultCanvas: { width: 400, height: 600 },
2058
- supportsThemes: ["dark", "light"],
2059
- capabilities: cursorCapabilities,
2060
- optionsSchema: cursorOptionsSchema
2061
- },
2062
- components: cursorComponents,
2063
- tokens: cursorTokens
53
+ Object.defineProperty(exports, "SLACK_COLORS", {
54
+ enumerable: true,
55
+ get: function () { return chunkCCT33UVA_cjs.SLACK_COLORS; }
2064
56
  });
2065
- var CHROME = {
2066
- light: {
2067
- window: "#ffffff",
2068
- sidebar: "#f5f5f7",
2069
- sidebarBorder: "#e0e0e2",
2070
- titleBar: "#ececee",
2071
- text: "#1d1d1f",
2072
- subtle: "#86868b",
2073
- activeRow: "#0b93f6",
2074
- activeText: "#ffffff",
2075
- searchBg: "#e4e4e6"
2076
- },
2077
- dark: {
2078
- window: "#1e1e1e",
2079
- sidebar: "#28282a",
2080
- sidebarBorder: "#3a3a3c",
2081
- titleBar: "#323234",
2082
- text: "#f5f5f7",
2083
- subtle: "#98989d",
2084
- activeRow: "#0b6cff",
2085
- activeText: "#ffffff",
2086
- searchBg: "#3a3a3c"
2087
- }
2088
- };
2089
- var TRAFFIC = ["#ff5f56", "#ffbd2e", "#27c93f"];
2090
- function initials4(name) {
2091
- return name.split(/\s+/).map((w) => w.charAt(0)).slice(0, 2).join("").toUpperCase();
2092
- }
2093
- var SAMPLE_CONVOS = [
2094
- { name: "Sam Carter", preview: "you're the best, omw \u{1F3C3}", time: "9:41 AM" },
2095
- { name: "Mum", preview: "call me when you can \u2764\uFE0F", time: "Yesterday" },
2096
- { name: "Design", preview: "Tap to load preview", time: "Tuesday" },
2097
- { name: "Alex Rivera", preview: "ship it \u{1F680}", time: "Monday" }
2098
- ];
2099
- var SidebarRow = ({ theme, name, preview, time, active }) => {
2100
- const ch = CHROME[theme];
2101
- return /* @__PURE__ */ jsxRuntime.jsxs(
2102
- "div",
2103
- {
2104
- style: {
2105
- display: "flex",
2106
- gap: 10,
2107
- padding: "8px 10px",
2108
- borderRadius: 8,
2109
- background: active ? ch.activeRow : "transparent",
2110
- color: active ? ch.activeText : ch.text
2111
- },
2112
- children: [
2113
- /* @__PURE__ */ jsxRuntime.jsx(
2114
- "div",
2115
- {
2116
- style: {
2117
- width: 40,
2118
- height: 40,
2119
- borderRadius: "50%",
2120
- background: active ? "rgba(255,255,255,0.25)" : "#a9a9af",
2121
- color: "#fff",
2122
- display: "flex",
2123
- alignItems: "center",
2124
- justifyContent: "center",
2125
- fontSize: 15,
2126
- flex: "0 0 40px"
2127
- },
2128
- children: initials4(name)
2129
- }
2130
- ),
2131
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { minWidth: 0, flex: 1 }, children: [
2132
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", justifyContent: "space-between" }, children: [
2133
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 14, fontWeight: 600 }, children: name }),
2134
- /* @__PURE__ */ jsxRuntime.jsx(
2135
- "span",
2136
- {
2137
- style: {
2138
- fontSize: 11,
2139
- color: active ? "rgba(255,255,255,0.8)" : ch.subtle
2140
- },
2141
- children: time
2142
- }
2143
- )
2144
- ] }),
2145
- /* @__PURE__ */ jsxRuntime.jsx(
2146
- "div",
2147
- {
2148
- style: {
2149
- fontSize: 13,
2150
- color: active ? "rgba(255,255,255,0.85)" : ch.subtle,
2151
- whiteSpace: "nowrap",
2152
- overflow: "hidden",
2153
- textOverflow: "ellipsis"
2154
- },
2155
- children: preview
2156
- }
2157
- )
2158
- ] })
2159
- ]
2160
- }
2161
- );
2162
- };
2163
- var Frame6 = ({
2164
- theme,
2165
- options,
2166
- children
2167
- }) => {
2168
- const ch = CHROME[theme];
2169
- const contact = typeof options?.contact === "string" ? options.contact : "Messages";
2170
- const convos = [
2171
- { name: contact, preview: "active now", time: "now" },
2172
- ...SAMPLE_CONVOS.filter((c) => c.name !== contact)
2173
- ];
2174
- return /* @__PURE__ */ jsxRuntime.jsxs(
2175
- "div",
2176
- {
2177
- style: {
2178
- fontFamily: IMESSAGE_FONT_STACK,
2179
- background: ch.window,
2180
- color: ch.text,
2181
- display: "flex",
2182
- flexDirection: "column",
2183
- height: "100%",
2184
- width: "100%",
2185
- WebkitFontSmoothing: "antialiased"
2186
- },
2187
- children: [
2188
- /* @__PURE__ */ jsxRuntime.jsx(
2189
- "div",
2190
- {
2191
- style: {
2192
- flex: "0 0 auto",
2193
- height: 38,
2194
- background: ch.titleBar,
2195
- display: "flex",
2196
- alignItems: "center",
2197
- gap: 8,
2198
- padding: "0 13px",
2199
- borderBottom: `1px solid ${ch.sidebarBorder}`
2200
- },
2201
- children: TRAFFIC.map((color) => /* @__PURE__ */ jsxRuntime.jsx(
2202
- "span",
2203
- {
2204
- style: {
2205
- width: 12,
2206
- height: 12,
2207
- borderRadius: "50%",
2208
- background: color
2209
- }
2210
- },
2211
- color
2212
- ))
2213
- }
2214
- ),
2215
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flex: "1 1 auto", minHeight: 0, display: "flex" }, children: [
2216
- /* @__PURE__ */ jsxRuntime.jsxs(
2217
- "div",
2218
- {
2219
- style: {
2220
- flex: "0 0 250px",
2221
- background: ch.sidebar,
2222
- borderRight: `1px solid ${ch.sidebarBorder}`,
2223
- display: "flex",
2224
- flexDirection: "column",
2225
- padding: "8px 8px 0"
2226
- },
2227
- children: [
2228
- /* @__PURE__ */ jsxRuntime.jsx(
2229
- "div",
2230
- {
2231
- style: {
2232
- background: ch.searchBg,
2233
- borderRadius: 7,
2234
- padding: "5px 9px",
2235
- color: ch.subtle,
2236
- fontSize: 13,
2237
- marginBottom: 6
2238
- },
2239
- children: "\u{1F50D} Search"
2240
- }
2241
- ),
2242
- convos.slice(0, 5).map((cv, i) => /* @__PURE__ */ jsxRuntime.jsx(
2243
- SidebarRow,
2244
- {
2245
- theme,
2246
- name: cv.name,
2247
- preview: cv.preview,
2248
- time: cv.time,
2249
- active: i === 0
2250
- },
2251
- cv.name
2252
- ))
2253
- ]
2254
- }
2255
- ),
2256
- /* @__PURE__ */ jsxRuntime.jsxs(
2257
- "div",
2258
- {
2259
- style: {
2260
- flex: "1 1 auto",
2261
- minWidth: 0,
2262
- display: "flex",
2263
- flexDirection: "column",
2264
- background: ch.window
2265
- },
2266
- children: [
2267
- /* @__PURE__ */ jsxRuntime.jsx(
2268
- "div",
2269
- {
2270
- style: {
2271
- flex: "0 0 auto",
2272
- textAlign: "center",
2273
- padding: "8px 0",
2274
- borderBottom: `1px solid ${ch.sidebarBorder}`,
2275
- fontSize: 13,
2276
- fontWeight: 600
2277
- },
2278
- children: contact
2279
- }
2280
- ),
2281
- /* @__PURE__ */ jsxRuntime.jsx(
2282
- "div",
2283
- {
2284
- style: {
2285
- flex: "1 1 auto",
2286
- minHeight: 0,
2287
- display: "flex",
2288
- flexDirection: "column",
2289
- justifyContent: "flex-end",
2290
- overflow: "hidden",
2291
- paddingBottom: 4
2292
- },
2293
- children
2294
- }
2295
- )
2296
- ]
2297
- }
2298
- )
2299
- ] })
2300
- ]
2301
- }
2302
- );
2303
- };
2304
- var macosComponents = {
2305
- ...imessageComponents,
2306
- Frame: Frame6
2307
- };
2308
-
2309
- // src/messages-macos/index.ts
2310
- var macosOptionsSchema = zod.z.object({
2311
- contact: zod.z.string().optional()
2312
- });
2313
- var messagesMacos = skinKit.defineSkin({
2314
- id: "messages-macos",
2315
- meta: {
2316
- name: "Messages (macOS)",
2317
- defaultCanvas: { width: 900, height: 600 },
2318
- supportsThemes: ["light", "dark"],
2319
- capabilities: imessageCapabilities,
2320
- optionsSchema: macosOptionsSchema,
2321
- fonts: imessageFonts
2322
- },
2323
- components: macosComponents,
2324
- tokens: imessageTokens
57
+ Object.defineProperty(exports, "slack", {
58
+ enumerable: true,
59
+ get: function () { return chunkCCT33UVA_cjs.slack; }
2325
60
  });
2326
-
2327
- // src/discord/tokens.ts
2328
- var DISCORD = {
2329
- bg: "#313338",
2330
- channelBarBorder: "#26282c",
2331
- text: "#dbdee1",
2332
- muted: "#949ba4",
2333
- username: "#f2f3f5",
2334
- timestamp: "#949ba4",
2335
- reactionBg: "#2b2d31",
2336
- reactionBorder: "#3f4147",
2337
- reactionText: "#dbdee1",
2338
- composerBg: "#383a40",
2339
- placeholder: "#6d7079",
2340
- mentionText: "#c9cdfb",
2341
- mentionBg: "rgba(88,101,242,0.3)",
2342
- codeBg: "#2b2d31",
2343
- codeText: "#dbdee1",
2344
- link: "#00a8fc",
2345
- hashtag: "#80848e"
2346
- };
2347
- var DISCORD_FONT_STACK = '"gg sans", "Noto Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
2348
- var GUTTER = 56;
2349
- function formatTime3(atMs) {
2350
- const base = 9 * 3600 * 1e3;
2351
- const total = Math.floor((base + atMs) / 1e3);
2352
- const h = Math.floor(total / 3600) % 24;
2353
- const m = Math.floor(total % 3600 / 60);
2354
- const ampm = h >= 12 ? "PM" : "AM";
2355
- const hr = h % 12 === 0 ? 12 : h % 12;
2356
- return `Today at ${hr}:${String(m).padStart(2, "0")} ${ampm}`;
2357
- }
2358
- function initials5(name) {
2359
- return name.split(/\s+/).map((w) => w.charAt(0)).slice(0, 2).join("").toUpperCase();
2360
- }
2361
- var markStyles4 = {
2362
- link: { color: DISCORD.link, textDecoration: "none" },
2363
- mention: {
2364
- color: DISCORD.mentionText,
2365
- background: DISCORD.mentionBg,
2366
- borderRadius: 3,
2367
- padding: "0 2px",
2368
- fontWeight: 500
2369
- },
2370
- code: {
2371
- fontFamily: "Menlo, Consolas, monospace",
2372
- fontSize: "0.85em",
2373
- background: DISCORD.codeBg,
2374
- color: DISCORD.codeText,
2375
- borderRadius: 3,
2376
- padding: "1px 4px"
2377
- }
2378
- };
2379
- var Avatar6 = ({ participant, size = 40 }) => {
2380
- if (participant.avatar) {
2381
- return /* @__PURE__ */ jsxRuntime.jsx(
2382
- "img",
2383
- {
2384
- src: participant.avatar,
2385
- alt: participant.name,
2386
- width: size,
2387
- height: size,
2388
- style: {
2389
- width: size,
2390
- height: size,
2391
- borderRadius: "50%",
2392
- objectFit: "cover"
2393
- }
2394
- }
2395
- );
2396
- }
2397
- return /* @__PURE__ */ jsxRuntime.jsx(
2398
- "div",
2399
- {
2400
- style: {
2401
- width: size,
2402
- height: size,
2403
- borderRadius: "50%",
2404
- background: participant.color ?? "#5865f2",
2405
- color: "#fff",
2406
- display: "flex",
2407
- alignItems: "center",
2408
- justifyContent: "center",
2409
- fontSize: size * 0.4,
2410
- fontWeight: 500
2411
- },
2412
- children: initials5(participant.name)
2413
- }
2414
- );
2415
- };
2416
- var Reaction6 = ({ reaction }) => /* @__PURE__ */ jsxRuntime.jsxs(
2417
- "span",
2418
- {
2419
- style: {
2420
- ...skinKit.popIn(reaction.progress),
2421
- display: "inline-flex",
2422
- alignItems: "center",
2423
- gap: 5,
2424
- background: DISCORD.reactionBg,
2425
- border: `1px solid ${DISCORD.reactionBorder}`,
2426
- borderRadius: 8,
2427
- padding: "2px 7px",
2428
- fontSize: 13,
2429
- color: DISCORD.reactionText
2430
- },
2431
- children: [
2432
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: reaction.emoji }),
2433
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 600, fontSize: 12 }, children: reaction.count })
2434
- ]
2435
- }
2436
- );
2437
- var Message6 = ({ message, author }) => {
2438
- const roleColor = author.color ?? DISCORD.username;
2439
- const body = /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { color: DISCORD.text, fontSize: 15, lineHeight: 1.375 }, children: [
2440
- /* @__PURE__ */ jsxRuntime.jsx(
2441
- skinKit.MessageContent,
2442
- {
2443
- nodes: message.content,
2444
- styles: markStyles4,
2445
- imageStyle: { borderRadius: 8, marginTop: 4, maxWidth: 320 }
2446
- }
2447
- ),
2448
- message.reactions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
2449
- "div",
2450
- {
2451
- style: { display: "flex", gap: 4, marginTop: 5, flexWrap: "wrap" },
2452
- children: message.reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsx(Reaction6, { theme: "dark", reaction: r }, i))
2453
- }
2454
- ) : null
2455
- ] });
2456
- if (message.isGrouped) {
2457
- return /* @__PURE__ */ jsxRuntime.jsx(
2458
- "div",
2459
- {
2460
- style: {
2461
- padding: `1px 16px 1px ${GUTTER}px`,
2462
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 4 })
2463
- },
2464
- children: body
2465
- }
2466
- );
2467
- }
2468
- return /* @__PURE__ */ jsxRuntime.jsxs(
2469
- "div",
2470
- {
2471
- style: {
2472
- display: "flex",
2473
- gap: 16,
2474
- padding: "8px 16px 2px",
2475
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 4 })
2476
- },
2477
- children: [
2478
- /* @__PURE__ */ jsxRuntime.jsx(Avatar6, { theme: "dark", participant: author, size: 40 }),
2479
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
2480
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "baseline", gap: 8 }, children: [
2481
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: roleColor, fontWeight: 500, fontSize: 15 }, children: author.name }),
2482
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: DISCORD.timestamp, fontSize: 12 }, children: formatTime3(message.atMs) })
2483
- ] }),
2484
- body
2485
- ] })
2486
- ]
2487
- }
2488
- );
2489
- };
2490
- var SystemMessage6 = ({ message }) => {
2491
- const text = message.content.map(
2492
- (n) => n.type === "text" ? n.spans.map((s) => s.value ?? "").join("") : ""
2493
- ).join(" ");
2494
- return /* @__PURE__ */ jsxRuntime.jsxs(
2495
- "div",
2496
- {
2497
- style: {
2498
- display: "flex",
2499
- gap: 16,
2500
- alignItems: "center",
2501
- padding: "4px 16px 4px 24px",
2502
- color: DISCORD.muted,
2503
- fontSize: 14,
2504
- ...skinKit.fadeSlideIn(message.revealProgress, { distance: 0 })
2505
- },
2506
- children: [
2507
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "#3ba55c" }, children: "\uFF0B" }),
2508
- text
2509
- ]
2510
- }
2511
- );
2512
- };
2513
- var TypingIndicator6 = ({ typing, author }) => /* @__PURE__ */ jsxRuntime.jsxs(
2514
- "div",
2515
- {
2516
- style: {
2517
- display: "flex",
2518
- alignItems: "center",
2519
- gap: 8,
2520
- padding: "2px 16px 4px",
2521
- color: DISCORD.text,
2522
- fontSize: 13
2523
- },
2524
- children: [
2525
- /* @__PURE__ */ jsxRuntime.jsx(skinKit.TypingDots, { progress: typing.progress, color: DISCORD.muted, size: 5 }),
2526
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2527
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: author.name }),
2528
- " is typing\u2026"
2529
- ] })
2530
- ]
2531
- }
2532
- );
2533
- var Composer6 = ({ composer }) => {
2534
- const hasText = composer.text.length > 0;
2535
- return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: "0 0 auto", padding: "0 16px 18px" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
2536
- "div",
2537
- {
2538
- style: {
2539
- background: DISCORD.composerBg,
2540
- borderRadius: 8,
2541
- padding: "11px 14px",
2542
- color: DISCORD.text,
2543
- fontSize: 15,
2544
- display: "flex",
2545
- alignItems: "center",
2546
- gap: 12
2547
- },
2548
- children: [
2549
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: DISCORD.muted, fontSize: 20 }, children: "\uFF0B" }),
2550
- hasText ? /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2551
- composer.text,
2552
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: DISCORD.text }, children: "|" })
2553
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: DISCORD.placeholder }, children: "Message #general" })
2554
- ]
2555
- }
2556
- ) });
2557
- };
2558
- var Frame7 = ({
2559
- options,
2560
- children
2561
- }) => {
2562
- const channel = typeof options?.channel === "string" ? options.channel : "general";
2563
- return /* @__PURE__ */ jsxRuntime.jsxs(
2564
- "div",
2565
- {
2566
- style: {
2567
- fontFamily: DISCORD_FONT_STACK,
2568
- background: DISCORD.bg,
2569
- color: DISCORD.text,
2570
- display: "flex",
2571
- flexDirection: "column",
2572
- height: "100%",
2573
- width: "100%",
2574
- WebkitFontSmoothing: "antialiased"
2575
- },
2576
- children: [
2577
- /* @__PURE__ */ jsxRuntime.jsxs(
2578
- "div",
2579
- {
2580
- style: {
2581
- flex: "0 0 auto",
2582
- display: "flex",
2583
- alignItems: "center",
2584
- gap: 8,
2585
- padding: "12px 16px",
2586
- borderBottom: `1px solid ${DISCORD.channelBarBorder}`,
2587
- boxShadow: "0 1px 0 rgba(0,0,0,0.2)"
2588
- },
2589
- children: [
2590
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: DISCORD.hashtag, fontSize: 22, fontWeight: 600 }, children: "#" }),
2591
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 600, fontSize: 16, color: "#f2f3f5" }, children: channel })
2592
- ]
2593
- }
2594
- ),
2595
- /* @__PURE__ */ jsxRuntime.jsx(
2596
- "div",
2597
- {
2598
- style: {
2599
- flex: "1 1 auto",
2600
- minHeight: 0,
2601
- display: "flex",
2602
- flexDirection: "column",
2603
- justifyContent: "flex-end",
2604
- overflow: "hidden",
2605
- paddingBottom: 6
2606
- },
2607
- children
2608
- }
2609
- )
2610
- ]
2611
- }
2612
- );
2613
- };
2614
- var discordComponents = {
2615
- Frame: Frame7,
2616
- Message: Message6,
2617
- TypingIndicator: TypingIndicator6,
2618
- Reaction: Reaction6,
2619
- Composer: Composer6,
2620
- SystemMessage: SystemMessage6,
2621
- Avatar: Avatar6
2622
- };
2623
-
2624
- // src/discord/index.ts
2625
- var discordCapabilities = {
2626
- events: {
2627
- message: "native",
2628
- composerType: "native",
2629
- send: "native",
2630
- typing: "native",
2631
- reaction: "native",
2632
- system: "native",
2633
- edit: "native",
2634
- delete: "native",
2635
- readReceipt: "unsupported",
2636
- beat: "native"
2637
- },
2638
- content: { text: true, image: true },
2639
- reactions: true,
2640
- threads: true,
2641
- readReceipts: false
2642
- };
2643
- var discordOptionsSchema = zod.z.object({
2644
- /** Channel name (rendered after the `#`). */
2645
- channel: zod.z.string().optional()
61
+ Object.defineProperty(exports, "TELEGRAM_COLORS", {
62
+ enumerable: true,
63
+ get: function () { return chunk6K2ANTPJ_cjs.TELEGRAM_COLORS; }
2646
64
  });
2647
- var discord = skinKit.defineSkin({
2648
- id: "discord",
2649
- meta: {
2650
- name: "Discord",
2651
- defaultCanvas: { width: 600, height: 480 },
2652
- supportsThemes: ["dark"],
2653
- capabilities: discordCapabilities,
2654
- optionsSchema: discordOptionsSchema
2655
- },
2656
- components: discordComponents
65
+ Object.defineProperty(exports, "telegram", {
66
+ enumerable: true,
67
+ get: function () { return chunk6K2ANTPJ_cjs.telegram; }
2657
68
  });
2658
-
2659
- // src/registry.ts
2660
- var builtinSkins = {
2661
- slack,
2662
- "claude-code": claudeCode,
2663
- imessage,
2664
- whatsapp,
2665
- cursor,
2666
- "messages-macos": messagesMacos,
2667
- discord
2668
- };
2669
- function getSkin(id) {
2670
- return builtinSkins[id];
2671
- }
2672
-
2673
- exports.SLACK_COLORS = SLACK_COLORS;
2674
69
  exports.builtinSkins = builtinSkins;
2675
- exports.claudeCode = claudeCode;
2676
- exports.cursor = cursor;
2677
- exports.discord = discord;
2678
70
  exports.getSkin = getSkin;
2679
- exports.imessage = imessage;
2680
- exports.messagesMacos = messagesMacos;
2681
- exports.slack = slack;
2682
- exports.whatsapp = whatsapp;
2683
71
  //# sourceMappingURL=index.cjs.map
2684
72
  //# sourceMappingURL=index.cjs.map