@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
@@ -0,0 +1,393 @@
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, css, customElement, html, property, } from '@design.estate/dees-element';
36
+ import { SioLogoRenderer, sioLogoAspect } from './sio-logo-render.js';
37
+ import { sioElementStyles } from './tokens.js';
38
+ /**
39
+ * The social.io faceted S brand mark from the v8 design prototype.
40
+ *
41
+ * The canvas renderer preserves the exact eight-facet geometry and supports
42
+ * entrance, hover-wave, dismiss, and loading animations. Motion is disabled
43
+ * when the visitor requests reduced motion.
44
+ */
45
+ let SioLogo = (() => {
46
+ let _classDecorators = [customElement('sio-logo')];
47
+ let _classDescriptor;
48
+ let _classExtraInitializers = [];
49
+ let _classThis;
50
+ let _classSuper = DeesElement;
51
+ let _size_decorators;
52
+ let _size_initializers = [];
53
+ let _size_extraInitializers = [];
54
+ let _background_decorators;
55
+ let _background_initializers = [];
56
+ let _background_extraInitializers = [];
57
+ let _gap_decorators;
58
+ let _gap_initializers = [];
59
+ let _gap_extraInitializers = [];
60
+ let _radius_decorators;
61
+ let _radius_initializers = [];
62
+ let _radius_extraInitializers = [];
63
+ let _square_decorators;
64
+ let _square_initializers = [];
65
+ let _square_extraInitializers = [];
66
+ let _mono_decorators;
67
+ let _mono_initializers = [];
68
+ let _mono_extraInitializers = [];
69
+ let _theme_decorators;
70
+ let _theme_initializers = [];
71
+ let _theme_extraInitializers = [];
72
+ let _loading_decorators;
73
+ let _loading_initializers = [];
74
+ let _loading_extraInitializers = [];
75
+ let _noEntrance_decorators;
76
+ let _noEntrance_initializers = [];
77
+ let _noEntrance_extraInitializers = [];
78
+ let _noHover_decorators;
79
+ let _noHover_initializers = [];
80
+ let _noHover_extraInitializers = [];
81
+ var SioLogo = class extends _classSuper {
82
+ static { _classThis = this; }
83
+ static {
84
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
85
+ _size_decorators = [property({ type: Number })];
86
+ _background_decorators = [property({ type: String })];
87
+ _gap_decorators = [property({ type: Number })];
88
+ _radius_decorators = [property({ type: Number })];
89
+ _square_decorators = [property({ type: Boolean })];
90
+ _mono_decorators = [property({ type: String })];
91
+ _theme_decorators = [property({ type: String })];
92
+ _loading_decorators = [property({ type: Boolean, reflect: true })];
93
+ _noEntrance_decorators = [property({ type: Boolean, attribute: 'no-entrance' })];
94
+ _noHover_decorators = [property({ type: Boolean, attribute: 'no-hover' })];
95
+ __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);
96
+ __esDecorate(this, null, _background_decorators, { kind: "accessor", name: "background", static: false, private: false, access: { has: obj => "background" in obj, get: obj => obj.background, set: (obj, value) => { obj.background = value; } }, metadata: _metadata }, _background_initializers, _background_extraInitializers);
97
+ __esDecorate(this, null, _gap_decorators, { kind: "accessor", name: "gap", static: false, private: false, access: { has: obj => "gap" in obj, get: obj => obj.gap, set: (obj, value) => { obj.gap = value; } }, metadata: _metadata }, _gap_initializers, _gap_extraInitializers);
98
+ __esDecorate(this, null, _radius_decorators, { kind: "accessor", name: "radius", static: false, private: false, access: { has: obj => "radius" in obj, get: obj => obj.radius, set: (obj, value) => { obj.radius = value; } }, metadata: _metadata }, _radius_initializers, _radius_extraInitializers);
99
+ __esDecorate(this, null, _square_decorators, { kind: "accessor", name: "square", static: false, private: false, access: { has: obj => "square" in obj, get: obj => obj.square, set: (obj, value) => { obj.square = value; } }, metadata: _metadata }, _square_initializers, _square_extraInitializers);
100
+ __esDecorate(this, null, _mono_decorators, { kind: "accessor", name: "mono", static: false, private: false, access: { has: obj => "mono" in obj, get: obj => obj.mono, set: (obj, value) => { obj.mono = value; } }, metadata: _metadata }, _mono_initializers, _mono_extraInitializers);
101
+ __esDecorate(this, null, _theme_decorators, { kind: "accessor", name: "theme", static: false, private: false, access: { has: obj => "theme" in obj, get: obj => obj.theme, set: (obj, value) => { obj.theme = value; } }, metadata: _metadata }, _theme_initializers, _theme_extraInitializers);
102
+ __esDecorate(this, null, _loading_decorators, { kind: "accessor", name: "loading", static: false, private: false, access: { has: obj => "loading" in obj, get: obj => obj.loading, set: (obj, value) => { obj.loading = value; } }, metadata: _metadata }, _loading_initializers, _loading_extraInitializers);
103
+ __esDecorate(this, null, _noEntrance_decorators, { kind: "accessor", name: "noEntrance", static: false, private: false, access: { has: obj => "noEntrance" in obj, get: obj => obj.noEntrance, set: (obj, value) => { obj.noEntrance = value; } }, metadata: _metadata }, _noEntrance_initializers, _noEntrance_extraInitializers);
104
+ __esDecorate(this, null, _noHover_decorators, { kind: "accessor", name: "noHover", static: false, private: false, access: { has: obj => "noHover" in obj, get: obj => obj.noHover, set: (obj, value) => { obj.noHover = value; } }, metadata: _metadata }, _noHover_initializers, _noHover_extraInitializers);
105
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
106
+ SioLogo = _classThis = _classDescriptor.value;
107
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
108
+ }
109
+ static demo = () => html `
110
+ <div style="display:flex;align-items:center;gap:32px;padding:24px;background:#101012;">
111
+ <sio-logo size="120" theme="dark"></sio-logo>
112
+ <sio-logo size="120" square background="#556270" radius="22" theme="dark"></sio-logo>
113
+ <sio-logo size="120" loading theme="dark"></sio-logo>
114
+ <sio-logo size="120" mono="#ffffff" no-entrance theme="dark"></sio-logo>
115
+ </div>
116
+ `;
117
+ #size_accessor_storage = __runInitializers(this, _size_initializers, 40);
118
+ /** rendered height in CSS pixels; tight-crop width follows the brand aspect */
119
+ get size() { return this.#size_accessor_storage; }
120
+ set size(value) { this.#size_accessor_storage = value; }
121
+ #background_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _background_initializers, 'transparent'));
122
+ get background() { return this.#background_accessor_storage; }
123
+ set background(value) { this.#background_accessor_storage = value; }
124
+ #gap_accessor_storage = (__runInitializers(this, _background_extraInitializers), __runInitializers(this, _gap_initializers, 2));
125
+ /** inward inset per facet, in 500px design-grid units */
126
+ get gap() { return this.#gap_accessor_storage; }
127
+ set gap(value) { this.#gap_accessor_storage = value; }
128
+ #radius_accessor_storage = (__runInitializers(this, _gap_extraInitializers), __runInitializers(this, _radius_initializers, 16));
129
+ /** facet corner radius, in 500px design-grid units */
130
+ get radius() { return this.#radius_accessor_storage; }
131
+ set radius(value) { this.#radius_accessor_storage = value; }
132
+ #square_accessor_storage = (__runInitializers(this, _radius_extraInitializers), __runInitializers(this, _square_initializers, false));
133
+ /** render on a square tile instead of the tight S crop */
134
+ get square() { return this.#square_accessor_storage; }
135
+ set square(value) { this.#square_accessor_storage = value; }
136
+ #mono_accessor_storage = (__runInitializers(this, _square_extraInitializers), __runInitializers(this, _mono_initializers, ''));
137
+ /** collapse the palette to one color while retaining facet depth */
138
+ get mono() { return this.#mono_accessor_storage; }
139
+ set mono(value) { this.#mono_accessor_storage = value; }
140
+ #theme_accessor_storage = (__runInitializers(this, _mono_extraInitializers), __runInitializers(this, _theme_initializers, 'auto'));
141
+ /** backdrop palette; auto follows the nearest opaque surface */
142
+ get theme() { return this.#theme_accessor_storage; }
143
+ set theme(value) { this.#theme_accessor_storage = value; }
144
+ #loading_accessor_storage = (__runInitializers(this, _theme_extraInitializers), __runInitializers(this, _loading_initializers, false));
145
+ get loading() { return this.#loading_accessor_storage; }
146
+ set loading(value) { this.#loading_accessor_storage = value; }
147
+ #noEntrance_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _noEntrance_initializers, false));
148
+ get noEntrance() { return this.#noEntrance_accessor_storage; }
149
+ set noEntrance(value) { this.#noEntrance_accessor_storage = value; }
150
+ #noHover_accessor_storage = (__runInitializers(this, _noEntrance_extraInitializers), __runInitializers(this, _noHover_initializers, false));
151
+ get noHover() { return this.#noHover_accessor_storage; }
152
+ set noHover(value) { this.#noHover_accessor_storage = value; }
153
+ static styles = [
154
+ ...sioElementStyles,
155
+ css `
156
+ :host {
157
+ display: inline-flex;
158
+ flex: none;
159
+ line-height: 0;
160
+ }
161
+ canvas {
162
+ display: block;
163
+ }
164
+ `,
165
+ ];
166
+ renderer = (__runInitializers(this, _noHover_extraInitializers), null);
167
+ themeObserver = null;
168
+ colorSchemeMedia = null;
169
+ reducedMotionMedia = null;
170
+ lastDevicePixelRatio = 0;
171
+ lifecycleGeneration = 0;
172
+ handlePointerEnter = () => {
173
+ if (!this.noHover && !this.loading && !this.prefersReducedMotion())
174
+ this.wave();
175
+ };
176
+ handleAmbientChange = () => {
177
+ this.syncRenderer(this.loading ? 'loading' : null);
178
+ };
179
+ handleReducedMotionChange = () => {
180
+ this.syncRenderer(this.loading ? 'loading' : null);
181
+ };
182
+ handleResize = () => {
183
+ const currentDevicePixelRatio = window.devicePixelRatio || 1;
184
+ if (currentDevicePixelRatio === this.lastDevicePixelRatio)
185
+ return;
186
+ this.syncRenderer(this.loading ? 'loading' : null);
187
+ };
188
+ async connectedCallback() {
189
+ const generation = ++this.lifecycleGeneration;
190
+ const connection = super.connectedCallback();
191
+ this.ensureAccessibleHost();
192
+ this.addEventListener('mouseenter', this.handlePointerEnter);
193
+ window.addEventListener('resize', this.handleResize);
194
+ this.observeReducedMotion();
195
+ await connection;
196
+ if (!this.isConnected || generation !== this.lifecycleGeneration)
197
+ return;
198
+ if (this.hasUpdated) {
199
+ this.observeAmbientTheme();
200
+ this.syncRenderer(this.loading ? 'loading' : null);
201
+ }
202
+ }
203
+ async disconnectedCallback() {
204
+ const generation = ++this.lifecycleGeneration;
205
+ this.cleanupOwnedResources();
206
+ await super.disconnectedCallback();
207
+ if (!this.isConnected && generation === this.lifecycleGeneration) {
208
+ this.cleanupOwnedResources();
209
+ }
210
+ }
211
+ cleanupOwnedResources() {
212
+ this.removeEventListener('mouseenter', this.handlePointerEnter);
213
+ window.removeEventListener('resize', this.handleResize);
214
+ this.stopAmbientThemeObservation();
215
+ this.stopReducedMotionObservation();
216
+ this.renderer?.stop();
217
+ }
218
+ render() {
219
+ const height = this.normalizedSize;
220
+ const width = this.square ? height : Math.round(height * sioLogoAspect);
221
+ return html `<canvas aria-hidden="true" style="width:${width}px;height:${height}px"></canvas>`;
222
+ }
223
+ firstUpdated(changedProperties) {
224
+ super.firstUpdated(changedProperties);
225
+ const canvas = this.shadowRoot?.querySelector('canvas');
226
+ const context = canvas?.getContext('2d');
227
+ if (!context)
228
+ return;
229
+ this.renderer = new SioLogoRenderer(context, this.getRendererOptions());
230
+ if (!this.isConnected) {
231
+ this.renderer.drawStatic();
232
+ return;
233
+ }
234
+ this.observeAmbientTheme();
235
+ if (this.loading && !this.prefersReducedMotion())
236
+ this.renderer.start('loading');
237
+ else if (!this.noEntrance && !this.prefersReducedMotion())
238
+ this.renderer.start('in');
239
+ else
240
+ this.renderer.drawStatic();
241
+ }
242
+ updated(changedProperties) {
243
+ if (!this.isConnected) {
244
+ this.stopAmbientThemeObservation();
245
+ this.renderer?.stop();
246
+ return;
247
+ }
248
+ const redrawProperties = [
249
+ 'size',
250
+ 'gap',
251
+ 'radius',
252
+ 'square',
253
+ 'background',
254
+ 'mono',
255
+ 'theme',
256
+ ];
257
+ if (redrawProperties.some((propertyName) => changedProperties.has(propertyName))) {
258
+ this.syncRenderer(this.loading ? 'loading' : null);
259
+ }
260
+ if (changedProperties.has('theme')) {
261
+ this.stopAmbientThemeObservation();
262
+ this.observeAmbientTheme();
263
+ }
264
+ if (changedProperties.has('loading')) {
265
+ this.syncRenderer(this.loading ? 'loading' : null);
266
+ }
267
+ }
268
+ themeChanged() {
269
+ this.syncRenderer(this.loading ? 'loading' : null);
270
+ }
271
+ play() {
272
+ if (!this.renderer || !this.isConnected)
273
+ return;
274
+ if (this.prefersReducedMotion())
275
+ this.renderer.drawStatic();
276
+ else
277
+ this.renderer.start('in');
278
+ }
279
+ wave() {
280
+ if (!this.renderer || !this.isConnected)
281
+ return;
282
+ if (this.prefersReducedMotion())
283
+ this.renderer.drawStatic();
284
+ else
285
+ this.renderer.start('wave');
286
+ }
287
+ dismiss() {
288
+ if (!this.renderer || !this.isConnected)
289
+ return;
290
+ if (this.prefersReducedMotion())
291
+ this.renderer.clear();
292
+ else
293
+ this.renderer.start('out');
294
+ }
295
+ get normalizedSize() {
296
+ return Number.isFinite(this.size) ? Math.max(1, this.size) : 40;
297
+ }
298
+ getRendererOptions() {
299
+ this.lastDevicePixelRatio = window.devicePixelRatio || 1;
300
+ return {
301
+ size: this.normalizedSize,
302
+ dpr: this.lastDevicePixelRatio,
303
+ gap: Number.isFinite(this.gap) ? Math.max(0, this.gap) : 2,
304
+ radius: Number.isFinite(this.radius) ? Math.max(0, this.radius) : 16,
305
+ square: this.square,
306
+ background: this.background,
307
+ mono: this.mono,
308
+ light: this.isLightBackdrop(),
309
+ };
310
+ }
311
+ syncRenderer(animation = null) {
312
+ if (!this.renderer)
313
+ return;
314
+ this.renderer.stop();
315
+ this.renderer.setOptions(this.getRendererOptions());
316
+ if (animation && this.isConnected && !this.prefersReducedMotion()) {
317
+ this.renderer.start(animation);
318
+ }
319
+ else
320
+ this.renderer.drawStatic();
321
+ }
322
+ prefersReducedMotion() {
323
+ return this.reducedMotionMedia?.matches ??
324
+ window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ??
325
+ false;
326
+ }
327
+ isLightBackdrop() {
328
+ if (this.theme === 'light')
329
+ return true;
330
+ if (this.theme === 'dark')
331
+ return false;
332
+ let element = this;
333
+ while (element) {
334
+ const color = getComputedStyle(element).backgroundColor;
335
+ const match = color.match(/rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)(?:\s*[,/]\s*([\d.]+))?\s*\)/);
336
+ if (match) {
337
+ const alpha = match[4] === undefined ? 1 : Number.parseFloat(match[4]);
338
+ if (alpha > 0.2) {
339
+ const luminance = (0.2126 * Number(match[1]) +
340
+ 0.7152 * Number(match[2]) +
341
+ 0.0722 * Number(match[3])) /
342
+ 255;
343
+ return luminance > 0.55;
344
+ }
345
+ }
346
+ const root = element.getRootNode();
347
+ element = element.parentElement || (root instanceof ShadowRoot ? root.host : null);
348
+ }
349
+ return window.matchMedia?.('(prefers-color-scheme: light)').matches ?? false;
350
+ }
351
+ observeAmbientTheme() {
352
+ if (this.theme !== 'auto' || this.themeObserver)
353
+ return;
354
+ this.themeObserver = new MutationObserver(this.handleAmbientChange);
355
+ this.themeObserver.observe(document.documentElement, {
356
+ attributes: true,
357
+ attributeFilter: ['data-sio-theme', 'data-theme', 'class', 'style'],
358
+ });
359
+ this.colorSchemeMedia = window.matchMedia?.('(prefers-color-scheme: light)') ?? null;
360
+ this.colorSchemeMedia?.addEventListener('change', this.handleAmbientChange);
361
+ }
362
+ stopAmbientThemeObservation() {
363
+ this.themeObserver?.disconnect();
364
+ this.themeObserver = null;
365
+ this.colorSchemeMedia?.removeEventListener('change', this.handleAmbientChange);
366
+ this.colorSchemeMedia = null;
367
+ }
368
+ observeReducedMotion() {
369
+ if (this.reducedMotionMedia)
370
+ return;
371
+ this.reducedMotionMedia = window.matchMedia?.('(prefers-reduced-motion: reduce)') ?? null;
372
+ this.reducedMotionMedia?.addEventListener('change', this.handleReducedMotionChange);
373
+ }
374
+ stopReducedMotionObservation() {
375
+ this.reducedMotionMedia?.removeEventListener('change', this.handleReducedMotionChange);
376
+ this.reducedMotionMedia = null;
377
+ }
378
+ ensureAccessibleHost() {
379
+ if (this.hasAttribute('aria-hidden'))
380
+ return;
381
+ if (!this.hasAttribute('role'))
382
+ this.setAttribute('role', 'img');
383
+ if (!this.hasAttribute('aria-label'))
384
+ this.setAttribute('aria-label', 'social.io');
385
+ }
386
+ static {
387
+ __runInitializers(_classThis, _classExtraInitializers);
388
+ }
389
+ };
390
+ return SioLogo = _classThis;
391
+ })();
392
+ export { SioLogo };
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWxvZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvc2lvLWxvZ28udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsR0FBRyxFQUNILGFBQWEsRUFDYixJQUFJLEVBQ0osUUFBUSxHQUVULE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFVL0M7Ozs7OztHQU1HO0lBRVUsT0FBTzs0QkFEbkIsYUFBYSxDQUFDLFVBQVUsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQUFuQixTQUFRLFdBQVc7Ozs7Z0NBV3JDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztzQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDOytCQUkxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7a0NBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztrQ0FJMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dDQUkzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7aUNBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7c0NBRzFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFB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
@@ -1,20 +1,41 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import { type TSioComposerVariant, type TSioComposerAccent } from './sio-composer.js';
2
3
  declare global {
3
4
  interface HTMLElementTagNameMap {
4
5
  'sio-message-input': SioMessageInput;
5
6
  }
6
7
  }
8
+ /**
9
+ * sio-message-input — the widget's composer row, a thin shell around
10
+ * sio-composer (v7 SocialIOWidget.jsx composer).
11
+ *
12
+ * Adds the widget-level concerns on top of the composer primitive:
13
+ * a hidden file input behind the composer's attach button, the
14
+ * email-capture variant for the away state, and the keyboard-visibility
15
+ * focus events the combox uses on phablet.
16
+ *
17
+ * Events (bubbles, composed):
18
+ * send-message { text, attachments: File[] }
19
+ * files-selected { files: File[] }
20
+ * input-focus / input-blur — phablet keyboard handling
21
+ */
7
22
  export declare class SioMessageInput extends DeesElement {
8
23
  static demo: () => TemplateResult<1>;
24
+ /** field placeholder; message variant defaults to "Write a message…", email to "you@email.com" */
9
25
  accessor placeholder: string;
10
26
  accessor disabled: boolean;
11
- private accessor messageText;
27
+ /** 'message' (default) or 'email' — the away-state email capture */
28
+ accessor variant: TSioComposerVariant;
29
+ /** send-button accent, forwarded to sio-composer */
30
+ accessor accent: TSioComposerAccent;
31
+ /** show the composer's attach "+" button (opens the file picker) */
32
+ accessor attach: boolean;
12
33
  private accessor pendingAttachments;
13
34
  static styles: import("@design.estate/dees-element").CSSResult[];
14
35
  render(): TemplateResult;
15
- private handleInput;
16
- private handleKeyDown;
17
- private sendMessage;
36
+ private handleComposerSend;
37
+ private handleFocus;
38
+ private handleBlur;
18
39
  private openFileSelector;
19
40
  private handleFileSelect;
20
41
  focus(): void;