@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,32 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
declare global {
|
|
3
|
+
interface HTMLElementTagNameMap {
|
|
4
|
+
'sio-segmented': SioSegmented;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export interface ISioSegment {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
count?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ISioSegmentChangeDetail {
|
|
13
|
+
id: string;
|
|
14
|
+
segment: ISioSegment;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* sio-segmented — iOS-style segmented control (v7 prototype:
|
|
18
|
+
* SocialIOUnified.jsx mode switch — Priority / Timeline / By person).
|
|
19
|
+
*
|
|
20
|
+
* Recessed systemGray track (2px inner padding, radius 9), the selected
|
|
21
|
+
* segment floats on a white / systemGray knob with the layered iOS shadow
|
|
22
|
+
* and steps up to weight 600. Selecting a segment dispatches
|
|
23
|
+
* `segment-change` with `{ id, segment }` (bubbles, composed).
|
|
24
|
+
*/
|
|
25
|
+
export declare class SioSegmented extends DeesElement {
|
|
26
|
+
static demo: () => TemplateResult<1>;
|
|
27
|
+
accessor segments: ISioSegment[];
|
|
28
|
+
accessor selected: string;
|
|
29
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
30
|
+
render(): TemplateResult;
|
|
31
|
+
private handleSelect;
|
|
32
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
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, cssManager, } from '@design.estate/dees-element';
|
|
36
|
+
import { sioElementStyles } from './tokens.js';
|
|
37
|
+
/**
|
|
38
|
+
* sio-segmented — iOS-style segmented control (v7 prototype:
|
|
39
|
+
* SocialIOUnified.jsx mode switch — Priority / Timeline / By person).
|
|
40
|
+
*
|
|
41
|
+
* Recessed systemGray track (2px inner padding, radius 9), the selected
|
|
42
|
+
* segment floats on a white / systemGray knob with the layered iOS shadow
|
|
43
|
+
* and steps up to weight 600. Selecting a segment dispatches
|
|
44
|
+
* `segment-change` with `{ id, segment }` (bubbles, composed).
|
|
45
|
+
*/
|
|
46
|
+
let SioSegmented = (() => {
|
|
47
|
+
let _classDecorators = [customElement('sio-segmented')];
|
|
48
|
+
let _classDescriptor;
|
|
49
|
+
let _classExtraInitializers = [];
|
|
50
|
+
let _classThis;
|
|
51
|
+
let _classSuper = DeesElement;
|
|
52
|
+
let _segments_decorators;
|
|
53
|
+
let _segments_initializers = [];
|
|
54
|
+
let _segments_extraInitializers = [];
|
|
55
|
+
let _selected_decorators;
|
|
56
|
+
let _selected_initializers = [];
|
|
57
|
+
let _selected_extraInitializers = [];
|
|
58
|
+
var SioSegmented = class extends _classSuper {
|
|
59
|
+
static { _classThis = this; }
|
|
60
|
+
static {
|
|
61
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
62
|
+
_segments_decorators = [property({ type: Array })];
|
|
63
|
+
_selected_decorators = [property({ type: String })];
|
|
64
|
+
__esDecorate(this, null, _segments_decorators, { kind: "accessor", name: "segments", static: false, private: false, access: { has: obj => "segments" in obj, get: obj => obj.segments, set: (obj, value) => { obj.segments = value; } }, metadata: _metadata }, _segments_initializers, _segments_extraInitializers);
|
|
65
|
+
__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);
|
|
66
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
67
|
+
SioSegmented = _classThis = _classDescriptor.value;
|
|
68
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
|
+
}
|
|
70
|
+
static demo = () => html `
|
|
71
|
+
<div
|
|
72
|
+
style="display: flex; flex-direction: column; gap: 20px; max-width: 360px; padding: 20px; border-radius: 14px; background: var(--sio-bg); font-family: var(--sio-font-sf);"
|
|
73
|
+
>
|
|
74
|
+
<sio-segmented
|
|
75
|
+
.segments=${[
|
|
76
|
+
{ id: 'priority', label: 'Priority' },
|
|
77
|
+
{ id: 'time', label: 'Timeline' },
|
|
78
|
+
{ id: 'person', label: 'By person' },
|
|
79
|
+
]}
|
|
80
|
+
selected="priority"
|
|
81
|
+
></sio-segmented>
|
|
82
|
+
|
|
83
|
+
<sio-segmented
|
|
84
|
+
.segments=${[
|
|
85
|
+
{ id: 'feed', label: 'Feed', count: 12 },
|
|
86
|
+
{ id: 'paper', label: 'Paper', count: 4 },
|
|
87
|
+
{ id: 'people', label: 'People', count: 3 },
|
|
88
|
+
]}
|
|
89
|
+
selected="people"
|
|
90
|
+
></sio-segmented>
|
|
91
|
+
|
|
92
|
+
<sio-segmented
|
|
93
|
+
.segments=${[
|
|
94
|
+
{ id: 'all', label: 'All' },
|
|
95
|
+
{ id: 'unread', label: 'Unread', count: 7 },
|
|
96
|
+
]}
|
|
97
|
+
selected="all"
|
|
98
|
+
></sio-segmented>
|
|
99
|
+
</div>
|
|
100
|
+
`;
|
|
101
|
+
#segments_accessor_storage = __runInitializers(this, _segments_initializers, []);
|
|
102
|
+
get segments() { return this.#segments_accessor_storage; }
|
|
103
|
+
set segments(value) { this.#segments_accessor_storage = value; }
|
|
104
|
+
#selected_accessor_storage = (__runInitializers(this, _segments_extraInitializers), __runInitializers(this, _selected_initializers, ''));
|
|
105
|
+
get selected() { return this.#selected_accessor_storage; }
|
|
106
|
+
set selected(value) { this.#selected_accessor_storage = value; }
|
|
107
|
+
static styles = [
|
|
108
|
+
...sioElementStyles,
|
|
109
|
+
css `
|
|
110
|
+
:host {
|
|
111
|
+
display: block;
|
|
112
|
+
|
|
113
|
+
/* iOS UISegmentedControl selected fill — white in light, systemGray
|
|
114
|
+
#636366 in dark. Not modeled in tokens.ts (it is knob-specific,
|
|
115
|
+
not a surface), so it branches here via the same theme mechanism
|
|
116
|
+
tokens.ts uses — no string concatenation. */
|
|
117
|
+
--sio-segmented-knob: ${cssManager.bdTheme('#FFFFFF', '#636366')};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.track {
|
|
121
|
+
display: flex;
|
|
122
|
+
padding: 2px;
|
|
123
|
+
border-radius: 9px;
|
|
124
|
+
background: var(--sio-surface-2);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.segment {
|
|
128
|
+
appearance: none;
|
|
129
|
+
border: none;
|
|
130
|
+
margin: 0;
|
|
131
|
+
flex: 1;
|
|
132
|
+
min-width: 0;
|
|
133
|
+
display: inline-flex;
|
|
134
|
+
align-items: center;
|
|
135
|
+
justify-content: center;
|
|
136
|
+
gap: 5px;
|
|
137
|
+
padding: 5px 0;
|
|
138
|
+
border-radius: 7px;
|
|
139
|
+
background: transparent;
|
|
140
|
+
font-family: var(--sio-font-sf);
|
|
141
|
+
font-size: 13px;
|
|
142
|
+
font-weight: 500;
|
|
143
|
+
letter-spacing: -0.1px;
|
|
144
|
+
line-height: 1.25;
|
|
145
|
+
color: var(--sio-label-3);
|
|
146
|
+
white-space: nowrap;
|
|
147
|
+
cursor: pointer;
|
|
148
|
+
-webkit-tap-highlight-color: transparent;
|
|
149
|
+
transition: color 120ms ease, background 120ms ease, box-shadow 120ms ease;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.segment:focus-visible {
|
|
153
|
+
outline: 2px solid color-mix(in oklab, var(--sio-tint) 40%, transparent);
|
|
154
|
+
outline-offset: 1px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.segment.selected {
|
|
158
|
+
background: var(--sio-segmented-knob);
|
|
159
|
+
color: var(--sio-label);
|
|
160
|
+
font-weight: 600;
|
|
161
|
+
box-shadow:
|
|
162
|
+
0 1px 4px rgba(0, 0, 0, 0.12),
|
|
163
|
+
0 0 0 0.5px rgba(0, 0, 0, 0.04);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.count {
|
|
167
|
+
font-variant-numeric: tabular-nums;
|
|
168
|
+
font-size: 12px;
|
|
169
|
+
font-weight: 500;
|
|
170
|
+
opacity: 0.55;
|
|
171
|
+
}
|
|
172
|
+
`,
|
|
173
|
+
];
|
|
174
|
+
render() {
|
|
175
|
+
const selectedId = this.selected || this.segments[0]?.id;
|
|
176
|
+
return html `
|
|
177
|
+
<div class="track" role="tablist">
|
|
178
|
+
${this.segments.map((segment) => html `
|
|
179
|
+
<button
|
|
180
|
+
type="button"
|
|
181
|
+
role="tab"
|
|
182
|
+
class="segment ${segment.id === selectedId ? 'selected' : ''}"
|
|
183
|
+
aria-selected=${segment.id === selectedId ? 'true' : 'false'}
|
|
184
|
+
@click=${() => this.handleSelect(segment)}
|
|
185
|
+
>
|
|
186
|
+
${segment.label}
|
|
187
|
+
${segment.count !== undefined
|
|
188
|
+
? html `<span class="count">${segment.count}</span>`
|
|
189
|
+
: html ``}
|
|
190
|
+
</button>
|
|
191
|
+
`)}
|
|
192
|
+
</div>
|
|
193
|
+
`;
|
|
194
|
+
}
|
|
195
|
+
handleSelect(segment) {
|
|
196
|
+
if (segment.id === this.selected) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this.selected = segment.id;
|
|
200
|
+
this.dispatchEvent(new CustomEvent('segment-change', {
|
|
201
|
+
detail: { id: segment.id, segment },
|
|
202
|
+
bubbles: true,
|
|
203
|
+
composed: true,
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
constructor() {
|
|
207
|
+
super(...arguments);
|
|
208
|
+
__runInitializers(this, _selected_extraInitializers);
|
|
209
|
+
}
|
|
210
|
+
static {
|
|
211
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
return SioSegmented = _classThis;
|
|
215
|
+
})();
|
|
216
|
+
export { SioSegmented };
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXNlZ21lbnRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tc2VnbWVudGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEdBRVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFtQi9DOzs7Ozs7OztHQVFHO0lBRVUsWUFBWTs0QkFEeEIsYUFBYSxDQUFDLGVBQWUsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7OzRCQUFuQixTQUFRLFdBQVc7Ozs7b0NBaUMxQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUYzQiw2S0FBZ0IsUUFBUSw2QkFBUixRQUFRLDJGQUFxQjtZQUc3Qyw2S0FBZ0IsUUFBUSw2QkFBUixRQUFRLDJGQUFNO1lBckNoQyw2S0FnSkM7Ozs7UUEvSVEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7O29CQUtiO1lBQ1YsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDckMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7U0FDckM7Ozs7O29CQUtXO1lBQ1YsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QyxFQUFFLEVBQUUsRUFBRSxP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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
export interface ISioStepTimelineStep {
|
|
3
|
+
when: string;
|
|
4
|
+
label: string;
|
|
5
|
+
done: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare global {
|
|
8
|
+
interface HTMLElementTagNameMap {
|
|
9
|
+
'sio-step-timeline': SioStepTimeline;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* sio-step-timeline — v7 vertical tracking timeline (outbound letters,
|
|
14
|
+
* delivery receipts, meeting prep …).
|
|
15
|
+
*
|
|
16
|
+
* 14px dots take the accent color once a step is done; the 2px connecting
|
|
17
|
+
* line only colors between two completed steps. Labels sit at 14.5px with
|
|
18
|
+
* muted 12px timestamps underneath — exactly the SIOLetterTracking recipe.
|
|
19
|
+
*/
|
|
20
|
+
export declare class SioStepTimeline extends DeesElement {
|
|
21
|
+
static demo: () => TemplateResult<1>;
|
|
22
|
+
/** Ordered steps, first to last. */
|
|
23
|
+
accessor steps: ISioStepTimelineStep[];
|
|
24
|
+
/** Accent for completed dots + connecting lines. Defaults to the letters channel. */
|
|
25
|
+
accessor color: string;
|
|
26
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
27
|
+
render(): TemplateResult;
|
|
28
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
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
|
+
/**
|
|
38
|
+
* sio-step-timeline — v7 vertical tracking timeline (outbound letters,
|
|
39
|
+
* delivery receipts, meeting prep …).
|
|
40
|
+
*
|
|
41
|
+
* 14px dots take the accent color once a step is done; the 2px connecting
|
|
42
|
+
* line only colors between two completed steps. Labels sit at 14.5px with
|
|
43
|
+
* muted 12px timestamps underneath — exactly the SIOLetterTracking recipe.
|
|
44
|
+
*/
|
|
45
|
+
let SioStepTimeline = (() => {
|
|
46
|
+
let _classDecorators = [customElement('sio-step-timeline')];
|
|
47
|
+
let _classDescriptor;
|
|
48
|
+
let _classExtraInitializers = [];
|
|
49
|
+
let _classThis;
|
|
50
|
+
let _classSuper = DeesElement;
|
|
51
|
+
let _steps_decorators;
|
|
52
|
+
let _steps_initializers = [];
|
|
53
|
+
let _steps_extraInitializers = [];
|
|
54
|
+
let _color_decorators;
|
|
55
|
+
let _color_initializers = [];
|
|
56
|
+
let _color_extraInitializers = [];
|
|
57
|
+
var SioStepTimeline = class extends _classSuper {
|
|
58
|
+
static { _classThis = this; }
|
|
59
|
+
static {
|
|
60
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
61
|
+
_steps_decorators = [property({ type: Array })];
|
|
62
|
+
_color_decorators = [property({ type: String })];
|
|
63
|
+
__esDecorate(this, null, _steps_decorators, { kind: "accessor", name: "steps", static: false, private: false, access: { has: obj => "steps" in obj, get: obj => obj.steps, set: (obj, value) => { obj.steps = value; } }, metadata: _metadata }, _steps_initializers, _steps_extraInitializers);
|
|
64
|
+
__esDecorate(this, null, _color_decorators, { kind: "accessor", name: "color", static: false, private: false, access: { has: obj => "color" in obj, get: obj => obj.color, set: (obj, value) => { obj.color = value; } }, metadata: _metadata }, _color_initializers, _color_extraInitializers);
|
|
65
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
66
|
+
SioStepTimeline = _classThis = _classDescriptor.value;
|
|
67
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
68
|
+
}
|
|
69
|
+
static demo = () => html `
|
|
70
|
+
<div
|
|
71
|
+
style="display: flex; flex-wrap: wrap; gap: 20px; padding: 20px; background: var(--sio-bg); border-radius: 18px; font-family: var(--sio-font-sf);"
|
|
72
|
+
>
|
|
73
|
+
<div
|
|
74
|
+
style="flex: 1; min-width: 260px; background: var(--sio-surface); border: 0.5px solid var(--sio-separator); border-radius: 16px; padding: 14px 16px;"
|
|
75
|
+
>
|
|
76
|
+
<div
|
|
77
|
+
style="font-size: 11px; font-weight: 700; color: var(--sio-label-3); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px;"
|
|
78
|
+
>
|
|
79
|
+
Tracking
|
|
80
|
+
</div>
|
|
81
|
+
<sio-step-timeline
|
|
82
|
+
.steps=${[
|
|
83
|
+
{ when: 'Today 08:10', label: 'Printed at Berlin-Mitte print hub', done: true },
|
|
84
|
+
{ when: 'Today 09:42', label: 'Handed to Deutsche Post', done: true },
|
|
85
|
+
{ when: 'Tomorrow', label: 'In transit', done: false },
|
|
86
|
+
{ when: 'Thu', label: 'Delivered', done: false },
|
|
87
|
+
]}
|
|
88
|
+
></sio-step-timeline>
|
|
89
|
+
</div>
|
|
90
|
+
<div
|
|
91
|
+
style="flex: 1; min-width: 260px; background: var(--sio-surface); border: 0.5px solid var(--sio-separator); border-radius: 16px; padding: 14px 16px;"
|
|
92
|
+
>
|
|
93
|
+
<div
|
|
94
|
+
style="font-size: 11px; font-weight: 700; color: var(--sio-label-3); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px;"
|
|
95
|
+
>
|
|
96
|
+
Delivery
|
|
97
|
+
</div>
|
|
98
|
+
<sio-step-timeline
|
|
99
|
+
color="var(--sio-bucket-done)"
|
|
100
|
+
.steps=${[
|
|
101
|
+
{ when: 'Mon 14:48', label: 'Printed at Berlin-Mitte print hub', done: true },
|
|
102
|
+
{ when: 'Mon 16:02', label: 'Handed to Deutsche Post', done: true },
|
|
103
|
+
{ when: 'Tue', label: 'In transit', done: true },
|
|
104
|
+
{ when: 'Wed 11:15', label: 'Delivered', done: true },
|
|
105
|
+
]}
|
|
106
|
+
></sio-step-timeline>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
`;
|
|
110
|
+
#steps_accessor_storage = __runInitializers(this, _steps_initializers, []);
|
|
111
|
+
/** Ordered steps, first to last. */
|
|
112
|
+
get steps() { return this.#steps_accessor_storage; }
|
|
113
|
+
set steps(value) { this.#steps_accessor_storage = value; }
|
|
114
|
+
#color_accessor_storage = (__runInitializers(this, _steps_extraInitializers), __runInitializers(this, _color_initializers, 'var(--sio-ch-letters)'));
|
|
115
|
+
/** Accent for completed dots + connecting lines. Defaults to the letters channel. */
|
|
116
|
+
get color() { return this.#color_accessor_storage; }
|
|
117
|
+
set color(value) { this.#color_accessor_storage = value; }
|
|
118
|
+
static styles = [
|
|
119
|
+
...sioElementStyles,
|
|
120
|
+
css `
|
|
121
|
+
:host {
|
|
122
|
+
display: block;
|
|
123
|
+
color: var(--sio-label);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.step {
|
|
127
|
+
position: relative;
|
|
128
|
+
display: flex;
|
|
129
|
+
gap: 12px;
|
|
130
|
+
margin-bottom: 14px;
|
|
131
|
+
}
|
|
132
|
+
.step:last-child {
|
|
133
|
+
margin-bottom: 0;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.dot {
|
|
137
|
+
box-sizing: border-box;
|
|
138
|
+
width: 14px;
|
|
139
|
+
height: 14px;
|
|
140
|
+
border-radius: 7px;
|
|
141
|
+
margin-top: 3px;
|
|
142
|
+
flex-shrink: 0;
|
|
143
|
+
background: transparent;
|
|
144
|
+
border: 2px solid var(--sio-label-3);
|
|
145
|
+
position: relative;
|
|
146
|
+
z-index: 2;
|
|
147
|
+
}
|
|
148
|
+
.step.done .dot {
|
|
149
|
+
background: var(--step-color);
|
|
150
|
+
border-color: var(--step-color);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.line {
|
|
154
|
+
position: absolute;
|
|
155
|
+
left: 6px;
|
|
156
|
+
top: 17px;
|
|
157
|
+
bottom: -14px;
|
|
158
|
+
width: 2px;
|
|
159
|
+
background: var(--sio-separator);
|
|
160
|
+
}
|
|
161
|
+
.line.done {
|
|
162
|
+
background: var(--step-color);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.body {
|
|
166
|
+
flex: 1;
|
|
167
|
+
min-width: 0;
|
|
168
|
+
padding-bottom: 2px;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.label {
|
|
172
|
+
font-size: 14.5px;
|
|
173
|
+
line-height: 1.35;
|
|
174
|
+
font-weight: 400;
|
|
175
|
+
color: var(--sio-label);
|
|
176
|
+
}
|
|
177
|
+
.step.done .label {
|
|
178
|
+
font-weight: 500;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.when {
|
|
182
|
+
font-size: 12px;
|
|
183
|
+
color: var(--sio-label-3);
|
|
184
|
+
margin-top: 1px;
|
|
185
|
+
font-variant-numeric: tabular-nums;
|
|
186
|
+
}
|
|
187
|
+
`,
|
|
188
|
+
];
|
|
189
|
+
render() {
|
|
190
|
+
return html `
|
|
191
|
+
<div style="--step-color: ${this.color};">
|
|
192
|
+
${this.steps.map((step, index) => html `
|
|
193
|
+
<div class="step ${step.done ? 'done' : ''}">
|
|
194
|
+
<div class="dot"></div>
|
|
195
|
+
${index < this.steps.length - 1
|
|
196
|
+
? html `
|
|
197
|
+
<div
|
|
198
|
+
class="line ${step.done && this.steps[index + 1].done ? 'done' : ''}"
|
|
199
|
+
></div>
|
|
200
|
+
`
|
|
201
|
+
: html ``}
|
|
202
|
+
<div class="body">
|
|
203
|
+
<div class="label">${step.label}</div>
|
|
204
|
+
<div class="when">${step.when}</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
`)}
|
|
208
|
+
</div>
|
|
209
|
+
`;
|
|
210
|
+
}
|
|
211
|
+
constructor() {
|
|
212
|
+
super(...arguments);
|
|
213
|
+
__runInitializers(this, _color_extraInitializers);
|
|
214
|
+
}
|
|
215
|
+
static {
|
|
216
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
return SioStepTimeline = _classThis;
|
|
220
|
+
})();
|
|
221
|
+
export { SioStepTimeline };
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXN0ZXAtdGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvc2lvLXN0ZXAtdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYy9DOzs7Ozs7O0dBT0c7SUFFVSxlQUFlOzRCQUQzQixhQUFhLENBQUMsbUJBQW1CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7OzsrQkFBbkIsU0FBUSxXQUFXOzs7O2lDQTRDN0MsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2lDQUl6QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFIM0Isb0tBQWdCLEtBQUssNkJBQUwsS0FBSyxxRkFBOEI7WUFJbkQsb0tBQWdCLEtBQUssNkJBQUwsS0FBSyxxRkFBbUM7WUFqRDFELDZLQW1KQzs7OztRQWxKUSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7OzttQkFhZDtZQUNQLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUMvRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDckUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUN0RCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1NBQ2pEOzs7Ozs7Ozs7Ozs7O21CQWFRO1lBQ1AsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNuRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDdEQ7Ozs7R0FJUixDQUFDO1FBSUYsdUVBQWdELEVBQUUsRUFBQztRQUZuRCxvQ0FBb0M7UUFFcEMsSUFBZ0IsS0FBSywyQ0FBOEI7UUFBbkQsSUFBZ0IsS0FBSyxpREFBOEI7UUFJbkQsMkhBQWdDLHVCQUF1QixHQUFDO1FBRnhELHFGQUFxRjtRQUVyRixJQUFnQixLQUFLLDJDQUFtQztRQUF4RCxJQUFnQixLQUFLLGlEQUFtQztRQUVqRCxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1FRjtTQUNGLENBQUM7UUFFSyxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUE7a0NBQ21CLElBQUksQ0FBQyxLQUFLO1VBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNkLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFBOytCQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTs7Z0JBRXRDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFBOztvQ0FFYyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFOzttQkFFdEU7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQSxFQUFFOztxQ0FFYSxJQUFJLENBQUMsS0FBSztvQ0FDWCxJQUFJLENBQUMsSUFBSTs7O1dBR2xDLENBQ0Y7O0tBRUosQ0FBQztRQUNKLENBQUM7Ozs7OztZQWxKVSx1REFBZTs7Ozs7U0FBZixlQUFlIn0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import './sio-icon.js';
|
|
3
|
+
declare global {
|
|
4
|
+
interface HTMLElementTagNameMap {
|
|
5
|
+
'sio-tab-bar': SioTabBar;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export interface ISioTabBarChannel {
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
color: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ISioTabChangeDetail {
|
|
15
|
+
id: string;
|
|
16
|
+
channel: ISioTabBarChannel;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* sio-tab-bar — the mobile bottom channel switcher (v7 prototype:
|
|
20
|
+
* SIOTabBar in SocialIOChannels.jsx).
|
|
21
|
+
*
|
|
22
|
+
* A liquid-glass bar (blur 28px saturate 180%, 0.5px top hairline) with one
|
|
23
|
+
* flex-equal tab per channel: 22px icon over a 10.5px label. The active tab
|
|
24
|
+
* lights up in its channel color; 30px bottom padding clears the iOS home
|
|
25
|
+
* indicator. Selecting a tab dispatches `tab-change` with `{ id, channel }`
|
|
26
|
+
* (bubbles, composed).
|
|
27
|
+
*/
|
|
28
|
+
export declare class SioTabBar extends DeesElement {
|
|
29
|
+
static demo: () => TemplateResult<1>;
|
|
30
|
+
accessor channels: ISioTabBarChannel[];
|
|
31
|
+
accessor active: string;
|
|
32
|
+
accessor withCalendar: boolean;
|
|
33
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
34
|
+
render(): TemplateResult;
|
|
35
|
+
private handleSelect;
|
|
36
|
+
}
|