@social.io/catalog 1.3.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/.smartconfig.json +51 -0
  2. package/dist_bundle/bundle.js +5455 -3248
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/index.d.ts +21 -3
  5. package/dist_ts_web/elements/index.js +28 -7
  6. package/dist_ts_web/elements/sio-ai-card.d.ts +39 -0
  7. package/dist_ts_web/elements/sio-ai-card.js +229 -0
  8. package/dist_ts_web/elements/sio-avatar.d.ts +46 -0
  9. package/dist_ts_web/elements/sio-avatar.js +379 -0
  10. package/dist_ts_web/elements/sio-bucket-header.d.ts +36 -0
  11. package/dist_ts_web/elements/sio-bucket-header.js +197 -0
  12. package/dist_ts_web/elements/sio-button.d.ts +7 -3
  13. package/dist_ts_web/elements/sio-button.js +253 -152
  14. package/dist_ts_web/elements/sio-channel-rail.d.ts +38 -0
  15. package/dist_ts_web/elements/sio-channel-rail.js +288 -0
  16. package/dist_ts_web/elements/sio-chip.d.ts +25 -0
  17. package/dist_ts_web/elements/sio-chip.js +188 -0
  18. package/dist_ts_web/elements/sio-cmdk.d.ts +59 -0
  19. package/dist_ts_web/elements/sio-cmdk.js +471 -0
  20. package/dist_ts_web/elements/sio-combox.d.ts +55 -1
  21. package/dist_ts_web/elements/sio-combox.js +458 -261
  22. package/dist_ts_web/elements/sio-composer.d.ts +48 -0
  23. package/dist_ts_web/elements/sio-composer.js +357 -0
  24. package/dist_ts_web/elements/sio-conversation-selector.d.ts +41 -1
  25. package/dist_ts_web/elements/sio-conversation-selector.js +426 -238
  26. package/dist_ts_web/elements/sio-conversation-view.d.ts +34 -6
  27. package/dist_ts_web/elements/sio-conversation-view.js +738 -564
  28. package/dist_ts_web/elements/sio-dropdown-menu.d.ts +6 -6
  29. package/dist_ts_web/elements/sio-dropdown-menu.js +223 -169
  30. package/dist_ts_web/elements/sio-fab.d.ts +23 -5
  31. package/dist_ts_web/elements/sio-fab.js +259 -235
  32. package/dist_ts_web/elements/sio-glass-toolbar.d.ts +22 -0
  33. package/dist_ts_web/elements/sio-glass-toolbar.js +178 -0
  34. package/dist_ts_web/elements/sio-icon.d.ts +1 -0
  35. package/dist_ts_web/elements/sio-icon.js +254 -94
  36. package/dist_ts_web/elements/sio-image-lightbox.d.ts +3 -4
  37. package/dist_ts_web/elements/sio-image-lightbox.js +282 -191
  38. package/dist_ts_web/elements/sio-inset-list.d.ts +28 -0
  39. package/dist_ts_web/elements/sio-inset-list.js +191 -0
  40. package/dist_ts_web/elements/sio-kbd.d.ts +16 -0
  41. package/dist_ts_web/elements/sio-kbd.js +117 -0
  42. package/dist_ts_web/elements/sio-list-row.d.ts +55 -0
  43. package/dist_ts_web/elements/sio-list-row.js +462 -0
  44. package/dist_ts_web/elements/sio-logo-render.d.ts +42 -0
  45. package/dist_ts_web/elements/sio-logo-render.js +306 -0
  46. package/dist_ts_web/elements/sio-logo.d.ts +64 -0
  47. package/dist_ts_web/elements/sio-logo.js +393 -0
  48. package/dist_ts_web/elements/sio-message-input.d.ts +25 -4
  49. package/dist_ts_web/elements/sio-message-input.js +231 -226
  50. package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
  51. package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
  52. package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
  53. package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
  54. package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
  55. package/dist_ts_web/elements/sio-segmented.js +217 -0
  56. package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
  57. package/dist_ts_web/elements/sio-step-timeline.js +222 -0
  58. package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
  59. package/dist_ts_web/elements/sio-tab-bar.js +232 -0
  60. package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
  61. package/dist_ts_web/elements/sio-unread-badge.js +203 -0
  62. package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
  63. package/dist_ts_web/elements/sio-waveform.js +304 -0
  64. package/dist_ts_web/elements/tokens.d.ts +70 -0
  65. package/dist_ts_web/elements/tokens.js +277 -0
  66. package/dist_ts_web/pages/firstpage.d.ts +5 -0
  67. package/dist_ts_web/pages/firstpage.js +21 -2
  68. package/dist_ts_web/pages/mainpage.d.ts +6 -0
  69. package/dist_ts_web/pages/mainpage.js +111 -39
  70. package/{license → license.md} +3 -1
  71. package/package.json +23 -29
  72. package/readme.hints.md +82 -0
  73. package/readme.md +113 -146
  74. package/ts_web/00_commitinfo_data.ts +2 -2
  75. package/ts_web/elements/index.ts +31 -7
  76. package/ts_web/elements/sio-ai-card.ts +175 -0
  77. package/ts_web/elements/sio-avatar.ts +295 -0
  78. package/ts_web/elements/sio-bucket-header.ts +157 -0
  79. package/ts_web/elements/sio-button.ts +149 -127
  80. package/ts_web/elements/sio-channel-rail.ts +256 -0
  81. package/ts_web/elements/sio-chip.ts +134 -0
  82. package/ts_web/elements/sio-cmdk.ts +461 -0
  83. package/ts_web/elements/sio-combox.ts +327 -204
  84. package/ts_web/elements/sio-composer.ts +306 -0
  85. package/ts_web/elements/sio-conversation-selector.ts +350 -228
  86. package/ts_web/elements/sio-conversation-view.ts +573 -457
  87. package/ts_web/elements/sio-dropdown-menu.ts +112 -130
  88. package/ts_web/elements/sio-fab.ts +192 -227
  89. package/ts_web/elements/sio-glass-toolbar.ts +140 -0
  90. package/ts_web/elements/sio-icon.ts +147 -25
  91. package/ts_web/elements/sio-image-lightbox.ts +62 -64
  92. package/ts_web/elements/sio-inset-list.ts +140 -0
  93. package/ts_web/elements/sio-kbd.ts +80 -0
  94. package/ts_web/elements/sio-list-row.ts +393 -0
  95. package/ts_web/elements/sio-logo-render.ts +367 -0
  96. package/ts_web/elements/sio-logo.ts +311 -0
  97. package/ts_web/elements/sio-message-input.ts +142 -221
  98. package/ts_web/elements/sio-paper-thumb.ts +244 -0
  99. package/ts_web/elements/sio-pdf-viewer.ts +58 -60
  100. package/ts_web/elements/sio-segmented.ts +183 -0
  101. package/ts_web/elements/sio-step-timeline.ts +179 -0
  102. package/ts_web/elements/sio-tab-bar.ts +195 -0
  103. package/ts_web/elements/sio-unread-badge.ts +147 -0
  104. package/ts_web/elements/sio-waveform.ts +239 -0
  105. package/ts_web/elements/tokens.ts +297 -0
  106. package/ts_web/pages/firstpage.ts +20 -1
  107. package/ts_web/pages/mainpage.ts +111 -39
  108. package/dist_bundle/bundle.js.map +0 -7
  109. package/dist_ts_web/elements/00colors.d.ts +0 -108
  110. package/dist_ts_web/elements/00colors.js +0 -137
  111. package/dist_ts_web/elements/00fonts.d.ts +0 -60
  112. package/dist_ts_web/elements/00fonts.js +0 -129
  113. package/dist_ts_web/elements/00tokens.d.ts +0 -123
  114. package/dist_ts_web/elements/00tokens.js +0 -176
  115. package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
  116. package/dist_ts_web/elements/sio-conversation-list.js +0 -495
  117. package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
  118. package/dist_ts_web/elements/sio-recorder.js +0 -173
  119. package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
  120. package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
  121. package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
  122. package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
  123. package/dist_watch/bundle.js +0 -81694
  124. package/dist_watch/bundle.js.map +0 -7
  125. package/dist_watch/index.html +0 -25
  126. package/npmextra.json +0 -19
  127. package/ts_web/elements/00colors.ts +0 -164
  128. package/ts_web/elements/00fonts.ts +0 -145
  129. package/ts_web/elements/00tokens.ts +0 -197
  130. package/ts_web/elements/sio-recorder.ts +0 -213
