@agenticmail/api 0.7.14 → 0.7.15

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": "@agenticmail/api",
3
- "version": "0.7.14",
3
+ "version": "0.7.15",
4
4
  "description": "REST API server for AgenticMail — email and SMS endpoints for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/public/index.html CHANGED
@@ -23,12 +23,14 @@
23
23
 
24
24
  <!-- ─── App shell ─────────────────────────────────────────────────── -->
25
25
  <div class="app" id="app" style="display:none">
26
- <!-- Top bar -->
26
+ <!-- Top bar — three-column grid: left chrome, centered search, right buttons. -->
27
27
  <header class="topbar">
28
- <button class="menu-btn" id="menu-btn" title="Menu" data-icon="menu"></button>
29
- <div class="brand">
30
- <img src="/branding/agenticmail-logo.png" alt="AgenticMail" class="brand-logo" />
31
- <span class="brand-name">AgenticMail</span>
28
+ <div class="topbar-left">
29
+ <button class="menu-btn" id="menu-btn" title="Menu" data-icon="menu"></button>
30
+ <div class="brand">
31
+ <img src="/branding/agenticmail-logo.png" alt="AgenticMail" class="brand-logo" />
32
+ <span class="brand-name">AgenticMail</span>
33
+ </div>
32
34
  </div>
33
35
  <div class="search-container">
34
36
  <span class="search-icon" data-icon="search"></span>
@@ -36,11 +38,12 @@
36
38
  <span id="search-hint" class="search-hint"></span>
37
39
  <button id="search-clear" class="search-clear-btn" title="Clear (Esc)" data-icon="close"></button>
38
40
  </div>
39
- <div class="topbar-spacer"></div>
40
- <button class="icon-btn" id="refresh-btn" title="Refresh (r)" data-icon="refresh"></button>
41
- <button id="profile-btn" class="profile-trigger" title="Account">
42
- <span id="profile-avatar"></span>
43
- </button>
41
+ <div class="topbar-right">
42
+ <button class="icon-btn" id="refresh-btn" title="Refresh (r)" data-icon="refresh"></button>
43
+ <button id="profile-btn" class="profile-trigger" title="Account">
44
+ <span id="profile-avatar"></span>
45
+ </button>
46
+ </div>
44
47
  <div id="profile-menu" class="profile-menu">
45
48
  <div class="profile-menu-section">Inboxes</div>
46
49
  <div id="profile-menu-list"></div>
package/public/styles.css CHANGED
@@ -65,12 +65,22 @@ a { color: var(--accent-strong); }
65
65
  }
66
66
 
67
67
  /* ─── Top bar ──────────────────────────────────────────────────────── */
68
+ /* Three-column grid: [menu+brand] · [centered search] · [right buttons].
69
+ A flex topbar with `flex: 1` on both the search and a trailing
70
+ spacer split the remaining space evenly so the search drifted
71
+ left of the visual middle. The grid centers the search column
72
+ in the actual page width regardless of how wide the side groups
73
+ get. */
68
74
  .topbar {
69
- display: flex; align-items: center; gap: 8px;
75
+ display: grid;
76
+ grid-template-columns: 1fr auto 1fr;
77
+ align-items: center; gap: 8px;
70
78
  padding: 8px 16px;
71
79
  background: var(--bg-soft);
72
80
  position: relative; z-index: 10;
73
81
  }
82
+ .topbar-left { display: flex; align-items: center; gap: 8px; justify-self: start; }
83
+ .topbar-right { display: flex; align-items: center; gap: 4px; justify-self: end; }
74
84
  .menu-btn {
75
85
  width: 40px; height: 40px; border-radius: 50%;
76
86
  display: flex; align-items: center; justify-content: center;
@@ -101,7 +111,12 @@ a { color: var(--accent-strong); }
101
111
  }
102
112
 
103
113
  .search-container {
104
- flex: 1; max-width: 720px;
114
+ /* Lives in the centered grid column of `.topbar`. Width caps at
115
+ 720px (Gmail's actual cap), but stretches to fill the column
116
+ when the viewport is narrower. */
117
+ width: 720px;
118
+ max-width: 100%;
119
+ min-width: 280px;
105
120
  position: relative;
106
121
  }
