@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.
- package/.smartconfig.json +51 -0
- package/dist_bundle/bundle.js +5455 -3248
- package/dist_ts_web/00_commitinfo_data.js +3 -3
- package/dist_ts_web/elements/index.d.ts +21 -3
- package/dist_ts_web/elements/index.js +28 -7
- package/dist_ts_web/elements/sio-ai-card.d.ts +39 -0
- package/dist_ts_web/elements/sio-ai-card.js +229 -0
- package/dist_ts_web/elements/sio-avatar.d.ts +46 -0
- package/dist_ts_web/elements/sio-avatar.js +379 -0
- package/dist_ts_web/elements/sio-bucket-header.d.ts +36 -0
- package/dist_ts_web/elements/sio-bucket-header.js +197 -0
- package/dist_ts_web/elements/sio-button.d.ts +7 -3
- package/dist_ts_web/elements/sio-button.js +253 -152
- package/dist_ts_web/elements/sio-channel-rail.d.ts +38 -0
- package/dist_ts_web/elements/sio-channel-rail.js +288 -0
- package/dist_ts_web/elements/sio-chip.d.ts +25 -0
- package/dist_ts_web/elements/sio-chip.js +188 -0
- package/dist_ts_web/elements/sio-cmdk.d.ts +59 -0
- package/dist_ts_web/elements/sio-cmdk.js +471 -0
- package/dist_ts_web/elements/sio-combox.d.ts +55 -1
- package/dist_ts_web/elements/sio-combox.js +458 -261
- package/dist_ts_web/elements/sio-composer.d.ts +48 -0
- package/dist_ts_web/elements/sio-composer.js +357 -0
- package/dist_ts_web/elements/sio-conversation-selector.d.ts +41 -1
- package/dist_ts_web/elements/sio-conversation-selector.js +426 -238
- package/dist_ts_web/elements/sio-conversation-view.d.ts +34 -6
- package/dist_ts_web/elements/sio-conversation-view.js +738 -564
- package/dist_ts_web/elements/sio-dropdown-menu.d.ts +6 -6
- package/dist_ts_web/elements/sio-dropdown-menu.js +223 -169
- package/dist_ts_web/elements/sio-fab.d.ts +23 -5
- package/dist_ts_web/elements/sio-fab.js +259 -235
- package/dist_ts_web/elements/sio-glass-toolbar.d.ts +22 -0
- package/dist_ts_web/elements/sio-glass-toolbar.js +178 -0
- package/dist_ts_web/elements/sio-icon.d.ts +1 -0
- package/dist_ts_web/elements/sio-icon.js +254 -94
- package/dist_ts_web/elements/sio-image-lightbox.d.ts +3 -4
- package/dist_ts_web/elements/sio-image-lightbox.js +282 -191
- package/dist_ts_web/elements/sio-inset-list.d.ts +28 -0
- package/dist_ts_web/elements/sio-inset-list.js +191 -0
- package/dist_ts_web/elements/sio-kbd.d.ts +16 -0
- package/dist_ts_web/elements/sio-kbd.js +117 -0
- package/dist_ts_web/elements/sio-list-row.d.ts +55 -0
- package/dist_ts_web/elements/sio-list-row.js +462 -0
- package/dist_ts_web/elements/sio-logo-render.d.ts +42 -0
- package/dist_ts_web/elements/sio-logo-render.js +306 -0
- package/dist_ts_web/elements/sio-logo.d.ts +64 -0
- package/dist_ts_web/elements/sio-logo.js +393 -0
- package/dist_ts_web/elements/sio-message-input.d.ts +25 -4
- package/dist_ts_web/elements/sio-message-input.js +231 -226
- package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
- package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
- package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
- package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
- package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
- package/dist_ts_web/elements/sio-segmented.js +217 -0
- package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
- package/dist_ts_web/elements/sio-step-timeline.js +222 -0
- package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
- package/dist_ts_web/elements/sio-tab-bar.js +232 -0
- package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
- package/dist_ts_web/elements/sio-unread-badge.js +203 -0
- package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
- package/dist_ts_web/elements/sio-waveform.js +304 -0
- package/dist_ts_web/elements/tokens.d.ts +70 -0
- package/dist_ts_web/elements/tokens.js +277 -0
- package/dist_ts_web/pages/firstpage.d.ts +5 -0
- package/dist_ts_web/pages/firstpage.js +21 -2
- package/dist_ts_web/pages/mainpage.d.ts +6 -0
- package/dist_ts_web/pages/mainpage.js +111 -39
- package/{license → license.md} +3 -1
- package/package.json +23 -29
- package/readme.hints.md +82 -0
- package/readme.md +113 -146
- package/ts_web/00_commitinfo_data.ts +2 -2
- package/ts_web/elements/index.ts +31 -7
- package/ts_web/elements/sio-ai-card.ts +175 -0
- package/ts_web/elements/sio-avatar.ts +295 -0
- package/ts_web/elements/sio-bucket-header.ts +157 -0
- package/ts_web/elements/sio-button.ts +149 -127
- package/ts_web/elements/sio-channel-rail.ts +256 -0
- package/ts_web/elements/sio-chip.ts +134 -0
- package/ts_web/elements/sio-cmdk.ts +461 -0
- package/ts_web/elements/sio-combox.ts +327 -204
- package/ts_web/elements/sio-composer.ts +306 -0
- package/ts_web/elements/sio-conversation-selector.ts +350 -228
- package/ts_web/elements/sio-conversation-view.ts +573 -457
- package/ts_web/elements/sio-dropdown-menu.ts +112 -130
- package/ts_web/elements/sio-fab.ts +192 -227
- package/ts_web/elements/sio-glass-toolbar.ts +140 -0
- package/ts_web/elements/sio-icon.ts +147 -25
- package/ts_web/elements/sio-image-lightbox.ts +62 -64
- package/ts_web/elements/sio-inset-list.ts +140 -0
- package/ts_web/elements/sio-kbd.ts +80 -0
- package/ts_web/elements/sio-list-row.ts +393 -0
- package/ts_web/elements/sio-logo-render.ts +367 -0
- package/ts_web/elements/sio-logo.ts +311 -0
- package/ts_web/elements/sio-message-input.ts +142 -221
- package/ts_web/elements/sio-paper-thumb.ts +244 -0
- package/ts_web/elements/sio-pdf-viewer.ts +58 -60
- package/ts_web/elements/sio-segmented.ts +183 -0
- package/ts_web/elements/sio-step-timeline.ts +179 -0
- package/ts_web/elements/sio-tab-bar.ts +195 -0
- package/ts_web/elements/sio-unread-badge.ts +147 -0
- package/ts_web/elements/sio-waveform.ts +239 -0
- package/ts_web/elements/tokens.ts +297 -0
- package/ts_web/pages/firstpage.ts +20 -1
- package/ts_web/pages/mainpage.ts +111 -39
- package/dist_bundle/bundle.js.map +0 -7
- package/dist_ts_web/elements/00colors.d.ts +0 -108
- package/dist_ts_web/elements/00colors.js +0 -137
- package/dist_ts_web/elements/00fonts.d.ts +0 -60
- package/dist_ts_web/elements/00fonts.js +0 -129
- package/dist_ts_web/elements/00tokens.d.ts +0 -123
- package/dist_ts_web/elements/00tokens.js +0 -176
- package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
- package/dist_ts_web/elements/sio-conversation-list.js +0 -495
- package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
- package/dist_ts_web/elements/sio-recorder.js +0 -173
- package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
- package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
- package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
- package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
- package/dist_watch/bundle.js +0 -81694
- package/dist_watch/bundle.js.map +0 -7
- package/dist_watch/index.html +0 -25
- package/npmextra.json +0 -19
- package/ts_web/elements/00colors.ts +0 -164
- package/ts_web/elements/00fonts.ts +0 -145
- package/ts_web/elements/00tokens.ts +0 -197
- 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
|
-
|
|
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
|
-
##
|
|
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
|
-
##
|
|
15
|
+
## Design System
|
|
29
16
|
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
44
|
+
Components auto-register as custom elements on import.
|
|
92
45
|
|
|
93
46
|
```typescript
|
|
94
|
-
import
|
|
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-
|
|
51
|
+
<sio-logo size="30" theme="auto" no-entrance></sio-logo>
|
|
108
52
|
```
|
|
109
53
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
|
|
119
|
-
<sio-
|
|
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
|
-
|
|
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
|
-
|
|
140
|
-
|
|
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
|
-
##
|
|
141
|
+
## Development
|
|
163
142
|
|
|
164
143
|
```bash
|
|
165
|
-
# Install dependencies
|
|
166
144
|
pnpm install
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
pnpm
|
|
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
|
-
|
|
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
|
|
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.
|
package/ts_web/elements/index.ts
CHANGED
|
@@ -1,16 +1,40 @@
|
|
|
1
|
-
//
|
|
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
|
-
//
|
|
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
|
+
}
|