@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
|
@@ -1,38 +1,141 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
+
let SioButton = (() => {
|
|
39
|
+
let _classDecorators = [customElement('sio-button')];
|
|
40
|
+
let _classDescriptor;
|
|
41
|
+
let _classExtraInitializers = [];
|
|
42
|
+
let _classThis;
|
|
43
|
+
let _classSuper = DeesElement;
|
|
44
|
+
let _text_decorators;
|
|
45
|
+
let _text_initializers = [];
|
|
46
|
+
let _text_extraInitializers = [];
|
|
47
|
+
let _type_decorators;
|
|
48
|
+
let _type_initializers = [];
|
|
49
|
+
let _type_extraInitializers = [];
|
|
50
|
+
let _size_decorators;
|
|
51
|
+
let _size_initializers = [];
|
|
52
|
+
let _size_extraInitializers = [];
|
|
53
|
+
let _disabled_decorators;
|
|
54
|
+
let _disabled_initializers = [];
|
|
55
|
+
let _disabled_extraInitializers = [];
|
|
56
|
+
let _status_decorators;
|
|
57
|
+
let _status_initializers = [];
|
|
58
|
+
let _status_extraInitializers = [];
|
|
59
|
+
var SioButton = class extends _classSuper {
|
|
60
|
+
static { _classThis = this; }
|
|
61
|
+
static {
|
|
62
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
63
|
+
_text_decorators = [property({ type: String })];
|
|
64
|
+
_type_decorators = [property({ type: String })];
|
|
65
|
+
_size_decorators = [property({ type: String })];
|
|
66
|
+
_disabled_decorators = [property({ type: Boolean, reflect: true })];
|
|
67
|
+
_status_decorators = [property({ type: String })];
|
|
68
|
+
__esDecorate(this, null, _text_decorators, { kind: "accessor", name: "text", static: false, private: false, access: { has: obj => "text" in obj, get: obj => obj.text, set: (obj, value) => { obj.text = value; } }, metadata: _metadata }, _text_initializers, _text_extraInitializers);
|
|
69
|
+
__esDecorate(this, null, _type_decorators, { kind: "accessor", name: "type", static: false, private: false, access: { has: obj => "type" in obj, get: obj => obj.type, set: (obj, value) => { obj.type = value; } }, metadata: _metadata }, _type_initializers, _type_extraInitializers);
|
|
70
|
+
__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);
|
|
71
|
+
__esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
|
|
72
|
+
__esDecorate(this, null, _status_decorators, { kind: "accessor", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status, set: (obj, value) => { obj.status = value; } }, metadata: _metadata }, _status_initializers, _status_extraInitializers);
|
|
73
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
74
|
+
SioButton = _classThis = _classDescriptor.value;
|
|
75
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
76
|
+
}
|
|
77
|
+
static demo = () => html `
|
|
78
|
+
<div
|
|
79
|
+
style="display: flex; flex-direction: column; gap: 20px; padding: 24px; background: var(--sio-bg); border-radius: 14px;"
|
|
80
|
+
>
|
|
81
|
+
<div style="display: flex; gap: 10px; flex-wrap: wrap; align-items: center;">
|
|
82
|
+
<sio-button type="primary">
|
|
83
|
+
<sio-icon icon="pencil" size="15"></sio-icon>
|
|
84
|
+
Compose
|
|
85
|
+
</sio-button>
|
|
86
|
+
<sio-button type="secondary">
|
|
87
|
+
<sio-icon icon="archive" size="15"></sio-icon>
|
|
88
|
+
Archive
|
|
89
|
+
</sio-button>
|
|
90
|
+
<sio-button type="outline">
|
|
91
|
+
<sio-icon icon="clock" size="15"></sio-icon>
|
|
92
|
+
Move to Later
|
|
93
|
+
</sio-button>
|
|
94
|
+
<sio-button type="ghost">Dismiss</sio-button>
|
|
95
|
+
<sio-button type="destructive">
|
|
96
|
+
<sio-icon icon="trash" size="15"></sio-icon>
|
|
97
|
+
Delete thread
|
|
98
|
+
</sio-button>
|
|
99
|
+
</div>
|
|
100
|
+
<div style="display: flex; gap: 10px; flex-wrap: wrap; align-items: center;">
|
|
101
|
+
<sio-button type="primary" size="sm">Reply</sio-button>
|
|
102
|
+
<sio-button type="secondary" size="sm">Forward</sio-button>
|
|
103
|
+
<sio-button type="primary">Mark as Done</sio-button>
|
|
104
|
+
<sio-button type="primary" size="lg">
|
|
105
|
+
<sio-icon icon="send" size="17"></sio-icon>
|
|
106
|
+
Send
|
|
107
|
+
</sio-button>
|
|
108
|
+
<sio-button type="outline" size="lg">Save draft</sio-button>
|
|
109
|
+
</div>
|
|
110
|
+
<div style="display: flex; gap: 10px; flex-wrap: wrap; align-items: center;">
|
|
111
|
+
<sio-button type="primary" status="pending">Sending…</sio-button>
|
|
112
|
+
<sio-button type="primary" status="success">Sent</sio-button>
|
|
113
|
+
<sio-button type="destructive" status="error">Failed</sio-button>
|
|
114
|
+
<sio-button type="primary" disabled>Compose</sio-button>
|
|
115
|
+
<sio-button type="secondary" disabled>Archive</sio-button>
|
|
116
|
+
</div>
|
|
18
117
|
</div>
|
|
19
118
|
`;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
119
|
+
#text_accessor_storage = __runInitializers(this, _text_initializers, '');
|
|
120
|
+
get text() { return this.#text_accessor_storage; }
|
|
121
|
+
set text(value) { this.#text_accessor_storage = value; }
|
|
122
|
+
#type_accessor_storage = (__runInitializers(this, _text_extraInitializers), __runInitializers(this, _type_initializers, 'default'));
|
|
123
|
+
get type() { return this.#type_accessor_storage; }
|
|
124
|
+
set type(value) { this.#type_accessor_storage = value; }
|
|
125
|
+
#size_accessor_storage = (__runInitializers(this, _type_extraInitializers), __runInitializers(this, _size_initializers, 'default'));
|
|
126
|
+
get size() { return this.#size_accessor_storage; }
|
|
127
|
+
set size(value) { this.#size_accessor_storage = value; }
|
|
128
|
+
#disabled_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _disabled_initializers, false));
|
|
129
|
+
get disabled() { return this.#disabled_accessor_storage; }
|
|
130
|
+
set disabled(value) { this.#disabled_accessor_storage = value; }
|
|
131
|
+
#status_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _status_initializers, 'normal'));
|
|
132
|
+
get status() { return this.#status_accessor_storage; }
|
|
133
|
+
set status(value) { this.#status_accessor_storage = value; }
|
|
134
|
+
static styles = [
|
|
135
|
+
...sioElementStyles,
|
|
136
|
+
css `
|
|
33
137
|
:host {
|
|
34
138
|
display: inline-block;
|
|
35
|
-
font-family: ${unsafeCSS(fontFamilies.sans)};
|
|
36
139
|
}
|
|
37
140
|
|
|
38
141
|
:host([disabled]) {
|
|
@@ -45,220 +148,218 @@ export class SioButton extends DeesElement {
|
|
|
45
148
|
align-items: center;
|
|
46
149
|
justify-content: center;
|
|
47
150
|
white-space: nowrap;
|
|
48
|
-
border
|
|
49
|
-
|
|
50
|
-
font-
|
|
151
|
+
border: var(--sio-hairline) solid transparent;
|
|
152
|
+
border-radius: var(--sio-radius);
|
|
153
|
+
font-family: var(--sio-font-sf);
|
|
154
|
+
font-weight: 600;
|
|
51
155
|
line-height: 1;
|
|
52
|
-
|
|
53
|
-
|
|
156
|
+
transition:
|
|
157
|
+
background 120ms ease,
|
|
158
|
+
color 120ms ease,
|
|
159
|
+
border-color 120ms ease,
|
|
160
|
+
transform 80ms ease;
|
|
54
161
|
cursor: pointer;
|
|
55
162
|
user-select: none;
|
|
56
163
|
outline: none;
|
|
57
|
-
border: none;
|
|
58
164
|
gap: 6px;
|
|
59
165
|
}
|
|
60
166
|
|
|
61
|
-
|
|
167
|
+
.button:active:not(.disabled) {
|
|
168
|
+
transform: scale(0.98);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.button:focus-visible {
|
|
172
|
+
outline: 2px solid color-mix(in oklab, var(--sio-tint) 40%, transparent);
|
|
173
|
+
outline-offset: 2px;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* Size ramp — SF footnote/subheadline tracking */
|
|
62
177
|
.button.size-sm {
|
|
63
|
-
height:
|
|
64
|
-
padding: 0
|
|
65
|
-
font-size:
|
|
178
|
+
height: 28px;
|
|
179
|
+
padding: 0 10px;
|
|
180
|
+
font-size: 12px;
|
|
181
|
+
letter-spacing: 0;
|
|
182
|
+
gap: 5px;
|
|
66
183
|
}
|
|
67
184
|
|
|
68
185
|
.button.size-default {
|
|
69
186
|
height: 36px;
|
|
70
|
-
padding: 0
|
|
71
|
-
font-size:
|
|
187
|
+
padding: 0 14px;
|
|
188
|
+
font-size: 13px;
|
|
189
|
+
letter-spacing: -0.08px;
|
|
72
190
|
}
|
|
73
191
|
|
|
74
192
|
.button.size-lg {
|
|
75
|
-
height:
|
|
76
|
-
padding: 0
|
|
193
|
+
height: 44px;
|
|
194
|
+
padding: 0 20px;
|
|
77
195
|
font-size: 15px;
|
|
196
|
+
letter-spacing: -0.24px;
|
|
78
197
|
}
|
|
79
198
|
|
|
80
|
-
/*
|
|
81
|
-
.button.default
|
|
82
|
-
|
|
83
|
-
|
|
199
|
+
/* default falls back to the secondary look (iOS gray fill) */
|
|
200
|
+
.button.default,
|
|
201
|
+
.button.secondary {
|
|
202
|
+
background: var(--sio-surface-2);
|
|
203
|
+
color: var(--sio-label);
|
|
84
204
|
}
|
|
85
205
|
|
|
86
|
-
.button.default:hover:not(.disabled)
|
|
87
|
-
|
|
206
|
+
.button.default:hover:not(.disabled),
|
|
207
|
+
.button.secondary:hover:not(.disabled) {
|
|
208
|
+
background: color-mix(in oklab, var(--sio-label) 10%, transparent);
|
|
88
209
|
}
|
|
89
210
|
|
|
90
|
-
.button.default:active:not(.disabled)
|
|
91
|
-
|
|
211
|
+
.button.default:active:not(.disabled),
|
|
212
|
+
.button.secondary:active:not(.disabled) {
|
|
213
|
+
background: color-mix(in oklab, var(--sio-label) 14%, transparent);
|
|
92
214
|
}
|
|
93
215
|
|
|
216
|
+
/* primary — solid system tint. The on-tint label is white in both
|
|
217
|
+
themes per the v7 spec (solid tint/red fills always carry white). */
|
|
94
218
|
.button.primary {
|
|
95
|
-
background:
|
|
96
|
-
color:
|
|
219
|
+
background: var(--sio-tint);
|
|
220
|
+
color: #ffffff;
|
|
97
221
|
}
|
|
98
222
|
|
|
99
223
|
.button.primary:hover:not(.disabled) {
|
|
100
|
-
background:
|
|
224
|
+
background: var(--sio-tint-hover);
|
|
101
225
|
}
|
|
102
226
|
|
|
103
227
|
.button.primary:active:not(.disabled) {
|
|
104
|
-
background:
|
|
228
|
+
background: color-mix(in oklab, var(--sio-tint) 88%, var(--sio-label));
|
|
105
229
|
}
|
|
106
230
|
|
|
107
|
-
/*
|
|
108
|
-
.button.secondary {
|
|
109
|
-
background: transparent;
|
|
110
|
-
color: ${bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 95%)')};
|
|
111
|
-
box-shadow: inset 0 0 0 1px ${bdTheme('hsl(0 0% 85%)', 'hsl(0 0% 25%)')};
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.button.secondary:hover:not(.disabled) {
|
|
115
|
-
background: ${bdTheme('hsl(0 0% 96%)', 'hsl(0 0% 15%)')};
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.button.secondary:active:not(.disabled) {
|
|
119
|
-
background: ${bdTheme('hsl(0 0% 92%)', 'hsl(0 0% 12%)')};
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/* Destructive variant */
|
|
231
|
+
/* destructive — solid system red */
|
|
123
232
|
.button.destructive {
|
|
124
|
-
background:
|
|
125
|
-
color:
|
|
233
|
+
background: var(--sio-red);
|
|
234
|
+
color: #ffffff;
|
|
126
235
|
}
|
|
127
236
|
|
|
128
237
|
.button.destructive:hover:not(.disabled) {
|
|
129
|
-
background:
|
|
130
|
-
color: white;
|
|
238
|
+
background: color-mix(in oklab, var(--sio-red) 88%, var(--sio-label));
|
|
131
239
|
}
|
|
132
240
|
|
|
133
241
|
.button.destructive:active:not(.disabled) {
|
|
134
|
-
background:
|
|
135
|
-
color: white;
|
|
242
|
+
background: color-mix(in oklab, var(--sio-red) 80%, var(--sio-label));
|
|
136
243
|
}
|
|
137
244
|
|
|
245
|
+
/* outline — hairline ring, quiet label */
|
|
138
246
|
.button.outline {
|
|
139
247
|
background: transparent;
|
|
140
|
-
color:
|
|
141
|
-
|
|
248
|
+
color: var(--sio-label);
|
|
249
|
+
border-color: var(--sio-separator-opaque);
|
|
142
250
|
}
|
|
143
251
|
|
|
144
252
|
.button.outline:hover:not(.disabled) {
|
|
145
|
-
|
|
146
|
-
box-shadow: inset 0 0 0 1.5px ${bdTheme('hsl(0 0% 70%)', 'hsl(0 0% 50%)')};
|
|
253
|
+
background: var(--sio-surface-2);
|
|
147
254
|
}
|
|
148
255
|
|
|
149
256
|
.button.outline:active:not(.disabled) {
|
|
150
|
-
background:
|
|
257
|
+
background: color-mix(in oklab, var(--sio-label) 10%, transparent);
|
|
151
258
|
}
|
|
152
259
|
|
|
260
|
+
/* ghost — bare label, fill on hover */
|
|
153
261
|
.button.ghost {
|
|
154
262
|
background: transparent;
|
|
155
|
-
color:
|
|
263
|
+
color: var(--sio-label-2);
|
|
156
264
|
}
|
|
157
265
|
|
|
158
266
|
.button.ghost:hover:not(.disabled) {
|
|
159
|
-
color:
|
|
160
|
-
background:
|
|
267
|
+
color: var(--sio-label);
|
|
268
|
+
background: var(--sio-surface-2);
|
|
161
269
|
}
|
|
162
270
|
|
|
163
271
|
.button.ghost:active:not(.disabled) {
|
|
164
|
-
background:
|
|
272
|
+
background: color-mix(in oklab, var(--sio-label) 10%, transparent);
|
|
165
273
|
}
|
|
166
274
|
|
|
167
275
|
/* Status states */
|
|
168
276
|
.button.pending {
|
|
169
277
|
pointer-events: none;
|
|
170
|
-
opacity: 0.
|
|
278
|
+
opacity: 0.75;
|
|
171
279
|
}
|
|
172
280
|
|
|
173
281
|
.spinner {
|
|
174
|
-
|
|
175
|
-
left: ${unsafeCSS(spacing["3"])};
|
|
176
|
-
animation: spin 1s linear infinite;
|
|
282
|
+
animation: spin 900ms linear infinite;
|
|
177
283
|
}
|
|
178
284
|
|
|
179
285
|
@keyframes spin {
|
|
180
|
-
from {
|
|
181
|
-
|
|
286
|
+
from {
|
|
287
|
+
transform: rotate(0deg);
|
|
288
|
+
}
|
|
289
|
+
to {
|
|
290
|
+
transform: rotate(360deg);
|
|
291
|
+
}
|
|
182
292
|
}
|
|
183
293
|
|
|
184
294
|
.button.success {
|
|
185
|
-
background:
|
|
186
|
-
color:
|
|
295
|
+
background: var(--sio-green);
|
|
296
|
+
color: #ffffff;
|
|
187
297
|
pointer-events: none;
|
|
188
298
|
}
|
|
189
299
|
|
|
190
300
|
.button.error {
|
|
191
|
-
background:
|
|
192
|
-
color:
|
|
301
|
+
background: var(--sio-red);
|
|
302
|
+
color: #ffffff;
|
|
193
303
|
pointer-events: none;
|
|
194
304
|
}
|
|
195
305
|
|
|
196
306
|
/* Disabled state */
|
|
197
307
|
.button.disabled {
|
|
198
|
-
opacity: 0.
|
|
308
|
+
opacity: 0.45;
|
|
199
309
|
cursor: not-allowed;
|
|
200
310
|
transform: none !important;
|
|
201
311
|
}
|
|
202
312
|
|
|
203
|
-
/* Focus state */
|
|
204
|
-
.button:focus-visible {
|
|
205
|
-
outline: 2px solid ${bdTheme('hsl(0 0% 15% / 0.2)', 'hsl(0 0% 95% / 0.2)')};
|
|
206
|
-
outline-offset: 2px;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
313
|
/* Icon sizing within buttons */
|
|
210
314
|
.button sio-icon {
|
|
211
|
-
width: 16px;
|
|
212
|
-
height: 16px;
|
|
213
315
|
flex-shrink: 0;
|
|
214
316
|
}
|
|
215
|
-
|
|
216
|
-
.button.size-sm sio-icon {
|
|
217
|
-
width: 14px;
|
|
218
|
-
height: 14px;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
.button.size-lg sio-icon {
|
|
222
|
-
width: 18px;
|
|
223
|
-
height: 18px;
|
|
224
|
-
}
|
|
225
317
|
`,
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
` : ''}
|
|
318
|
+
];
|
|
319
|
+
render() {
|
|
320
|
+
const buttonClasses = [
|
|
321
|
+
'button',
|
|
322
|
+
this.type,
|
|
323
|
+
`size-${this.size}`,
|
|
324
|
+
this.disabled ? 'disabled' : '',
|
|
325
|
+
this.status,
|
|
326
|
+
]
|
|
327
|
+
.filter(Boolean)
|
|
328
|
+
.join(' ');
|
|
329
|
+
const statusIconSize = this.size === 'sm' ? 13 : this.size === 'lg' ? 17 : 15;
|
|
330
|
+
return html `
|
|
331
|
+
<button class="${buttonClasses}" ?disabled=${this.disabled} @click=${this.handleClick}>
|
|
332
|
+
${this.status === 'pending'
|
|
333
|
+
? html `<sio-icon class="spinner" icon="loader" size=${statusIconSize}></sio-icon>`
|
|
334
|
+
: ''}
|
|
335
|
+
${this.status === 'success'
|
|
336
|
+
? html `<sio-icon icon="check" size=${statusIconSize}></sio-icon>`
|
|
337
|
+
: ''}
|
|
338
|
+
${this.status === 'error'
|
|
339
|
+
? html `<sio-icon icon="x" size=${statusIconSize}></sio-icon>`
|
|
340
|
+
: ''}
|
|
250
341
|
<slot>${this.text}</slot>
|
|
251
342
|
</button>
|
|
252
343
|
`;
|
|
253
|
-
}
|
|
254
|
-
handleClick(event) {
|
|
255
|
-
if (this.disabled || this.status !== 'normal') {
|
|
256
|
-
event.preventDefault();
|
|
257
|
-
event.stopPropagation();
|
|
258
|
-
return;
|
|
259
344
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
345
|
+
handleClick(event) {
|
|
346
|
+
if (this.disabled || this.status !== 'normal') {
|
|
347
|
+
event.preventDefault();
|
|
348
|
+
event.stopPropagation();
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
// Let the native click bubble normally — no synthetic event, so
|
|
352
|
+
// consumers never see a double trigger.
|
|
353
|
+
}
|
|
354
|
+
constructor() {
|
|
355
|
+
super(...arguments);
|
|
356
|
+
__runInitializers(this, _status_extraInitializers);
|
|
357
|
+
}
|
|
358
|
+
static {
|
|
359
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
return SioButton = _classThis;
|
|
363
|
+
})();
|
|
364
|
+
export { SioButton };
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsR0FFSixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGVBQWUsQ0FBQztJQW1CVixTQUFTOzRCQURyQixhQUFhLENBQUMsWUFBWSxDQUFDOzs7O3NCQUNHLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBQW5CLFNBQVEsV0FBVzs7OztnQ0E0Q3ZDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2tDQUcxQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFYM0IsaUtBQWdCLElBQUksNkJBQUosSUFBSSxtRkFBYztZQUdsQyxpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUE2QjtZQUdqRCxpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUE2QjtZQUdqRCw2S0FBZ0IsUUFBUSw2QkFBUixRQUFRLDJGQUFrQjtZQUcxQyx1S0FBZ0IsTUFBTSw2QkFBTixNQUFNLHVGQUE4QjtZQXpEdEQsNktBMlJDOzs7O1FBMVJRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7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
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import './sio-icon.js';
|
|
3
|
+
declare global {
|
|
4
|
+
interface HTMLElementTagNameMap {
|
|
5
|
+
'sio-channel-rail': SioChannelRail;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export interface ISioChannelRailItem {
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
color: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
unread?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ISioChannelSelectDetail {
|
|
16
|
+
id: string;
|
|
17
|
+
channel: ISioChannelRailItem;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* sio-channel-rail — the 64px channel column at the very left of the
|
|
21
|
+
* desktop window (v7 prototype: SIOChannelRail in
|
|
22
|
+
* SocialIODesktopChannels.jsx).
|
|
23
|
+
*
|
|
24
|
+
* Each item stacks an 18px icon over a 10px label; the active item gets a
|
|
25
|
+
* rounded-10 chip and its channel color, and every item can carry an unread
|
|
26
|
+
* badge (channel-colored pill at top -5 / right -9 with a 2px ring cut out
|
|
27
|
+
* of the rail). Selecting a channel dispatches `channel-select` with
|
|
28
|
+
* `{ id, channel }` (bubbles, composed).
|
|
29
|
+
*/
|
|
30
|
+
export declare class SioChannelRail extends DeesElement {
|
|
31
|
+
static demo: () => TemplateResult<1>;
|
|
32
|
+
accessor channels: ISioChannelRailItem[];
|
|
33
|
+
accessor active: string;
|
|
34
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
35
|
+
render(): TemplateResult;
|
|
36
|
+
private handleSelect;
|
|
37
|
+
}
|