107
122
  .search-input {
@@ -138,7 +153,6 @@ a { color: var(--accent-strong); }
138
153
  }
139
154
  .search-hint.show { display: block; }
140
155
 
141
- .topbar-spacer { flex: 1; }
142
156
  .icon-btn {
143
157
  width: 40px; height: 40px; border-radius: 50%;
144
158
  display: flex; align-items: center; justify-content: center;
@@ -267,10 +281,15 @@ a { color: var(--accent-strong); }
267
281
  .main.sidebar-open .sidebar { transform: translateX(0); }
268
282
  .main.sidebar-open .sidebar-backdrop { display: block; }
269
283
  .content { border-radius: 0; margin: 0; }
270
- .topbar { padding: 8px 8px; gap: 4px; }
284
+ /* On mobile, drop the centered grid in favour of [chrome | search | account].
285
+ The search expands to fill whatever space is left. */
286
+ .topbar {
287
+ padding: 8px 8px; gap: 4px;
288
+ grid-template-columns: auto 1fr auto;
289
+ }
271
290
  .brand { min-width: auto; }
272
- .brand-name { font-size: 18px; }
273
- .search-container { max-width: none; }
291
+ .brand-name { font-size: 18px; display: none; }
292
+ .search-container { width: auto; min-width: 0; }
274
293
  .search-input { height: 40px; font-size: 14px; }
275
294
  /* On narrow screens, drop the checkbox + From column. Sender goes
276
295
  in a small line above subject+preview to mimic Gmail's mobile
@@ -309,7 +328,6 @@ a { color: var(--accent-strong); }
309
328
  .compose-modal { width: 100%; max-height: 100vh; border-radius: 0; }
310
329
  .compose-body textarea { min-height: 40vh; }
311
330
  /* Hide non-essential top-bar buttons on narrow screens. */
312
- .topbar-spacer { flex: 0; }
313
331
  #refresh-btn { display: none; }
314
332
  }
315
333
  @media (min-width: 801px) {
@@ -490,12 +508,22 @@ mark.search-hl {
490
508
  background: var(--bg);
491
509
  position: sticky; top: 0; z-index: 5;
492
510
  flex-shrink: 0;
511
+ /* Toolbar spans full width (so the back button sticks to the
512
+ left edge of the content pane) but its action group could be
513
+ centered later if needed. Keeping it full-width matches Gmail. */
493
514
  }
494
515
  .message-toolbar .icon-btn { width: 36px; height: 36px; font-size: 16px; }
495
516
  .message-toolbar .toolbar-spacer { flex: 1; }
496
517
 
518
+ /* Centered reading column for the open message — Gmail caps body
519
+ content around ~840px so long-line text doesn't sprawl across
520
+ ultrawide displays. Header, body, and attachments all share
521
+ the same centering rule so they line up vertically. */
497
522
  .message-header {
498
523
  padding: 32px 32px 16px;
524
+ max-width: 840px;
525
+ margin: 0 auto;
526
+ width: 100%;
499
527
  }
500
528
  .message-subject {
501
529
  font: 400 22px/1.3 'Google Sans', sans-serif;
@@ -524,7 +552,9 @@ mark.search-hl {
524
552
  font-size: 14px; line-height: 1.65;
525
553
  color: var(--ink);
526
554
  white-space: pre-wrap; word-wrap: break-word;
527
- max-width: 800px;
555
+ max-width: 840px;
556
+ margin: 0 auto;
557
+ width: 100%;
528
558
  }
529
559
  .message-body h1, .message-body h2, .message-body h3 {
530
560
  color: var(--pink); margin: 1.2em 0 .4em;
@@ -562,6 +592,9 @@ mark.search-hl {
562
592
  .message-attachments {
563
593
  padding: 12px 32px; border-top: 1px solid var(--line);
564
594
  display: flex; flex-wrap: wrap; gap: 8px;
595
+ max-width: 840px;
596
+ margin: 0 auto;
597
+ width: 100%;
565
598
  }
566
599
  .message-attachment {
567
600
  display: inline-flex; align-items: center; gap: 8px;