@@ -1,311 +1,499 @@
1
- import { DeesElement, property, html, customElement, cssManager, css, unsafeCSS, state, } from '@design.estate/dees-element';
2
- // Import design tokens
3
- import { colors, bdTheme } from './00colors.js';
4
- import { spacing, radius, shadows, transitions } from './00tokens.js';
5
- import { fontFamilies, typography } from './00fonts.js';
6
- @customElement('sio-conversation-selector')
7
- export class SioConversationSelector extends DeesElement {
8
- static demo = () => html `
9
- <sio-conversation-selector style="width: 320px; height: 600px;"></sio-conversation-selector>
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
+ import './sio-icon.js';
38
+ import './sio-avatar.js';
39
+ /**
40
+ * sio-conversation-selector — the widget's home / welcome state
41
+ * (v7 SocialIOWidget.jsx SIOWidgetHome).
42
+ *
43
+ * Gradient tint header (white text) with the 3-avatar team stack,
44
+ * "Hi there 👋 / How can we help?" greeting and the presence line;
45
+ * body cards on radius 14: recent-conversation resume rows, the solid
46
+ * tint "Send us a message" CTA and the FAQ list with 0.5px hairlines.
47
+ *
48
+ * Events (bubbles, composed):
49
+ * conversation-selected { conversation } — resume a recent thread
50
+ * new-conversation — CTA row click
51
+ * faq-selected { question } — FAQ row click
52
+ * close — phablet close chevron
53
+ */
54
+ let SioConversationSelector = (() => {
55
+ let _classDecorators = [customElement('sio-conversation-selector')];
56
+ let _classDescriptor;
57
+ let _classExtraInitializers = [];
58
+ let _classThis;
59
+ let _classSuper = DeesElement;
60
+ let _conversations_decorators;
61
+ let _conversations_initializers = [];
62
+ let _conversations_extraInitializers = [];
63
+ let _selectedConversationId_decorators;
64
+ let _selectedConversationId_initializers = [];
65
+ let _selectedConversationId_extraInitializers = [];
66
+ let _greeting_decorators;
67
+ let _greeting_initializers = [];
68
+ let _greeting_extraInitializers = [];
69
+ let _tagline_decorators;
70
+ let _tagline_initializers = [];
71
+ let _tagline_extraInitializers = [];
72
+ let _replyNote_decorators;
73
+ let _replyNote_initializers = [];
74
+ let _replyNote_extraInitializers = [];
75
+ let _team_decorators;
76
+ let _team_initializers = [];
77
+ let _team_extraInitializers = [];
78
+ let _faqs_decorators;
79
+ let _faqs_initializers = [];
80
+ let _faqs_extraInitializers = [];
81
+ var SioConversationSelector = class extends _classSuper {
82
+ static { _classThis = this; }
83
+ static {
84
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
85
+ _conversations_decorators = [property({ type: Array })];
86
+ _selectedConversationId_decorators = [property({ type: String })];
87
+ _greeting_decorators = [property({ type: String })];
88
+ _tagline_decorators = [property({ type: String })];
89
+ _replyNote_decorators = [property({ type: String })];
90
+ _team_decorators = [property({ type: Array })];
91
+ _faqs_decorators = [property({ type: Array })];
92
+ __esDecorate(this, null, _conversations_decorators, { kind: "accessor", name: "conversations", static: false, private: false, access: { has: obj => "conversations" in obj, get: obj => obj.conversations, set: (obj, value) => { obj.conversations = value; } }, metadata: _metadata }, _conversations_initializers, _conversations_extraInitializers);
93
+ __esDecorate(this, null, _selectedConversationId_decorators, { kind: "accessor", name: "selectedConversationId", static: false, private: false, access: { has: obj => "selectedConversationId" in obj, get: obj => obj.selectedConversationId, set: (obj, value) => { obj.selectedConversationId = value; } }, metadata: _metadata }, _selectedConversationId_initializers, _selectedConversationId_extraInitializers);
94
+ __esDecorate(this, null, _greeting_decorators, { kind: "accessor", name: "greeting", static: false, private: false, access: { has: obj => "greeting" in obj, get: obj => obj.greeting, set: (obj, value) => { obj.greeting = value; } }, metadata: _metadata }, _greeting_initializers, _greeting_extraInitializers);
95
+ __esDecorate(this, null, _tagline_decorators, { kind: "accessor", name: "tagline", static: false, private: false, access: { has: obj => "tagline" in obj, get: obj => obj.tagline, set: (obj, value) => { obj.tagline = value; } }, metadata: _metadata }, _tagline_initializers, _tagline_extraInitializers);
96
+ __esDecorate(this, null, _replyNote_decorators, { kind: "accessor", name: "replyNote", static: false, private: false, access: { has: obj => "replyNote" in obj, get: obj => obj.replyNote, set: (obj, value) => { obj.replyNote = value; } }, metadata: _metadata }, _replyNote_initializers, _replyNote_extraInitializers);
97
+ __esDecorate(this, null, _team_decorators, { kind: "accessor", name: "team", static: false, private: false, access: { has: obj => "team" in obj, get: obj => obj.team, set: (obj, value) => { obj.team = value; } }, metadata: _metadata }, _team_initializers, _team_extraInitializers);
98
+ __esDecorate(this, null, _faqs_decorators, { kind: "accessor", name: "faqs", static: false, private: false, access: { has: obj => "faqs" in obj, get: obj => obj.faqs, set: (obj, value) => { obj.faqs = value; } }, metadata: _metadata }, _faqs_initializers, _faqs_extraInitializers);
99
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
100
+ SioConversationSelector = _classThis = _classDescriptor.value;
101
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
102
+ }
103
+ static demo = () => html `
104
+ <div
105
+ style="width: 380px; height: 620px; border-radius: 20px; overflow: hidden; background: var(--sio-surface); box-shadow: 0 24px 64px rgba(0, 0, 0, 0.22), 0 0 0 0.5px rgba(0, 0, 0, 0.08);"
106
+ >
107
+ <sio-conversation-selector
108
+ .conversations=${[
109
+ {
110
+ id: 'orbit-launch',
111
+ title: 'Lena · Orbit',
112
+ lastMessage: 'Glad that sorted it — anything else, just write!',
113
+ time: '2d',
114
+ initials: 'LP',
115
+ tint: '#FF2D55',
116
+ },
117
+ ]}
118
+ ></sio-conversation-selector>
119
+ </div>
10
120
  `;
11
- @property({ type: Array })
12
- accessor conversations = [];
13
- @property({ type: String })
14
- accessor selectedConversationId = null;
15
- @state()
16
- accessor searchQuery = '';
17
- static styles = [
18
- cssManager.defaultStyles,
19
- css `
121
+ #conversations_accessor_storage = __runInitializers(this, _conversations_initializers, []);
122
+ get conversations() { return this.#conversations_accessor_storage; }
123
+ set conversations(value) { this.#conversations_accessor_storage = value; }
124
+ #selectedConversationId_accessor_storage = (__runInitializers(this, _conversations_extraInitializers), __runInitializers(this, _selectedConversationId_initializers, null));
125
+ get selectedConversationId() { return this.#selectedConversationId_accessor_storage; }
126
+ set selectedConversationId(value) { this.#selectedConversationId_accessor_storage = value; }
127
+ #greeting_accessor_storage = (__runInitializers(this, _selectedConversationId_extraInitializers), __runInitializers(this, _greeting_initializers, 'Hi there 👋'));
128
+ /** greeting headline, first line */
129
+ get greeting() { return this.#greeting_accessor_storage; }
130
+ set greeting(value) { this.#greeting_accessor_storage = value; }
131
+ #tagline_accessor_storage = (__runInitializers(this, _greeting_extraInitializers), __runInitializers(this, _tagline_initializers, 'How can we help?'));
132
+ /** greeting headline, second line */
133
+ get tagline() { return this.#tagline_accessor_storage; }
134
+ set tagline(value) { this.#tagline_accessor_storage = value; }
135
+ #replyNote_accessor_storage = (__runInitializers(this, _tagline_extraInitializers), __runInitializers(this, _replyNote_initializers, 'We typically reply in a few minutes'));
136
+ /** presence line next to the green dot */
137
+ get replyNote() { return this.#replyNote_accessor_storage; }
138
+ set replyNote(value) { this.#replyNote_accessor_storage = value; }
139
+ #team_accessor_storage = (__runInitializers(this, _replyNote_extraInitializers), __runInitializers(this, _team_initializers, [
140
+ { initials: 'LP', tint: '#FF2D55' },
141
+ { initials: 'MV', tint: '#0A84FF' },
142
+ { initials: 'PS', tint: '#30D158' },
143
+ ]));
144
+ /** team members for the overlapping avatar stack in the header */
145
+ get team() { return this.#team_accessor_storage; }
146
+ set team(value) { this.#team_accessor_storage = value; }
147
+ #faqs_accessor_storage = (__runInitializers(this, _team_extraInitializers), __runInitializers(this, _faqs_initializers, [
148
+ 'Where is my order?',
149
+ 'How do refunds work?',
150
+ 'Talk to a human',
151
+ ]));
152
+ /** FAQ quick answers */
153
+ get faqs() { return this.#faqs_accessor_storage; }
154
+ set faqs(value) { this.#faqs_accessor_storage = value; }
155
+ static styles = [
156
+ ...sioElementStyles,
157
+ css `
20
158
  :host {
21
159
  display: flex;
22
160
  flex-direction: column;
23
161
  height: 100%;
24
- background: ${bdTheme('card')};
25
- border-right: 1px solid ${bdTheme('border')};
26
- font-family: ${unsafeCSS(fontFamilies.sans)};
162
+ background: var(--sio-surface);
163
+ font-family: var(--sio-font-sf);
164
+ overflow: hidden;
27
165
  }
28
166
 
167
+ /* ── gradient header ─────────────────────────────────────── */
29
168
  .header {
30
- padding: ${unsafeCSS(spacing["5"])} ${unsafeCSS(spacing["4"])};
31
- border-bottom: 1px solid ${bdTheme('border')};
32
- background: ${bdTheme('background')};
169
+ position: relative;
170
+ flex-shrink: 0;
171
+ padding: 24px 22px 20px;
172
+ background: linear-gradient(
173
+ 160deg,
174
+ var(--sio-tint) 0%,
175
+ color-mix(in oklab, var(--sio-tint) 80%, black) 100%
176
+ );
177
+ color: #fff; /* on-tint constant across themes (v7 widget header) */
33
178
  }
34
179
 
35
- .header-top {
180
+ .teamStack {
36
181
  display: flex;
37
- justify-content: space-between;
38
- align-items: center;
39
- margin-bottom: ${unsafeCSS(spacing["4"])};
182
+ margin-bottom: 14px;
40
183
  }
41
184
 
42
- .title {
43
- font-size: 1.25rem;
44
- line-height: 1.2;
45
- font-weight: 600;
46
- margin: 0;
47
- color: ${bdTheme('foreground')};
48
- letter-spacing: -0.025em;
185
+ .teamStack .member {
186
+ display: inline-flex;
187
+ border-radius: 50%;
188
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9); /* white ring on gradient per v7 */
49
189
  }
50
190
 
51
- .search-box {
52
- position: relative;
191
+ .teamStack .member:not(:first-child) {
192
+ margin-left: -8px;
53
193
  }
54
194
 
55
- .search-input {
56
- width: 100%;
57
- padding: ${unsafeCSS(spacing["2.5"])} ${unsafeCSS(spacing["10"])} ${unsafeCSS(spacing["2.5"])} ${unsafeCSS(spacing["3"])};
58
- background: ${bdTheme('background')};
59
- border: 1px solid ${bdTheme('border')};
60
- border-radius: ${unsafeCSS(radius.lg)};
61
- font-size: 0.875rem;
62
- color: ${bdTheme('foreground')};
63
- outline: none;
64
- transition: ${unsafeCSS(transitions.all)};
65
- font-family: ${unsafeCSS(fontFamilies.sans)};
66
- box-shadow: ${unsafeCSS(shadows.sm)};
195
+ .greeting {
196
+ font-size: 22px;
197
+ font-weight: 700;
198
+ letter-spacing: -0.4px;
199
+ line-height: 1.15;
67
200
  }
68
201
 
69
- .search-input::placeholder {
70
- color: ${bdTheme('mutedForeground')};
71
- font-weight: 400;
202
+ .presence {
203
+ margin-top: 8px;
204
+ display: flex;
205
+ align-items: center;
206
+ gap: 6px;
207
+ font-size: 12.5px;
208
+ color: rgba(255, 255, 255, 0.75); /* on-tint muted per v7 */
72
209
  }
73
210
 
74
- .search-input:focus {
75
- border-color: ${bdTheme('ring')};
76
- box-shadow: 0 0 0 3px ${bdTheme('ring')}20;
77
- background: ${bdTheme('background')};
211
+ .presence .dot {
212
+ width: 7px;
213
+ height: 7px;
214
+ border-radius: 4px;
215
+ background: var(--sio-green);
216
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.25);
217
+ flex-shrink: 0;
78
218
  }
79
219
 
80
- .search-icon {
220
+ .closeButton {
221
+ display: none;
81
222
  position: absolute;
82
- right: ${unsafeCSS(spacing["3"])};
83
- top: 50%;
84
- transform: translateY(-50%);
85
- color: ${bdTheme('mutedForeground')};
223
+ top: 14px;
224
+ right: 14px;
225
+ width: 30px;
226
+ height: 30px;
227
+ border-radius: 15px;
228
+ border: none;
229
+ padding: 0;
230
+ align-items: center;
231
+ justify-content: center;
232
+ background: rgba(255, 255, 255, 0.18); /* on-tint scrim per v7 */
233
+ color: #fff;
234
+ cursor: pointer;
86
235
  }
87
236
 
88
- .conversation-list {
237
+ /* ── body cards ──────────────────────────────────────────── */
238
+ .body {
89
239
  flex: 1;
240
+ min-height: 0;
241
+ padding: 16px 16px 0;
242
+ display: flex;
243
+ flex-direction: column;
244
+ gap: 10px;
90
245
  overflow-y: auto;
91
- padding: ${unsafeCSS(spacing["2"])};
92
246
  }
93
247
 
94
- .conversation-item {
95
- padding: ${unsafeCSS(spacing["3.5"])};
96
- margin-bottom: ${unsafeCSS(spacing["1.5"])};
97
- background: ${bdTheme('background')};
98
- border: 1px solid transparent;
99
- border-radius: ${unsafeCSS(radius.lg)};
100
- cursor: pointer;
101
- transition: ${unsafeCSS(transitions.all)};
102
- position: relative;
248
+ .card {
249
+ flex-shrink: 0;
250
+ border-radius: var(--sio-radius-lg);
251
+ background: var(--sio-surface-2);
252
+ overflow: hidden;
103
253
  }
104
254
 
105
- .conversation-item:hover {
106
- background: ${bdTheme('accent')};
107
- transform: translateX(2px);
108
- box-shadow: ${unsafeCSS(shadows.sm)};
255
+ .recentCard {
256
+ padding: 12px 14px;
109
257
  }
110
258
 
111
- .conversation-item.selected {
112
- background: ${bdTheme('accent')};
113
- border-color: ${bdTheme('border')};
114
- box-shadow: ${unsafeCSS(shadows.sm)};
115
- }
116
-
117
- .conversation-item.selected::before {
118
- content: '';
119
- position: absolute;
120
- left: 0;
121
- top: 50%;
122
- transform: translateY(-50%);
123
- width: 3px;
124
- height: 60%;
125
- background: ${bdTheme('primary')};
126
- border-radius: 0 3px 3px 0;
127
- animation: slideIn 200ms ease-out;
128
- }
129
-
130
- @keyframes slideIn {
131
- from {
132
- width: 0;
133
- opacity: 0;
134
- }
135
- to {
136
- width: 3px;
137
- opacity: 1;
138
- }
259
+ .cardLabel {
260
+ font-size: 11px;
261
+ font-weight: 700;
262
+ color: var(--sio-label-3);
263
+ text-transform: uppercase;
264
+ letter-spacing: 0.05px;
265
+ margin-bottom: 8px;
139
266
  }
140
267
 
141
- .conversation-header {
268
+ .recentRow {
142
269
  display: flex;
143
- justify-content: space-between;
144
270
  align-items: center;
145
- margin-bottom: ${unsafeCSS(spacing["1"])};
271
+ gap: 10px;
272
+ cursor: pointer;
146
273
  }
147
274
 
148
- .conversation-title {
149
- font-weight: 500;
150
- color: ${bdTheme('foreground')};
275
+ .recentRow + .recentRow {
276
+ margin-top: 10px;
277
+ padding-top: 10px;
278
+ border-top: var(--sio-hairline) solid var(--sio-separator);
279
+ }
280
+
281
+ .recentMain {
282
+ flex: 1;
283
+ min-width: 0;
284
+ }
285
+
286
+ .recentTitle {
287
+ font-size: 13.5px;
288
+ font-weight: 600;
289
+ color: var(--sio-label);
151
290
  display: flex;
152
291
  align-items: center;
153
- gap: ${unsafeCSS(spacing["2"])};
154
- font-size: 0.9375rem;
155
- letter-spacing: -0.01em;
292
+ gap: 6px;
156
293
  }
157
294
 
158
- .conversation-time {
159
- font-size: 0.75rem;
160
- line-height: 1.5;
161
- color: ${bdTheme('mutedForeground')};
162
- opacity: 0.8;
295
+ .unreadDot {
296
+ width: 7px;
297
+ height: 7px;
298
+ border-radius: 4px;
299
+ background: var(--sio-tint);
300
+ flex-shrink: 0;
163
301
  }
164
302
 
165
- .conversation-preview {
166
- font-size: 0.8125rem;
167
- line-height: 1.5;
168
- color: ${bdTheme('mutedForeground')};
303
+ .recentPreview {
304
+ font-size: 12.5px;
305
+ color: var(--sio-label-3);
169
306
  overflow: hidden;
170
307
  text-overflow: ellipsis;
171
308
  white-space: nowrap;
172
- margin-top: ${unsafeCSS(spacing["0.5"])};
173
309
  }
174
310
 
175
- .unread-dot {
176
- display: inline-block;
177
- width: 6px;
178
- height: 6px;
179
- background: ${bdTheme('primary')};
180
- border-radius: 50%;
181
- animation: pulse 2s ease-in-out infinite;
182
- box-shadow: 0 0 0 0 ${bdTheme('primary')};
183
- }
184
-
185
- @keyframes pulse {
186
- 0% {
187
- opacity: 1;
188
- transform: scale(1);
189
- box-shadow: 0 0 0 0 ${bdTheme('primary')}40;
190
- }
191
- 50% {
192
- opacity: 0.9;
193
- transform: scale(1.05);
194
- box-shadow: 0 0 0 4px ${bdTheme('primary')}00;
195
- }
196
- 100% {
197
- opacity: 1;
198
- transform: scale(1);
199
- box-shadow: 0 0 0 0 ${bdTheme('primary')}00;
200
- }
311
+ .recentTime {
312
+ font-size: 11px;
313
+ color: var(--sio-label-3);
314
+ font-variant-numeric: tabular-nums;
315
+ flex-shrink: 0;
201
316
  }
202
317
 
203
- .empty-state {
318
+ /* solid tint CTA row */
319
+ .cta {
320
+ flex-shrink: 0;
321
+ border-radius: var(--sio-radius-lg);
322
+ padding: 13px 14px;
323
+ background: var(--sio-tint);
324
+ color: #fff; /* on-tint constant (v7 CTA row) */
204
325
  display: flex;
205
- flex-direction: column;
206
326
  align-items: center;
207
- justify-content: center;
208
- height: 100%;
209
- padding: ${unsafeCSS(spacing["4"])};
210
- text-align: center;
211
- color: ${bdTheme('mutedForeground')};
212
- gap: ${unsafeCSS(spacing["3"])};
327
+ gap: 10px;
328
+ cursor: pointer;
329
+ border: none;
330
+ width: 100%;
331
+ text-align: left;
332
+ font-family: inherit;
333
+ transition: background 120ms ease;
334
+ }
335
+
336
+ .cta:hover {
337
+ background: var(--sio-tint-hover);
213
338
  }
214
339
 
215
- .empty-icon {
216
- font-size: 48px;
217
- opacity: 0.5;
340
+ .cta .ctaLabel {
341
+ flex: 1;
342
+ font-size: 14px;
343
+ font-weight: 600;
344
+ letter-spacing: -0.1px;
345
+ }
346
+
347
+ .cta .chevron {
348
+ color: rgba(255, 255, 255, 0.8);
349
+ }
350
+
351
+ /* FAQ list card */
352
+ .faqRow {
353
+ padding: 11px 14px;
354
+ font-size: 13.5px;
355
+ color: var(--sio-label);
356
+ display: flex;
357
+ align-items: center;
358
+ gap: 8px;
359
+ cursor: pointer;
360
+ transition: background 120ms ease;
218
361
  }
219
362
 
220
- /* Scrollbar styling */
221
- .conversation-list::-webkit-scrollbar {
222
- width: 6px;
363
+ .faqRow + .faqRow {
364
+ border-top: var(--sio-hairline) solid var(--sio-separator);
223
365
  }
224
366
 
225
- .conversation-list::-webkit-scrollbar-track {
226
- background: transparent;
367
+ .faqRow:hover {
368
+ background: color-mix(in oklab, var(--sio-label) 4%, transparent);
227
369
  }
228
370
 
229
- .conversation-list::-webkit-scrollbar-thumb {
230
- background: ${bdTheme('border')};
231
- border-radius: 3px;
371
+ .faqRow .question {
372
+ flex: 1;
232
373
  }
233
374
 
234
- .conversation-list::-webkit-scrollbar-thumb:hover {
235
- background: ${bdTheme('mutedForeground')};
375
+ .faqRow sio-icon {
376
+ color: var(--sio-label-3);
236
377
  }
237
378
  `,
238
- ];
239
- render() {
240
- const filteredConversations = this.conversations.filter(conv => conv.title.toLowerCase().includes(this.searchQuery.toLowerCase()) ||
241
- conv.lastMessage.toLowerCase().includes(this.searchQuery.toLowerCase()));
242
- return html `
379
+ // phablet full-screen: surface the close chevron
380
+ cssManager.cssForPhablet(css `
381
+ .closeButton {
382
+ display: flex;
383
+ }
384
+ `),
385
+ ];
386
+ render() {
387
+ return html `
243
388
  <div class="header">
244
- <div class="header-top">
245
- <h2 class="title">Messages</h2>
246
- <sio-button
247
- type="primary"
248
- size="sm"
249
- @click=${() => this.startNewConversation()}
250
- >
251
- <sio-icon icon="plus" size="16"></sio-icon>
252
- New
253
- </sio-button>
389
+ <button class="closeButton" aria-label="Close messenger" @click=${this.handleClose}>
390
+ <sio-icon icon="chevron-down" size="18" .strokeWidth=${2.4}></sio-icon>
391
+ </button>
392
+ <div class="teamStack">
393
+ ${this.team.map((member) => html `
394
+ <span class="member">
395
+ <sio-avatar
396
+ initials=${member.initials}
397
+ tint=${member.tint}
398
+ size="32"
399
+ ></sio-avatar>
400
+ </span>
401
+ `)}
254
402
  </div>
255
- <div class="search-box">
256
- <input
257
- type="text"
258
- class="search-input"
259
- placeholder="Search conversations..."
260
- .value=${this.searchQuery}
261
- @input=${(e) => this.searchQuery = e.target.value}
262
- />
263
- <sio-icon class="search-icon" icon="search" size="16"></sio-icon>
403
+ <div class="greeting">${this.greeting}<br />${this.tagline}</div>
404
+ <div class="presence">
405
+ <span class="dot"></span>
406
+ ${this.replyNote}
264
407
  </div>
265
408
  </div>
266
-
267
- ${filteredConversations.length > 0 ? html `
268
- <div class="conversation-list">
269
- ${filteredConversations.map(conv => html `
270
- <div
271
- class="conversation-item ${this.selectedConversationId === conv.id ? 'selected' : ''}"
272
- @click=${() => this.selectConversation(conv)}
273
- >
274
- <div class="conversation-header">
275
- <span class="conversation-title">
276
- ${conv.title}
277
- ${conv.unread ? html `<span class="unread-dot"></span>` : ''}
278
- </span>
279
- <span class="conversation-time">${conv.time}</span>
409
+
410
+ <div class="body">
411
+ ${this.conversations.length > 0
412
+ ? html `
413
+ <div class="card recentCard">
414
+ <div class="cardLabel">Recent</div>
415
+ ${this.conversations.map((conversation) => html `
416
+ <div class="recentRow" @click=${() => this.selectConversation(conversation)}>
417
+ <sio-avatar
418
+ initials=${conversation.initials || this.deriveInitials(conversation.title)}
419
+ tint=${conversation.tint || 'var(--sio-tint)'}
420
+ size="30"
421
+ ></sio-avatar>
422
+ <div class="recentMain">
423
+ <div class="recentTitle">
424
+ ${conversation.title}
425
+ ${conversation.unread ? html `<span class="unreadDot"></span>` : ''}
426
+ </div>
427
+ <div class="recentPreview">${conversation.lastMessage}</div>
428
+ </div>
429
+ <span class="recentTime">${conversation.time}</span>
430
+ </div>
431
+ `)}
280
432
  </div>
281
- <div class="conversation-preview">${conv.lastMessage}</div>
282
- </div>
283
- `)}
284
- </div>
285
- ` : html `
286
- <div class="empty-state">
287
- <sio-icon class="empty-icon" icon="message-square"></sio-icon>
288
- <h3>${this.searchQuery ? 'No matching conversations' : 'No conversations yet'}</h3>
289
- <p>${this.searchQuery ? 'Try a different search term' : 'Start a new conversation to get started'}</p>
290
- </div>
291
- `}
433
+ `
434
+ : ''}
435
+
436
+ <button class="cta" @click=${this.startNewConversation}>
437
+ <sio-icon icon="pencil" size="16" .strokeWidth=${1.8}></sio-icon>
438
+ <span class="ctaLabel">Send us a message</span>
439
+ <sio-icon class="chevron" icon="chevron-right" size="13" .strokeWidth=${2}></sio-icon>
440
+ </button>
441
+
442
+ ${this.faqs.length > 0
443
+ ? html `
444
+ <div class="card">
445
+ ${this.faqs.map((question) => html `
446
+ <div class="faqRow" @click=${() => this.selectFaq(question)}>
447
+ <span class="question">${question}</span>
448
+ <sio-icon icon="chevron-right" size="12" .strokeWidth=${2}></sio-icon>
449
+ </div>
450
+ `)}
451
+ </div>
452
+ `
453
+ : ''}
454
+ </div>
292
455
  `;
293
- }
294
- selectConversation(conversation) {
295
- this.selectedConversationId = conversation.id;
296
- // Dispatch event for parent components
297
- this.dispatchEvent(new CustomEvent('conversation-selected', {
298
- detail: { conversation },
299
- bubbles: true,
300
- composed: true
301
- }));
302
- }
303
- startNewConversation() {
304
- // Dispatch event for parent components to handle new conversation creation
305
- this.dispatchEvent(new CustomEvent('new-conversation', {
306
- bubbles: true,
307
- composed: true
308
- }));
309
- }
310
- }
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWNvbnZlcnNhdGlvbi1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tY29udmVyc2F0aW9uLXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLElBQUksRUFDSixhQUFhLEVBRWIsVUFBVSxFQUNWLEdBQUcsRUFDSCxTQUFTLEVBQ1QsS0FBSyxHQUNOLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsdUJBQXVCO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFrQnhELENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDO0FBQzNDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxXQUFXO0lBQy9DLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOztHQUU5QixDQUFDO0lBRUYsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDbkIsUUFBUSxDQUFDLGFBQWEsR0FBb0IsRUFBRSxDQUFDO0lBRXBELENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxzQkFBc0IsR0FBa0IsSUFBSSxDQUFDO0lBRTdELENBQUMsS0FBSyxFQUFFO0lBQ0EsUUFBUSxDQUFDLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFFbkMsTUFBTSxDQUFDLE1BQU0sR0FBRztRQUNyQixVQUFVLENBQUMsYUFBYTtRQUN4QixHQUFHLENBQUE7Ozs7O3NCQUtlLE9BQU8sQ0FBQyxN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
456
+ }
457
+ deriveInitials(title) {
458
+ return title
459
+ .split(/[\s·]+/)
460
+ .filter((part) => part.length > 0)
461
+ .slice(0, 2)
462
+ .map((part) => part[0].toUpperCase())
463
+ .join('');
464
+ }
465
+ selectConversation(conversation) {
466
+ this.selectedConversationId = conversation.id;
467
+ this.dispatchEvent(new CustomEvent('conversation-selected', {
468
+ detail: { conversation },
469
+ bubbles: true,
470
+ composed: true,
471
+ }));
472
+ }
473
+ startNewConversation = (__runInitializers(this, _faqs_extraInitializers), () => {
474
+ this.dispatchEvent(new CustomEvent('new-conversation', {
475
+ bubbles: true,
476
+ composed: true,
477
+ }));
478
+ });
479
+ selectFaq(question) {
480
+ this.dispatchEvent(new CustomEvent('faq-selected', {
481
+ detail: { question },
482
+ bubbles: true,
483
+ composed: true,
484
+ }));
485
+ }
486
+ handleClose = () => {
487
+ this.dispatchEvent(new CustomEvent('close', {
488
+ bubbles: true,
489
+ composed: true,
490
+ }));
491
+ };
492
+ static {
493
+ __runInitializers(_classThis, _classExtraInitializers);
494
+ }
495
+ };
496
+ return SioConversationSelector = _classThis;
497
+ })();
498
+ export { SioConversationSelector };
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWNvbnZlcnNhdGlvbi1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tY29udmVyc2F0aW9uLXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEdBRVgsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxlQUFlLENBQUM7QUFDdkIsT0FBTyxpQkFBaUIsQ0FBQztBQStCekI7Ozs7Ozs7Ozs7Ozs7O0dBY0c7SUFFVSx1QkFBdUI7NEJBRG5DLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VDQUFuQixTQUFRLFdBQVc7Ozs7eUNBb0JyRCxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7a0RBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQ0FJMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQUkxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7cUNBSTFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQ0FJMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQVF6QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7WUExQjFCLDRMQUFnQixhQUFhLDZCQUFiLGFBQWEscUdBQXVCO1lBR3BELHVOQUFnQixzQkFBc0IsNkJBQXRCLHNCQUFzQix1SEFBdUI7WUFJN0QsNktBQWdCLFFBQVEsNkJBQVIsUUFBUSwyRkFBaUI7WUFJekMsMEtBQWdCLE9BQU8sNkJBQVAsT0FBTyx5RkFBc0I7WUFJN0MsZ0xBQWdCLFNBQVMsNkJBQVQsU0FBUyw2RkFBeUM7WUFJbEUsaUtBQWdCLElBQUksNkJBQUosSUFBSSxtRkFJbEI7WUFJRixpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUlsQjtZQXBESiw2S0EyWkM7Ozs7UUExWlEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7O3lCQUtSO1lBQ2Y7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLEtBQUssRUFBRSxjQUFjO2dCQUNyQixXQUFXLEVBQUUsa0RBQWtEO2dCQUMvRCxJQUFJLEVBQUUsSUFBSTtnQkFDVixRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsU0FBUzthQUNRO1NBQzFCOzs7R0FHTixDQUFDO1FBR0YsdUZBQWlELEVBQUUsRUFBQztRQUFwRCxJQUFnQixhQUFhLG1EQUF1QjtRQUFwRCxJQUFnQixhQUFhLHlEQUF1QjtRQUdwRCxxS0FBd0QsSUFBSSxHQUFDO1FBQTdELElBQWdCLHNCQUFzQiw0REFBdUI7UUFBN0QsSUFBZ0Isc0JBQXNCLGtFQUF1QjtRQUk3RCxrSkFBMkIsYUFBYSxHQUFDO1FBRnpDLG9DQUFvQztRQUVwQyxJQUFnQixRQUFRLDhDQUFpQjtRQUF6QyxJQUFnQixRQUFRLG9EQUFpQjtRQUl6QyxrSUFBMEIsa0JBQWtCLEdBQUM7UUFGN0MscUNBQXFDO1FBRXJDLElBQWdCLE9BQU8sNkNBQXNCO1FBQTdDLElBQWdCLE9BQU8sbURBQXNCO1FBSTdDLHFJQUE0QixxQ0FBcUMsR0FBQztRQUZsRSwwQ0FBMEM7UUFFMUMsSUFBZ0IsU0FBUywrQ0FBeUM7UUFBbEUsSUFBZ0IsU0FBUyxxREFBeUM7UUFJbEUsNkhBQXNDO1lBQ3BDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25DLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25DLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQ3BDLEdBQUM7UUFORixrRUFBa0U7UUFFbEUsSUFBZ0IsSUFBSSwwQ0FJbEI7UUFKRixJQUFnQixJQUFJLGdEQUlsQjtRQUlGLHdIQUFpQztZQUMvQixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtTQUNsQixHQUFDO1FBTkYsd0JBQXdCO1FBRXhCLElBQWdCLElBQUksMENBSWxCO1FBSkYsSUFBZ0IsSUFBSSxnREFJbEI7UUFFSyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E2TkY7WUFDRCxpREFBaUQ7WUFDakQsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUE7Ozs7S0FJM0IsQ0FBQztTQUNILENBQUM7UUFFSyxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUE7OzBFQUUyRCxJQUFJLENBQUMsV0FBVztpRUFDekIsR0FBRzs7O1lBR3hELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNiLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs2QkFHQyxNQUFNLENBQUMsUUFBUTt5QkFDbkIsTUFBTSxDQUFDLElBQUk7Ozs7YUFJdkIsQ0FDRjs7Z0NBRXFCLElBQUksQ0FBQyxRQUFRLFNBQVMsSUFBSSxDQUFDLE9BQU87OztZQUd0RCxJQUFJLENBQUMsU0FBUzs7Ozs7VUFLaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQTs7O2tCQUdFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUN0QixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFBO29EQUNZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7O21DQUU1RCxZQUFZLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQzsrQkFDcEUsWUFBWSxDQUFDLElBQUksSUFBSSxpQkFBaUI7Ozs7OzRCQUt6QyxZQUFZLENBQUMsS0FBSzs0QkFDbEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxFQUFFOztxREFFdkMsWUFBWSxDQUFDLFdBQVc7O2lEQUU1QixZQUFZLENBQUMsSUFBSTs7bUJBRS9DLENBQ0Y7O2FBRUo7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUU7O3FDQUV1QixJQUFJLENBQUMsb0JBQW9COzJEQUNILEdBQUc7O2tGQUVvQixDQUFDOzs7VUFHekUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQTs7a0JBRUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQTtpREFDYSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzsrQ0FDaEMsUUFBUTs4RUFDdUIsQ0FBQzs7bUJBRTVELENBQ0Y7O2FBRUo7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUU7O0tBRVQsQ0FBQztRQUNKLENBQUM7UUFFTyxjQUFjLENBQUMsS0FBYTtZQUNsQyxPQUFPLEtBQUs7aUJBQ1QsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDZixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNqQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDWCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztRQUVPLGtCQUFrQixDQUFDLFlBQTJCO1lBQ3BELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLENBQ2hCLElBQUksV0FBVyxDQUFDLHVCQUF1QixFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBRU8sb0JBQW9CLHNEQUFHLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUNoQixJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDbEMsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsRUFBQztRQUVNLFNBQVMsQ0FBQyxRQUFnQjtZQUNoQyxJQUFJLENBQUMsYUFBYSxDQUNoQixJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFTyxXQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQ2hCLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFDdkIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQzs7WUExWlMsdURBQXVCOzs7OztTQUF2Qix1QkFBdUIifQ==