@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
package/readme.md CHANGED
@@ -1,190 +1,157 @@
1
1
  # @social.io/catalog
2
2
 
3
- A modern, beautifully designed UI component library for building conversational interfaces and support chat experiences. Built with Lit Element and TypeScript.
3
+ The social.io v8 design system and web component library: Apple-native Lit components for the unified-inbox product family — the faceted social.io brand mark, feed rows, channel navigation, command palette, media primitives, and the embeddable chat-widget suite. Built on [@design.estate/dees-element](https://www.npmjs.com/package/@design.estate/dees-element) (Lit 3, standard TC39 decorators) with a CSS-custom-property token system and full light/dark theming.
4
4
 
5
5
  ## Issue Reporting and Security
6
6
 
7
7
  For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
8
8
 
9
- ## 🎯 Features
10
-
11
- - **Complete Chat UI** - Ready-to-use conversation components with message threads, typing indicators, and attachments
12
- - **Floating Action Button** - Eye-catching FAB with smooth animations for triggering the chat interface
13
- - **PDF Viewer** - Built-in PDF rendering with zoom, pagination, and download capabilities
14
- - **Image Lightbox** - Full-featured lightbox with zoom, pan, and keyboard navigation
15
- - **Modern Design Tokens** - Consistent styling with customizable colors, spacing, typography, and shadows
16
- - **Dark Mode Ready** - Full light/dark theme support out of the box
17
- - **Accessibility** - Keyboard navigation and proper ARIA attributes
18
- - **TypeScript First** - Full type definitions for all components
19
-
20
- ## 📦 Installation
9
+ ## Install
21
10
 
22
11
  ```bash
23
- npm install @social.io/catalog
24
- # or
25
12
  pnpm add @social.io/catalog
26
13
  ```
27
14
 
28
- ## 🚀 Quick Start
15
+ ## Design System
29
16
 
30
- ```typescript
31
- import { SioFab, SioCombox } from '@social.io/catalog';
17
+ Product UI components draw from the token layer in `tokens.ts`; `sio-logo`
18
+ preserves the canonical v8 facet palette as brand artwork:
32
19
 
33
- // Components auto-register as custom elements
34
- // Just use them in your HTML:
35
- ```
20
+ - **Semantic surfaces** — `--sio-bg`, `--sio-surface`, `--sio-surface-2`, four label levels, and 0.5px hairline separators, switching between iOS-style light (`#F2F2F7`/`#FFFFFF`) and true-black dark (`#000`/`#1C1C1E`).
21
+ - **Tint** — `--sio-tint` `#0A84FF`, deliberately brightened to `#409CFF` in dark mode, with hover and soft (translucent) variants.
22
+ - **Channel palette** — mail `#0A84FF`, chats `#30D158`, calls `#FF9F0A`, letters `#A2845E`; lane palette (feed/paper/people) and triage-bucket palette (now/today/later/done) alongside.
23
+ - **Density** — `--sio-row-comfortable` 78px, `--sio-row-cozy` 62px, `--sio-row-compact` 48px.
24
+ - **Glass recipes** — `sioGlass`, `sioToolbarGlass`, `sioPillGlass` (backdrop blur + saturate) as reusable CSS fragments.
25
+ - **SF type ramp** — `sioTypeLargeTitle` (34/700) through `sioTypeCaption2` (11/400), tabular numerals for counts and times.
36
26
 
37
- ```html
38
- <!-- Floating Action Button that opens the chat -->
39
- <sio-fab></sio-fab>
27
+ Theming follows the ambient theme via `cssManager.bdTheme()` pairs, with explicit `:host([theme='dark'])` / `:host([dark])` attribute overrides.
40
28
 
41
- <!-- Or use the full chat box directly -->
42
- <sio-combox></sio-combox>
29
+ ```typescript
30
+ import { css } from '@design.estate/dees-element';
31
+ import { sioElementStyles } from '@social.io/catalog';
32
+
33
+ // in your own component:
34
+ public static styles = [
35
+ ...sioElementStyles,
36
+ css`
37
+ .bar { background: var(--sio-surface); color: var(--sio-tint); }
38
+ `,
39
+ ];
43
40
  ```
44
41
 
45
- ## 🧩 Components
46
-
47
- ### Core Components
48
-
49
- | Component | Description |
50
- |-----------|-------------|
51
- | `<sio-fab>` | Floating action button with animated chat icon |
52
- | `<sio-combox>` | Complete chat interface with conversation list and message view |
53
- | `<sio-button>` | Styled button with variants (primary, secondary, destructive, outline, ghost) |
54
- | `<sio-icon>` | Lucide icon wrapper with size and color customization |
55
- | `<sio-dropdown-menu>` | Animated dropdown menu with keyboard support |
56
-
57
- ### Conversation Components
58
-
59
- | Component | Description |
60
- |-----------|-------------|
61
- | `<sio-conversation-selector>` | Searchable list of conversations with unread indicators |
62
- | `<sio-conversation-view>` | Message thread with typing indicators and file attachments |
63
- | `<sio-message-input>` | Auto-expanding textarea with file upload |
64
-
65
- ### Media Components
66
-
67
- | Component | Description |
68
- |-----------|-------------|
69
- | `<sio-image-lightbox>` | Fullscreen image viewer with zoom and pan |
70
- | `<sio-pdf-viewer>` | PDF renderer with page navigation and zoom controls |
71
-
72
- ### Utility Components
73
-
74
- | Component | Description |
75
- |-----------|-------------|
76
- | `<sio-recorder>` | Session recording using rrweb |
77
-
78
- ## 💅 Styling & Theming
79
-
80
- The library uses CSS custom properties for theming. The design system includes:
81
-
82
- - **Colors** - Primary, secondary, accent, destructive, muted, and semantic colors
83
- - **Typography** - System font stack with size and weight variants
84
- - **Spacing** - Consistent spacing scale (0.5rem increments)
85
- - **Radius** - Border radius tokens from sm to full
86
- - **Shadows** - Elevation system from sm to 2xl
87
- - **Transitions** - Smooth animation presets
88
-
89
- ### Dark Mode
42
+ ## Components
90
43
 
91
- Dark mode is automatically supported. The components use `bdTheme()` helper that switches between light and dark values:
44
+ Components auto-register as custom elements on import.
92
45
 
93
46
  ```typescript
94
- import { bdTheme } from '@social.io/catalog';
95
-
96
- // Usage in styles
97
- css`
98
- background: ${bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 10%)')};
99
- `
47
+ import '@social.io/catalog';
100
48
  ```
101
49
 
102
- ## 📖 Usage Examples
103
-
104
- ### Basic Chat FAB
105
-
106
50
  ```html
107
- <sio-fab></sio-fab>
51
+ <sio-logo size="30" theme="auto" no-entrance></sio-logo>
108
52
  ```
109
53
 
110
- The FAB opens a complete chat interface when clicked. It includes:
111
- - Keyboard shortcut (Ctrl+S) to toggle
112
- - Smooth scale and pulse animations
113
- - Gradient background with glow effects
114
-
115
- ### Custom Button Variants
54
+ ### Foundation
55
+
56
+ | Element | Purpose |
57
+ | --- | --- |
58
+ | `sio-logo` | Faceted social.io S mark with tight/square layouts, palette modes, and reduced-motion-aware animations |
59
+ | `sio-icon` | Lucide icon renderer (`icon`, `size`, `color`, `strokeWidth`) |
60
+ | `sio-button` | Primary / secondary / destructive / outline / ghost variants, sm–lg sizes, status spinner |
61
+ | `sio-avatar` / `sio-avatar-stack` | Initials-on-tint circles with presence dot, channel badge, overlapping stacks |
62
+ | `sio-chip` | Channel / lane / status chips (uppercase 11px on soft color-mix background) |
63
+ | `sio-unread-badge` | Count pills in channel colors, rail-sized variant |
64
+ | `sio-kbd` | Keyboard-shortcut hint chip (mono, hairline border) |
65
+
66
+ #### `sio-logo`
67
+
68
+ | Property | Default | Purpose |
69
+ | --- | --- | --- |
70
+ | `size` | `40` | Mark height in CSS pixels; tight-crop width follows the brand aspect ratio |
71
+ | `background` | `transparent` | Canvas background color |
72
+ | `gap` | `2` | Inset between facets in the 500px design grid |
73
+ | `radius` | `16` | Facet corner radius in the 500px design grid |
74
+ | `square` | `false` | Render on a square tile instead of the tight S crop |
75
+ | `mono` | empty | Use one color while retaining facet depth |
76
+ | `theme` | `auto` | Select `auto`, `light`, or `dark` backdrop palette behavior |
77
+ | `loading` | `false` | Run the looping loading treatment |
78
+ | `no-entrance` | `false` | Disable the entrance animation |
79
+ | `no-hover` | `false` | Disable the pointer wave animation |
80
+
81
+ The public `play()`, `wave()`, and `dismiss()` methods trigger the entrance,
82
+ wave, and exit treatments. All motion respects `prefers-reduced-motion`.
83
+
84
+ ### Chrome and navigation
85
+
86
+ | Element | Purpose |
87
+ | --- | --- |
88
+ | `sio-glass-toolbar` | 44px glass bar with start/center/end slots |
89
+ | `sio-segmented` | iOS-style segmented control with counts |
90
+ | `sio-tab-bar` | Mobile bottom glass bar, channel tabs + optional calendar |
91
+ | `sio-channel-rail` | 64px desktop rail with the built-in v8 brand mark and per-channel unread badges |
92
+ | `sio-dropdown-menu` | Slot-triggered menu with destructive/disabled items |
93
+
94
+ `sio-tab-bar` uses `max(30px, var(--sio-safe-area-bottom,
95
+ env(safe-area-inset-bottom, 0px)))` for its bottom padding. Set
96
+ `--sio-safe-area-bottom` when a screenshot or native shell supplies a known
97
+ system-reserved area.
98
+
99
+ ### Lists and feed
100
+
101
+ | Element | Purpose |
102
+ | --- | --- |
103
+ | `sio-list-row` | Universal row: three densities, unread-dot gutter, selection tint, hover action slot |
104
+ | `sio-inset-list` | iOS grouped card list with inset hairlines and section headers |
105
+ | `sio-bucket-header` | Triage-bucket header (colored dot + uppercase label + count) |
106
+
107
+ ### Content and input
108
+
109
+ | Element | Purpose |
110
+ | --- | --- |
111
+ | `sio-ai-card` | AI summary/translation surface (soft tint, uppercase eyebrow, bullets) |
112
+ | `sio-composer` | Pill input + circular send button, attach slot, email-capture variant |
113
+ | `sio-cmdk` | Command palette: search, grouped results, keyboard navigation, kbd chords |
114
+ | `sio-waveform` | Voicemail player bar chart with progress coloring and counters |
115
+ | `sio-step-timeline` | Vertical tracking timeline (done/pending steps) |
116
+ | `sio-paper-thumb` | Physical-letter thumbnail (torn-edge inbound / stamped outbound) |
117
+
118
+ ### Embeddable chat-widget suite
119
+
120
+ | Element | Purpose |
121
+ | --- | --- |
122
+ | `sio-fab` | 56px tinted launcher with unread badge and open/close crossfade |
123
+ | `sio-combox` | The widget shell (380×620, singleton `createOnBody()`), welcome → conversation → away states, "Powered by social.io" footer |
124
+ | `sio-conversation-selector` | Gradient-header welcome pane: team avatar stack, recent conversation, CTA, FAQ list |
125
+ | `sio-conversation-view` | Message thread: glass header with presence, bubbles, typing indicator, away→email notice |
126
+ | `sio-message-input` | Composer wrapper with attachments and email-capture mode |
127
+ | `sio-image-lightbox` / `sio-pdf-viewer` | Attachment viewers (zoom/pan images, paginated PDFs) |
116
128
 
117
129
  ```html
118
- <sio-button type="primary">Submit</sio-button>
119
- <sio-button type="destructive">Delete</sio-button>
120
- <sio-button type="outline">Cancel</sio-button>
121
- <sio-button type="ghost" size="sm">
122
- <sio-icon icon="settings"></sio-icon>
123
- </sio-button>
130
+ <!-- Drop-in chat widget -->
131
+ <sio-fab></sio-fab>
124
132
  ```
125
133
 
126
- ### Image Lightbox
127
-
128
134
  ```typescript
129
- const lightbox = document.querySelector('sio-image-lightbox');
130
- lightbox.open({
131
- url: 'https://example.com/photo.jpg',
132
- name: 'My Photo',
133
- size: 1024000
134
- });
135
- ```
136
-
137
- ### PDF Viewer
135
+ import { SioCombox } from '@social.io/catalog';
138
136
 
139
- ```html
140
- <sio-pdf-viewer
141
- url="https://example.com/document.pdf"
142
- fileName="document.pdf"
143
- ></sio-pdf-viewer>
144
- ```
145
-
146
- ### Dropdown Menu
147
-
148
- ```html
149
- <sio-dropdown-menu
150
- .items=${[
151
- { id: 'edit', label: 'Edit', icon: 'pencil' },
152
- { id: 'delete', label: 'Delete', icon: 'trash', destructive: true }
153
- ]}
154
- @item-selected=${(e) => console.log('Selected:', e.detail.item)}
155
- >
156
- <sio-button type="ghost">
157
- <sio-icon icon="more-vertical"></sio-icon>
158
- </sio-button>
159
- </sio-dropdown-menu>
137
+ const combox = SioCombox.createOnBody();
138
+ combox.open();
160
139
  ```
161
140
 
162
- ## 🔧 Development
141
+ ## Development
163
142
 
164
143
  ```bash
165
- # Install dependencies
166
144
  pnpm install
167
-
168
- # Start development server with hot reload
169
- pnpm watch
170
-
171
- # Run tests
172
- pnpm test
173
-
174
- # Build for production
175
- pnpm build
145
+ pnpm watch # wcctools component dashboard on http://localhost:3002
146
+ pnpm test # Chromium component tests via @git.zone/tstest
147
+ pnpm build # tsbuild + tsbundle
176
148
  ```
177
149
 
178
- ## 📚 Dependencies
179
-
180
- - **@design.estate/dees-element** - Lit Element base with utilities
181
- - **@design.estate/dees-domtools** - DOM manipulation helpers
182
- - **lucide** - Beautiful open-source icons
183
- - **rrweb** - Session recording/replay (for recorder component)
150
+ Every component ships a `static demo` rendered in the wcctools dashboard, grouped into Primitives, Chat Widget, and Pages sections, with light/dark and viewport switching.
184
151
 
185
152
  ## License and Legal Information
186
153
 
187
- This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
154
+ This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the repository license file.
188
155
 
189
156
  **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
190
157
 
@@ -196,7 +163,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
196
163
 
197
164
  ### Company Information
198
165
 
199
- Task Venture Capital GmbH
166
+ Task Venture Capital GmbH<br>
200
167
  Registered at District Court Bremen HRB 35230 HB, Germany
201
168
 
202
169
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@social.io/catalog',
6
- version: '1.3.0',
7
- description: 'catalog for social.io'
6
+ version: '2.1.0',
7
+ description: 'Apple-native v8 design system and web components for social.io'
8
8
  }
@@ -1,16 +1,40 @@
1
- // Core components
1
+ // design tokens — custom props, glass recipes, SF type ramp
2
+ export * from './tokens.js';
3
+
4
+ // foundation
5
+ export * from './sio-logo.js';
2
6
  export * from './sio-icon.js';
3
7
  export * from './sio-button.js';
8
+ export * from './sio-kbd.js';
9
+ export * from './sio-chip.js';
10
+ export * from './sio-avatar.js';
11
+ export * from './sio-unread-badge.js';
12
+
13
+ // chrome & navigation
14
+ export * from './sio-glass-toolbar.js';
15
+ export * from './sio-segmented.js';
16
+ export * from './sio-tab-bar.js';
17
+ export * from './sio-channel-rail.js';
4
18
  export * from './sio-dropdown-menu.js';
5
19
 
6
- // Conversation components
20
+ // lists & feed
21
+ export * from './sio-list-row.js';
22
+ export * from './sio-inset-list.js';
23
+ export * from './sio-bucket-header.js';
24
+
25
+ // content & input
26
+ export * from './sio-ai-card.js';
27
+ export * from './sio-composer.js';
28
+ export * from './sio-cmdk.js';
29
+ export * from './sio-waveform.js';
30
+ export * from './sio-step-timeline.js';
31
+ export * from './sio-paper-thumb.js';
32
+
33
+ // embeddable chat-widget suite
34
+ export * from './sio-fab.js';
35
+ export * from './sio-combox.js';
7
36
  export * from './sio-conversation-selector.js';
8
37
  export * from './sio-conversation-view.js';
9
38
  export * from './sio-message-input.js';
10
- export * from './sio-combox.js';
11
-
12
- // Other components
13
- export * from './sio-fab.js';
14
- export * from './sio-recorder.js';
15
39
  export * from './sio-image-lightbox.js';
16
40
  export * from './sio-pdf-viewer.js';
@@ -0,0 +1,175 @@
1
+ import {
2
+ DeesElement,
3
+ html,
4
+ property,
5
+ customElement,
6
+ css,
7
+ type TemplateResult,
8
+ } from '@design.estate/dees-element';
9
+ import { sioElementStyles } from './tokens.js';
10
+ import './sio-icon.js';
11
+
12
+ /**
13
+ * Accent source for the card. Empty string = system tint (default);
14
+ * a channel name colors the card with the channel palette instead
15
+ * (bg 8% / border 28% per the unified detail design).
16
+ */
17
+ export type TSioAiCardChannel = '' | 'mail' | 'chats' | 'calls' | 'letters';
18
+
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ 'sio-ai-card': SioAiCard;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * sio-ai-card — the shared AI surface of social.io v7.
27
+ *
28
+ * Tint-soft (or channel-color 8%) background, 0.5px hairline border at
29
+ * color-mix 25–28%, radius 12. Header row: sparkle icon + uppercase
30
+ * 11/700 tinted eyebrow. Slotted children render as bullet lines,
31
+ * each prefixed with a tinted dot (disable via `plain` for the
32
+ * single-paragraph summary style).
33
+ *
34
+ * Design sources: SocialIODesktop.jsx (thread AI summary),
35
+ * SocialIOUnified.jsx (channel-colored summary),
36
+ * SocialIOChannels.jsx (letters "translated" summary).
37
+ */
38
+ @customElement('sio-ai-card')
39
+ export class SioAiCard extends DeesElement {
40
+ public static demo = () => html`
41
+ <div
42
+ style="display: grid; gap: 14px; max-width: 640px; padding: 24px; background: var(--sio-bg); font-family: var(--sio-font-sf);"
43
+ >
44
+ <sio-ai-card label="Summary · 4 messages">
45
+ <div>Lena rewrote the hero and the "three lanes" section based on Tuesday's feedback.</div>
46
+ <div>Two open questions: (1) keep the Hey-style screener mention, (2) tighten the closing CTA.</div>
47
+ <div>She's asking for a 15-min sync before Tuesday's ship.</div>
48
+ </sio-ai-card>
49
+
50
+ <sio-ai-card label="Summary" translated-to="English" plain>
51
+ <div>
52
+ 2024 tax assessment — <b>refund of €1,284.60</b> due to you. Will be paid to your
53
+ registered bank account within 4 weeks. Objection period: 1 month.
54
+ </div>
55
+ </sio-ai-card>
56
+
57
+ <sio-ai-card label="AI summary" channel="letters" plain>
58
+ <div>Scanned at Berlin-Mitte hub. Objection deadline in 28 days.</div>
59
+ </sio-ai-card>
60
+
61
+ <sio-ai-card label="AI summary" channel="chats" plain>
62
+ <div>Lena: "bumping this — should we hold the banner for Thursday?"</div>
63
+ </sio-ai-card>
64
+ </div>
65
+ `;
66
+
67
+ /** Eyebrow text, rendered uppercase — e.g. "Summary · 4 messages". */
68
+ @property({ type: String })
69
+ public accessor label = 'Summary';
70
+
71
+ /** Channel accent; empty = system tint. */
72
+ @property({ type: String, reflect: true })
73
+ public accessor channel: TSioAiCardChannel = '';
74
+
75
+ /** Translated variant — appends "· translated to <language>" to the eyebrow. */
76
+ @property({ type: String, attribute: 'translated-to' })
77
+ public accessor translatedTo = '';
78
+
79
+ /** Single-paragraph summary style: no tinted dot in front of slotted lines. */
80
+ @property({ type: Boolean, reflect: true })
81
+ public accessor plain = false;
82
+
83
+ public static styles = [
84
+ ...sioElementStyles,
85
+ css`
86
+ :host {
87
+ display: block;
88
+ --sio-ai-accent: var(--sio-tint);
89
+ --sio-ai-bg: var(--sio-tint-soft);
90
+ --sio-ai-border: color-mix(in oklab, var(--sio-tint) 25%, transparent);
91
+ }
92
+ :host([channel='mail']) {
93
+ --sio-ai-accent: var(--sio-ch-mail);
94
+ --sio-ai-bg: color-mix(in oklab, var(--sio-ch-mail) 8%, transparent);
95
+ --sio-ai-border: color-mix(in oklab, var(--sio-ch-mail) 28%, transparent);
96
+ }
97
+ :host([channel='chats']) {
98
+ --sio-ai-accent: var(--sio-ch-chats);
99
+ --sio-ai-bg: color-mix(in oklab, var(--sio-ch-chats) 8%, transparent);
100
+ --sio-ai-border: color-mix(in oklab, var(--sio-ch-chats) 28%, transparent);
101
+ }
102
+ :host([channel='calls']) {
103
+ --sio-ai-accent: var(--sio-ch-calls);
104
+ --sio-ai-bg: color-mix(in oklab, var(--sio-ch-calls) 8%, transparent);
105
+ --sio-ai-border: color-mix(in oklab, var(--sio-ch-calls) 28%, transparent);
106
+ }
107
+ :host([channel='letters']) {
108
+ --sio-ai-accent: var(--sio-ch-letters);
109
+ --sio-ai-bg: color-mix(in oklab, var(--sio-ch-letters) 8%, transparent);
110
+ --sio-ai-border: color-mix(in oklab, var(--sio-ch-letters) 28%, transparent);
111
+ }
112
+
113
+ .card {
114
+ padding: 14px 16px;
115
+ border-radius: var(--sio-radius-md);
116
+ background: var(--sio-ai-bg);
117
+ border: var(--sio-hairline) solid var(--sio-ai-border);
118
+ }
119
+
120
+ .eyebrow {
121
+ display: flex;
122
+ align-items: center;
123
+ gap: 8px;
124
+ margin-bottom: 8px;
125
+ font-size: 11px;
126
+ line-height: 13px;
127
+ font-weight: 700;
128
+ letter-spacing: 0.06px;
129
+ text-transform: uppercase;
130
+ color: var(--sio-ai-accent);
131
+ font-variant-numeric: tabular-nums;
132
+ }
133
+
134
+ .eyebrow sio-icon {
135
+ flex: 0 0 auto;
136
+ }
137
+
138
+ ::slotted(*) {
139
+ display: flex;
140
+ gap: 8px;
141
+ margin: 0 0 3px;
142
+ font-size: 13.5px;
143
+ line-height: 1.5;
144
+ color: var(--sio-label);
145
+ }
146
+
147
+ ::slotted(*:last-child) {
148
+ margin-bottom: 0;
149
+ }
150
+
151
+ ::slotted(*)::before {
152
+ content: '·';
153
+ color: var(--sio-ai-accent);
154
+ flex: 0 0 auto;
155
+ }
156
+
157
+ :host([plain]) ::slotted(*)::before {
158
+ content: none;
159
+ }
160
+ `,
161
+ ];
162
+
163
+ public render(): TemplateResult {
164
+ const suffix = this.translatedTo ? ` · translated to ${this.translatedTo}` : '';
165
+ return html`
166
+ <div class="card" part="card">
167
+ <div class="eyebrow" part="eyebrow">
168
+ <sio-icon icon="sparkles" size="11" .strokeWidth=${2}></sio-icon>
169
+ <span>${this.label}${suffix}</span>
170
+ </div>
171
+ <slot></slot>
172
+ </div>
173
+ `;
174
+ }
175
+ }