@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.
Files changed (130) hide show
  1. package/.smartconfig.json +51 -0
  2. package/dist_bundle/bundle.js +5455 -3248
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/index.d.ts +21 -3
  5. package/dist_ts_web/elements/index.js +28 -7
  6. package/dist_ts_web/elements/sio-ai-card.d.ts +39 -0
  7. package/dist_ts_web/elements/sio-ai-card.js +229 -0
  8. package/dist_ts_web/elements/sio-avatar.d.ts +46 -0
  9. package/dist_ts_web/elements/sio-avatar.js +379 -0
  10. package/dist_ts_web/elements/sio-bucket-header.d.ts +36 -0
  11. package/dist_ts_web/elements/sio-bucket-header.js +197 -0
  12. package/dist_ts_web/elements/sio-button.d.ts +7 -3
  13. package/dist_ts_web/elements/sio-button.js +253 -152
  14. package/dist_ts_web/elements/sio-channel-rail.d.ts +38 -0
  15. package/dist_ts_web/elements/sio-channel-rail.js +288 -0
  16. package/dist_ts_web/elements/sio-chip.d.ts +25 -0
  17. package/dist_ts_web/elements/sio-chip.js +188 -0
  18. package/dist_ts_web/elements/sio-cmdk.d.ts +59 -0
  19. package/dist_ts_web/elements/sio-cmdk.js +471 -0
  20. package/dist_ts_web/elements/sio-combox.d.ts +55 -1
  21. package/dist_ts_web/elements/sio-combox.js +458 -261
  22. package/dist_ts_web/elements/sio-composer.d.ts +48 -0
  23. package/dist_ts_web/elements/sio-composer.js +357 -0
  24. package/dist_ts_web/elements/sio-conversation-selector.d.ts +41 -1
  25. package/dist_ts_web/elements/sio-conversation-selector.js +426 -238
  26. package/dist_ts_web/elements/sio-conversation-view.d.ts +34 -6
  27. package/dist_ts_web/elements/sio-conversation-view.js +738 -564
  28. package/dist_ts_web/elements/sio-dropdown-menu.d.ts +6 -6
  29. package/dist_ts_web/elements/sio-dropdown-menu.js +223 -169
  30. package/dist_ts_web/elements/sio-fab.d.ts +23 -5
  31. package/dist_ts_web/elements/sio-fab.js +259 -235
  32. package/dist_ts_web/elements/sio-glass-toolbar.d.ts +22 -0
  33. package/dist_ts_web/elements/sio-glass-toolbar.js +178 -0
  34. package/dist_ts_web/elements/sio-icon.d.ts +1 -0
  35. package/dist_ts_web/elements/sio-icon.js +254 -94
  36. package/dist_ts_web/elements/sio-image-lightbox.d.ts +3 -4
  37. package/dist_ts_web/elements/sio-image-lightbox.js +282 -191
  38. package/dist_ts_web/elements/sio-inset-list.d.ts +28 -0
  39. package/dist_ts_web/elements/sio-inset-list.js +191 -0
  40. package/dist_ts_web/elements/sio-kbd.d.ts +16 -0
  41. package/dist_ts_web/elements/sio-kbd.js +117 -0
  42. package/dist_ts_web/elements/sio-list-row.d.ts +55 -0
  43. package/dist_ts_web/elements/sio-list-row.js +462 -0
  44. package/dist_ts_web/elements/sio-logo-render.d.ts +42 -0
  45. package/dist_ts_web/elements/sio-logo-render.js +306 -0
  46. package/dist_ts_web/elements/sio-logo.d.ts +64 -0
  47. package/dist_ts_web/elements/sio-logo.js +393 -0
  48. package/dist_ts_web/elements/sio-message-input.d.ts +25 -4
  49. package/dist_ts_web/elements/sio-message-input.js +231 -226
  50. package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
  51. package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
  52. package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
  53. package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
  54. package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
  55. package/dist_ts_web/elements/sio-segmented.js +217 -0
  56. package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
  57. package/dist_ts_web/elements/sio-step-timeline.js +222 -0
  58. package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
  59. package/dist_ts_web/elements/sio-tab-bar.js +232 -0
  60. package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
  61. package/dist_ts_web/elements/sio-unread-badge.js +203 -0
  62. package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
  63. package/dist_ts_web/elements/sio-waveform.js +304 -0
  64. package/dist_ts_web/elements/tokens.d.ts +70 -0
  65. package/dist_ts_web/elements/tokens.js +277 -0
  66. package/dist_ts_web/pages/firstpage.d.ts +5 -0
  67. package/dist_ts_web/pages/firstpage.js +21 -2
  68. package/dist_ts_web/pages/mainpage.d.ts +6 -0
  69. package/dist_ts_web/pages/mainpage.js +111 -39
  70. package/{license → license.md} +3 -1
  71. package/package.json +23 -29
  72. package/readme.hints.md +82 -0
  73. package/readme.md +113 -146
  74. package/ts_web/00_commitinfo_data.ts +2 -2
  75. package/ts_web/elements/index.ts +31 -7
  76. package/ts_web/elements/sio-ai-card.ts +175 -0
  77. package/ts_web/elements/sio-avatar.ts +295 -0
  78. package/ts_web/elements/sio-bucket-header.ts +157 -0
  79. package/ts_web/elements/sio-button.ts +149 -127
  80. package/ts_web/elements/sio-channel-rail.ts +256 -0
  81. package/ts_web/elements/sio-chip.ts +134 -0
  82. package/ts_web/elements/sio-cmdk.ts +461 -0
  83. package/ts_web/elements/sio-combox.ts +327 -204
  84. package/ts_web/elements/sio-composer.ts +306 -0
  85. package/ts_web/elements/sio-conversation-selector.ts +350 -228
  86. package/ts_web/elements/sio-conversation-view.ts +573 -457
  87. package/ts_web/elements/sio-dropdown-menu.ts +112 -130
  88. package/ts_web/elements/sio-fab.ts +192 -227
  89. package/ts_web/elements/sio-glass-toolbar.ts +140 -0
  90. package/ts_web/elements/sio-icon.ts +147 -25
  91. package/ts_web/elements/sio-image-lightbox.ts +62 -64
  92. package/ts_web/elements/sio-inset-list.ts +140 -0
  93. package/ts_web/elements/sio-kbd.ts +80 -0
  94. package/ts_web/elements/sio-list-row.ts +393 -0
  95. package/ts_web/elements/sio-logo-render.ts +367 -0
  96. package/ts_web/elements/sio-logo.ts +311 -0
  97. package/ts_web/elements/sio-message-input.ts +142 -221
  98. package/ts_web/elements/sio-paper-thumb.ts +244 -0
  99. package/ts_web/elements/sio-pdf-viewer.ts +58 -60
  100. package/ts_web/elements/sio-segmented.ts +183 -0
  101. package/ts_web/elements/sio-step-timeline.ts +179 -0
  102. package/ts_web/elements/sio-tab-bar.ts +195 -0
  103. package/ts_web/elements/sio-unread-badge.ts +147 -0
  104. package/ts_web/elements/sio-waveform.ts +239 -0
  105. package/ts_web/elements/tokens.ts +297 -0
  106. package/ts_web/pages/firstpage.ts +20 -1
  107. package/ts_web/pages/mainpage.ts +111 -39
  108. package/dist_bundle/bundle.js.map +0 -7
  109. package/dist_ts_web/elements/00colors.d.ts +0 -108
  110. package/dist_ts_web/elements/00colors.js +0 -137
  111. package/dist_ts_web/elements/00fonts.d.ts +0 -60
  112. package/dist_ts_web/elements/00fonts.js +0 -129
  113. package/dist_ts_web/elements/00tokens.d.ts +0 -123
  114. package/dist_ts_web/elements/00tokens.js +0 -176
  115. package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
  116. package/dist_ts_web/elements/sio-conversation-list.js +0 -495
  117. package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
  118. package/dist_ts_web/elements/sio-recorder.js +0 -173
  119. package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
  120. package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
  121. package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
  122. package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
  123. package/dist_watch/bundle.js +0 -81694
  124. package/dist_watch/bundle.js.map +0 -7
  125. package/dist_watch/index.html +0 -25
  126. package/npmextra.json +0 -19
  127. package/ts_web/elements/00colors.ts +0 -164
  128. package/ts_web/elements/00fonts.ts +0 -145
  129. package/ts_web/elements/00tokens.ts +0 -197
  130. package/ts_web/elements/sio-recorder.ts +0 -213
