@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.
Files changed (124) hide show
  1. package/.smartconfig.json +51 -0
  2. package/dist_bundle/bundle.js +5450 -3267
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/index.d.ts +20 -3
  5. package/dist_ts_web/elements/index.js +27 -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 +37 -0
  15. package/dist_ts_web/elements/sio-channel-rail.js +275 -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-message-input.d.ts +25 -4
  45. package/dist_ts_web/elements/sio-message-input.js +231 -226
  46. package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
  47. package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
  48. package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
  49. package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
  50. package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
  51. package/dist_ts_web/elements/sio-segmented.js +217 -0
  52. package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
  53. package/dist_ts_web/elements/sio-step-timeline.js +222 -0
  54. package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
  55. package/dist_ts_web/elements/sio-tab-bar.js +232 -0
  56. package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
  57. package/dist_ts_web/elements/sio-unread-badge.js +203 -0
  58. package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
  59. package/dist_ts_web/elements/sio-waveform.js +304 -0
  60. package/dist_ts_web/elements/tokens.d.ts +70 -0
  61. package/dist_ts_web/elements/tokens.js +277 -0
  62. package/dist_ts_web/pages/firstpage.d.ts +5 -0
  63. package/dist_ts_web/pages/firstpage.js +21 -2
  64. package/dist_ts_web/pages/mainpage.d.ts +6 -0
  65. package/dist_ts_web/pages/mainpage.js +111 -39
  66. package/{license → license.md} +3 -1
  67. package/package.json +23 -29
  68. package/readme.hints.md +81 -0
  69. package/readme.md +85 -151
  70. package/ts_web/00_commitinfo_data.ts +2 -2
  71. package/ts_web/elements/index.ts +30 -7
  72. package/ts_web/elements/sio-ai-card.ts +175 -0
  73. package/ts_web/elements/sio-avatar.ts +295 -0
  74. package/ts_web/elements/sio-bucket-header.ts +157 -0
  75. package/ts_web/elements/sio-button.ts +149 -127
  76. package/ts_web/elements/sio-channel-rail.ts +243 -0
  77. package/ts_web/elements/sio-chip.ts +134 -0
  78. package/ts_web/elements/sio-cmdk.ts +461 -0
  79. package/ts_web/elements/sio-combox.ts +327 -204
  80. package/ts_web/elements/sio-composer.ts +306 -0
  81. package/ts_web/elements/sio-conversation-selector.ts +350 -228
  82. package/ts_web/elements/sio-conversation-view.ts +573 -457
  83. package/ts_web/elements/sio-dropdown-menu.ts +112 -130
  84. package/ts_web/elements/sio-fab.ts +192 -227
  85. package/ts_web/elements/sio-glass-toolbar.ts +140 -0
  86. package/ts_web/elements/sio-icon.ts +147 -25
  87. package/ts_web/elements/sio-image-lightbox.ts +62 -64
  88. package/ts_web/elements/sio-inset-list.ts +140 -0
  89. package/ts_web/elements/sio-kbd.ts +80 -0
  90. package/ts_web/elements/sio-list-row.ts +393 -0
  91. package/ts_web/elements/sio-message-input.ts +142 -221
  92. package/ts_web/elements/sio-paper-thumb.ts +244 -0
  93. package/ts_web/elements/sio-pdf-viewer.ts +58 -60
  94. package/ts_web/elements/sio-segmented.ts +183 -0
  95. package/ts_web/elements/sio-step-timeline.ts +179 -0
  96. package/ts_web/elements/sio-tab-bar.ts +195 -0
  97. package/ts_web/elements/sio-unread-badge.ts +147 -0
  98. package/ts_web/elements/sio-waveform.ts +239 -0
  99. package/ts_web/elements/tokens.ts +297 -0
  100. package/ts_web/pages/firstpage.ts +20 -1
  101. package/ts_web/pages/mainpage.ts +111 -39
  102. package/dist_bundle/bundle.js.map +0 -7
  103. package/dist_ts_web/elements/00colors.d.ts +0 -108
  104. package/dist_ts_web/elements/00colors.js +0 -137
  105. package/dist_ts_web/elements/00fonts.d.ts +0 -60
  106. package/dist_ts_web/elements/00fonts.js +0 -129
  107. package/dist_ts_web/elements/00tokens.d.ts +0 -123
  108. package/dist_ts_web/elements/00tokens.js +0 -176
  109. package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
  110. package/dist_ts_web/elements/sio-conversation-list.js +0 -495
  111. package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
  112. package/dist_ts_web/elements/sio-recorder.js +0 -173
  113. package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
  114. package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
  115. package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
  116. package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
  117. package/dist_watch/bundle.js +0 -81694
  118. package/dist_watch/bundle.js.map +0 -7
  119. package/dist_watch/index.html +0 -25
  120. package/npmextra.json +0 -19
  121. package/ts_web/elements/00colors.ts +0 -164
  122. package/ts_web/elements/00fonts.ts +0 -145
  123. package/ts_web/elements/00tokens.ts +0 -197
  124. package/ts_web/elements/sio-recorder.ts +0 -213
