@social.io/catalog 1.3.0 → 2.1.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 (130) hide show
  1. package/.smartconfig.json +51 -0
  2. package/dist_bundle/bundle.js +5455 -3248
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/index.d.ts +21 -3
  5. package/dist_ts_web/elements/index.js +28 -7
  6. package/dist_ts_web/elements/sio-ai-card.d.ts +39 -0
  7. package/dist_ts_web/elements/sio-ai-card.js +229 -0
  8. package/dist_ts_web/elements/sio-avatar.d.ts +46 -0
  9. package/dist_ts_web/elements/sio-avatar.js +379 -0
  10. package/dist_ts_web/elements/sio-bucket-header.d.ts +36 -0
  11. package/dist_ts_web/elements/sio-bucket-header.js +197 -0
  12. package/dist_ts_web/elements/sio-button.d.ts +7 -3
  13. package/dist_ts_web/elements/sio-button.js +253 -152
  14. package/dist_ts_web/elements/sio-channel-rail.d.ts +38 -0
  15. package/dist_ts_web/elements/sio-channel-rail.js +288 -0
  16. package/dist_ts_web/elements/sio-chip.d.ts +25 -0
  17. package/dist_ts_web/elements/sio-chip.js +188 -0
  18. package/dist_ts_web/elements/sio-cmdk.d.ts +59 -0
  19. package/dist_ts_web/elements/sio-cmdk.js +471 -0
  20. package/dist_ts_web/elements/sio-combox.d.ts +55 -1
  21. package/dist_ts_web/elements/sio-combox.js +458 -261
  22. package/dist_ts_web/elements/sio-composer.d.ts +48 -0
  23. package/dist_ts_web/elements/sio-composer.js +357 -0
  24. package/dist_ts_web/elements/sio-conversation-selector.d.ts +41 -1
  25. package/dist_ts_web/elements/sio-conversation-selector.js +426 -238
  26. package/dist_ts_web/elements/sio-conversation-view.d.ts +34 -6
  27. package/dist_ts_web/elements/sio-conversation-view.js +738 -564
  28. package/dist_ts_web/elements/sio-dropdown-menu.d.ts +6 -6
  29. package/dist_ts_web/elements/sio-dropdown-menu.js +223 -169
  30. package/dist_ts_web/elements/sio-fab.d.ts +23 -5
  31. package/dist_ts_web/elements/sio-fab.js +259 -235
  32. package/dist_ts_web/elements/sio-glass-toolbar.d.ts +22 -0
  33. package/dist_ts_web/elements/sio-glass-toolbar.js +178 -0
  34. package/dist_ts_web/elements/sio-icon.d.ts +1 -0
  35. package/dist_ts_web/elements/sio-icon.js +254 -94
  36. package/dist_ts_web/elements/sio-image-lightbox.d.ts +3 -4
  37. package/dist_ts_web/elements/sio-image-lightbox.js +282 -191
  38. package/dist_ts_web/elements/sio-inset-list.d.ts +28 -0
  39. package/dist_ts_web/elements/sio-inset-list.js +191 -0
  40. package/dist_ts_web/elements/sio-kbd.d.ts +16 -0
  41. package/dist_ts_web/elements/sio-kbd.js +117 -0
  42. package/dist_ts_web/elements/sio-list-row.d.ts +55 -0
  43. package/dist_ts_web/elements/sio-list-row.js +462 -0
  44. package/dist_ts_web/elements/sio-logo-render.d.ts +42 -0
  45. package/dist_ts_web/elements/sio-logo-render.js +306 -0
  46. package/dist_ts_web/elements/sio-logo.d.ts +64 -0
  47. package/dist_ts_web/elements/sio-logo.js +393 -0
  48. package/dist_ts_web/elements/sio-message-input.d.ts +25 -4
  49. package/dist_ts_web/elements/sio-message-input.js +231 -226
  50. package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
  51. package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
  52. package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
  53. package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
  54. package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
  55. package/dist_ts_web/elements/sio-segmented.js +217 -0
  56. package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
  57. package/dist_ts_web/elements/sio-step-timeline.js +222 -0
  58. package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
  59. package/dist_ts_web/elements/sio-tab-bar.js +232 -0
  60. package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
  61. package/dist_ts_web/elements/sio-unread-badge.js +203 -0
  62. package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
  63. package/dist_ts_web/elements/sio-waveform.js +304 -0
  64. package/dist_ts_web/elements/tokens.d.ts +70 -0
  65. package/dist_ts_web/elements/tokens.js +277 -0
  66. package/dist_ts_web/pages/firstpage.d.ts +5 -0
  67. package/dist_ts_web/pages/firstpage.js +21 -2
  68. package/dist_ts_web/pages/mainpage.d.ts +6 -0
  69. package/dist_ts_web/pages/mainpage.js +111 -39
  70. package/{license → license.md} +3 -1
  71. package/package.json +23 -29
  72. package/readme.hints.md +82 -0
  73. package/readme.md +113 -146
  74. package/ts_web/00_commitinfo_data.ts +2 -2
  75. package/ts_web/elements/index.ts +31 -7
  76. package/ts_web/elements/sio-ai-card.ts +175 -0
  77. package/ts_web/elements/sio-avatar.ts +295 -0
  78. package/ts_web/elements/sio-bucket-header.ts +157 -0
  79. package/ts_web/elements/sio-button.ts +149 -127
  80. package/ts_web/elements/sio-channel-rail.ts +256 -0
  81. package/ts_web/elements/sio-chip.ts +134 -0
  82. package/ts_web/elements/sio-cmdk.ts +461 -0
  83. package/ts_web/elements/sio-combox.ts +327 -204
  84. package/ts_web/elements/sio-composer.ts +306 -0
  85. package/ts_web/elements/sio-conversation-selector.ts +350 -228
  86. package/ts_web/elements/sio-conversation-view.ts +573 -457
  87. package/ts_web/elements/sio-dropdown-menu.ts +112 -130
  88. package/ts_web/elements/sio-fab.ts +192 -227
  89. package/ts_web/elements/sio-glass-toolbar.ts +140 -0
  90. package/ts_web/elements/sio-icon.ts +147 -25
  91. package/ts_web/elements/sio-image-lightbox.ts +62 -64
  92. package/ts_web/elements/sio-inset-list.ts +140 -0
  93. package/ts_web/elements/sio-kbd.ts +80 -0
  94. package/ts_web/elements/sio-list-row.ts +393 -0
  95. package/ts_web/elements/sio-logo-render.ts +367 -0
  96. package/ts_web/elements/sio-logo.ts +311 -0
  97. package/ts_web/elements/sio-message-input.ts +142 -221
  98. package/ts_web/elements/sio-paper-thumb.ts +244 -0
  99. package/ts_web/elements/sio-pdf-viewer.ts +58 -60
  100. package/ts_web/elements/sio-segmented.ts +183 -0
  101. package/ts_web/elements/sio-step-timeline.ts +179 -0
  102. package/ts_web/elements/sio-tab-bar.ts +195 -0
  103. package/ts_web/elements/sio-unread-badge.ts +147 -0
  104. package/ts_web/elements/sio-waveform.ts +239 -0
  105. package/ts_web/elements/tokens.ts +297 -0
  106. package/ts_web/pages/firstpage.ts +20 -1
  107. package/ts_web/pages/mainpage.ts +111 -39
  108. package/dist_bundle/bundle.js.map +0 -7
  109. package/dist_ts_web/elements/00colors.d.ts +0 -108
  110. package/dist_ts_web/elements/00colors.js +0 -137
  111. package/dist_ts_web/elements/00fonts.d.ts +0 -60
  112. package/dist_ts_web/elements/00fonts.js +0 -129
  113. package/dist_ts_web/elements/00tokens.d.ts +0 -123
  114. package/dist_ts_web/elements/00tokens.js +0 -176
  115. package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
  116. package/dist_ts_web/elements/sio-conversation-list.js +0 -495
  117. package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
  118. package/dist_ts_web/elements/sio-recorder.js +0 -173
  119. package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
  120. package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
  121. package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
  122. package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
  123. package/dist_watch/bundle.js +0 -81694
  124. package/dist_watch/bundle.js.map +0 -7
  125. package/dist_watch/index.html +0 -25
  126. package/npmextra.json +0 -19
  127. package/ts_web/elements/00colors.ts +0 -164
  128. package/ts_web/elements/00fonts.ts +0 -145
  129. package/ts_web/elements/00tokens.ts +0 -197
  130. package/ts_web/elements/sio-recorder.ts +0 -213
