@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,275 @@
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
+ /**
50
+ * sio-channel-rail — the 64px channel column at the very left of the
51
+ * desktop window (v7 prototype: SIOChannelRail in
52
+ * SocialIODesktopChannels.jsx).
53
+ *
54
+ * Each item stacks an 18px icon over a 10px label; the active item gets a
55
+ * rounded-10 chip and its channel color, and every item can carry an unread
56
+ * badge (channel-colored pill at top -5 / right -9 with a 2px ring cut out
57
+ * of the rail). Selecting a channel dispatches `channel-select` with
58
+ * `{ id, channel }` (bubbles, composed).
59
+ */
60
+ let SioChannelRail = (() => {
61
+ let _classDecorators = [customElement('sio-channel-rail')];
62
+ let _classDescriptor;
63
+ let _classExtraInitializers = [];
64
+ let _classThis;
65
+ let _classSuper = DeesElement;
66
+ let _channels_decorators;
67
+ let _channels_initializers = [];
68
+ let _channels_extraInitializers = [];
69
+ let _active_decorators;
70
+ let _active_initializers = [];
71
+ let _active_extraInitializers = [];
72
+ var SioChannelRail = class extends _classSuper {
73
+ static { _classThis = this; }
74
+ static {
75
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
76
+ _channels_decorators = [property({ type: Array })];
77
+ _active_decorators = [property({ type: String })];
78
+ __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);
79
+ __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);
80
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
81
+ SioChannelRail = _classThis = _classDescriptor.value;
82
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
83
+ }
84
+ static demo = () => html `
85
+ <div style="display: flex; gap: 24px; font-family: var(--sio-font-sf);">
86
+ <!-- busy morning: unreads on every channel -->
87
+ <div
88
+ style="display: flex; height: 340px; border-radius: 12px; overflow: hidden; border: var(--sio-hairline) solid var(--sio-separator);"
89
+ >
90
+ <sio-channel-rail
91
+ active="mail"
92
+ .channels=${[
93
+ { id: 'all', label: 'All', color: 'var(--sio-blue)', icon: 'grid-2x2', unread: 3 },
94
+ { id: 'mail', label: 'Mail', color: 'var(--sio-ch-mail)', icon: 'mail', unread: 4 },
95
+ { id: 'chats', label: 'Chats', color: 'var(--sio-ch-chats)', icon: 'message-circle', unread: 7 },
96
+ { id: 'calls', label: 'Calls', color: 'var(--sio-ch-calls)', icon: 'phone', unread: 1 },
97
+ { id: 'letters', label: 'Letters', color: 'var(--sio-ch-letters)', icon: 'file-text', unread: 2 },
98
+ ]}
99
+ ></sio-channel-rail>
100
+ <div style="width: 210px; background: var(--sio-surface); padding: 14px 16px;">
101
+ <div style="font-size: 13px; font-weight: 600; color: var(--sio-label);">Inbox</div>
102
+ <div style="margin-top: 2px; font-size: 11px; color: var(--sio-label-3);">
103
+ 4 unread · Feed 12 · Paper 4
104
+ </div>
105
+ </div>
106
+ </div>
107
+
108
+ <!-- Letters active, all clear -->
109
+ <div
110
+ style="display: flex; height: 340px; border-radius: 12px; overflow: hidden; border: var(--sio-hairline) solid var(--sio-separator);"
111
+ >
112
+ <sio-channel-rail active="letters"></sio-channel-rail>
113
+ <div style="width: 210px; background: var(--sio-surface); padding: 14px 16px;">
114
+ <div style="font-size: 13px; font-weight: 600; color: var(--sio-label);">Letters</div>
115
+ <div style="margin-top: 2px; font-size: 11px; color: var(--sio-label-3);">
116
+ Scan station online · 1 queued
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ `;
122
+ #channels_accessor_storage = __runInitializers(this, _channels_initializers, defaultChannels);
123
+ get channels() { return this.#channels_accessor_storage; }
124
+ set channels(value) { this.#channels_accessor_storage = value; }
125
+ #active_accessor_storage = (__runInitializers(this, _channels_extraInitializers), __runInitializers(this, _active_initializers, 'mail'));
126
+ get active() { return this.#active_accessor_storage; }
127
+ set active(value) { this.#active_accessor_storage = value; }
128
+ static styles = [
129
+ ...sioElementStyles,
130
+ css `
131
+ :host {
132
+ display: block;
133
+ height: 100%;
134
+ }
135
+
136
+ /* Rail chrome: the systemGray fill composited over the canvas —
137
+ #E8E8EC light / #1C1C1F dark, matching the design's #EDEDEE/#17171A
138
+ from tokens alone. */
139
+ .rail {
140
+ width: 64px;
141
+ height: 100%;
142
+ box-sizing: border-box;
143
+ display: flex;
144
+ flex-direction: column;
145
+ align-items: stretch;
146
+ gap: 2px;
147
+ padding: 10px 8px;
148
+ background-color: var(--sio-bg);
149
+ background-image: linear-gradient(var(--sio-surface-2), var(--sio-surface-2));
150
+ border-right: var(--sio-hairline) solid var(--sio-separator);
151
+ }
152
+
153
+ .item {
154
+ appearance: none;
155
+ border: none;
156
+ margin: 0;
157
+ position: relative;
158
+ padding: 8px 0;
159
+ border-radius: var(--sio-radius);
160
+ background: transparent;
161
+ display: flex;
162
+ flex-direction: column;
163
+ align-items: center;
164
+ gap: 3px;
165
+ font-family: var(--sio-font-sf);
166
+ cursor: pointer;
167
+ -webkit-tap-highlight-color: transparent;
168
+ transition: background 120ms ease, color 120ms ease;
169
+ }
170
+
171
+ .item.active {
172
+ background: color-mix(in oklab, var(--sio-label) 5%, transparent);
173
+ }
174
+
175
+ .item:focus-visible {
176
+ outline: 2px solid color-mix(in oklab, var(--sio-tint) 40%, transparent);
177
+ outline-offset: -2px;
178
+ }
179
+
180
+ .glyph {
181
+ position: relative;
182
+ display: flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ color: var(--sio-label-3);
186
+ }
187
+
188
+ .item.active .glyph {
189
+ color: var(--_channel-color, var(--sio-tint));
190
+ }
191
+
192
+ .badge {
193
+ position: absolute;
194
+ top: -5px;
195
+ right: -9px;
196
+ min-width: 15px;
197
+ height: 15px;
198
+ padding: 0 4px;
199
+ box-sizing: border-box;
200
+ border-radius: 8px;
201
+ background: var(--_channel-color, var(--sio-tint));
202
+ /* fixed foreground on the theme-stable channel palette */
203
+ color: #ffffff;
204
+ font-size: 10px;
205
+ font-weight: 700;
206
+ font-variant-numeric: tabular-nums;
207
+ display: flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ line-height: 1;
211
+ /* 2px ring in the rail's own chrome tone */
212
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--sio-label) 8%, var(--sio-bg));
213
+ }
214
+
215
+ .label {
216
+ font-size: 10px;
217
+ font-weight: 500;
218
+ letter-spacing: 0.02px;
219
+ line-height: 1.25;
220
+ color: var(--sio-label-2);
221
+ white-space: nowrap;
222
+ }
223
+
224
+ .item.active .label {
225
+ font-weight: 600;
226
+ color: var(--sio-label);
227
+ }
228
+ `,
229
+ ];
230
+ render() {
231
+ return html `
232
+ <nav class="rail" part="rail">
233
+ ${this.channels.map((channel) => html `
234
+ <button
235
+ type="button"
236
+ class="item ${channel.id === this.active ? 'active' : ''}"
237
+ style="--_channel-color: ${channel.color}"
238
+ aria-current=${channel.id === this.active ? 'page' : 'false'}
239
+ @click=${() => this.handleSelect(channel)}
240
+ >
241
+ <span class="glyph">
242
+ <sio-icon icon=${channel.icon} size="18" .strokeWidth=${1.7}></sio-icon>
243
+ ${channel.unread
244
+ ? html `<span class="badge">${channel.unread}</span>`
245
+ : html ``}
246
+ </span>
247
+ <span class="label">${channel.label}</span>
248
+ </button>
249
+ `)}
250
+ </nav>
251
+ `;
252
+ }
253
+ handleSelect(channel) {
254
+ if (channel.id === this.active) {
255
+ return;
256
+ }
257
+ this.active = channel.id;
258
+ this.dispatchEvent(new CustomEvent('channel-select', {
259
+ detail: { id: channel.id, channel },
260
+ bubbles: true,
261
+ composed: true,
262
+ }));
263
+ }
264
+ constructor() {
265
+ super(...arguments);
266
+ __runInitializers(this, _active_extraInitializers);
267
+ }
268
+ static {
269
+ __runInitializers(_classThis, _classExtraInitializers);
270
+ }
271
+ };
272
+ return SioChannelRail = _classThis;
273
+ })();
274
+ export { SioChannelRail };
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWNoYW5uZWwtcmFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tY2hhbm5lbC1yYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsR0FFSixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGVBQWUsQ0FBQztBQXFCdkI7OztHQUdHO0FBQ0gsTUFBTSxlQUFlLEdBQTBCO0lBQzdDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ3ZFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3hFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7SUFDckYsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDNUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Q0FDdkYsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7SUFFVSxjQUFjOzRCQUQxQixhQUFhLENBQUMsa0JBQWtCLENBQUM7Ozs7c0JBQ0UsV0FB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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 TSioChipVariant = 'channel' | 'lane' | 'status' | 'generic';
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'sio-chip': SioChip;
7
+ }
8
+ }
9
+ /**
10
+ * sio-chip — uppercase 11px/600 label on a 14% color-mix tint of the
11
+ * palette color (v7 `.sio-lane-chip` and the channel chips in list rows).
12
+ */
13
+ export declare class SioChip extends DeesElement {
14
+ static demo: () => TemplateResult<1>;
15
+ accessor variant: TSioChipVariant;
16
+ /** palette key within the variant, e.g. "mail", "feed", "now" */
17
+ accessor value: string;
18
+ /** custom CSS color for variant="generic"; defaults to the system tint */
19
+ accessor color: string;
20
+ /** optional leading glyph (sio-icon name) */
21
+ accessor icon: string;
22
+ static styles: import("@design.estate/dees-element").CSSResult[];
23
+ private get resolvedColor();
24
+ render(): TemplateResult;
25
+ }
@@ -0,0 +1,188 @@
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
+ * variant:value → palette token.
40
+ * channel mail | chats | calls | letters
41
+ * lane feed | paper | people
42
+ * status now | today | later | done (unified-feed triage buckets)
43
+ */
44
+ const chipPalette = {
45
+ 'channel:mail': 'var(--sio-ch-mail)',
46
+ 'channel:chats': 'var(--sio-ch-chats)',
47
+ 'channel:calls': 'var(--sio-ch-calls)',
48
+ 'channel:letters': 'var(--sio-ch-letters)',
49
+ 'lane:feed': 'var(--sio-lane-feed)',
50
+ 'lane:paper': 'var(--sio-lane-paper)',
51
+ 'lane:people': 'var(--sio-lane-people)',
52
+ 'status:now': 'var(--sio-bucket-now)',
53
+ 'status:today': 'var(--sio-bucket-today)',
54
+ 'status:later': 'var(--sio-bucket-later)',
55
+ 'status:done': 'var(--sio-bucket-done)',
56
+ };
57
+ /**
58
+ * sio-chip — uppercase 11px/600 label on a 14% color-mix tint of the
59
+ * palette color (v7 `.sio-lane-chip` and the channel chips in list rows).
60
+ */
61
+ let SioChip = (() => {
62
+ let _classDecorators = [customElement('sio-chip')];
63
+ let _classDescriptor;
64
+ let _classExtraInitializers = [];
65
+ let _classThis;
66
+ let _classSuper = DeesElement;
67
+ let _variant_decorators;
68
+ let _variant_initializers = [];
69
+ let _variant_extraInitializers = [];
70
+ let _value_decorators;
71
+ let _value_initializers = [];
72
+ let _value_extraInitializers = [];
73
+ let _color_decorators;
74
+ let _color_initializers = [];
75
+ let _color_extraInitializers = [];
76
+ let _icon_decorators;
77
+ let _icon_initializers = [];
78
+ let _icon_extraInitializers = [];
79
+ var SioChip = class extends _classSuper {
80
+ static { _classThis = this; }
81
+ static {
82
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
83
+ _variant_decorators = [property({ type: String })];
84
+ _value_decorators = [property({ type: String })];
85
+ _color_decorators = [property({ type: String })];
86
+ _icon_decorators = [property({ type: String })];
87
+ __esDecorate(this, null, _variant_decorators, { kind: "accessor", name: "variant", static: false, private: false, access: { has: obj => "variant" in obj, get: obj => obj.variant, set: (obj, value) => { obj.variant = value; } }, metadata: _metadata }, _variant_initializers, _variant_extraInitializers);
88
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
89
+ __esDecorate(this, null, _color_decorators, { kind: "accessor", name: "color", static: false, private: false, access: { has: obj => "color" in obj, get: obj => obj.color, set: (obj, value) => { obj.color = value; } }, metadata: _metadata }, _color_initializers, _color_extraInitializers);
90
+ __esDecorate(this, null, _icon_decorators, { kind: "accessor", name: "icon", static: false, private: false, access: { has: obj => "icon" in obj, get: obj => obj.icon, set: (obj, value) => { obj.icon = value; } }, metadata: _metadata }, _icon_initializers, _icon_extraInitializers);
91
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
92
+ SioChip = _classThis = _classDescriptor.value;
93
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
94
+ }
95
+ static demo = () => html `
96
+ <div style="display: flex; flex-direction: column; gap: 14px;">
97
+ <div style="display: flex; gap: 8px; flex-wrap: wrap; align-items: center;">
98
+ <sio-chip variant="channel" value="mail" icon="envelope">Mail</sio-chip>
99
+ <sio-chip variant="channel" value="chats" icon="message-circle">Chat</sio-chip>
100
+ <sio-chip variant="channel" value="calls" icon="phone">Call</sio-chip>
101
+ <sio-chip variant="channel" value="letters" icon="file-text">Letter</sio-chip>
102
+ </div>
103
+ <div style="display: flex; gap: 8px; flex-wrap: wrap; align-items: center;">
104
+ <sio-chip variant="lane" value="feed">Feed</sio-chip>
105
+ <sio-chip variant="lane" value="paper">Paper trail</sio-chip>
106
+ <sio-chip variant="lane" value="people">People</sio-chip>
107
+ </div>
108
+ <div style="display: flex; gap: 8px; flex-wrap: wrap; align-items: center;">
109
+ <sio-chip variant="status" value="now">Now</sio-chip>
110
+ <sio-chip variant="status" value="today">Today</sio-chip>
111
+ <sio-chip variant="status" value="later">Later</sio-chip>
112
+ <sio-chip variant="status" value="done">Done</sio-chip>
113
+ </div>
114
+ <div style="display: flex; gap: 8px; flex-wrap: wrap; align-items: center;">
115
+ <sio-chip icon="sparkles">AI summary</sio-chip>
116
+ <sio-chip color="var(--sio-ch-letters)">Suggested</sio-chip>
117
+ </div>
118
+ </div>
119
+ `;
120
+ #variant_accessor_storage = __runInitializers(this, _variant_initializers, 'generic');
121
+ get variant() { return this.#variant_accessor_storage; }
122
+ set variant(value) { this.#variant_accessor_storage = value; }
123
+ #value_accessor_storage = (__runInitializers(this, _variant_extraInitializers), __runInitializers(this, _value_initializers, ''));
124
+ /** palette key within the variant, e.g. "mail", "feed", "now" */
125
+ get value() { return this.#value_accessor_storage; }
126
+ set value(value) { this.#value_accessor_storage = value; }
127
+ #color_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _color_initializers, ''));
128
+ /** custom CSS color for variant="generic"; defaults to the system tint */
129
+ get color() { return this.#color_accessor_storage; }
130
+ set color(value) { this.#color_accessor_storage = value; }
131
+ #icon_accessor_storage = (__runInitializers(this, _color_extraInitializers), __runInitializers(this, _icon_initializers, ''));
132
+ /** optional leading glyph (sio-icon name) */
133
+ get icon() { return this.#icon_accessor_storage; }
134
+ set icon(value) { this.#icon_accessor_storage = value; }
135
+ static styles = [
136
+ ...sioElementStyles,
137
+ css `
138
+ :host {
139
+ display: inline-flex;
140
+ flex-shrink: 0;
141
+ }
142
+
143
+ /* v7 .sio-lane-chip */
144
+ .chip {
145
+ display: inline-flex;
146
+ align-items: center;
147
+ gap: 6px;
148
+ padding: 3px 9px;
149
+ border-radius: var(--sio-radius-sm);
150
+ background: color-mix(in oklab, var(--chip-color) 14%, transparent);
151
+ color: var(--chip-color);
152
+ font-family: var(--sio-font-sf);
153
+ font-size: 11px;
154
+ font-weight: 600;
155
+ letter-spacing: 0.04em;
156
+ text-transform: uppercase;
157
+ white-space: nowrap;
158
+ user-select: none;
159
+ }
160
+
161
+ sio-icon {
162
+ flex: 0 0 auto;
163
+ }
164
+ `,
165
+ ];
166
+ get resolvedColor() {
167
+ return (chipPalette[`${this.variant}:${this.value}`] || this.color || 'var(--sio-tint)');
168
+ }
169
+ render() {
170
+ return html `
171
+ <span class="chip" style="--chip-color: ${this.resolvedColor};">
172
+ ${this.icon ? html `<sio-icon icon=${this.icon} size="10"></sio-icon>` : ''}
173
+ <slot></slot>
174
+ </span>
175
+ `;
176
+ }
177
+ constructor() {
178
+ super(...arguments);
179
+ __runInitializers(this, _icon_extraInitializers);
180
+ }
181
+ static {
182
+ __runInitializers(_classThis, _classExtraInitializers);
183
+ }
184
+ };
185
+ return SioChip = _classThis;
186
+ })();
187
+ export { SioChip };
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvc2lvLWNoaXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sZUFBZSxDQUFDO0FBVXZCOzs7OztHQUtHO0FBQ0gsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLGNBQWMsRUFBRSxvQkFBb0I7SUFDcEMsZUFBZSxFQUFFLHFCQUFxQjtJQUN0QyxlQUFlLEVBQUUscUJBQXFCO0lBQ3RDLGlCQUFpQixFQUFFLHVCQUF1QjtJQUMxQyxXQUFXLEVBQUUsc0JBQXNCO0lBQ25DLFlBQVksRUFBRSx1QkFBdUI7SUFDckMsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxZQUFZLEVBQUUsdUJBQXVCO0lBQ3JDLGNBQWMsRUFBRSx5QkFBeUI7SUFDekMsY0FBYyxFQUFFLHlCQUF5QjtJQUN6QyxhQUFhLEVBQUUsd0JBQXdCO0NBQ3hDLENBQUM7QUFFRjs7O0dBR0c7SUFFVSxPQUFPOzRCQURuQixhQUFhLENBQUMsVUFBVSxDQUFDOzs7O3NCQUNHLFdBQVc7Ozs7Ozs7Ozs7Ozs7dUJBQW5CLFNBQVEsV0FBVzs7OzttQ0EyQnJDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztpQ0FJMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lDQUkxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQVgzQiwwS0FBZ0IsT0FBTyw2QkFBUCxPQUFPLHlGQUE4QjtZQUlyRCxvS0FBZ0IsS0FBSyw2QkFBTCxLQUFLLHFGQUFNO1lBSTNCLG9LQUFnQixLQUFLLDZCQUFMLEtBQUsscUZBQU07WUFJM0IsaUtBQWdCLElBQUksNkJBQUosSUFBSSxtRkFBTTtZQXhDNUIsNktBd0ZDOzs7O1FBdkZRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QjlCLENBQUM7UUFHRiwyRUFBMkMsU0FBUyxFQUFDO1FBQXJELElBQWdCLE9BQU8sNkNBQThCO1FBQXJELElBQWdCLE9BQU8sbURBQThCO1FBSXJELDZIQUF3QixFQUFFLEdBQUM7UUFGM0IsaUVBQWlFO1FBRWpFLElBQWdCLEtBQUssMkNBQU07UUFBM0IsSUFBZ0IsS0FBSyxpREFBTTtRQUkzQiwySEFBd0IsRUFBRSxHQUFDO1FBRjNCLDBFQUEwRTtRQUUxRSxJQUFnQixLQUFLLDJDQUFNO1FBQTNCLElBQWdCLEtBQUssaURBQU07UUFJM0IseUhBQXVCLEVBQUUsR0FBQztRQUYxQiw2Q0FBNkM7UUFFN0MsSUFBZ0IsSUFBSSwwQ0FBTTtRQUExQixJQUFnQixJQUFJLGdEQUFNO1FBRW5CLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsR0FBRyxnQkFBZ0I7WUFDbkIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EyQkY7U0FDRixDQUFDO1FBRUYsSUFBWSxhQUFhO1lBQ3ZCLE9BQU8sQ0FDTCxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBQ2hGLENBQUM7UUFDSixDQUFDO1FBRU0sTUFBTTtZQUNYLE9BQU8sSUFBSSxDQUFBO2dEQUNpQyxJQUFJLENBQUMsYUFBYTtVQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsa0JBQWtCLElBQUksQ0FBQyxJQUFJLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxFQUFFOzs7S0FHN0UsQ0FBQztRQUNKLENBQUM7Ozs7OztZQXZGVSx1REFBTzs7Ozs7U0FBUCxPQUFPIn0=
@@ -0,0 +1,59 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import './sio-icon.js';
3
+ import './sio-kbd.js';
4
+ /**
5
+ * sio-cmdk — v7 command palette overlay (SocialIODesktop.jsx `SIOCmdK`
6
+ * + socialio.css `.sio-cmdk*`).
7
+ *
8
+ * Scrim rgba(0,0,0,.32) + blur(6px), 640px panel at 14vh on --sio-surface,
9
+ * radius 14, deep shadow + 0.5px hairline ring. Search row with magnifier,
10
+ * query input and an `esc` kbd hint; grouped results with uppercase 11/600
11
+ * section headers; rows of 18px glyph + 14px label + right kbd chord.
12
+ * Active row = tint-soft wash + tint text.
13
+ *
14
+ * Keyboard: ↑/↓ move (wrapping), Enter runs the active item, Esc closes.
15
+ * Typing filters items across all sections; empty sections disappear.
16
+ *
17
+ * Events: `cmdk-run` { id } · `cmdk-close` (both bubble + composed).
18
+ * The host owns the `open` flag — the palette never hides itself.
19
+ */
20
+ export interface ISioCmdkItem {
21
+ id: string;
22
+ /** lucide icon name rendered through sio-icon (18px glyph slot). */
23
+ icon: string;
24
+ label: string;
25
+ /** keyboard chord hint, e.g. '⇧R' or 'G I'. */
26
+ shortcut?: string;
27
+ }
28
+ export interface ISioCmdkSection {
29
+ name: string;
30
+ items: ISioCmdkItem[];
31
+ }
32
+ declare global {
33
+ interface HTMLElementTagNameMap {
34
+ 'sio-cmdk': SioCmdk;
35
+ }
36
+ }
37
+ export declare class SioCmdk extends DeesElement {
38
+ static demo: () => TemplateResult<1>;
39
+ /** Grouped commands; filtered live against `query`. */
40
+ accessor sections: ISioCmdkSection[];
41
+ /** Host-owned visibility flag (wire ⌘K / cmdk-close in the app shell). */
42
+ accessor open: boolean;
43
+ /** Current filter text — settable to preseed, updated as the user types. */
44
+ accessor query: string;
45
+ accessor placeholder: string;
46
+ private accessor activeIndex;
47
+ static styles: import("@design.estate/dees-element").CSSResult[];
48
+ private getFilteredSections;
49
+ private getFlatItems;
50
+ willUpdate(): void;
51
+ updated(changedPropertiesArg: Map<PropertyKey, unknown>): void;
52
+ private handleInput;
53
+ private handleKeydown;
54
+ private scrollActiveRowIntoView;
55
+ private handleBackdropClick;
56
+ private runItem;
57
+ private close;
58
+ render(): TemplateResult;
59
+ }