@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,32 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'sio-segmented': SioSegmented;
5
+ }
6
+ }
7
+ export interface ISioSegment {
8
+ id: string;
9
+ label: string;
10
+ count?: number;
11
+ }
12
+ export interface ISioSegmentChangeDetail {
13
+ id: string;
14
+ segment: ISioSegment;
15
+ }
16
+ /**
17
+ * sio-segmented — iOS-style segmented control (v7 prototype:
18
+ * SocialIOUnified.jsx mode switch — Priority / Timeline / By person).
19
+ *
20
+ * Recessed systemGray track (2px inner padding, radius 9), the selected
21
+ * segment floats on a white / systemGray knob with the layered iOS shadow
22
+ * and steps up to weight 600. Selecting a segment dispatches
23
+ * `segment-change` with `{ id, segment }` (bubbles, composed).
24
+ */
25
+ export declare class SioSegmented extends DeesElement {
26
+ static demo: () => TemplateResult<1>;
27
+ accessor segments: ISioSegment[];
28
+ accessor selected: string;
29
+ static styles: import("@design.estate/dees-element").CSSResult[];
30
+ render(): TemplateResult;
31
+ private handleSelect;
32
+ }
@@ -0,0 +1,217 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, html, property, customElement, css, cssManager, } from '@design.estate/dees-element';
36
+ import { sioElementStyles } from './tokens.js';
37
+ /**
38
+ * sio-segmented — iOS-style segmented control (v7 prototype:
39
+ * SocialIOUnified.jsx mode switch — Priority / Timeline / By person).
40
+ *
41
+ * Recessed systemGray track (2px inner padding, radius 9), the selected
42
+ * segment floats on a white / systemGray knob with the layered iOS shadow
43
+ * and steps up to weight 600. Selecting a segment dispatches
44
+ * `segment-change` with `{ id, segment }` (bubbles, composed).
45
+ */
46
+ let SioSegmented = (() => {
47
+ let _classDecorators = [customElement('sio-segmented')];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ let _classSuper = DeesElement;
52
+ let _segments_decorators;
53
+ let _segments_initializers = [];
54
+ let _segments_extraInitializers = [];
55
+ let _selected_decorators;
56
+ let _selected_initializers = [];
57
+ let _selected_extraInitializers = [];
58
+ var SioSegmented = class extends _classSuper {
59
+ static { _classThis = this; }
60
+ static {
61
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
62
+ _segments_decorators = [property({ type: Array })];
63
+ _selected_decorators = [property({ type: String })];
64
+ __esDecorate(this, null, _segments_decorators, { kind: "accessor", name: "segments", static: false, private: false, access: { has: obj => "segments" in obj, get: obj => obj.segments, set: (obj, value) => { obj.segments = value; } }, metadata: _metadata }, _segments_initializers, _segments_extraInitializers);
65
+ __esDecorate(this, null, _selected_decorators, { kind: "accessor", name: "selected", static: false, private: false, access: { has: obj => "selected" in obj, get: obj => obj.selected, set: (obj, value) => { obj.selected = value; } }, metadata: _metadata }, _selected_initializers, _selected_extraInitializers);
66
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
67
+ SioSegmented = _classThis = _classDescriptor.value;
68
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
+ }
70
+ static demo = () => html `
71
+ <div
72
+ style="display: flex; flex-direction: column; gap: 20px; max-width: 360px; padding: 20px; border-radius: 14px; background: var(--sio-bg); font-family: var(--sio-font-sf);"
73
+ >
74
+ <sio-segmented
75
+ .segments=${[
76
+ { id: 'priority', label: 'Priority' },
77
+ { id: 'time', label: 'Timeline' },
78
+ { id: 'person', label: 'By person' },
79
+ ]}
80
+ selected="priority"
81
+ ></sio-segmented>
82
+
83
+ <sio-segmented
84
+ .segments=${[
85
+ { id: 'feed', label: 'Feed', count: 12 },
86
+ { id: 'paper', label: 'Paper', count: 4 },
87
+ { id: 'people', label: 'People', count: 3 },
88
+ ]}
89
+ selected="people"
90
+ ></sio-segmented>
91
+
92
+ <sio-segmented
93
+ .segments=${[
94
+ { id: 'all', label: 'All' },
95
+ { id: 'unread', label: 'Unread', count: 7 },
96
+ ]}
97
+ selected="all"
98
+ ></sio-segmented>
99
+ </div>
100
+ `;
101
+ #segments_accessor_storage = __runInitializers(this, _segments_initializers, []);
102
+ get segments() { return this.#segments_accessor_storage; }
103
+ set segments(value) { this.#segments_accessor_storage = value; }
104
+ #selected_accessor_storage = (__runInitializers(this, _segments_extraInitializers), __runInitializers(this, _selected_initializers, ''));
105
+ get selected() { return this.#selected_accessor_storage; }
106
+ set selected(value) { this.#selected_accessor_storage = value; }
107
+ static styles = [
108
+ ...sioElementStyles,
109
+ css `
110
+ :host {
111
+ display: block;
112
+
113
+ /* iOS UISegmentedControl selected fill — white in light, systemGray
114
+ #636366 in dark. Not modeled in tokens.ts (it is knob-specific,
115
+ not a surface), so it branches here via the same theme mechanism
116
+ tokens.ts uses — no string concatenation. */
117
+ --sio-segmented-knob: ${cssManager.bdTheme('#FFFFFF', '#636366')};
118
+ }
119
+
120
+ .track {
121
+ display: flex;
122
+ padding: 2px;
123
+ border-radius: 9px;
124
+ background: var(--sio-surface-2);
125
+ }
126
+
127
+ .segment {
128
+ appearance: none;
129
+ border: none;
130
+ margin: 0;
131
+ flex: 1;
132
+ min-width: 0;
133
+ display: inline-flex;
134
+ align-items: center;
135
+ justify-content: center;
136
+ gap: 5px;
137
+ padding: 5px 0;
138
+ border-radius: 7px;
139
+ background: transparent;
140
+ font-family: var(--sio-font-sf);
141
+ font-size: 13px;
142
+ font-weight: 500;
143
+ letter-spacing: -0.1px;
144
+ line-height: 1.25;
145
+ color: var(--sio-label-3);
146
+ white-space: nowrap;
147
+ cursor: pointer;
148
+ -webkit-tap-highlight-color: transparent;
149
+ transition: color 120ms ease, background 120ms ease, box-shadow 120ms ease;
150
+ }
151
+
152
+ .segment:focus-visible {
153
+ outline: 2px solid color-mix(in oklab, var(--sio-tint) 40%, transparent);
154
+ outline-offset: 1px;
155
+ }
156
+
157
+ .segment.selected {
158
+ background: var(--sio-segmented-knob);
159
+ color: var(--sio-label);
160
+ font-weight: 600;
161
+ box-shadow:
162
+ 0 1px 4px rgba(0, 0, 0, 0.12),
163
+ 0 0 0 0.5px rgba(0, 0, 0, 0.04);
164
+ }
165
+
166
+ .count {
167
+ font-variant-numeric: tabular-nums;
168
+ font-size: 12px;
169
+ font-weight: 500;
170
+ opacity: 0.55;
171
+ }
172
+ `,
173
+ ];
174
+ render() {
175
+ const selectedId = this.selected || this.segments[0]?.id;
176
+ return html `
177
+ <div class="track" role="tablist">
178
+ ${this.segments.map((segment) => html `
179
+ <button
180
+ type="button"
181
+ role="tab"
182
+ class="segment ${segment.id === selectedId ? 'selected' : ''}"
183
+ aria-selected=${segment.id === selectedId ? 'true' : 'false'}
184
+ @click=${() => this.handleSelect(segment)}
185
+ >
186
+ ${segment.label}
187
+ ${segment.count !== undefined
188
+ ? html `<span class="count">${segment.count}</span>`
189
+ : html ``}
190
+ </button>
191
+ `)}
192
+ </div>
193
+ `;
194
+ }
195
+ handleSelect(segment) {
196
+ if (segment.id === this.selected) {
197
+ return;
198
+ }
199
+ this.selected = segment.id;
200
+ this.dispatchEvent(new CustomEvent('segment-change', {
201
+ detail: { id: segment.id, segment },
202
+ bubbles: true,
203
+ composed: true,
204
+ }));
205
+ }
206
+ constructor() {
207
+ super(...arguments);
208
+ __runInitializers(this, _selected_extraInitializers);
209
+ }
210
+ static {
211
+ __runInitializers(_classThis, _classExtraInitializers);
212
+ }
213
+ };
214
+ return SioSegmented = _classThis;
215
+ })();
216
+ export { SioSegmented };
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXNlZ21lbnRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tc2VnbWVudGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEdBRVgsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFtQi9DOzs7Ozs7OztHQVFHO0lBRVUsWUFBWTs0QkFEeEIsYUFBYSxDQUFDLGVBQWUsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7OzRCQUFuQixTQUFRLFdBQVc7Ozs7b0NBaUMxQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUYzQiw2S0FBZ0IsUUFBUSw2QkFBUixRQUFRLDJGQUFxQjtZQUc3Qyw2S0FBZ0IsUUFBUSw2QkFBUixRQUFRLDJGQUFNO1lBckNoQyw2S0FnSkM7Ozs7UUEvSVEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7O29CQUtiO1lBQ1YsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDckMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7U0FDckM7Ozs7O29CQUtXO1lBQ1YsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN4QyxFQUFFLEVBQUUsRUFBRSxP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
@@ -0,0 +1,28 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ export interface ISioStepTimelineStep {
3
+ when: string;
4
+ label: string;
5
+ done: boolean;
6
+ }
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ 'sio-step-timeline': SioStepTimeline;
10
+ }
11
+ }
12
+ /**
13
+ * sio-step-timeline — v7 vertical tracking timeline (outbound letters,
14
+ * delivery receipts, meeting prep …).
15
+ *
16
+ * 14px dots take the accent color once a step is done; the 2px connecting
17
+ * line only colors between two completed steps. Labels sit at 14.5px with
18
+ * muted 12px timestamps underneath — exactly the SIOLetterTracking recipe.
19
+ */
20
+ export declare class SioStepTimeline extends DeesElement {
21
+ static demo: () => TemplateResult<1>;
22
+ /** Ordered steps, first to last. */
23
+ accessor steps: ISioStepTimelineStep[];
24
+ /** Accent for completed dots + connecting lines. Defaults to the letters channel. */
25
+ accessor color: string;
26
+ static styles: import("@design.estate/dees-element").CSSResult[];
27
+ render(): TemplateResult;
28
+ }
@@ -0,0 +1,222 @@
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
+ /**
38
+ * sio-step-timeline — v7 vertical tracking timeline (outbound letters,
39
+ * delivery receipts, meeting prep …).
40
+ *
41
+ * 14px dots take the accent color once a step is done; the 2px connecting
42
+ * line only colors between two completed steps. Labels sit at 14.5px with
43
+ * muted 12px timestamps underneath — exactly the SIOLetterTracking recipe.
44
+ */
45
+ let SioStepTimeline = (() => {
46
+ let _classDecorators = [customElement('sio-step-timeline')];
47
+ let _classDescriptor;
48
+ let _classExtraInitializers = [];
49
+ let _classThis;
50
+ let _classSuper = DeesElement;
51
+ let _steps_decorators;
52
+ let _steps_initializers = [];
53
+ let _steps_extraInitializers = [];
54
+ let _color_decorators;
55
+ let _color_initializers = [];
56
+ let _color_extraInitializers = [];
57
+ var SioStepTimeline = class extends _classSuper {
58
+ static { _classThis = this; }
59
+ static {
60
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
61
+ _steps_decorators = [property({ type: Array })];
62
+ _color_decorators = [property({ type: String })];
63
+ __esDecorate(this, null, _steps_decorators, { kind: "accessor", name: "steps", static: false, private: false, access: { has: obj => "steps" in obj, get: obj => obj.steps, set: (obj, value) => { obj.steps = value; } }, metadata: _metadata }, _steps_initializers, _steps_extraInitializers);
64
+ __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);
65
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
66
+ SioStepTimeline = _classThis = _classDescriptor.value;
67
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
68
+ }
69
+ static demo = () => html `
70
+ <div
71
+ style="display: flex; flex-wrap: wrap; gap: 20px; padding: 20px; background: var(--sio-bg); border-radius: 18px; font-family: var(--sio-font-sf);"
72
+ >
73
+ <div
74
+ style="flex: 1; min-width: 260px; background: var(--sio-surface); border: 0.5px solid var(--sio-separator); border-radius: 16px; padding: 14px 16px;"
75
+ >
76
+ <div
77
+ style="font-size: 11px; font-weight: 700; color: var(--sio-label-3); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px;"
78
+ >
79
+ Tracking
80
+ </div>
81
+ <sio-step-timeline
82
+ .steps=${[
83
+ { when: 'Today 08:10', label: 'Printed at Berlin-Mitte print hub', done: true },
84
+ { when: 'Today 09:42', label: 'Handed to Deutsche Post', done: true },
85
+ { when: 'Tomorrow', label: 'In transit', done: false },
86
+ { when: 'Thu', label: 'Delivered', done: false },
87
+ ]}
88
+ ></sio-step-timeline>
89
+ </div>
90
+ <div
91
+ style="flex: 1; min-width: 260px; background: var(--sio-surface); border: 0.5px solid var(--sio-separator); border-radius: 16px; padding: 14px 16px;"
92
+ >
93
+ <div
94
+ style="font-size: 11px; font-weight: 700; color: var(--sio-label-3); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px;"
95
+ >
96
+ Delivery
97
+ </div>
98
+ <sio-step-timeline
99
+ color="var(--sio-bucket-done)"
100
+ .steps=${[
101
+ { when: 'Mon 14:48', label: 'Printed at Berlin-Mitte print hub', done: true },
102
+ { when: 'Mon 16:02', label: 'Handed to Deutsche Post', done: true },
103
+ { when: 'Tue', label: 'In transit', done: true },
104
+ { when: 'Wed 11:15', label: 'Delivered', done: true },
105
+ ]}
106
+ ></sio-step-timeline>
107
+ </div>
108
+ </div>
109
+ `;
110
+ #steps_accessor_storage = __runInitializers(this, _steps_initializers, []);
111
+ /** Ordered steps, first to last. */
112
+ get steps() { return this.#steps_accessor_storage; }
113
+ set steps(value) { this.#steps_accessor_storage = value; }
114
+ #color_accessor_storage = (__runInitializers(this, _steps_extraInitializers), __runInitializers(this, _color_initializers, 'var(--sio-ch-letters)'));
115
+ /** Accent for completed dots + connecting lines. Defaults to the letters channel. */
116
+ get color() { return this.#color_accessor_storage; }
117
+ set color(value) { this.#color_accessor_storage = value; }
118
+ static styles = [
119
+ ...sioElementStyles,
120
+ css `
121
+ :host {
122
+ display: block;
123
+ color: var(--sio-label);
124
+ }
125
+
126
+ .step {
127
+ position: relative;
128
+ display: flex;
129
+ gap: 12px;
130
+ margin-bottom: 14px;
131
+ }
132
+ .step:last-child {
133
+ margin-bottom: 0;
134
+ }
135
+
136
+ .dot {
137
+ box-sizing: border-box;
138
+ width: 14px;
139
+ height: 14px;
140
+ border-radius: 7px;
141
+ margin-top: 3px;
142
+ flex-shrink: 0;
143
+ background: transparent;
144
+ border: 2px solid var(--sio-label-3);
145
+ position: relative;
146
+ z-index: 2;
147
+ }
148
+ .step.done .dot {
149
+ background: var(--step-color);
150
+ border-color: var(--step-color);
151
+ }
152
+
153
+ .line {
154
+ position: absolute;
155
+ left: 6px;
156
+ top: 17px;
157
+ bottom: -14px;
158
+ width: 2px;
159
+ background: var(--sio-separator);
160
+ }
161
+ .line.done {
162
+ background: var(--step-color);
163
+ }
164
+
165
+ .body {
166
+ flex: 1;
167
+ min-width: 0;
168
+ padding-bottom: 2px;
169
+ }
170
+
171
+ .label {
172
+ font-size: 14.5px;
173
+ line-height: 1.35;
174
+ font-weight: 400;
175
+ color: var(--sio-label);
176
+ }
177
+ .step.done .label {
178
+ font-weight: 500;
179
+ }
180
+
181
+ .when {
182
+ font-size: 12px;
183
+ color: var(--sio-label-3);
184
+ margin-top: 1px;
185
+ font-variant-numeric: tabular-nums;
186
+ }
187
+ `,
188
+ ];
189
+ render() {
190
+ return html `
191
+ <div style="--step-color: ${this.color};">
192
+ ${this.steps.map((step, index) => html `
193
+ <div class="step ${step.done ? 'done' : ''}">
194
+ <div class="dot"></div>
195
+ ${index < this.steps.length - 1
196
+ ? html `
197
+ <div
198
+ class="line ${step.done && this.steps[index + 1].done ? 'done' : ''}"
199
+ ></div>
200
+ `
201
+ : html ``}
202
+ <div class="body">
203
+ <div class="label">${step.label}</div>
204
+ <div class="when">${step.when}</div>
205
+ </div>
206
+ </div>
207
+ `)}
208
+ </div>
209
+ `;
210
+ }
211
+ constructor() {
212
+ super(...arguments);
213
+ __runInitializers(this, _color_extraInitializers);
214
+ }
215
+ static {
216
+ __runInitializers(_classThis, _classExtraInitializers);
217
+ }
218
+ };
219
+ return SioStepTimeline = _classThis;
220
+ })();
221
+ export { SioStepTimeline };
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLXN0ZXAtdGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvc2lvLXN0ZXAtdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxHQUVKLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYy9DOzs7Ozs7O0dBT0c7SUFFVSxlQUFlOzRCQUQzQixhQUFhLENBQUMsbUJBQW1CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7OzsrQkFBbkIsU0FBUSxXQUFXOzs7O2lDQTRDN0MsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2lDQUl6QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFIM0Isb0tBQWdCLEtBQUssNkJBQUwsS0FBSyxxRkFBOEI7WUFJbkQsb0tBQWdCLEtBQUssNkJBQUwsS0FBSyxxRkFBbUM7WUFqRDFELDZLQW1KQzs7OztRQWxKUSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7OzttQkFhZDtZQUNQLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUMvRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDckUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUN0RCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1NBQ2pEOzs7Ozs7Ozs7Ozs7O21CQWFRO1lBQ1AsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNuRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDdEQ7Ozs7R0FJUixDQUFDO1FBSUYsdUVBQWdELEVBQUUsRUFBQztRQUZuRCxvQ0FBb0M7UUFFcEMsSUFBZ0IsS0FBSywyQ0FBOEI7UUFBbkQsSUFBZ0IsS0FBSyxpREFBOEI7UUFJbkQsMkhBQWdDLHVCQUF1QixHQUFDO1FBRnhELHFGQUFxRjtRQUVyRixJQUFnQixLQUFLLDJDQUFtQztRQUF4RCxJQUFnQixLQUFLLGlEQUFtQztRQUVqRCxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1FRjtTQUNGLENBQUM7UUFFSyxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUE7a0NBQ21CLElBQUksQ0FBQyxLQUFLO1VBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNkLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFBOytCQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTs7Z0JBRXRDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFBOztvQ0FFYyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFOzttQkFFdEU7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQSxFQUFFOztxQ0FFYSxJQUFJLENBQUMsS0FBSztvQ0FDWCxJQUFJLENBQUMsSUFBSTs7O1dBR2xDLENBQ0Y7O0tBRUosQ0FBQztRQUNKLENBQUM7Ozs7OztZQWxKVSx1REFBZTs7Ozs7U0FBZixlQUFlIn0=
@@ -0,0 +1,36 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import './sio-icon.js';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'sio-tab-bar': SioTabBar;
6
+ }
7
+ }
8
+ export interface ISioTabBarChannel {
9
+ id: string;
10
+ label: string;
11
+ color: string;
12
+ icon: string;
13
+ }
14
+ export interface ISioTabChangeDetail {
15
+ id: string;
16
+ channel: ISioTabBarChannel;
17
+ }
18
+ /**
19
+ * sio-tab-bar — the mobile bottom channel switcher (v7 prototype:
20
+ * SIOTabBar in SocialIOChannels.jsx).
21
+ *
22
+ * A liquid-glass bar (blur 28px saturate 180%, 0.5px top hairline) with one
23
+ * flex-equal tab per channel: 22px icon over a 10.5px label. The active tab
24
+ * lights up in its channel color; safe-area-aware bottom padding clears the
25
+ * iOS home indicator. Selecting a tab dispatches `tab-change` with `{ id, channel }`
26
+ * (bubbles, composed).
27
+ */
28
+ export declare class SioTabBar extends DeesElement {
29
+ static demo: () => TemplateResult<1>;
30
+ accessor channels: ISioTabBarChannel[];
31
+ accessor active: string;
32
+ accessor withCalendar: boolean;
33
+ static styles: import("@design.estate/dees-element").CSSResult[];
34
+ render(): TemplateResult;
35
+ private handleSelect;
36
+ }