@@ -0,0 +1,462 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, html, property, state, customElement, css, } from '@design.estate/dees-element';
36
+ import { sioElementStyles, sioTabularNums } from './tokens.js';
37
+ import './sio-icon.js';
38
+ /**
39
+ * sio-list-row — the universal list row of social.io v7
40
+ * (thread lists, unified feed, search results, person history).
41
+ *
42
+ * Anatomy (design source: SIODesktopRow / SIOUniRow / SIORowMobile):
43
+ * [8px unread-dot gutter] [avatar slot] [line1: title + trailing + time]
44
+ * [line2: subject]
45
+ * [preview — clamped 2/1/0 lines]
46
+ * [meta slot — chips]
47
+ * plus a hover-revealed trailing `actions` slot (triage: done/snooze/draft)
48
+ * and a 0.5px inset hairline between rows (hidden on the last row).
49
+ *
50
+ * Slots:
51
+ * avatar — leading avatar (any element; 30px at cozy/comfortable, 24px compact)
52
+ * line1-trailing — small trailing adornments on line 1 (count, star, paperclip)
53
+ * meta — chip row (lane/channel chips, AI summary chip); hidden at compact
54
+ * actions — desktop triage actions, revealed on hover (opacity 0 -> 1, .12s)
55
+ *
56
+ * Events:
57
+ * row-select — bubbles/composed; fired on click or Enter/Space
58
+ * (not fired for clicks inside the `actions` slot).
59
+ */
60
+ let SioListRow = (() => {
61
+ let _classDecorators = [customElement('sio-list-row')];
62
+ let _classDescriptor;
63
+ let _classExtraInitializers = [];
64
+ let _classThis;
65
+ let _classSuper = DeesElement;
66
+ let _title_decorators;
67
+ let _title_initializers = [];
68
+ let _title_extraInitializers = [];
69
+ let _time_decorators;
70
+ let _time_initializers = [];
71
+ let _time_extraInitializers = [];
72
+ let _subject_decorators;
73
+ let _subject_initializers = [];
74
+ let _subject_extraInitializers = [];
75
+ let _preview_decorators;
76
+ let _preview_initializers = [];
77
+ let _preview_extraInitializers = [];
78
+ let _density_decorators;
79
+ let _density_initializers = [];
80
+ let _density_extraInitializers = [];
81
+ let _unread_decorators;
82
+ let _unread_initializers = [];
83
+ let _unread_extraInitializers = [];
84
+ let _selected_decorators;
85
+ let _selected_initializers = [];
86
+ let _selected_extraInitializers = [];
87
+ let _hasMeta_decorators;
88
+ let _hasMeta_initializers = [];
89
+ let _hasMeta_extraInitializers = [];
90
+ var SioListRow = class extends _classSuper {
91
+ static { _classThis = this; }
92
+ static {
93
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
94
+ _title_decorators = [property({ type: String })];
95
+ _time_decorators = [property({ type: String })];
96
+ _subject_decorators = [property({ type: String })];
97
+ _preview_decorators = [property({ type: String })];
98
+ _density_decorators = [property({ type: String, reflect: true })];
99
+ _unread_decorators = [property({ type: Boolean, reflect: true })];
100
+ _selected_decorators = [property({ type: Boolean, reflect: true })];
101
+ _hasMeta_decorators = [state()];
102
+ __esDecorate(this, null, _title_decorators, { kind: "accessor", name: "title", static: false, private: false, access: { has: obj => "title" in obj, get: obj => obj.title, set: (obj, value) => { obj.title = value; } }, metadata: _metadata }, _title_initializers, _title_extraInitializers);
103
+ __esDecorate(this, null, _time_decorators, { kind: "accessor", name: "time", static: false, private: false, access: { has: obj => "time" in obj, get: obj => obj.time, set: (obj, value) => { obj.time = value; } }, metadata: _metadata }, _time_initializers, _time_extraInitializers);
104
+ __esDecorate(this, null, _subject_decorators, { kind: "accessor", name: "subject", static: false, private: false, access: { has: obj => "subject" in obj, get: obj => obj.subject, set: (obj, value) => { obj.subject = value; } }, metadata: _metadata }, _subject_initializers, _subject_extraInitializers);
105
+ __esDecorate(this, null, _preview_decorators, { kind: "accessor", name: "preview", static: false, private: false, access: { has: obj => "preview" in obj, get: obj => obj.preview, set: (obj, value) => { obj.preview = value; } }, metadata: _metadata }, _preview_initializers, _preview_extraInitializers);
106
+ __esDecorate(this, null, _density_decorators, { kind: "accessor", name: "density", static: false, private: false, access: { has: obj => "density" in obj, get: obj => obj.density, set: (obj, value) => { obj.density = value; } }, metadata: _metadata }, _density_initializers, _density_extraInitializers);
107
+ __esDecorate(this, null, _unread_decorators, { kind: "accessor", name: "unread", static: false, private: false, access: { has: obj => "unread" in obj, get: obj => obj.unread, set: (obj, value) => { obj.unread = value; } }, metadata: _metadata }, _unread_initializers, _unread_extraInitializers);
108
+ __esDecorate(this, null, _selected_decorators, { kind: "accessor", name: "selected", static: false, private: false, access: { has: obj => "selected" in obj, get: obj => obj.selected, set: (obj, value) => { obj.selected = value; } }, metadata: _metadata }, _selected_initializers, _selected_extraInitializers);
109
+ __esDecorate(this, null, _hasMeta_decorators, { kind: "accessor", name: "hasMeta", static: false, private: false, access: { has: obj => "hasMeta" in obj, get: obj => obj.hasMeta, set: (obj, value) => { obj.hasMeta = value; } }, metadata: _metadata }, _hasMeta_initializers, _hasMeta_extraInitializers);
110
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
111
+ SioListRow = _classThis = _classDescriptor.value;
112
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
113
+ }
114
+ static demo = () => html `
115
+ <div style="max-width: 420px; font-family: var(--sio-font-sf); display: flex; flex-direction: column; gap: 18px;">
116
+ <div style="background: var(--sio-surface); border-radius: 12px; overflow: hidden; box-shadow: 0 0 0 var(--sio-hairline) var(--sio-separator);">
117
+ <sio-list-row
118
+ unread
119
+ title="Maya Lindqvist"
120
+ time="09:41"
121
+ subject="Q3 numbers ahead of the board call"
122
+ preview="Attached the deck — the growth slide still needs your revenue split before Thursday. Can you take a pass today?"
123
+ density="comfortable"
124
+ >
125
+ <span
126
+ slot="avatar"
127
+ style="width: 30px; height: 30px; border-radius: 50%; background: var(--sio-ch-mail); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; letter-spacing: -0.2px;"
128
+ >ML</span>
129
+ <sio-icon slot="line1-trailing" icon="star" size="11" style="color: var(--sio-yellow);"></sio-icon>
130
+ <span
131
+ slot="meta"
132
+ style="display: inline-flex; align-items: center; gap: 4px; padding: 2px 7px; border-radius: 4px; background: color-mix(in oklab, var(--sio-ch-mail) 14%, transparent); color: var(--sio-ch-mail); font-size: 10.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;"
133
+ >Mail</span>
134
+ <span slot="meta" style="font-size: 11px; color: var(--sio-label-3);">3 attachments</span>
135
+ <span slot="actions" title="Done" style="width: 24px; height: 24px; border-radius: 6px; color: var(--sio-green); display: inline-flex; align-items: center; justify-content: center;"><sio-icon icon="check" size="13"></sio-icon></span>
136
+ <span slot="actions" title="Snooze" style="width: 24px; height: 24px; border-radius: 6px; color: var(--sio-orange); display: inline-flex; align-items: center; justify-content: center;"><sio-icon icon="clock" size="13"></sio-icon></span>
137
+ <span slot="actions" title="AI draft" style="width: 24px; height: 24px; border-radius: 6px; color: var(--sio-tint); display: inline-flex; align-items: center; justify-content: center;"><sio-icon icon="sparkles" size="13"></sio-icon></span>
138
+ </sio-list-row>
139
+ <sio-list-row
140
+ selected
141
+ title="Jonas Weber"
142
+ time="08:12"
143
+ subject="Launch copy — final review"
144
+ preview="I folded your edits in. One open question on the pricing line."
145
+ density="cozy"
146
+ >
147
+ <span
148
+ slot="avatar"
149
+ style="width: 30px; height: 30px; border-radius: 50%; background: var(--sio-ch-chats); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; letter-spacing: -0.2px;"
150
+ >JW</span>
151
+ </sio-list-row>
152
+ <sio-list-row
153
+ unread
154
+ title="Deutsche Post"
155
+ time="Yesterday"
156
+ subject="Letter scanned: Finanzamt München"
157
+ preview="2 pages · OCR ready · deadline detected: Jul 24"
158
+ density="cozy"
159
+ >
160
+ <span
161
+ slot="avatar"
162
+ style="width: 30px; height: 30px; border-radius: 50%; background: var(--sio-ch-letters); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; letter-spacing: -0.2px;"
163
+ >DP</span>
164
+ <span slot="line1-trailing" style="font-size: 11px; color: var(--sio-label-3); font-variant-numeric: tabular-nums;">2</span>
165
+ </sio-list-row>
166
+ <sio-list-row
167
+ title="Ana Ferreira"
168
+ time="Tue"
169
+ subject="Missed call · voicemail (0:42)"
170
+ density="compact"
171
+ >
172
+ <span
173
+ slot="avatar"
174
+ style="width: 24px; height: 24px; border-radius: 50%; background: var(--sio-ch-calls); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 600; letter-spacing: -0.2px;"
175
+ >AF</span>
176
+ </sio-list-row>
177
+ </div>
178
+ </div>
179
+ `;
180
+ #title_accessor_storage = __runInitializers(this, _title_initializers, '');
181
+ get title() { return this.#title_accessor_storage; }
182
+ set title(value) { this.#title_accessor_storage = value; }
183
+ #time_accessor_storage = (__runInitializers(this, _title_extraInitializers), __runInitializers(this, _time_initializers, ''));
184
+ /** Trailing timestamp on line 1 — rendered with tabular-nums. */
185
+ get time() { return this.#time_accessor_storage; }
186
+ set time(value) { this.#time_accessor_storage = value; }
187
+ #subject_accessor_storage = (__runInitializers(this, _time_extraInitializers), __runInitializers(this, _subject_initializers, ''));
188
+ /** Line 2 — subject / one-line summary. Tinted when the row is selected. */
189
+ get subject() { return this.#subject_accessor_storage; }
190
+ set subject(value) { this.#subject_accessor_storage = value; }
191
+ #preview_accessor_storage = (__runInitializers(this, _subject_extraInitializers), __runInitializers(this, _preview_initializers, ''));
192
+ /** Optional preview text — clamped to 2 lines (comfortable) / 1 line (cozy), hidden at compact. */
193
+ get preview() { return this.#preview_accessor_storage; }
194
+ set preview(value) { this.#preview_accessor_storage = value; }
195
+ #density_accessor_storage = (__runInitializers(this, _preview_extraInitializers), __runInitializers(this, _density_initializers, 'cozy'));
196
+ get density() { return this.#density_accessor_storage; }
197
+ set density(value) { this.#density_accessor_storage = value; }
198
+ #unread_accessor_storage = (__runInitializers(this, _density_extraInitializers), __runInitializers(this, _unread_initializers, false));
199
+ /** Shows the 8px tint dot in the leading gutter. */
200
+ get unread() { return this.#unread_accessor_storage; }
201
+ set unread(value) { this.#unread_accessor_storage = value; }
202
+ #selected_accessor_storage = (__runInitializers(this, _unread_extraInitializers), __runInitializers(this, _selected_initializers, false));
203
+ /** Selected state — tint-soft background, tinted subject line. */
204
+ get selected() { return this.#selected_accessor_storage; }
205
+ set selected(value) { this.#selected_accessor_storage = value; }
206
+ #hasMeta_accessor_storage = (__runInitializers(this, _selected_extraInitializers), __runInitializers(this, _hasMeta_initializers, false));
207
+ get hasMeta() { return this.#hasMeta_accessor_storage; }
208
+ set hasMeta(value) { this.#hasMeta_accessor_storage = value; }
209
+ static styles = [
210
+ ...sioElementStyles,
211
+ css `
212
+ :host {
213
+ display: block;
214
+ position: relative;
215
+ cursor: default;
216
+ background: transparent;
217
+ transition: background 0.08s ease;
218
+ font-family: var(--sio-font-sf);
219
+ /* inset for the inter-row hairline: 14 pad + 8 gutter + 10 gap + 30 avatar + 10 gap */
220
+ --sio-row-hairline-inset: 72px;
221
+ }
222
+ :host(:hover) {
223
+ background: var(--sio-surface-2);
224
+ }
225
+ :host([selected]) {
226
+ background: var(--sio-tint-soft);
227
+ }
228
+ :host([selected]) .subject {
229
+ color: var(--sio-tint);
230
+ }
231
+ :host([density='compact']) {
232
+ --sio-row-hairline-inset: 66px;
233
+ }
234
+
235
+ .row {
236
+ position: relative;
237
+ display: flex;
238
+ gap: 10px;
239
+ padding: 11px 14px;
240
+ min-height: var(--sio-row-cozy);
241
+ box-sizing: border-box;
242
+ align-items: flex-start;
243
+ outline: none;
244
+ }
245
+ :host([density='comfortable']) .row {
246
+ padding: 14px;
247
+ min-height: var(--sio-row-comfortable);
248
+ }
249
+ :host([density='compact']) .row {
250
+ padding: 8px 14px;
251
+ min-height: var(--sio-row-compact);
252
+ }
253
+ .row:focus-visible {
254
+ box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--sio-tint) 40%, transparent);
255
+ }
256
+
257
+ /* 8px unread-dot gutter */
258
+ .gutter {
259
+ width: 8px;
260
+ flex-shrink: 0;
261
+ padding-top: 8px;
262
+ display: flex;
263
+ justify-content: center;
264
+ }
265
+ .unread-dot {
266
+ width: 8px;
267
+ height: 8px;
268
+ border-radius: 50%;
269
+ background: var(--sio-tint);
270
+ flex-shrink: 0;
271
+ }
272
+
273
+ .avatar {
274
+ flex-shrink: 0;
275
+ display: flex;
276
+ align-items: flex-start;
277
+ }
278
+
279
+ .main {
280
+ flex: 1;
281
+ min-width: 0;
282
+ }
283
+
284
+ .line1 {
285
+ display: flex;
286
+ align-items: baseline;
287
+ gap: 6px;
288
+ }
289
+ .title {
290
+ flex: 1;
291
+ font-size: 13px;
292
+ font-weight: 500;
293
+ color: var(--sio-label);
294
+ letter-spacing: -0.1px;
295
+ overflow: hidden;
296
+ text-overflow: ellipsis;
297
+ white-space: nowrap;
298
+ }
299
+ :host([unread]) .title {
300
+ font-weight: 600;
301
+ }
302
+ .time {
303
+ font-size: 11px;
304
+ color: var(--sio-label-3);
305
+ ${sioTabularNums}
306
+ }
307
+ slot[name='line1-trailing'] {
308
+ display: contents;
309
+ }
310
+
311
+ .subject {
312
+ font-size: 13px;
313
+ font-weight: 400;
314
+ color: var(--sio-label-3);
315
+ overflow: hidden;
316
+ text-overflow: ellipsis;
317
+ white-space: nowrap;
318
+ margin-top: 1px;
319
+ }
320
+ :host([unread]) .subject {
321
+ font-weight: 500;
322
+ color: var(--sio-label);
323
+ }
324
+
325
+ .preview {
326
+ font-size: 12px;
327
+ color: var(--sio-label-3);
328
+ margin-top: 2px;
329
+ line-height: 1.4;
330
+ overflow: hidden;
331
+ display: -webkit-box;
332
+ -webkit-box-orient: vertical;
333
+ -webkit-line-clamp: 1;
334
+ }
335
+ :host([density='comfortable']) .preview {
336
+ -webkit-line-clamp: 2;
337
+ }
338
+ :host([density='compact']) .preview {
339
+ display: none;
340
+ }
341
+
342
+ .meta {
343
+ display: none;
344
+ gap: 6px;
345
+ align-items: center;
346
+ margin-top: 5px;
347
+ }
348
+ .meta.has-content {
349
+ display: flex;
350
+ }
351
+ :host([density='compact']) .meta {
352
+ display: none;
353
+ }
354
+
355
+ /* hover-revealed triage actions — desktop */
356
+ .actions {
357
+ position: absolute;
358
+ right: 10px;
359
+ top: 7px;
360
+ z-index: 5;
361
+ display: flex;
362
+ gap: 2px;
363
+ padding: 3px;
364
+ border-radius: 9px;
365
+ background: var(--sio-glass-bg);
366
+ backdrop-filter: blur(28px) saturate(180%);
367
+ -webkit-backdrop-filter: blur(28px) saturate(180%);
368
+ border: var(--sio-hairline) solid var(--sio-glass-border);
369
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.14);
370
+ opacity: 0;
371
+ pointer-events: none;
372
+ transition: opacity 0.12s ease;
373
+ }
374
+ :host(:hover) .actions {
375
+ opacity: 1;
376
+ pointer-events: auto;
377
+ }
378
+
379
+ /* 0.5px inset hairline between rows */
380
+ .hairline {
381
+ position: absolute;
382
+ bottom: 0;
383
+ left: var(--sio-row-hairline-inset);
384
+ right: 0;
385
+ height: var(--sio-hairline);
386
+ background: var(--sio-separator);
387
+ pointer-events: none;
388
+ }
389
+ :host(:last-child) .hairline {
390
+ display: none;
391
+ }
392
+ `,
393
+ ];
394
+ render() {
395
+ return html `
396
+ <div
397
+ class="row"
398
+ role="option"
399
+ tabindex="0"
400
+ aria-selected=${this.selected ? 'true' : 'false'}
401
+ @click=${this.handleSelect}
402
+ @keydown=${this.handleKeydown}
403
+ >
404
+ <div class="gutter">
405
+ ${this.unread ? html `<div class="unread-dot"></div>` : html ``}
406
+ </div>
407
+ <div class="avatar">
408
+ <slot name="avatar"></slot>
409
+ </div>
410
+ <div class="main">
411
+ <div class="line1">
412
+ <span class="title">${this.title}</span>
413
+ <slot name="line1-trailing"></slot>
414
+ ${this.time ? html `<span class="time">${this.time}</span>` : html ``}
415
+ </div>
416
+ ${this.subject ? html `<div class="subject">${this.subject}</div>` : html ``}
417
+ ${this.preview ? html `<div class="preview">${this.preview}</div>` : html ``}
418
+ <div class="meta ${this.hasMeta ? 'has-content' : ''}">
419
+ <slot name="meta" @slotchange=${this.handleMetaSlotChange}></slot>
420
+ </div>
421
+ </div>
422
+ <div class="actions">
423
+ <slot name="actions"></slot>
424
+ </div>
425
+ <div class="hairline"></div>
426
+ </div>
427
+ `;
428
+ }
429
+ handleMetaSlotChange(eventArg) {
430
+ const slotElement = eventArg.target;
431
+ this.hasMeta = slotElement.assignedElements().length > 0;
432
+ }
433
+ handleSelect(eventArg) {
434
+ // clicks inside the triage actions belong to the consumer's own handlers
435
+ const actionsContainer = this.shadowRoot?.querySelector('.actions');
436
+ if (actionsContainer && eventArg.composedPath().includes(actionsContainer)) {
437
+ return;
438
+ }
439
+ this.dispatchEvent(new CustomEvent('row-select', {
440
+ detail: { selected: this.selected },
441
+ bubbles: true,
442
+ composed: true,
443
+ }));
444
+ }
445
+ handleKeydown(eventArg) {
446
+ if (eventArg.key === 'Enter' || eventArg.key === ' ') {
447
+ eventArg.preventDefault();
448
+ this.handleSelect(eventArg);
449
+ }
450
+ }
451
+ constructor() {
452
+ super(...arguments);
453
+ __runInitializers(this, _hasMeta_extraInitializers);
454
+ }
455
+ static {
456
+ __runInitializers(_classThis, _classExtraInitializers);
457
+ }
458
+ };
459
+ return SioListRow = _classThis;
460
+ })();
461
+ export { SioListRow };
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWxpc3Qtcm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3Npby1saXN0LXJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osUUFBUSxFQUNSLEtBQUssRUFDTCxhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLGVBQWUsQ0FBQztBQWN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0lBRVUsVUFBVTs0QkFEdEIsYUFBYSxDQUFDLGNBQWMsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUFuQixTQUFRLFdBQVc7Ozs7aUNBb0V4QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FJMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQUkxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7bUNBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2tDQUl6QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FJMUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7bUNBRzFDLEtBQUssRUFBRTtZQXpCUixvS0FBZ0IsS0FBSyw2QkFBTCxLQUFLLHFGQUFNO1lB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
@@ -0,0 +1,42 @@
1
+ export type TSioLogoAnimationPhase = 'in' | 'out' | 'wave' | 'loading';
2
+ export interface ISioLogoRenderOptions {
3
+ size: number;
4
+ dpr: number;
5
+ gap: number;
6
+ radius: number;
7
+ square: boolean;
8
+ background: string;
9
+ mono: string;
10
+ light: boolean;
11
+ }
12
+ export declare const sioLogoAspect: number;
13
+ export declare class SioLogoRenderer {
14
+ private readonly context;
15
+ private options;
16
+ private frameHandle;
17
+ private phase;
18
+ private startedAt;
19
+ private stagger;
20
+ private duration;
21
+ private totalDuration;
22
+ private backingWidth;
23
+ private backingHeight;
24
+ private scale;
25
+ private offsetX;
26
+ private offsetY;
27
+ private paths;
28
+ private loadingPaths;
29
+ private fills;
30
+ private opacities;
31
+ constructor(context: CanvasRenderingContext2D, options: ISioLogoRenderOptions);
32
+ setOptions(options: ISioLogoRenderOptions): void;
33
+ drawStatic(): void;
34
+ clear(): void;
35
+ start(phase: TSioLogoAnimationPhase): void;
36
+ stop(): void;
37
+ private rebuild;
38
+ private clearCanvas;
39
+ private paint;
40
+ private drawAnimationFrame;
41
+ private settle;
42
+ }