@social.io/catalog 1.3.0 → 2.0.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.
- package/.smartconfig.json +51 -0
- package/dist_bundle/bundle.js +5450 -3267
- package/dist_ts_web/00_commitinfo_data.js +3 -3
- package/dist_ts_web/elements/index.d.ts +20 -3
- package/dist_ts_web/elements/index.js +27 -7
- package/dist_ts_web/elements/sio-ai-card.d.ts +39 -0
- package/dist_ts_web/elements/sio-ai-card.js +229 -0
- package/dist_ts_web/elements/sio-avatar.d.ts +46 -0
- package/dist_ts_web/elements/sio-avatar.js +379 -0
- package/dist_ts_web/elements/sio-bucket-header.d.ts +36 -0
- package/dist_ts_web/elements/sio-bucket-header.js +197 -0
- package/dist_ts_web/elements/sio-button.d.ts +7 -3
- package/dist_ts_web/elements/sio-button.js +253 -152
- package/dist_ts_web/elements/sio-channel-rail.d.ts +37 -0
- package/dist_ts_web/elements/sio-channel-rail.js +275 -0
- package/dist_ts_web/elements/sio-chip.d.ts +25 -0
- package/dist_ts_web/elements/sio-chip.js +188 -0
- package/dist_ts_web/elements/sio-cmdk.d.ts +59 -0
- package/dist_ts_web/elements/sio-cmdk.js +471 -0
- package/dist_ts_web/elements/sio-combox.d.ts +55 -1
- package/dist_ts_web/elements/sio-combox.js +458 -261
- package/dist_ts_web/elements/sio-composer.d.ts +48 -0
- package/dist_ts_web/elements/sio-composer.js +357 -0
- package/dist_ts_web/elements/sio-conversation-selector.d.ts +41 -1
- package/dist_ts_web/elements/sio-conversation-selector.js +426 -238
- package/dist_ts_web/elements/sio-conversation-view.d.ts +34 -6
- package/dist_ts_web/elements/sio-conversation-view.js +738 -564
- package/dist_ts_web/elements/sio-dropdown-menu.d.ts +6 -6
- package/dist_ts_web/elements/sio-dropdown-menu.js +223 -169
- package/dist_ts_web/elements/sio-fab.d.ts +23 -5
- package/dist_ts_web/elements/sio-fab.js +259 -235
- package/dist_ts_web/elements/sio-glass-toolbar.d.ts +22 -0
- package/dist_ts_web/elements/sio-glass-toolbar.js +178 -0
- package/dist_ts_web/elements/sio-icon.d.ts +1 -0
- package/dist_ts_web/elements/sio-icon.js +254 -94
- package/dist_ts_web/elements/sio-image-lightbox.d.ts +3 -4
- package/dist_ts_web/elements/sio-image-lightbox.js +282 -191
- package/dist_ts_web/elements/sio-inset-list.d.ts +28 -0
- package/dist_ts_web/elements/sio-inset-list.js +191 -0
- package/dist_ts_web/elements/sio-kbd.d.ts +16 -0
- package/dist_ts_web/elements/sio-kbd.js +117 -0
- package/dist_ts_web/elements/sio-list-row.d.ts +55 -0
- package/dist_ts_web/elements/sio-list-row.js +462 -0
- package/dist_ts_web/elements/sio-message-input.d.ts +25 -4
- package/dist_ts_web/elements/sio-message-input.js +231 -226
- package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
- package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
- package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
- package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
- package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
- package/dist_ts_web/elements/sio-segmented.js +217 -0
- package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
- package/dist_ts_web/elements/sio-step-timeline.js +222 -0
- package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
- package/dist_ts_web/elements/sio-tab-bar.js +232 -0
- package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
- package/dist_ts_web/elements/sio-unread-badge.js +203 -0
- package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
- package/dist_ts_web/elements/sio-waveform.js +304 -0
- package/dist_ts_web/elements/tokens.d.ts +70 -0
- package/dist_ts_web/elements/tokens.js +277 -0
- package/dist_ts_web/pages/firstpage.d.ts +5 -0
- package/dist_ts_web/pages/firstpage.js +21 -2
- package/dist_ts_web/pages/mainpage.d.ts +6 -0
- package/dist_ts_web/pages/mainpage.js +111 -39
- package/{license → license.md} +3 -1
- package/package.json +23 -29
- package/readme.hints.md +81 -0
- package/readme.md +85 -151
- package/ts_web/00_commitinfo_data.ts +2 -2
- package/ts_web/elements/index.ts +30 -7
- package/ts_web/elements/sio-ai-card.ts +175 -0
- package/ts_web/elements/sio-avatar.ts +295 -0
- package/ts_web/elements/sio-bucket-header.ts +157 -0
- package/ts_web/elements/sio-button.ts +149 -127
- package/ts_web/elements/sio-channel-rail.ts +243 -0
- package/ts_web/elements/sio-chip.ts +134 -0
- package/ts_web/elements/sio-cmdk.ts +461 -0
- package/ts_web/elements/sio-combox.ts +327 -204
- package/ts_web/elements/sio-composer.ts +306 -0
- package/ts_web/elements/sio-conversation-selector.ts +350 -228
- package/ts_web/elements/sio-conversation-view.ts +573 -457
- package/ts_web/elements/sio-dropdown-menu.ts +112 -130
- package/ts_web/elements/sio-fab.ts +192 -227
- package/ts_web/elements/sio-glass-toolbar.ts +140 -0
- package/ts_web/elements/sio-icon.ts +147 -25
- package/ts_web/elements/sio-image-lightbox.ts +62 -64
- package/ts_web/elements/sio-inset-list.ts +140 -0
- package/ts_web/elements/sio-kbd.ts +80 -0
- package/ts_web/elements/sio-list-row.ts +393 -0
- package/ts_web/elements/sio-message-input.ts +142 -221
- package/ts_web/elements/sio-paper-thumb.ts +244 -0
- package/ts_web/elements/sio-pdf-viewer.ts +58 -60
- package/ts_web/elements/sio-segmented.ts +183 -0
- package/ts_web/elements/sio-step-timeline.ts +179 -0
- package/ts_web/elements/sio-tab-bar.ts +195 -0
- package/ts_web/elements/sio-unread-badge.ts +147 -0
- package/ts_web/elements/sio-waveform.ts +239 -0
- package/ts_web/elements/tokens.ts +297 -0
- package/ts_web/pages/firstpage.ts +20 -1
- package/ts_web/pages/mainpage.ts +111 -39
- package/dist_bundle/bundle.js.map +0 -7
- package/dist_ts_web/elements/00colors.d.ts +0 -108
- package/dist_ts_web/elements/00colors.js +0 -137
- package/dist_ts_web/elements/00fonts.d.ts +0 -60
- package/dist_ts_web/elements/00fonts.js +0 -129
- package/dist_ts_web/elements/00tokens.d.ts +0 -123
- package/dist_ts_web/elements/00tokens.js +0 -176
- package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
- package/dist_ts_web/elements/sio-conversation-list.js +0 -495
- package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
- package/dist_ts_web/elements/sio-recorder.js +0 -173
- package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
- package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
- package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
- package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
- package/dist_watch/bundle.js +0 -81694
- package/dist_watch/bundle.js.map +0 -7
- package/dist_watch/index.html +0 -25
- package/npmextra.json +0 -19
- package/ts_web/elements/00colors.ts +0 -164
- package/ts_web/elements/00fonts.ts +0 -145
- package/ts_web/elements/00tokens.ts +0 -197
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWxpc3Qtcm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3Npby1saXN0LXJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osUUFBUSxFQUNSLEtBQUssRUFDTCxhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLGVBQWUsQ0FBQztBQWN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0lBRVUsVUFBVTs0QkFEdEIsYUFBYSxDQUFDLGNBQWMsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUFuQixTQUFRLFdBQVc7Ozs7aUNBb0V4QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FJMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQUkxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7bUNBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2tDQUl6QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FJMUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7bUNBRzFDLEtBQUssRUFBRTtZQXpCUixvS0FBZ0IsS0FBSyw2QkFBTCxLQUFLLHFGQUFNO1lBSTNCLGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQU07WUFJMUIsMEtBQWdCLE9BQU8sNkJBQVAsT0FBTyx5RkFBTTtZQUk3QiwwS0FBZ0IsT0FBTyw2QkFBUCxPQUFPLHlGQUFNO1lBRzdCLDBLQUFnQixPQUFPLDZCQUFQLE9BQU8seUZBQThCO1lBSXJELHVLQUFnQixNQUFNLDZCQUFOLE1BQU0sdUZBQVM7WUFJL0IsNktBQWdCLFFBQVEsNkJBQVIsUUFBUSwyRkFBUztZQUdqQywwS0FBaUIsT0FBTyw2QkFBUCxPQUFPLHlGQUFTO1lBL0ZuQyw2S0F5VkM7Ozs7UUF4VlEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUU5QixDQUFDO1FBR0YsdUVBQXdCLEVBQUUsRUFBQztRQUEzQixJQUFnQixLQUFLLDJDQUFNO1FBQTNCLElBQWdCLEtBQUssaURBQU07UUFJM0IseUhBQXVCLEVBQUUsR0FBQztRQUYxQixpRUFBaUU7UUFFakUsSUFBZ0IsSUFBSSwwQ0FBTTtRQUExQixJQUFnQixJQUFJLGdEQUFNO1FBSTFCLDhIQUEwQixFQUFFLEdBQUM7UUFGN0IsNEVBQTRFO1FBRTVFLElBQWdCLE9BQU8sNkNBQU07UUFBN0IsSUFBZ0IsT0FBTyxtREFBTTtRQUk3QixpSUFBMEIsRUFBRSxHQUFDO1FBRjdCLG1HQUFtRztRQUVuRyxJQUFnQixPQUFPLDZDQUFNO1FBQTdCLElBQWdCLE9BQU8sbURBQU07UUFHN0IsaUlBQThDLE1BQU0sR0FBQztRQUFyRCxJQUFnQixPQUFPLDZDQUE4QjtRQUFyRCxJQUFnQixPQUFPLG1EQUE4QjtRQUlyRCwrSEFBeUIsS0FBSyxHQUFDO1FBRi9CLG9EQUFvRDtRQUVwRCxJQUFnQixNQUFNLDRDQUFTO1FBQS9CLElBQWdCLE1BQU0sa0RBQVM7UUFJL0Isa0lBQTJCLEtBQUssR0FBQztRQUZqQyxrRUFBa0U7UUFFbEUsSUFBZ0IsUUFBUSw4Q0FBUztRQUFqQyxJQUFnQixRQUFRLG9EQUFTO1FBR2pDLGtJQUEyQixLQUFLLEdBQUM7UUFBakMsSUFBaUIsT0FBTyw2Q0FBUztRQUFqQyxJQUFpQixPQUFPLG1EQUFTO1FBRTFCLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsR0FBRyxnQkFBZ0I7WUFDbkIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBOEZHLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXVGbkI7U0FDRixDQUFDO1FBRUssTUFBTTtZQUNYLE9BQU8sSUFBSSxDQUFBOzs7Ozt3QkFLUyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87aUJBQ3ZDLElBQUksQ0FBQyxZQUFZO21CQUNmLElBQUksQ0FBQyxhQUFhOzs7WUFHekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsRUFBRTs7Ozs7OztrQ0FPckMsSUFBSSxDQUFDLEtBQUs7O2NBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxzQkFBc0IsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsRUFBRTs7WUFFbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLHdCQUF3QixJQUFJLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSx3QkFBd0IsSUFBSSxDQUFDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsRUFBRTs2QkFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFOzRDQUNsQixJQUFJLENBQUMsb0JBQW9COzs7Ozs7OztLQVFoRSxDQUFDO1FBQ0osQ0FBQztRQUVPLG9CQUFvQixDQUFDLFFBQWU7WUFDMUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQXlCLENBQUM7WUFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFTyxZQUFZLENBQUMsUUFBZTtZQUNsQyx5RUFBeUU7WUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwRSxJQUFJLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUMzRSxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLENBQ2hCLElBQUksV0FBVyxDQUFDLFlBQVksRUFBRTtnQkFDNUIsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ25DLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBRU8sYUFBYSxDQUFDLFFBQXVCO1lBQzNDLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDckQsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDOzs7Ozs7WUF4VlUsdURBQVU7Ozs7O1NBQVYsVUFBVSJ9
|
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import { type TSioComposerVariant, type TSioComposerAccent } from './sio-composer.js';
|
|
2
3
|
declare global {
|
|
3
4
|
interface HTMLElementTagNameMap {
|
|
4
5
|
'sio-message-input': SioMessageInput;
|
|
5
6
|
}
|
|
6
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* sio-message-input — the widget's composer row, a thin shell around
|
|
10
|
+
* sio-composer (v7 SocialIOWidget.jsx composer).
|
|
11
|
+
*
|
|
12
|
+
* Adds the widget-level concerns on top of the composer primitive:
|
|
13
|
+
* a hidden file input behind the composer's attach button, the
|
|
14
|
+
* email-capture variant for the away state, and the keyboard-visibility
|
|
15
|
+
* focus events the combox uses on phablet.
|
|
16
|
+
*
|
|
17
|
+
* Events (bubbles, composed):
|
|
18
|
+
* send-message { text, attachments: File[] }
|
|
19
|
+
* files-selected { files: File[] }
|
|
20
|
+
* input-focus / input-blur — phablet keyboard handling
|
|
21
|
+
*/
|
|
7
22
|
export declare class SioMessageInput extends DeesElement {
|
|
8
23
|
static demo: () => TemplateResult<1>;
|
|
24
|
+
/** field placeholder; message variant defaults to "Write a message…", email to "you@email.com" */
|
|
9
25
|
accessor placeholder: string;
|
|
10
26
|
accessor disabled: boolean;
|
|
11
|
-
|
|
27
|
+
/** 'message' (default) or 'email' — the away-state email capture */
|
|
28
|
+
accessor variant: TSioComposerVariant;
|
|
29
|
+
/** send-button accent, forwarded to sio-composer */
|
|
30
|
+
accessor accent: TSioComposerAccent;
|
|
31
|
+
/** show the composer's attach "+" button (opens the file picker) */
|
|
32
|
+
accessor attach: boolean;
|
|
12
33
|
private accessor pendingAttachments;
|
|
13
34
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
14
35
|
render(): TemplateResult;
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
36
|
+
private handleComposerSend;
|
|
37
|
+
private handleFocus;
|
|
38
|
+
private handleBlur;
|
|
18
39
|
private openFileSelector;
|
|
19
40
|
private handleFileSelect;
|
|
20
41
|
focus(): void;
|