@@ -1,259 +1,283 @@
1
- import { DeesElement, property, html, customElement, cssManager, css, } from '@design.estate/dees-element';
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 { SioIcon } from './sio-icon.js';
5
- import { state } from '@design.estate/dees-element';
39
+ import './sio-icon.js';
40
+ import './sio-unread-badge.js';
6
41
  SioCombox;
7
- SioIcon;
8
- // Import design tokens
9
- import { colors, bdTheme } from './00colors.js';
10
- import { spacing, radius, shadows, transitions, sizes } from './00tokens.js';
11
- import { fontFamilies, typography } from './00fonts.js';
12
- @customElement('sio-fab')
13
- export class SioFab extends DeesElement {
14
- @property({ type: Boolean })
15
- accessor showCombox = false;
16
- @state()
17
- accessor hasShownOnce = false;
18
- @state()
19
- accessor shouldPulse = false;
20
- static demo = () => html ` <sio-fab .showCombox=${true}></sio-fab> `;
21
- constructor() {
22
- super();
23
- domtools.DomTools.setupDomTools();
24
- }
25
- render() {
26
- return html `
27
- ${domtools.elementBasic.styles}
28
- <style>
29
- :host {
30
- will-change: transform;
31
- position: absolute;
32
- display: block;
33
- bottom: 20px;
34
- right: 20px;
35
- z-index: 10000;
36
- color: #fff;
37
- --fab-gradient-start: #6366f1;
38
- --fab-gradient-mid: #8b5cf6;
39
- --fab-gradient-end: #a855f7;
40
- --fab-gradient-hover-end: #c026d3;
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
- #mainbox::after {
80
- content: '';
81
- position: absolute;
82
- top: -4px;
83
- left: -4px;
84
- right: -4px;
85
- bottom: -4px;
86
- background: linear-gradient(135deg, var(--fab-gradient-start), var(--fab-gradient-end));
87
- border-radius: inherit;
88
- z-index: -1;
89
- opacity: 0;
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
- #mainbox:hover {
114
- transform: scale(1.02);
115
- background: linear-gradient(135deg, var(--fab-gradient-start) 0%, var(--fab-gradient-mid) 50%, var(--fab-gradient-hover-end) 100%);
116
- }
117
-
118
- #mainbox:hover {
119
- box-shadow: 0 8px 20px -4px var(--fab-shadow-color);
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
- #mainbox:active {
123
- transform: scale(0.98);
124
- box-shadow: 0 4px 12px -2px var(--fab-shadow-color);
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
- #mainbox .icon {
143
- position: absolute;
144
- top: 0px;
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
- #mainbox .icon.open {
157
- opacity: ${this.showCombox ? '0' : '1'};
158
- transform: ${this.showCombox ? 'rotate(45deg) scale(0.9)' : 'rotate(0deg) scale(1)'};
138
+ @keyframes fabEntrance {
139
+ from {
140
+ transform: scale(0.8);
141
+ opacity: 0;
159
142
  }
160
-
161
- #mainbox .icon.close {
162
- opacity: ${this.showCombox ? '1' : '0'};
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
- #mainbox .icon sio-icon {
167
- color: white;
168
- filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
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
- #mainbox .icon.close sio-icon {
172
- transform: scale(1);
173
- }
160
+ .glyph svg {
161
+ display: block;
162
+ }
174
163
 
175
- #comboxContainer {
176
- position: absolute;
177
- bottom: 0;
178
- right: 0;
179
- pointer-events: none;
180
- }
164
+ .glyph.chat {
165
+ opacity: 1;
166
+ transform: rotate(0deg) scale(1);
167
+ }
181
168
 
182
- #comboxContainer sio-combox {
183
- position: absolute;
184
- bottom: calc(60px + ${spacing["4"]});
185
- right: 0;
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
- #comboxContainer.show {
194
- pointer-events: all;
195
- }
174
+ :host(.combox-open) .glyph.chat {
175
+ opacity: 0;
176
+ transform: rotate(45deg) scale(0.8);
177
+ }
196
178
 
197
- #comboxContainer.show sio-combox {
198
- transform: translateY(0px);
199
- opacity: 1;
200
- pointer-events: all;
201
- }
202
- </style>
203
- <div id="mainbox"
204
- class="${this.shouldPulse ? 'pulse' : ''}"
205
- @click=${this.toggleCombox}
206
- @animationend=${() => { this.shouldPulse = false; }}
207
- >
208
- <div class="icon open">
209
- <sio-icon icon="message-square" size="28"></sio-icon>
210
- </div>
211
- <div class="icon close">
212
- <sio-icon icon="x" size="22"></sio-icon>
213
- </div>
214
- </div>
215
- <div id="comboxContainer" class="${this.showCombox ? 'show' : ''}">
216
- ${this.showCombox || this.hasShownOnce ? html `
217
- <sio-combox @close=${() => this.showCombox = false}></sio-combox>
218
- ` : ''}
219
- </div>
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
- * toggles the combox
224
- */
225
- async toggleCombox() {
226
- console.log('toggle combox');
227
- const wasOpen = this.showCombox;
228
- this.showCombox = !this.showCombox;
229
- if (this.showCombox) {
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
- async firstUpdated(args) {
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
- async updated(changedProperties) {
247
- super.updated(changedProperties);
248
- // Set reference object when combox is rendered
249
- if ((changedProperties.has('showCombox') || changedProperties.has('hasShownOnce')) &&
250
- (this.showCombox || this.hasShownOnce)) {
251
- const sioCombox = this.shadowRoot.querySelector('sio-combox');
252
- const mainBox = this.shadowRoot.querySelector('#mainbox');
253
- if (sioCombox && mainBox && !sioCombox.referenceObject) {
254
- sioCombox.referenceObject = mainBox;
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWZhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tZmFiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLElBQUksRUFDSixhQUFhLEVBRWIsVUFBVSxFQUNWLEdBQUcsR0FDSixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxRQUFRLE1BQU0sOEJBQThCLENBQUM7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BELFNBQVMsQ0FBQztBQUNWLE9BQU8sQ0FBQztBQUVSLHVCQUF1QjtBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVF4RCxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7QUFDekIsTUFBTSxPQUFPLE1BQU8sU0FBUSxXQUFXO0lBQ3JDLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLFFBQVEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5DLENBQUMsS0FBSyxFQUFFO0lBQ0EsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFdEMsQ0FBQyxLQUFLLEVBQUU7SUFDQSxRQUFRLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUU5QixNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxD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
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWZhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tZmFiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEdBRVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEtBQUssUUFBUSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxlQUFlLENBQUM7QUFDdkIsT0FBTyx1QkFBdUIsQ0FBQztBQUMvQixTQUFTLENBQUM7QUFRVjs7Ozs7Ozs7OztHQVVHO0lBRVUsTUFBTTs0QkFEbEIsYUFBYSxDQUFDLFNBQVMsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7O3NCQUFuQixTQUFRLFdBQVc7Ozs7c0NBSXBDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztrQ0FJM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBSDNCLG1MQUFnQixVQUFVLDZCQUFWLFVBQVUsK0ZBQVM7WUFJbkMsdUtBQWdCLE1BQU0sNkJBQU4sTUFBTSx1RkFBSztZQVQ3Qiw2S0FzTkM7Ozs7UUFyTlEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEscUJBQXFCLENBQUMsY0FBYyxDQUFDO1FBSXBFLGlGQUE2QixLQUFLLEVBQUM7UUFGbkMsK0RBQStEO1FBRS9ELElBQWdCLFVBQVUsZ0RBQVM7UUFBbkMsSUFBZ0IsVUFBVSxzREFBUztRQUluQyxrSUFBeUIsQ0FBQyxHQUFDO1FBRjNCLHdFQUF3RTtRQUV4RSxJQUFnQixNQUFNLDRDQUFLO1FBQTNCLElBQWdCLE1BQU0sa0RBQUs7UUFFM0I7WUFDRSxLQUFLLEVBQUUsQ0FBQztZQUNSLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUVNLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsR0FBRyxnQkFBZ0I7WUFDbkIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBdUdGO1lBQ0QsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUE7Ozs7O0tBSzNCLENBQUM7U0FDSCxDQUFDO1FBRUssTUFBTTtZQUNYLE9BQU8sSUFBSSxDQUFBOytEQUNnRCxJQUFJLENBQUMsWUFBWTs7Ozs7Ozs7OztpRUFVZixHQUFHOztVQUUxRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQTs7O3dCQUdRLElBQUksQ0FBQyxNQUFNOzs7O2FBSXRCO2dCQUNILENBQUMsQ0FBQyxFQUFFOztLQUVULENBQUM7UUFDSixDQUFDO1FBRUQ7O1dBRUc7UUFDSSxLQUFLLENBQUMsWUFBWTtZQUN2QixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO1FBRU8sa0JBQWtCLHdEQUFHLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDLEVBQUM7UUFDTSxTQUFTLEdBQXFCLElBQUksQ0FBQztRQUVwQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQStCO1lBQ3ZELEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUM7WUFFcEQsc0NBQXNDO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV4Qyw4RUFBOEU7WUFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUUxRCxxRUFBcUU7WUFDckUscUVBQXFFO1lBQ3JFLGlFQUFpRTtZQUNqRSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDM0MsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUN0RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyxvQkFBb0I7WUFDL0IsTUFBTSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBNEM7WUFDL0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRWpDLDREQUE0RDtZQUM1RCxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDOztZQXJOVSx1REFBTTs7Ozs7U0FBTixNQUFNIn0=
@@ -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
+ }