@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,232 @@
|
|
|
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, customElement, css, } from '@design.estate/dees-element';
|
|
36
|
+
import { sioElementStyles } from './tokens.js';
|
|
37
|
+
import './sio-icon.js';
|
|
38
|
+
/**
|
|
39
|
+
* The v7 channel set — All / Mail / Chats / Calls / Letters
|
|
40
|
+
* (prototype: SIO_CHANNELS in SocialIOData.jsx).
|
|
41
|
+
*/
|
|
42
|
+
const defaultChannels = [
|
|
43
|
+
{ id: 'all', label: 'All', color: 'var(--sio-blue)', icon: 'grid-2x2' },
|
|
44
|
+
{ id: 'mail', label: 'Mail', color: 'var(--sio-ch-mail)', icon: 'mail' },
|
|
45
|
+
{ id: 'chats', label: 'Chats', color: 'var(--sio-ch-chats)', icon: 'message-circle' },
|
|
46
|
+
{ id: 'calls', label: 'Calls', color: 'var(--sio-ch-calls)', icon: 'phone' },
|
|
47
|
+
{ id: 'letters', label: 'Letters', color: 'var(--sio-ch-letters)', icon: 'file-text' },
|
|
48
|
+
];
|
|
49
|
+
const calendarChannel = {
|
|
50
|
+
id: 'calendar',
|
|
51
|
+
label: 'Calendar',
|
|
52
|
+
color: 'var(--sio-blue)',
|
|
53
|
+
icon: 'calendar',
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* sio-tab-bar — the mobile bottom channel switcher (v7 prototype:
|
|
57
|
+
* SIOTabBar in SocialIOChannels.jsx).
|
|
58
|
+
*
|
|
59
|
+
* A liquid-glass bar (blur 28px saturate 180%, 0.5px top hairline) with one
|
|
60
|
+
* flex-equal tab per channel: 22px icon over a 10.5px label. The active tab
|
|
61
|
+
* lights up in its channel color; 30px bottom padding clears the iOS home
|
|
62
|
+
* indicator. Selecting a tab dispatches `tab-change` with `{ id, channel }`
|
|
63
|
+
* (bubbles, composed).
|
|
64
|
+
*/
|
|
65
|
+
let SioTabBar = (() => {
|
|
66
|
+
let _classDecorators = [customElement('sio-tab-bar')];
|
|
67
|
+
let _classDescriptor;
|
|
68
|
+
let _classExtraInitializers = [];
|
|
69
|
+
let _classThis;
|
|
70
|
+
let _classSuper = DeesElement;
|
|
71
|
+
let _channels_decorators;
|
|
72
|
+
let _channels_initializers = [];
|
|
73
|
+
let _channels_extraInitializers = [];
|
|
74
|
+
let _active_decorators;
|
|
75
|
+
let _active_initializers = [];
|
|
76
|
+
let _active_extraInitializers = [];
|
|
77
|
+
let _withCalendar_decorators;
|
|
78
|
+
let _withCalendar_initializers = [];
|
|
79
|
+
let _withCalendar_extraInitializers = [];
|
|
80
|
+
var SioTabBar = class extends _classSuper {
|
|
81
|
+
static { _classThis = this; }
|
|
82
|
+
static {
|
|
83
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
84
|
+
_channels_decorators = [property({ type: Array })];
|
|
85
|
+
_active_decorators = [property({ type: String })];
|
|
86
|
+
_withCalendar_decorators = [property({ type: Boolean })];
|
|
87
|
+
__esDecorate(this, null, _channels_decorators, { kind: "accessor", name: "channels", static: false, private: false, access: { has: obj => "channels" in obj, get: obj => obj.channels, set: (obj, value) => { obj.channels = value; } }, metadata: _metadata }, _channels_initializers, _channels_extraInitializers);
|
|
88
|
+
__esDecorate(this, null, _active_decorators, { kind: "accessor", name: "active", static: false, private: false, access: { has: obj => "active" in obj, get: obj => obj.active, set: (obj, value) => { obj.active = value; } }, metadata: _metadata }, _active_initializers, _active_extraInitializers);
|
|
89
|
+
__esDecorate(this, null, _withCalendar_decorators, { kind: "accessor", name: "withCalendar", static: false, private: false, access: { has: obj => "withCalendar" in obj, get: obj => obj.withCalendar, set: (obj, value) => { obj.withCalendar = value; } }, metadata: _metadata }, _withCalendar_initializers, _withCalendar_extraInitializers);
|
|
90
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
91
|
+
SioTabBar = _classThis = _classDescriptor.value;
|
|
92
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
93
|
+
}
|
|
94
|
+
static demo = () => html `
|
|
95
|
+
<div style="display: flex; flex-direction: column; gap: 24px; max-width: 390px; font-family: var(--sio-font-sf);">
|
|
96
|
+
<!-- Mail active -->
|
|
97
|
+
<div
|
|
98
|
+
style="border-radius: 20px; overflow: hidden; border: var(--sio-hairline) solid var(--sio-separator); background: var(--sio-bg);"
|
|
99
|
+
>
|
|
100
|
+
<div style="padding: 18px 16px 26px;">
|
|
101
|
+
<div style="font-size: 28px; font-weight: 700; letter-spacing: 0.36px; color: var(--sio-label);">Mail</div>
|
|
102
|
+
<div style="margin-top: 3px; font-size: 13px; color: var(--sio-label-3);">
|
|
103
|
+
4 unread · Feed 12 · Paper 4 · People 3
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
<sio-tab-bar active="mail"></sio-tab-bar>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<!-- Chats active, with the optional Calendar tab -->
|
|
110
|
+
<div
|
|
111
|
+
style="border-radius: 20px; overflow: hidden; border: var(--sio-hairline) solid var(--sio-separator); background: var(--sio-bg);"
|
|
112
|
+
>
|
|
113
|
+
<div style="padding: 18px 16px 26px;">
|
|
114
|
+
<div style="font-size: 28px; font-weight: 700; letter-spacing: 0.36px; color: var(--sio-label);">Chats</div>
|
|
115
|
+
<div style="margin-top: 3px; font-size: 13px; color: var(--sio-label-3);">
|
|
116
|
+
3 new · Lena is typing…
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
<sio-tab-bar active="chats" .withCalendar=${true}></sio-tab-bar>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
`;
|
|
123
|
+
#channels_accessor_storage = __runInitializers(this, _channels_initializers, defaultChannels);
|
|
124
|
+
get channels() { return this.#channels_accessor_storage; }
|
|
125
|
+
set channels(value) { this.#channels_accessor_storage = value; }
|
|
126
|
+
#active_accessor_storage = (__runInitializers(this, _channels_extraInitializers), __runInitializers(this, _active_initializers, 'mail'));
|
|
127
|
+
get active() { return this.#active_accessor_storage; }
|
|
128
|
+
set active(value) { this.#active_accessor_storage = value; }
|
|
129
|
+
#withCalendar_accessor_storage = (__runInitializers(this, _active_extraInitializers), __runInitializers(this, _withCalendar_initializers, false));
|
|
130
|
+
get withCalendar() { return this.#withCalendar_accessor_storage; }
|
|
131
|
+
set withCalendar(value) { this.#withCalendar_accessor_storage = value; }
|
|
132
|
+
static styles = [
|
|
133
|
+
...sioElementStyles,
|
|
134
|
+
css `
|
|
135
|
+
:host {
|
|
136
|
+
display: block;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* toolbar glass, hairline on the top edge (the bar sits at the bottom) */
|
|
140
|
+
.bar {
|
|
141
|
+
display: flex;
|
|
142
|
+
padding: 8px 0 30px; /* 30px clears the iOS home indicator */
|
|
143
|
+
background: var(--sio-toolbar-glass-bg);
|
|
144
|
+
backdrop-filter: blur(28px) saturate(180%);
|
|
145
|
+
-webkit-backdrop-filter: blur(28px) saturate(180%);
|
|
146
|
+
border-top: var(--sio-hairline) solid var(--sio-separator);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.tab {
|
|
150
|
+
appearance: none;
|
|
151
|
+
border: none;
|
|
152
|
+
margin: 0;
|
|
153
|
+
padding: 0;
|
|
154
|
+
background: transparent;
|
|
155
|
+
flex: 1;
|
|
156
|
+
min-width: 0;
|
|
157
|
+
display: flex;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
align-items: center;
|
|
160
|
+
gap: 2px;
|
|
161
|
+
font-family: var(--sio-font-sf);
|
|
162
|
+
color: var(--sio-label-3);
|
|
163
|
+
cursor: pointer;
|
|
164
|
+
-webkit-tap-highlight-color: transparent;
|
|
165
|
+
transition: color 120ms ease;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.tab.active {
|
|
169
|
+
color: var(--_channel-color, var(--sio-tint));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.tab:focus-visible {
|
|
173
|
+
outline: 2px solid color-mix(in oklab, var(--sio-tint) 40%, transparent);
|
|
174
|
+
outline-offset: -2px;
|
|
175
|
+
border-radius: var(--sio-radius-sm);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.label {
|
|
179
|
+
font-size: 10.5px;
|
|
180
|
+
font-weight: 500;
|
|
181
|
+
letter-spacing: 0.02px;
|
|
182
|
+
line-height: 1.25;
|
|
183
|
+
white-space: nowrap;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.tab.active .label {
|
|
187
|
+
font-weight: 600;
|
|
188
|
+
}
|
|
189
|
+
`,
|
|
190
|
+
];
|
|
191
|
+
render() {
|
|
192
|
+
const tabs = this.withCalendar ? [...this.channels, calendarChannel] : this.channels;
|
|
193
|
+
return html `
|
|
194
|
+
<nav class="bar" part="bar">
|
|
195
|
+
${tabs.map((channel) => html `
|
|
196
|
+
<button
|
|
197
|
+
type="button"
|
|
198
|
+
class="tab ${channel.id === this.active ? 'active' : ''}"
|
|
199
|
+
style="--_channel-color: ${channel.color}"
|
|
200
|
+
aria-current=${channel.id === this.active ? 'page' : 'false'}
|
|
201
|
+
@click=${() => this.handleSelect(channel)}
|
|
202
|
+
>
|
|
203
|
+
<sio-icon icon=${channel.icon} size="22" .strokeWidth=${1.7}></sio-icon>
|
|
204
|
+
<span class="label">${channel.label}</span>
|
|
205
|
+
</button>
|
|
206
|
+
`)}
|
|
207
|
+
</nav>
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
handleSelect(channel) {
|
|
211
|
+
if (channel.id === this.active) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
this.active = channel.id;
|
|
215
|
+
this.dispatchEvent(new CustomEvent('tab-change', {
|
|
216
|
+
detail: { id: channel.id, channel },
|
|
217
|
+
bubbles: true,
|
|
218
|
+
composed: true,
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
constructor() {
|
|
222
|
+
super(...arguments);
|
|
223
|
+
__runInitializers(this, _withCalendar_extraInitializers);
|
|
224
|
+
}
|
|
225
|
+
static {
|
|
226
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
return SioTabBar = _classThis;
|
|
230
|
+
})();
|
|
231
|
+
export { SioTabBar };
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXRhYi1iYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvc2lvLXRhYi1iYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sZUFBZSxDQUFDO0FBb0J2Qjs7O0dBR0c7QUFDSCxNQUFNLGVBQWUsR0FBd0I7SUFDM0MsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7SUFDdkUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDeEUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtJQUNyRixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtJQUM1RSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtDQUN2RixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQXNCO0lBQ3pDLEVBQUUsRUFBRSxVQUFVO0lBQ2QsS0FBSyxFQUFFLFVBQVU7SUFDakIsS0FBSyxFQUFFLGlC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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import './sio-icon.js';
|
|
3
|
+
export type TSioUnreadBadgeChannel = 'tint' | 'mail' | 'chats' | 'calls' | 'letters' | 'alert';
|
|
4
|
+
export type TSioUnreadBadgeSize = 'md' | 'sm';
|
|
5
|
+
declare global {
|
|
6
|
+
interface HTMLElementTagNameMap {
|
|
7
|
+
'sio-unread-badge': SioUnreadBadge;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* sio-unread-badge — count pill on solid channel color (v7 chat list /
|
|
12
|
+
* channel rail / widget launcher). md: min-width 20, height 20, radius 10,
|
|
13
|
+
* 11.5/700 tabular white. sm (rails): 16px with 10px numerals.
|
|
14
|
+
* `ring` adds the 2px surface ring used when the pill sits on an icon.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SioUnreadBadge extends DeesElement {
|
|
17
|
+
static demo: () => TemplateResult<1>;
|
|
18
|
+
accessor count: number;
|
|
19
|
+
accessor channel: TSioUnreadBadgeChannel;
|
|
20
|
+
accessor size: TSioUnreadBadgeSize;
|
|
21
|
+
/** 2px surface ring — for pills sitting on rail icons */
|
|
22
|
+
accessor ring: boolean;
|
|
23
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
24
|
+
render(): TemplateResult;
|
|
25
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
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, customElement, css, } from '@design.estate/dees-element';
|
|
36
|
+
import { sioElementStyles } from './tokens.js';
|
|
37
|
+
import './sio-icon.js'; // used by the static demo
|
|
38
|
+
const badgeColors = {
|
|
39
|
+
tint: 'var(--sio-tint)',
|
|
40
|
+
mail: 'var(--sio-ch-mail)',
|
|
41
|
+
chats: 'var(--sio-ch-chats)',
|
|
42
|
+
calls: 'var(--sio-ch-calls)',
|
|
43
|
+
letters: 'var(--sio-ch-letters)',
|
|
44
|
+
alert: 'var(--sio-red)',
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* sio-unread-badge — count pill on solid channel color (v7 chat list /
|
|
48
|
+
* channel rail / widget launcher). md: min-width 20, height 20, radius 10,
|
|
49
|
+
* 11.5/700 tabular white. sm (rails): 16px with 10px numerals.
|
|
50
|
+
* `ring` adds the 2px surface ring used when the pill sits on an icon.
|
|
51
|
+
*/
|
|
52
|
+
let SioUnreadBadge = (() => {
|
|
53
|
+
let _classDecorators = [customElement('sio-unread-badge')];
|
|
54
|
+
let _classDescriptor;
|
|
55
|
+
let _classExtraInitializers = [];
|
|
56
|
+
let _classThis;
|
|
57
|
+
let _classSuper = DeesElement;
|
|
58
|
+
let _count_decorators;
|
|
59
|
+
let _count_initializers = [];
|
|
60
|
+
let _count_extraInitializers = [];
|
|
61
|
+
let _channel_decorators;
|
|
62
|
+
let _channel_initializers = [];
|
|
63
|
+
let _channel_extraInitializers = [];
|
|
64
|
+
let _size_decorators;
|
|
65
|
+
let _size_initializers = [];
|
|
66
|
+
let _size_extraInitializers = [];
|
|
67
|
+
let _ring_decorators;
|
|
68
|
+
let _ring_initializers = [];
|
|
69
|
+
let _ring_extraInitializers = [];
|
|
70
|
+
var SioUnreadBadge = class extends _classSuper {
|
|
71
|
+
static { _classThis = this; }
|
|
72
|
+
static {
|
|
73
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
74
|
+
_count_decorators = [property({ type: Number })];
|
|
75
|
+
_channel_decorators = [property({ type: String })];
|
|
76
|
+
_size_decorators = [property({ type: String })];
|
|
77
|
+
_ring_decorators = [property({ type: Boolean })];
|
|
78
|
+
__esDecorate(this, null, _count_decorators, { kind: "accessor", name: "count", static: false, private: false, access: { has: obj => "count" in obj, get: obj => obj.count, set: (obj, value) => { obj.count = value; } }, metadata: _metadata }, _count_initializers, _count_extraInitializers);
|
|
79
|
+
__esDecorate(this, null, _channel_decorators, { kind: "accessor", name: "channel", static: false, private: false, access: { has: obj => "channel" in obj, get: obj => obj.channel, set: (obj, value) => { obj.channel = value; } }, metadata: _metadata }, _channel_initializers, _channel_extraInitializers);
|
|
80
|
+
__esDecorate(this, null, _size_decorators, { kind: "accessor", name: "size", static: false, private: false, access: { has: obj => "size" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);
|
|
81
|
+
__esDecorate(this, null, _ring_decorators, { kind: "accessor", name: "ring", static: false, private: false, access: { has: obj => "ring" in obj, get: obj => obj.ring, set: (obj, value) => { obj.ring = value; } }, metadata: _metadata }, _ring_initializers, _ring_extraInitializers);
|
|
82
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
83
|
+
SioUnreadBadge = _classThis = _classDescriptor.value;
|
|
84
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
85
|
+
}
|
|
86
|
+
static demo = () => html `
|
|
87
|
+
<div style="display: flex; flex-direction: column; gap: 16px;">
|
|
88
|
+
<div style="display: flex; gap: 10px; align-items: center;">
|
|
89
|
+
<sio-unread-badge count="3" channel="chats"></sio-unread-badge>
|
|
90
|
+
<sio-unread-badge count="12" channel="mail"></sio-unread-badge>
|
|
91
|
+
<sio-unread-badge count="1" channel="calls"></sio-unread-badge>
|
|
92
|
+
<sio-unread-badge count="2" channel="letters"></sio-unread-badge>
|
|
93
|
+
<sio-unread-badge count="4"></sio-unread-badge>
|
|
94
|
+
<sio-unread-badge count="1" channel="alert"></sio-unread-badge>
|
|
95
|
+
</div>
|
|
96
|
+
<div style="display: flex; gap: 10px; align-items: center;">
|
|
97
|
+
<sio-unread-badge count="3" channel="chats" size="sm"></sio-unread-badge>
|
|
98
|
+
<sio-unread-badge count="12" channel="mail" size="sm"></sio-unread-badge>
|
|
99
|
+
<sio-unread-badge count="5" channel="calls" size="sm" ring></sio-unread-badge>
|
|
100
|
+
</div>
|
|
101
|
+
<div style="display: flex; gap: 22px; align-items: center;">
|
|
102
|
+
<span style="position: relative; display: inline-flex;">
|
|
103
|
+
<sio-icon icon="envelope" size="20" style="color: var(--sio-ch-mail);"></sio-icon>
|
|
104
|
+
<sio-unread-badge
|
|
105
|
+
count="3"
|
|
106
|
+
channel="mail"
|
|
107
|
+
size="sm"
|
|
108
|
+
ring
|
|
109
|
+
style="position: absolute; top: -5px; right: -9px;"
|
|
110
|
+
></sio-unread-badge>
|
|
111
|
+
</span>
|
|
112
|
+
<span style="position: relative; display: inline-flex;">
|
|
113
|
+
<sio-icon icon="message-circle" size="20" style="color: var(--sio-ch-chats);"></sio-icon>
|
|
114
|
+
<sio-unread-badge
|
|
115
|
+
count="7"
|
|
116
|
+
channel="chats"
|
|
117
|
+
size="sm"
|
|
118
|
+
ring
|
|
119
|
+
style="position: absolute; top: -5px; right: -9px;"
|
|
120
|
+
></sio-unread-badge>
|
|
121
|
+
</span>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
`;
|
|
125
|
+
#count_accessor_storage = __runInitializers(this, _count_initializers, 0);
|
|
126
|
+
get count() { return this.#count_accessor_storage; }
|
|
127
|
+
set count(value) { this.#count_accessor_storage = value; }
|
|
128
|
+
#channel_accessor_storage = (__runInitializers(this, _count_extraInitializers), __runInitializers(this, _channel_initializers, 'tint'));
|
|
129
|
+
get channel() { return this.#channel_accessor_storage; }
|
|
130
|
+
set channel(value) { this.#channel_accessor_storage = value; }
|
|
131
|
+
#size_accessor_storage = (__runInitializers(this, _channel_extraInitializers), __runInitializers(this, _size_initializers, 'md'));
|
|
132
|
+
get size() { return this.#size_accessor_storage; }
|
|
133
|
+
set size(value) { this.#size_accessor_storage = value; }
|
|
134
|
+
#ring_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _ring_initializers, false));
|
|
135
|
+
/** 2px surface ring — for pills sitting on rail icons */
|
|
136
|
+
get ring() { return this.#ring_accessor_storage; }
|
|
137
|
+
set ring(value) { this.#ring_accessor_storage = value; }
|
|
138
|
+
static styles = [
|
|
139
|
+
...sioElementStyles,
|
|
140
|
+
css `
|
|
141
|
+
:host {
|
|
142
|
+
display: inline-flex;
|
|
143
|
+
flex-shrink: 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.badge {
|
|
147
|
+
box-sizing: border-box;
|
|
148
|
+
display: inline-flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
justify-content: center;
|
|
151
|
+
min-width: 20px;
|
|
152
|
+
height: 20px;
|
|
153
|
+
padding: 0 6px;
|
|
154
|
+
border-radius: 10px;
|
|
155
|
+
background: var(--badge-color);
|
|
156
|
+
color: #fff; /* white numerals on solid channel color per v7 */
|
|
157
|
+
font-family: var(--sio-font-sf);
|
|
158
|
+
font-size: 11.5px;
|
|
159
|
+
font-weight: 700;
|
|
160
|
+
font-variant-numeric: tabular-nums;
|
|
161
|
+
line-height: 1;
|
|
162
|
+
white-space: nowrap;
|
|
163
|
+
user-select: none;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.badge.sm {
|
|
167
|
+
min-width: 16px;
|
|
168
|
+
height: 16px;
|
|
169
|
+
padding: 0 5px;
|
|
170
|
+
border-radius: 8px;
|
|
171
|
+
font-size: 10px;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.badge.ring {
|
|
175
|
+
box-shadow: 0 0 0 2px var(--sio-surface);
|
|
176
|
+
}
|
|
177
|
+
`,
|
|
178
|
+
];
|
|
179
|
+
render() {
|
|
180
|
+
if (this.count <= 0) {
|
|
181
|
+
return html ``;
|
|
182
|
+
}
|
|
183
|
+
return html `
|
|
184
|
+
<span
|
|
185
|
+
class="badge ${this.size === 'sm' ? 'sm' : ''} ${this.ring ? 'ring' : ''}"
|
|
186
|
+
style="--badge-color: ${badgeColors[this.channel] || badgeColors.tint};"
|
|
187
|
+
>
|
|
188
|
+
${this.count}
|
|
189
|
+
</span>
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
192
|
+
constructor() {
|
|
193
|
+
super(...arguments);
|
|
194
|
+
__runInitializers(this, _ring_extraInitializers);
|
|
195
|
+
}
|
|
196
|
+
static {
|
|
197
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
return SioUnreadBadge = _classThis;
|
|
201
|
+
})();
|
|
202
|
+
export { SioUnreadBadge };
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXVucmVhZC1iYWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tdW5yZWFkLWJhZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsR0FFSixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGVBQWUsQ0FBQyxDQUFDLDBCQUEwQjtBQVdsRCxNQUFNLFdBQVcsR0FBMkM7SUFDMUQsSUFBSSxFQUFFLGlCQUFpQjtJQUN2QixJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixPQUFPLEVBQUUsdUJBQXVCO0lBQ2hDLEtBQUssRUFBRSxnQkFBZ0I7Q0FDeEIsQ0FBQztBQUVGOzs7OztHQUtHO0lBRVUsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7OEJBQW5CLFNBQVEsV0FBVzs7OztpQ0F5QzVDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQVQ1QixvS0FBZ0IsS0FBSyw2QkFBTCxLQUFLLHFGQUFLO1lBRzFCLDBLQUFnQixPQUFPLDZCQUFQLE9BQU8seUZBQWtDO1lBR3pELGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQTZCO1lBSWpELGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQVM7WUFwRC9CLDZLQTZHQzs7OztRQTVHUSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQzlCLENBQUM7UUFHRix1RUFBd0IsQ0FBQyxFQUFDO1FBQTFCLElBQWdCLEtBQUssMkNBQUs7UUFBMUIsSUFBZ0IsS0FBSyxpREFBSztRQUcxQiwrSEFBa0QsTUFBTSxHQUFDO1FBQXpELElBQWdCLE9BQU8sNkNBQWtDO1FBQXpELElBQWdCLE9BQU8sbURBQWtDO1FBR3pELDJIQUE0QyxJQUFJLEdBQUM7UUFBakQsSUFBZ0IsSUFBSSwwQ0FBNkI7UUFBakQsSUFBZ0IsSUFBSSxnREFBNkI7UUFJakQsd0hBQXVCLEtBQUssR0FBQztRQUY3Qix5REFBeUQ7UUFFekQsSUFBZ0IsSUFBSSwwQ0FBUztRQUE3QixJQUFnQixJQUFJLGdEQUFTO1FBRXRCLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsR0FBRyxnQkFBZ0I7WUFDbkIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUNGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFBLEVBQUUsQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7O3VCQUVRLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2hELFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUk7O1VBRW5FLElBQUksQ0FBQyxLQUFLOztLQUVmLENBQUM7UUFDSixDQUFDOzs7Ozs7WUE1R1UsdURBQWM7Ozs7O1NBQWQsY0FBYyJ9
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
declare global {
|
|
3
|
+
interface HTMLElementTagNameMap {
|
|
4
|
+
'sio-waveform': SioWaveform;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* sio-waveform — v7 voicemail / voice-message player.
|
|
9
|
+
*
|
|
10
|
+
* A surface card with a round play/pause control, a deterministic bar-chart
|
|
11
|
+
* waveform (played bars in the channel color, the rest in systemGray @ 45%
|
|
12
|
+
* per the v7 spec) and tabular elapsed / -remaining counters.
|
|
13
|
+
*
|
|
14
|
+
* Clicking the waveform dispatches `seek` ({ progress }); the play control
|
|
15
|
+
* toggles and dispatches `play` / `pause` ({ progress }).
|
|
16
|
+
*/
|
|
17
|
+
export declare class SioWaveform extends DeesElement {
|
|
18
|
+
static demo: () => TemplateResult<1>;
|
|
19
|
+
/** Number of waveform bars (the v7 voicemail player draws 50). */
|
|
20
|
+
accessor bars: number;
|
|
21
|
+
/** Playback position, 0–1. Played bars take the channel color. */
|
|
22
|
+
accessor progress: number;
|
|
23
|
+
/** Accent for played bars + play control. Any CSS color, defaults to the calls channel. */
|
|
24
|
+
accessor color: string;
|
|
25
|
+
/** Elapsed counter, e.g. "0:28". */
|
|
26
|
+
accessor elapsed: string;
|
|
27
|
+
/** Remaining counter, e.g. "-1:19". */
|
|
28
|
+
accessor remaining: string;
|
|
29
|
+
accessor playing: boolean;
|
|
30
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
31
|
+
render(): TemplateResult;
|
|
32
|
+
private handlePlayToggle;
|
|
33
|
+
private handleSeek;
|
|
34
|
+
}
|