@@ -0,0 +1,232 @@
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
+ /**
39
+ * The v7 channel set — All / Mail / Chats / Calls / Letters
40
+ * (prototype: SIO_CHANNELS in SocialIOData.jsx).
41
+ */
42
+ const defaultChannels = [
43
+ { id: 'all', label: 'All', color: 'var(--sio-blue)', icon: 'grid-2x2' },
44
+ { id: 'mail', label: 'Mail', color: 'var(--sio-ch-mail)', icon: 'mail' },
45
+ { id: 'chats', label: 'Chats', color: 'var(--sio-ch-chats)', icon: 'message-circle' },
46
+ { id: 'calls', label: 'Calls', color: 'var(--sio-ch-calls)', icon: 'phone' },
47
+ { id: 'letters', label: 'Letters', color: 'var(--sio-ch-letters)', icon: 'file-text' },
48
+ ];
49
+ const calendarChannel = {
50
+ id: 'calendar',
51
+ label: 'Calendar',
52
+ color: 'var(--sio-blue)',
53
+ icon: 'calendar',
54
+ };
55
+ /**
56
+ * sio-tab-bar — the mobile bottom channel switcher (v7 prototype:
57
+ * SIOTabBar in SocialIOChannels.jsx).
58
+ *
59
+ * A liquid-glass bar (blur 28px saturate 180%, 0.5px top hairline) with one
60
+ * flex-equal tab per channel: 22px icon over a 10.5px label. The active tab
61
+ * lights up in its channel color; 30px bottom padding clears the iOS home
62
+ * indicator. Selecting a tab dispatches `tab-change` with `{ id, channel }`
63
+ * (bubbles, composed).
64
+ */
65
+ let SioTabBar = (() => {
66
+ let _classDecorators = [customElement('sio-tab-bar')];
67
+ let _classDescriptor;
68
+ let _classExtraInitializers = [];
69
+ let _classThis;
70
+ let _classSuper = DeesElement;
71
+ let _channels_decorators;
72
+ let _channels_initializers = [];
73
+ let _channels_extraInitializers = [];
74
+ let _active_decorators;
75
+ let _active_initializers = [];
76
+ let _active_extraInitializers = [];
77
+ let _withCalendar_decorators;
78
+ let _withCalendar_initializers = [];
79
+ let _withCalendar_extraInitializers = [];
80
+ var SioTabBar = class extends _classSuper {
81
+ static { _classThis = this; }
82
+ static {
83
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
84
+ _channels_decorators = [property({ type: Array })];
85
+ _active_decorators = [property({ type: String })];
86
+ _withCalendar_decorators = [property({ type: Boolean })];
87
+ __esDecorate(this, null, _channels_decorators, { kind: "accessor", name: "channels", static: false, private: false, access: { has: obj => "channels" in obj, get: obj => obj.channels, set: (obj, value) => { obj.channels = value; } }, metadata: _metadata }, _channels_initializers, _channels_extraInitializers);
88
+ __esDecorate(this, null, _active_decorators, { kind: "accessor", name: "active", static: false, private: false, access: { has: obj => "active" in obj, get: obj => obj.active, set: (obj, value) => { obj.active = value; } }, metadata: _metadata }, _active_initializers, _active_extraInitializers);
89
+ __esDecorate(this, null, _withCalendar_decorators, { kind: "accessor", name: "withCalendar", static: false, private: false, access: { has: obj => "withCalendar" in obj, get: obj => obj.withCalendar, set: (obj, value) => { obj.withCalendar = value; } }, metadata: _metadata }, _withCalendar_initializers, _withCalendar_extraInitializers);
90
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
91
+ SioTabBar = _classThis = _classDescriptor.value;
92
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
93
+ }
94
+ static demo = () => html `
95
+ <div style="display: flex; flex-direction: column; gap: 24px; max-width: 390px; font-family: var(--sio-font-sf);">
96
+ <!-- Mail active -->
97
+ <div
98
+ style="border-radius: 20px; overflow: hidden; border: var(--sio-hairline) solid var(--sio-separator); background: var(--sio-bg);"
99
+ >
100
+ <div style="padding: 18px 16px 26px;">
101
+ <div style="font-size: 28px; font-weight: 700; letter-spacing: 0.36px; color: var(--sio-label);">Mail</div>
102
+ <div style="margin-top: 3px; font-size: 13px; color: var(--sio-label-3);">
103
+ 4 unread · Feed 12 · Paper 4 · People 3
104
+ </div>
105
+ </div>
106
+ <sio-tab-bar active="mail"></sio-tab-bar>
107
+ </div>
108
+
109
+ <!-- Chats active, with the optional Calendar tab -->
110
+ <div
111
+ style="border-radius: 20px; overflow: hidden; border: var(--sio-hairline) solid var(--sio-separator); background: var(--sio-bg);"
112
+ >
113
+ <div style="padding: 18px 16px 26px;">
114
+ <div style="font-size: 28px; font-weight: 700; letter-spacing: 0.36px; color: var(--sio-label);">Chats</div>
115
+ <div style="margin-top: 3px; font-size: 13px; color: var(--sio-label-3);">
116
+ 3 new · Lena is typing…
117
+ </div>
118
+ </div>
119
+ <sio-tab-bar active="chats" .withCalendar=${true}></sio-tab-bar>
120
+ </div>
121
+ </div>
122
+ `;
123
+ #channels_accessor_storage = __runInitializers(this, _channels_initializers, defaultChannels);
124
+ get channels() { return this.#channels_accessor_storage; }
125
+ set channels(value) { this.#channels_accessor_storage = value; }
126
+ #active_accessor_storage = (__runInitializers(this, _channels_extraInitializers), __runInitializers(this, _active_initializers, 'mail'));
127
+ get active() { return this.#active_accessor_storage; }
128
+ set active(value) { this.#active_accessor_storage = value; }
129
+ #withCalendar_accessor_storage = (__runInitializers(this, _active_extraInitializers), __runInitializers(this, _withCalendar_initializers, false));
130
+ get withCalendar() { return this.#withCalendar_accessor_storage; }
131
+ set withCalendar(value) { this.#withCalendar_accessor_storage = value; }
132
+ static styles = [
133
+ ...sioElementStyles,
134
+ css `
135
+ :host {
136
+ display: block;
137
+ }
138
+
139
+ /* toolbar glass, hairline on the top edge (the bar sits at the bottom) */
140
+ .bar {
141
+ display: flex;
142
+ padding: 8px 0 30px; /* 30px clears the iOS home indicator */
143
+ background: var(--sio-toolbar-glass-bg);
144
+ backdrop-filter: blur(28px) saturate(180%);
145
+ -webkit-backdrop-filter: blur(28px) saturate(180%);
146
+ border-top: var(--sio-hairline) solid var(--sio-separator);
147
+ }
148
+
149
+ .tab {
150
+ appearance: none;
151
+ border: none;
152
+ margin: 0;
153
+ padding: 0;
154
+ background: transparent;
155
+ flex: 1;
156
+ min-width: 0;
157
+ display: flex;
158
+ flex-direction: column;
159
+ align-items: center;
160
+ gap: 2px;
161
+ font-family: var(--sio-font-sf);
162
+ color: var(--sio-label-3);
163
+ cursor: pointer;
164
+ -webkit-tap-highlight-color: transparent;
165
+ transition: color 120ms ease;
166
+ }
167
+
168
+ .tab.active {
169
+ color: var(--_channel-color, var(--sio-tint));
170
+ }
171
+
172
+ .tab:focus-visible {
173
+ outline: 2px solid color-mix(in oklab, var(--sio-tint) 40%, transparent);
174
+ outline-offset: -2px;
175
+ border-radius: var(--sio-radius-sm);
176
+ }
177
+
178
+ .label {
179
+ font-size: 10.5px;
180
+ font-weight: 500;
181
+ letter-spacing: 0.02px;
182
+ line-height: 1.25;
183
+ white-space: nowrap;
184
+ }
185
+
186
+ .tab.active .label {
187
+ font-weight: 600;
188
+ }
189
+ `,
190
+ ];
191
+ render() {
192
+ const tabs = this.withCalendar ? [...this.channels, calendarChannel] : this.channels;
193
+ return html `
194
+ <nav class="bar" part="bar">
195
+ ${tabs.map((channel) => html `
196
+ <button
197
+ type="button"
198
+ class="tab ${channel.id === this.active ? 'active' : ''}"
199
+ style="--_channel-color: ${channel.color}"
200
+ aria-current=${channel.id === this.active ? 'page' : 'false'}
201
+ @click=${() => this.handleSelect(channel)}
202
+ >
203
+ <sio-icon icon=${channel.icon} size="22" .strokeWidth=${1.7}></sio-icon>
204
+ <span class="label">${channel.label}</span>
205
+ </button>
206
+ `)}
207
+ </nav>
208
+ `;
209
+ }
210
+ handleSelect(channel) {
211
+ if (channel.id === this.active) {
212
+ return;
213
+ }
214
+ this.active = channel.id;
215
+ this.dispatchEvent(new CustomEvent('tab-change', {
216
+ detail: { id: channel.id, channel },
217
+ bubbles: true,
218
+ composed: true,
219
+ }));
220
+ }
221
+ constructor() {
222
+ super(...arguments);
223
+ __runInitializers(this, _withCalendar_extraInitializers);
224
+ }
225
+ static {
226
+ __runInitializers(_classThis, _classExtraInitializers);
227
+ }
228
+ };
229
+ return SioTabBar = _classThis;
230
+ })();
231
+ export { SioTabBar };
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXRhYi1iYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvc2lvLXRhYi1iYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sZUFBZSxDQUFDO0FBb0J2Qjs7O0dBR0c7QUFDSCxNQUFNLGVBQWUsR0FBd0I7SUFDM0MsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7SUFDdkUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDeEUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtJQUNyRixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtJQUM1RSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtDQUN2RixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQXNCO0lBQ3pDLEVBQUUsRUFBRSxVQUFVO0lBQ2QsS0FBSyxFQUFFLFVBQVU7SUFDakIsS0FBSyxFQUFFLGlC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
@@ -0,0 +1,25 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import './sio-icon.js';
3
+ export type TSioUnreadBadgeChannel = 'tint' | 'mail' | 'chats' | 'calls' | 'letters' | 'alert';
4
+ export type TSioUnreadBadgeSize = 'md' | 'sm';
5
+ declare global {
6
+ interface HTMLElementTagNameMap {
7
+ 'sio-unread-badge': SioUnreadBadge;
8
+ }
9
+ }
10
+ /**
11
+ * sio-unread-badge — count pill on solid channel color (v7 chat list /
12
+ * channel rail / widget launcher). md: min-width 20, height 20, radius 10,
13
+ * 11.5/700 tabular white. sm (rails): 16px with 10px numerals.
14
+ * `ring` adds the 2px surface ring used when the pill sits on an icon.
15
+ */
16
+ export declare class SioUnreadBadge extends DeesElement {
17
+ static demo: () => TemplateResult<1>;
18
+ accessor count: number;
19
+ accessor channel: TSioUnreadBadgeChannel;
20
+ accessor size: TSioUnreadBadgeSize;
21
+ /** 2px surface ring — for pills sitting on rail icons */
22
+ accessor ring: boolean;
23
+ static styles: import("@design.estate/dees-element").CSSResult[];
24
+ render(): TemplateResult;
25
+ }
@@ -0,0 +1,203 @@
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'; // used by the static demo
38
+ const badgeColors = {
39
+ tint: 'var(--sio-tint)',
40
+ mail: 'var(--sio-ch-mail)',
41
+ chats: 'var(--sio-ch-chats)',
42
+ calls: 'var(--sio-ch-calls)',
43
+ letters: 'var(--sio-ch-letters)',
44
+ alert: 'var(--sio-red)',
45
+ };
46
+ /**
47
+ * sio-unread-badge — count pill on solid channel color (v7 chat list /
48
+ * channel rail / widget launcher). md: min-width 20, height 20, radius 10,
49
+ * 11.5/700 tabular white. sm (rails): 16px with 10px numerals.
50
+ * `ring` adds the 2px surface ring used when the pill sits on an icon.
51
+ */
52
+ let SioUnreadBadge = (() => {
53
+ let _classDecorators = [customElement('sio-unread-badge')];
54
+ let _classDescriptor;
55
+ let _classExtraInitializers = [];
56
+ let _classThis;
57
+ let _classSuper = DeesElement;
58
+ let _count_decorators;
59
+ let _count_initializers = [];
60
+ let _count_extraInitializers = [];
61
+ let _channel_decorators;
62
+ let _channel_initializers = [];
63
+ let _channel_extraInitializers = [];
64
+ let _size_decorators;
65
+ let _size_initializers = [];
66
+ let _size_extraInitializers = [];
67
+ let _ring_decorators;
68
+ let _ring_initializers = [];
69
+ let _ring_extraInitializers = [];
70
+ var SioUnreadBadge = class extends _classSuper {
71
+ static { _classThis = this; }
72
+ static {
73
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
74
+ _count_decorators = [property({ type: Number })];
75
+ _channel_decorators = [property({ type: String })];
76
+ _size_decorators = [property({ type: String })];
77
+ _ring_decorators = [property({ type: Boolean })];
78
+ __esDecorate(this, null, _count_decorators, { kind: "accessor", name: "count", static: false, private: false, access: { has: obj => "count" in obj, get: obj => obj.count, set: (obj, value) => { obj.count = value; } }, metadata: _metadata }, _count_initializers, _count_extraInitializers);
79
+ __esDecorate(this, null, _channel_decorators, { kind: "accessor", name: "channel", static: false, private: false, access: { has: obj => "channel" in obj, get: obj => obj.channel, set: (obj, value) => { obj.channel = value; } }, metadata: _metadata }, _channel_initializers, _channel_extraInitializers);
80
+ __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);
81
+ __esDecorate(this, null, _ring_decorators, { kind: "accessor", name: "ring", static: false, private: false, access: { has: obj => "ring" in obj, get: obj => obj.ring, set: (obj, value) => { obj.ring = value; } }, metadata: _metadata }, _ring_initializers, _ring_extraInitializers);
82
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
83
+ SioUnreadBadge = _classThis = _classDescriptor.value;
84
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
85
+ }
86
+ static demo = () => html `
87
+ <div style="display: flex; flex-direction: column; gap: 16px;">
88
+ <div style="display: flex; gap: 10px; align-items: center;">
89
+ <sio-unread-badge count="3" channel="chats"></sio-unread-badge>
90
+ <sio-unread-badge count="12" channel="mail"></sio-unread-badge>
91
+ <sio-unread-badge count="1" channel="calls"></sio-unread-badge>
92
+ <sio-unread-badge count="2" channel="letters"></sio-unread-badge>
93
+ <sio-unread-badge count="4"></sio-unread-badge>
94
+ <sio-unread-badge count="1" channel="alert"></sio-unread-badge>
95
+ </div>
96
+ <div style="display: flex; gap: 10px; align-items: center;">
97
+ <sio-unread-badge count="3" channel="chats" size="sm"></sio-unread-badge>
98
+ <sio-unread-badge count="12" channel="mail" size="sm"></sio-unread-badge>
99
+ <sio-unread-badge count="5" channel="calls" size="sm" ring></sio-unread-badge>
100
+ </div>
101
+ <div style="display: flex; gap: 22px; align-items: center;">
102
+ <span style="position: relative; display: inline-flex;">
103
+ <sio-icon icon="envelope" size="20" style="color: var(--sio-ch-mail);"></sio-icon>
104
+ <sio-unread-badge
105
+ count="3"
106
+ channel="mail"
107
+ size="sm"
108
+ ring
109
+ style="position: absolute; top: -5px; right: -9px;"
110
+ ></sio-unread-badge>
111
+ </span>
112
+ <span style="position: relative; display: inline-flex;">
113
+ <sio-icon icon="message-circle" size="20" style="color: var(--sio-ch-chats);"></sio-icon>
114
+ <sio-unread-badge
115
+ count="7"
116
+ channel="chats"
117
+ size="sm"
118
+ ring
119
+ style="position: absolute; top: -5px; right: -9px;"
120
+ ></sio-unread-badge>
121
+ </span>
122
+ </div>
123
+ </div>
124
+ `;
125
+ #count_accessor_storage = __runInitializers(this, _count_initializers, 0);
126
+ get count() { return this.#count_accessor_storage; }
127
+ set count(value) { this.#count_accessor_storage = value; }
128
+ #channel_accessor_storage = (__runInitializers(this, _count_extraInitializers), __runInitializers(this, _channel_initializers, 'tint'));
129
+ get channel() { return this.#channel_accessor_storage; }
130
+ set channel(value) { this.#channel_accessor_storage = value; }
131
+ #size_accessor_storage = (__runInitializers(this, _channel_extraInitializers), __runInitializers(this, _size_initializers, 'md'));
132
+ get size() { return this.#size_accessor_storage; }
133
+ set size(value) { this.#size_accessor_storage = value; }
134
+ #ring_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _ring_initializers, false));
135
+ /** 2px surface ring — for pills sitting on rail icons */
136
+ get ring() { return this.#ring_accessor_storage; }
137
+ set ring(value) { this.#ring_accessor_storage = value; }
138
+ static styles = [
139
+ ...sioElementStyles,
140
+ css `
141
+ :host {
142
+ display: inline-flex;
143
+ flex-shrink: 0;
144
+ }
145
+
146
+ .badge {
147
+ box-sizing: border-box;
148
+ display: inline-flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ min-width: 20px;
152
+ height: 20px;
153
+ padding: 0 6px;
154
+ border-radius: 10px;
155
+ background: var(--badge-color);
156
+ color: #fff; /* white numerals on solid channel color per v7 */
157
+ font-family: var(--sio-font-sf);
158
+ font-size: 11.5px;
159
+ font-weight: 700;
160
+ font-variant-numeric: tabular-nums;
161
+ line-height: 1;
162
+ white-space: nowrap;
163
+ user-select: none;
164
+ }
165
+
166
+ .badge.sm {
167
+ min-width: 16px;
168
+ height: 16px;
169
+ padding: 0 5px;
170
+ border-radius: 8px;
171
+ font-size: 10px;
172
+ }
173
+
174
+ .badge.ring {
175
+ box-shadow: 0 0 0 2px var(--sio-surface);
176
+ }
177
+ `,
178
+ ];
179
+ render() {
180
+ if (this.count <= 0) {
181
+ return html ``;
182
+ }
183
+ return html `
184
+ <span
185
+ class="badge ${this.size === 'sm' ? 'sm' : ''} ${this.ring ? 'ring' : ''}"
186
+ style="--badge-color: ${badgeColors[this.channel] || badgeColors.tint};"
187
+ >
188
+ ${this.count}
189
+ </span>
190
+ `;
191
+ }
192
+ constructor() {
193
+ super(...arguments);
194
+ __runInitializers(this, _ring_extraInitializers);
195
+ }
196
+ static {
197
+ __runInitializers(_classThis, _classExtraInitializers);
198
+ }
199
+ };
200
+ return SioUnreadBadge = _classThis;
201
+ })();
202
+ export { SioUnreadBadge };
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXVucmVhZC1iYWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tdW5yZWFkLWJhZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsR0FFSixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGVBQWUsQ0FBQyxDQUFDLDBCQUEwQjtBQVdsRCxNQUFNLFdBQVcsR0FBMkM7SUFDMUQsSUFBSSxFQUFFLGlCQUFpQjtJQUN2QixJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixPQUFPLEVBQUUsdUJBQXVCO0lBQ2hDLEtBQUssRUFBRSxnQkFBZ0I7Q0FDeEIsQ0FBQztBQUVGOzs7OztHQUtHO0lBRVUsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7OEJBQW5CLFNBQVEsV0FBVzs7OztpQ0F5QzVDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQVQ1QixvS0FBZ0IsS0FBSyw2QkFBTCxLQUFLLHFGQUFLO1lBRzFCLDBLQUFnQixPQUFPLDZCQUFQLE9BQU8seUZBQWtDO1lBR3pELGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQTZCO1lBSWpELGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQVM7WUFwRC9CLDZLQTZHQzs7OztRQTVHUSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQzlCLENBQUM7UUFHRix1RUFBd0IsQ0FBQyxFQUFDO1FBQTFCLElBQWdCLEtBQUssMkNBQUs7UUFBMUIsSUFBZ0IsS0FBSyxpREFBSztRQUcxQiwrSEFBa0QsTUFBTSxHQUFDO1FBQXpELElBQWdCLE9BQU8sNkNBQWtDO1FBQXpELElBQWdCLE9BQU8sbURBQWtDO1FBR3pELDJIQUE0QyxJQUFJLEdBQUM7UUFBakQsSUFBZ0IsSUFBSSwwQ0FBNkI7UUFBakQsSUFBZ0IsSUFBSSxnREFBNkI7UUFJakQsd0hBQXVCLEtBQUssR0FBQztRQUY3Qix5REFBeUQ7UUFFekQsSUFBZ0IsSUFBSSwwQ0FBUztRQUE3QixJQUFnQixJQUFJLGdEQUFTO1FBRXRCLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsR0FBRyxnQkFBZ0I7WUFDbkIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUNGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFBLEVBQUUsQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7O3VCQUVRLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2hELFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUk7O1VBRW5FLElBQUksQ0FBQyxLQUFLOztLQUVmLENBQUM7UUFDSixDQUFDOzs7Ozs7WUE1R1UsdURBQWM7Ozs7O1NBQWQsY0FBYyJ9
@@ -0,0 +1,34 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'sio-waveform': SioWaveform;
5
+ }
6
+ }
7
+ /**
8
+ * sio-waveform — v7 voicemail / voice-message player.
9
+ *
10
+ * A surface card with a round play/pause control, a deterministic bar-chart
11
+ * waveform (played bars in the channel color, the rest in systemGray @ 45%
12
+ * per the v7 spec) and tabular elapsed / -remaining counters.
13
+ *
14
+ * Clicking the waveform dispatches `seek` ({ progress }); the play control
15
+ * toggles and dispatches `play` / `pause` ({ progress }).
16
+ */
17
+ export declare class SioWaveform extends DeesElement {
18
+ static demo: () => TemplateResult<1>;
19
+ /** Number of waveform bars (the v7 voicemail player draws 50). */
20
+ accessor bars: number;
21
+ /** Playback position, 0–1. Played bars take the channel color. */
22
+ accessor progress: number;
23
+ /** Accent for played bars + play control. Any CSS color, defaults to the calls channel. */
24
+ accessor color: string;
25
+ /** Elapsed counter, e.g. "0:28". */
26
+ accessor elapsed: string;
27
+ /** Remaining counter, e.g. "-1:19". */
28
+ accessor remaining: string;
29
+ accessor playing: boolean;
30
+ static styles: import("@design.estate/dees-element").CSSResult[];
31
+ render(): TemplateResult;
32
+ private handlePlayToggle;
33
+ private handleSeek;
34
+ }