anentrypoint-design 1.0.27 → 1.0.28

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anentrypoint-design",
3
- "version": "1.0.27",
3
+ "version": "1.0.28",
4
4
  "description": "247420 design system SDK — webjsx + modified ripple-ui, single-file ESM bundle for reproducible use of the AnEntrypoint design.",
5
5
  "type": "module",
6
6
  "main": "./dist/247420.js",
@@ -91,7 +91,7 @@ export function AICatPortrait({ name = 'aicat', status, face } = {}) {
91
91
  );
92
92
  }
93
93
 
94
- export function AICat({ name = 'aicat', messages = [], thinking, composer, status = 'online · purring' } = {}) {
94
+ export function AICat({ name = 'aicat', messages = [], thinking, composer, status = 'online · purring', header } = {}) {
95
95
  ensureCachesInit();
96
96
  const annotated = messages.map((m) =>
97
97
  m.who === 'them' ? { ...m, aicat: true, avatar: m.avatar || '=^.^=' } : m);
@@ -100,7 +100,7 @@ export function AICat({ name = 'aicat', messages = [], thinking, composer, statu
100
100
  : annotated;
101
101
  const threadRef = makeThreadAutoScroll(() => all.length);
102
102
  return h('div', { class: 'chat' },
103
- h('div', { class: 'chat-head', role: 'banner' },
103
+ header || h('div', { class: 'chat-head', role: 'banner' },
104
104
  h('span', { class: 'dot', 'aria-hidden': 'true' }),
105
105
  h('h2', { class: 'ds-chat-title' }, name),
106
106
  h('span', { class: 'sub', 'aria-label': `status: ${status}` }, ' · ' + status),
@@ -564,6 +564,26 @@
564
564
  fell back to the paper tone at 3.13:1 on ink. */
565
565
  .aicat-meta .name { color: var(--mascot-deep, var(--mascot)); font-weight: var(--fw-medium, 500); }
566
566
 
567
+ /* Mascot identity folded into AICat's own .chat-head row (passed as its
568
+ `header` prop) instead of a standalone .aicat-portrait block stacked above
569
+ the chat panel -- reuses the existing 32px .aicat-face circle, just placed
570
+ inline before the title instead of above the whole surface. */
571
+ .aicat-portrait-head { gap: var(--space-2-5); }
572
+ .aicat-face-inline { margin-right: var(--space-1); }
573
+
574
+ /* Centers the transcript+composer as the page's dominant focal surface
575
+ (hero-composer framing): a bounded column with generous top margin so the
576
+ chat panel reads as the first thing the eye lands on, not one card in a
577
+ top-aligned marketing stack. Docs/heading content is demoted into
578
+ .ds-kit-controls below it (see kits-appended.css) so nothing above the
579
+ panel competes with it. */
580
+ .aicat-focus-col {
581
+ max-width: 720px;
582
+ margin-left: auto;
583
+ margin-right: auto;
584
+ padding-top: var(--space-6);
585
+ }
586
+
567
587
  /* ============================================================
568
588
  Composer attachment-detected badge, context line, hint, toolbar,
569
589
  note strip, elapsed counter, dragover state — all referenced from
@@ -27,6 +27,50 @@
27
27
  .app-side a .glyph { font-family: var(--ff-body); font-size: 13px; font-weight: 600; color: var(--fg-3); text-align: center; }
28
28
  .app-side a.active .glyph { color: var(--accent-ink); }
29
29
 
30
+ /* .ds-side-tree — two-level project-tree group (parent <details> + nested
31
+ child rows), the sidebar's hierarchy primitive. Sits alongside Side()'s
32
+ own flat .app-side-group rows but carries genuine nesting: a summary row
33
+ (parent) disclosing child conversation rows, closer to a project-tree
34
+ sidebar than a single flat list. */
35
+ .ds-side-tree { border: 0; }
36
+ .ds-side-tree-summary {
37
+ display: flex; align-items: center; gap: var(--space-2);
38
+ padding: var(--space-1-5) var(--space-2);
39
+ border-radius: var(--r-1);
40
+ font-family: var(--ff-mono); font-size: var(--fs-sm); color: var(--fg-2);
41
+ cursor: pointer; list-style: none;
42
+ }
43
+ .ds-side-tree-summary::-webkit-details-marker { display: none; }
44
+ .ds-side-tree-summary:hover { background: var(--bg-2); color: var(--fg); }
45
+ .ds-side-tree-summary:focus-visible {
46
+ outline: var(--focus-w) solid var(--focus-color);
47
+ outline-offset: var(--focus-offset);
48
+ }
49
+ .ds-side-tree-summary .glyph { font-family: var(--ff-body); font-size: 13px; font-weight: 600; color: var(--fg-3); }
50
+ .ds-side-tree-summary .count {
51
+ margin-left: auto; padding: 1px 8px; font-size: var(--fs-micro); font-weight: 700;
52
+ font-family: var(--ff-body); letter-spacing: 0.04em; min-width: 18px; text-align: center;
53
+ color: var(--fg-3); background: var(--bg-2); border-radius: var(--r-pill, 999px);
54
+ }
55
+ .ds-side-tree-children {
56
+ display: flex; flex-direction: column;
57
+ padding-left: var(--space-4);
58
+ gap: var(--space-hair);
59
+ }
60
+ .ds-side-tree-child {
61
+ display: flex; align-items: center; gap: var(--space-2);
62
+ padding: var(--space-1) var(--space-2);
63
+ border-radius: var(--r-1);
64
+ font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3);
65
+ text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
66
+ }
67
+ .ds-side-tree-child:hover, .ds-side-tree-child:focus-visible { background: var(--bg-2); color: var(--fg); }
68
+ .ds-side-tree-child:focus-visible {
69
+ outline: var(--focus-w) solid var(--focus-color);
70
+ outline-offset: var(--focus-offset);
71
+ }
72
+ .ds-side-tree-child .glyph { font-family: var(--ff-body); color: var(--fg-3); }
73
+
30
74
  /* -- select primitive --------------------------------------------------- */
31
75
  .ds-select {
32
76
  width: 100%;
@@ -926,6 +926,7 @@ export interface AICatProps {
926
926
  composer?: any;
927
927
  /** @default 'online · purring' */
928
928
  status?: string;
929
+ header?: any;
929
930
  }
930
931
  export declare function AICat(props?: AICatProps): VNode;
931
932