@social.io/catalog 1.3.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.smartconfig.json +51 -0
- package/dist_bundle/bundle.js +5455 -3248
- package/dist_ts_web/00_commitinfo_data.js +3 -3
- package/dist_ts_web/elements/index.d.ts +21 -3
- package/dist_ts_web/elements/index.js +28 -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 +38 -0
- package/dist_ts_web/elements/sio-channel-rail.js +288 -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-logo-render.d.ts +42 -0
- package/dist_ts_web/elements/sio-logo-render.js +306 -0
- package/dist_ts_web/elements/sio-logo.d.ts +64 -0
- package/dist_ts_web/elements/sio-logo.js +393 -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 +82 -0
- package/readme.md +113 -146
- package/ts_web/00_commitinfo_data.ts +2 -2
- package/ts_web/elements/index.ts +31 -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 +256 -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-logo-render.ts +367 -0
- package/ts_web/elements/sio-logo.ts +311 -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,259 +1,283 @@
|
|
|
1
|
-
|
|
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';
|
|
2
36
|
import * as domtools from '@design.estate/dees-domtools';
|
|
37
|
+
import { sioElementStyles } from './tokens.js';
|
|
3
38
|
import { SioCombox } from './sio-combox.js';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
39
|
+
import './sio-icon.js';
|
|
40
|
+
import './sio-unread-badge.js';
|
|
6
41
|
SioCombox;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
--fab-shadow-color: rgba(139, 92, 246, 0.25);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
#mainbox {
|
|
45
|
-
transition: ${transitions.all};
|
|
46
|
-
position: absolute;
|
|
47
|
-
bottom: 0px;
|
|
48
|
-
right: 0px;
|
|
49
|
-
height: 60px;
|
|
50
|
-
width: 60px;
|
|
51
|
-
box-shadow: 0 4px 16px -2px rgba(0, 0, 0, 0.1), 0 2px 8px -2px rgba(0, 0, 0, 0.06);
|
|
52
|
-
line-height: 60px;
|
|
53
|
-
text-align: center;
|
|
54
|
-
cursor: pointer;
|
|
55
|
-
background: linear-gradient(135deg, var(--fab-gradient-start) 0%, var(--fab-gradient-mid) 50%, var(--fab-gradient-end) 100%);
|
|
56
|
-
color: white;
|
|
57
|
-
border-radius: ${radius.full};
|
|
58
|
-
user-select: none;
|
|
59
|
-
border: none;
|
|
60
|
-
animation: fabEntrance 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
61
|
-
overflow: hidden;
|
|
62
|
-
position: relative;
|
|
63
|
-
backdrop-filter: blur(10px);
|
|
64
|
-
-webkit-backdrop-filter: blur(10px);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
#mainbox::before {
|
|
68
|
-
content: '';
|
|
69
|
-
position: absolute;
|
|
70
|
-
top: 0;
|
|
71
|
-
left: 0;
|
|
72
|
-
right: 0;
|
|
73
|
-
bottom: 0;
|
|
74
|
-
background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 50%);
|
|
75
|
-
opacity: 0;
|
|
76
|
-
transition: opacity 200ms ease;
|
|
42
|
+
/**
|
|
43
|
+
* sio-fab — the widget launcher bubble (v7 SocialIOWidget.jsx SIOWidgetLauncher).
|
|
44
|
+
*
|
|
45
|
+
* 56px circle on solid system tint with the white social.io chat glyph,
|
|
46
|
+
* tinted ambient shadow (40% tint) plus a soft contact shadow. Unread
|
|
47
|
+
* count sits top-right as a red pill with a 2px page-surface ring.
|
|
48
|
+
* While the combox is open the glyph swaps to a chevron-down.
|
|
49
|
+
*
|
|
50
|
+
* Owns the SioCombox singleton: creates it on <body>, toggles it on
|
|
51
|
+
* click and on Ctrl+S, and mirrors its open state.
|
|
52
|
+
*/
|
|
53
|
+
let SioFab = (() => {
|
|
54
|
+
let _classDecorators = [customElement('sio-fab')];
|
|
55
|
+
let _classDescriptor;
|
|
56
|
+
let _classExtraInitializers = [];
|
|
57
|
+
let _classThis;
|
|
58
|
+
let _classSuper = DeesElement;
|
|
59
|
+
let _showCombox_decorators;
|
|
60
|
+
let _showCombox_initializers = [];
|
|
61
|
+
let _showCombox_extraInitializers = [];
|
|
62
|
+
let _unread_decorators;
|
|
63
|
+
let _unread_initializers = [];
|
|
64
|
+
let _unread_extraInitializers = [];
|
|
65
|
+
var SioFab = class extends _classSuper {
|
|
66
|
+
static { _classThis = this; }
|
|
67
|
+
static {
|
|
68
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
69
|
+
_showCombox_decorators = [property({ type: Boolean })];
|
|
70
|
+
_unread_decorators = [property({ type: Number })];
|
|
71
|
+
__esDecorate(this, null, _showCombox_decorators, { kind: "accessor", name: "showCombox", static: false, private: false, access: { has: obj => "showCombox" in obj, get: obj => obj.showCombox, set: (obj, value) => { obj.showCombox = value; } }, metadata: _metadata }, _showCombox_initializers, _showCombox_extraInitializers);
|
|
72
|
+
__esDecorate(this, null, _unread_decorators, { kind: "accessor", name: "unread", static: false, private: false, access: { has: obj => "unread" in obj, get: obj => obj.unread, set: (obj, value) => { obj.unread = value; } }, metadata: _metadata }, _unread_initializers, _unread_extraInitializers);
|
|
73
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
74
|
+
SioFab = _classThis = _classDescriptor.value;
|
|
75
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
77
76
|
}
|
|
78
|
-
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
filter: blur(12px);
|
|
91
|
-
transition: opacity 300ms ease;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
#mainbox:hover::before {
|
|
95
|
-
opacity: 1;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
#mainbox:hover::after {
|
|
99
|
-
opacity: 0.3;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@keyframes fabEntrance {
|
|
103
|
-
from {
|
|
104
|
-
transform: scale(0.8);
|
|
105
|
-
opacity: 0;
|
|
106
|
-
}
|
|
107
|
-
to {
|
|
108
|
-
transform: scale(1);
|
|
109
|
-
opacity: 1;
|
|
110
|
-
}
|
|
77
|
+
static demo = () => html ` <sio-fab .unread=${1}></sio-fab> `;
|
|
78
|
+
#showCombox_accessor_storage = __runInitializers(this, _showCombox_initializers, false);
|
|
79
|
+
/** mirrors the combox open state (chevron glyph while open) */
|
|
80
|
+
get showCombox() { return this.#showCombox_accessor_storage; }
|
|
81
|
+
set showCombox(value) { this.#showCombox_accessor_storage = value; }
|
|
82
|
+
#unread_accessor_storage = (__runInitializers(this, _showCombox_extraInitializers), __runInitializers(this, _unread_initializers, 0));
|
|
83
|
+
/** unread conversation count — red pill on the launcher while closed */
|
|
84
|
+
get unread() { return this.#unread_accessor_storage; }
|
|
85
|
+
set unread(value) { this.#unread_accessor_storage = value; }
|
|
86
|
+
constructor() {
|
|
87
|
+
super();
|
|
88
|
+
domtools.DomTools.setupDomTools();
|
|
111
89
|
}
|
|
90
|
+
static styles = [
|
|
91
|
+
...sioElementStyles,
|
|
92
|
+
css `
|
|
93
|
+
:host {
|
|
94
|
+
position: absolute;
|
|
95
|
+
bottom: 24px;
|
|
96
|
+
right: 24px;
|
|
97
|
+
z-index: 10000;
|
|
98
|
+
display: block;
|
|
99
|
+
width: 56px;
|
|
100
|
+
height: 56px;
|
|
101
|
+
}
|
|
112
102
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
103
|
+
.fab {
|
|
104
|
+
position: relative;
|
|
105
|
+
width: 56px;
|
|
106
|
+
height: 56px;
|
|
107
|
+
border-radius: 28px;
|
|
108
|
+
border: none;
|
|
109
|
+
padding: 0;
|
|
110
|
+
background: var(--sio-tint);
|
|
111
|
+
color: #fff; /* on-tint constant across themes (v7 launcher glyph) */
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
user-select: none;
|
|
114
|
+
box-shadow:
|
|
115
|
+
0 8px 24px color-mix(in oklab, var(--sio-tint) 40%, transparent),
|
|
116
|
+
0 2px 6px rgba(0, 0, 0, 0.12);
|
|
117
|
+
transition:
|
|
118
|
+
background 120ms ease,
|
|
119
|
+
transform 120ms ease,
|
|
120
|
+
box-shadow 120ms ease;
|
|
121
|
+
animation: fabEntrance 240ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
122
|
+
}
|
|
121
123
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
#mainbox.pulse::after {
|
|
128
|
-
animation: fabPulse 0.6s ease-out forwards;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
@keyframes fabPulse {
|
|
132
|
-
0% {
|
|
133
|
-
box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.4);
|
|
134
|
-
opacity: 1;
|
|
135
|
-
}
|
|
136
|
-
100% {
|
|
137
|
-
box-shadow: 0 0 0 12px rgba(139, 92, 246, 0);
|
|
138
|
-
opacity: 0;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
124
|
+
.fab:hover {
|
|
125
|
+
background: var(--sio-tint-hover);
|
|
126
|
+
transform: scale(1.03);
|
|
127
|
+
}
|
|
141
128
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
left: 0px;
|
|
146
|
-
will-change: transform, opacity;
|
|
147
|
-
transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
148
|
-
height: 100%;
|
|
149
|
-
width: 100%;
|
|
150
|
-
display: flex;
|
|
151
|
-
align-items: center;
|
|
152
|
-
justify-content: center;
|
|
153
|
-
}
|
|
129
|
+
.fab:active {
|
|
130
|
+
transform: scale(0.96);
|
|
131
|
+
}
|
|
154
132
|
|
|
133
|
+
.fab:focus-visible {
|
|
134
|
+
outline: 2px solid color-mix(in oklab, var(--sio-tint) 55%, transparent);
|
|
135
|
+
outline-offset: 2px;
|
|
136
|
+
}
|
|
155
137
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
transform:
|
|
138
|
+
@keyframes fabEntrance {
|
|
139
|
+
from {
|
|
140
|
+
transform: scale(0.8);
|
|
141
|
+
opacity: 0;
|
|
159
142
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
opacity:
|
|
163
|
-
transform: ${this.showCombox ? 'rotate(0deg) scale(1)' : 'rotate(-45deg) scale(0.9)'};
|
|
143
|
+
to {
|
|
144
|
+
transform: scale(1);
|
|
145
|
+
opacity: 1;
|
|
164
146
|
}
|
|
147
|
+
}
|
|
165
148
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
149
|
+
.glyph {
|
|
150
|
+
position: absolute;
|
|
151
|
+
inset: 0;
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
justify-content: center;
|
|
155
|
+
transition:
|
|
156
|
+
opacity 160ms ease,
|
|
157
|
+
transform 160ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
158
|
+
}
|
|
170
159
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
160
|
+
.glyph svg {
|
|
161
|
+
display: block;
|
|
162
|
+
}
|
|
174
163
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
pointer-events: none;
|
|
180
|
-
}
|
|
164
|
+
.glyph.chat {
|
|
165
|
+
opacity: 1;
|
|
166
|
+
transform: rotate(0deg) scale(1);
|
|
167
|
+
}
|
|
181
168
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
transition: ${transitions.all};
|
|
187
|
-
will-change: transform;
|
|
188
|
-
transform: translateY(${spacing["5"]});
|
|
189
|
-
opacity: 0;
|
|
190
|
-
pointer-events: none;
|
|
191
|
-
}
|
|
169
|
+
.glyph.chevron {
|
|
170
|
+
opacity: 0;
|
|
171
|
+
transform: rotate(-45deg) scale(0.8);
|
|
172
|
+
}
|
|
192
173
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
174
|
+
:host(.combox-open) .glyph.chat {
|
|
175
|
+
opacity: 0;
|
|
176
|
+
transform: rotate(45deg) scale(0.8);
|
|
177
|
+
}
|
|
196
178
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
179
|
+
:host(.combox-open) .glyph.chevron {
|
|
180
|
+
opacity: 1;
|
|
181
|
+
transform: rotate(0deg) scale(1);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.unread {
|
|
185
|
+
position: absolute;
|
|
186
|
+
top: -3px;
|
|
187
|
+
right: -3px;
|
|
188
|
+
pointer-events: none;
|
|
189
|
+
transition: opacity 120ms ease;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
:host(.combox-open) .unread {
|
|
193
|
+
opacity: 0;
|
|
194
|
+
}
|
|
195
|
+
`,
|
|
196
|
+
cssManager.cssForPhablet(css `
|
|
197
|
+
:host {
|
|
198
|
+
bottom: 16px;
|
|
199
|
+
right: 16px;
|
|
200
|
+
}
|
|
201
|
+
`),
|
|
202
|
+
];
|
|
203
|
+
render() {
|
|
204
|
+
return html `
|
|
205
|
+
<button class="fab" aria-label="Open messenger" @click=${this.toggleCombox}>
|
|
206
|
+
<span class="glyph chat">
|
|
207
|
+
<!-- social.io chat glyph (v7 brand mark) -->
|
|
208
|
+
<svg width="26" height="26" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
209
|
+
<path
|
|
210
|
+
d="M12 3C7 3 3 6.6 3 11c0 2.5 1.3 4.7 3.3 6.2-.1 1-.5 2.1-1.3 2.9 1.6-.1 3-.7 4-1.4.9.2 1.9.3 3 .3 5 0 9-3.6 9-8S17 3 12 3z"
|
|
211
|
+
/>
|
|
212
|
+
</svg>
|
|
213
|
+
</span>
|
|
214
|
+
<span class="glyph chevron">
|
|
215
|
+
<sio-icon icon="chevron-down" size="22" .strokeWidth=${2.4}></sio-icon>
|
|
216
|
+
</span>
|
|
217
|
+
${this.unread > 0
|
|
218
|
+
? html `
|
|
219
|
+
<sio-unread-badge
|
|
220
|
+
class="unread"
|
|
221
|
+
count=${this.unread}
|
|
222
|
+
channel="alert"
|
|
223
|
+
ring
|
|
224
|
+
></sio-unread-badge>
|
|
225
|
+
`
|
|
226
|
+
: ''}
|
|
227
|
+
</button>
|
|
220
228
|
`;
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
this.hasShownOnce = true;
|
|
231
|
-
if (!wasOpen) {
|
|
232
|
-
this.shouldPulse = true;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* toggles the combox
|
|
232
|
+
*/
|
|
233
|
+
async toggleCombox() {
|
|
234
|
+
const combox = SioCombox.getInstance();
|
|
235
|
+
if (combox) {
|
|
236
|
+
combox.toggle();
|
|
237
|
+
this.showCombox = combox.getIsOpen();
|
|
233
238
|
}
|
|
234
239
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
super.firstUpdated(args);
|
|
238
|
-
const domtools = await this.domtoolsPromise;
|
|
239
|
-
// Set up keyboard shortcut
|
|
240
|
-
domtools.keyboard
|
|
241
|
-
.on([domtools.keyboard.keyEnum.Ctrl, domtools.keyboard.keyEnum.S])
|
|
242
|
-
.subscribe(() => {
|
|
243
|
-
this.toggleCombox();
|
|
240
|
+
comboxCloseHandler = (__runInitializers(this, _unread_extraInitializers), () => {
|
|
241
|
+
this.showCombox = false;
|
|
244
242
|
});
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
243
|
+
comboxRef = null;
|
|
244
|
+
async firstUpdated(args) {
|
|
245
|
+
super.firstUpdated(args);
|
|
246
|
+
const domtoolsInstance = await this.domtoolsPromise;
|
|
247
|
+
// Create the singleton combox on body
|
|
248
|
+
const combox = SioCombox.createOnBody();
|
|
249
|
+
// Listen for close events (removed on disconnect — the singleton outlives us)
|
|
250
|
+
this.comboxRef = combox;
|
|
251
|
+
combox.addEventListener('close', this.comboxCloseHandler);
|
|
252
|
+
// Set up keyboard shortcut; the subscription is auto-unsubscribed by
|
|
253
|
+
// DeesElement on disconnect, otherwise the global keyboard singleton
|
|
254
|
+
// would retain this element (and fire once per ever-mounted fab)
|
|
255
|
+
const keyboard = domtoolsInstance.keyboard;
|
|
256
|
+
if (keyboard) {
|
|
257
|
+
this.rxSubscriptions.push(keyboard.on([keyboard.keyEnum.Ctrl, keyboard.keyEnum.S]).subscribe(() => {
|
|
258
|
+
this.toggleCombox();
|
|
259
|
+
}));
|
|
255
260
|
}
|
|
256
261
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
262
|
+
async disconnectedCallback() {
|
|
263
|
+
await super.disconnectedCallback();
|
|
264
|
+
if (this.comboxRef) {
|
|
265
|
+
this.comboxRef.removeEventListener('close', this.comboxCloseHandler);
|
|
266
|
+
this.comboxRef = null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async updated(changedProperties) {
|
|
270
|
+
super.updated(changedProperties);
|
|
271
|
+
// Mirror combox state onto the host for the glyph crossfade
|
|
272
|
+
if (changedProperties.has('showCombox')) {
|
|
273
|
+
this.classList.toggle('combox-open', this.showCombox);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
static {
|
|
277
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
return SioFab = _classThis;
|
|
281
|
+
})();
|
|
282
|
+
export { SioFab };
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWZhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tZmFiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEdBRVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEtBQUssUUFBUSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxlQUFlLENBQUM7QUFDdkIsT0FBTyx1QkFBdUIsQ0FBQztBQUMvQixTQUFTLENBQUM7QUFRVjs7Ozs7Ozs7OztHQVVHO0lBRVUsTUFBTTs0QkFEbEIsYUFBYSxDQUFDLFNBQVMsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7O3NCQUFuQixTQUFRLFdBQVc7Ozs7c0NBSXBDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztrQ0FJM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBSDNCLG1MQUFnQixVQUFVLDZCQUFWLFVBQVUsK0ZBQVM7WUFJbkMsdUtBQWdCLE1BQU0sNkJBQU4sTUFBTSx1RkFBSztZQVQ3Qiw2S0FzTkM7Ozs7UUFyTlEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEscUJBQXFCLENBQUMsY0FBYyxDQUFDO1FBSXBFLGlGQUE2QixLQUFLLEVBQUM7UUFGbkMsK0RBQStEO1FBRS9ELElBQWdCLFVBQVUsZ0RBQVM7UUFBbkMsSUFBZ0IsVUFBVSxzREFBUztRQUluQyxrSUFBeUIsQ0FBQyxHQUFDO1FBRjNCLHdFQUF3RTtRQUV4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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import './sio-icon.js';
|
|
3
|
+
declare global {
|
|
4
|
+
interface HTMLElementTagNameMap {
|
|
5
|
+
'sio-glass-toolbar': SioGlassToolbar;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* sio-glass-toolbar — the 44px liquid-glass command bar that tops every
|
|
10
|
+
* social.io pane (v7 prototype: SocialIODesktop.jsx thread/list toolbars,
|
|
11
|
+
* styles/socialio.css `.sio-toolbar-glass`).
|
|
12
|
+
*
|
|
13
|
+
* The bar is deliberately chromeless: it only provides the toolbar glass
|
|
14
|
+
* recipe (blur 28px, saturate 180%) with the 0.5px bottom hairline and a
|
|
15
|
+
* three-region layout. Content flows into the `start` (leading actions),
|
|
16
|
+
* `center` (title / context) and `end` (trailing actions, search) slots.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SioGlassToolbar extends DeesElement {
|
|
19
|
+
static demo: () => TemplateResult<1>;
|
|
20
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
21
|
+
render(): TemplateResult;
|
|
22
|
+
}
|