diff --git a/PROMPT.md b/PROMPT.md index 3f8524f..cf5c7a7 100644 --- a/PROMPT.md +++ b/PROMPT.md @@ -5,6 +5,56 @@ --- +## Official Icons - MANDATORY + +**NEVER generate icons with LLM. ALWAYS use official SVG icons from:** + +``` +ui/suite/assets/icons/ +├── gb-logo.svg # Main GB logo +├── gb-bot.svg # Bot/assistant +├── gb-analytics.svg # Analytics app +├── gb-calendar.svg # Calendar app +├── gb-chat.svg # Chat app +├── gb-compliance.svg # Compliance/security +├── gb-designer.svg # Workflow designer +├── gb-drive.svg # File storage +├── gb-mail.svg # Email +├── gb-meet.svg # Video meetings +├── gb-paper.svg # Documents +├── gb-research.svg # Research/search +├── gb-sources.svg # Knowledge sources +└── gb-tasks.svg # Task management +``` + +### Usage in HTML + +```html + +Chat + + + + + +``` + +### Icon Style Guidelines + +- All icons use `stroke="currentColor"` for theming +- ViewBox: `0 0 24 24` +- Stroke width: `1.5` +- Rounded caps and joins +- Consistent with GB brand identity + +**DO NOT:** +- Generate new icons with AI/LLM +- Use emoji or unicode symbols as icons +- Use external icon libraries (FontAwesome, etc.) +- Create inline SVG content in templates + +--- + ## Project Overview BotUI is a **dual-mode UI application** built in Rust that runs as either a desktop app (Tauri) or web server (Axum). All business logic is in **botserver** - BotUI is purely presentation + HTTP bridge. diff --git a/ui/suite/assets/icons/gb-analytics.svg b/ui/suite/assets/icons/gb-analytics.svg new file mode 100644 index 0000000..4f85958 --- /dev/null +++ b/ui/suite/assets/icons/gb-analytics.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-bot.svg b/ui/suite/assets/icons/gb-bot.svg new file mode 100644 index 0000000..48f1314 --- /dev/null +++ b/ui/suite/assets/icons/gb-bot.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-calendar.svg b/ui/suite/assets/icons/gb-calendar.svg new file mode 100644 index 0000000..c56c747 --- /dev/null +++ b/ui/suite/assets/icons/gb-calendar.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-chart.svg b/ui/suite/assets/icons/gb-chart.svg new file mode 100644 index 0000000..b728ec5 --- /dev/null +++ b/ui/suite/assets/icons/gb-chart.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-chat.svg b/ui/suite/assets/icons/gb-chat.svg new file mode 100644 index 0000000..f56f4c6 --- /dev/null +++ b/ui/suite/assets/icons/gb-chat.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/ui/suite/assets/icons/gb-check.svg b/ui/suite/assets/icons/gb-check.svg new file mode 100644 index 0000000..e2129ba --- /dev/null +++ b/ui/suite/assets/icons/gb-check.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-compliance.svg b/ui/suite/assets/icons/gb-compliance.svg new file mode 100644 index 0000000..79f213f --- /dev/null +++ b/ui/suite/assets/icons/gb-compliance.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/ui/suite/assets/icons/gb-database.svg b/ui/suite/assets/icons/gb-database.svg new file mode 100644 index 0000000..1b19c5c --- /dev/null +++ b/ui/suite/assets/icons/gb-database.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-designer.svg b/ui/suite/assets/icons/gb-designer.svg new file mode 100644 index 0000000..9e08817 --- /dev/null +++ b/ui/suite/assets/icons/gb-designer.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-drive.svg b/ui/suite/assets/icons/gb-drive.svg new file mode 100644 index 0000000..84cbdba --- /dev/null +++ b/ui/suite/assets/icons/gb-drive.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-folder.svg b/ui/suite/assets/icons/gb-folder.svg new file mode 100644 index 0000000..4b7e5cc --- /dev/null +++ b/ui/suite/assets/icons/gb-folder.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-gear.svg b/ui/suite/assets/icons/gb-gear.svg new file mode 100644 index 0000000..5cb0053 --- /dev/null +++ b/ui/suite/assets/icons/gb-gear.svg @@ -0,0 +1,4 @@ + + + + diff --git a/ui/suite/assets/icons/gb-globe.svg b/ui/suite/assets/icons/gb-globe.svg new file mode 100644 index 0000000..5cbdbbe --- /dev/null +++ b/ui/suite/assets/icons/gb-globe.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-lightbulb.svg b/ui/suite/assets/icons/gb-lightbulb.svg new file mode 100644 index 0000000..502386d --- /dev/null +++ b/ui/suite/assets/icons/gb-lightbulb.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-lock.svg b/ui/suite/assets/icons/gb-lock.svg new file mode 100644 index 0000000..a4caab7 --- /dev/null +++ b/ui/suite/assets/icons/gb-lock.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-mail.svg b/ui/suite/assets/icons/gb-mail.svg new file mode 100644 index 0000000..b179649 --- /dev/null +++ b/ui/suite/assets/icons/gb-mail.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-meet.svg b/ui/suite/assets/icons/gb-meet.svg new file mode 100644 index 0000000..333b9a0 --- /dev/null +++ b/ui/suite/assets/icons/gb-meet.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-note.svg b/ui/suite/assets/icons/gb-note.svg new file mode 100644 index 0000000..891da20 --- /dev/null +++ b/ui/suite/assets/icons/gb-note.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-package.svg b/ui/suite/assets/icons/gb-package.svg new file mode 100644 index 0000000..dd0c32b --- /dev/null +++ b/ui/suite/assets/icons/gb-package.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-palette.svg b/ui/suite/assets/icons/gb-palette.svg new file mode 100644 index 0000000..1aa99cc --- /dev/null +++ b/ui/suite/assets/icons/gb-palette.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-paper.svg b/ui/suite/assets/icons/gb-paper.svg new file mode 100644 index 0000000..0e24b91 --- /dev/null +++ b/ui/suite/assets/icons/gb-paper.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-research.svg b/ui/suite/assets/icons/gb-research.svg new file mode 100644 index 0000000..3a7eca2 --- /dev/null +++ b/ui/suite/assets/icons/gb-research.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-rocket.svg b/ui/suite/assets/icons/gb-rocket.svg new file mode 100644 index 0000000..b67bb4f --- /dev/null +++ b/ui/suite/assets/icons/gb-rocket.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-search.svg b/ui/suite/assets/icons/gb-search.svg new file mode 100644 index 0000000..b66c3a8 --- /dev/null +++ b/ui/suite/assets/icons/gb-search.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-signal.svg b/ui/suite/assets/icons/gb-signal.svg new file mode 100644 index 0000000..3853530 --- /dev/null +++ b/ui/suite/assets/icons/gb-signal.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-sources.svg b/ui/suite/assets/icons/gb-sources.svg new file mode 100644 index 0000000..5f9d5cd --- /dev/null +++ b/ui/suite/assets/icons/gb-sources.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-target.svg b/ui/suite/assets/icons/gb-target.svg new file mode 100644 index 0000000..fd87c8c --- /dev/null +++ b/ui/suite/assets/icons/gb-target.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-tasks.svg b/ui/suite/assets/icons/gb-tasks.svg new file mode 100644 index 0000000..c505157 --- /dev/null +++ b/ui/suite/assets/icons/gb-tasks.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-tree.svg b/ui/suite/assets/icons/gb-tree.svg new file mode 100644 index 0000000..299c49d --- /dev/null +++ b/ui/suite/assets/icons/gb-tree.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/assets/icons/gb-warning.svg b/ui/suite/assets/icons/gb-warning.svg new file mode 100644 index 0000000..b04cd92 --- /dev/null +++ b/ui/suite/assets/icons/gb-warning.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/suite/mail/mail.css b/ui/suite/mail/mail.css index 246cd73..92e6954 100644 --- a/ui/suite/mail/mail.css +++ b/ui/suite/mail/mail.css @@ -184,6 +184,182 @@ color: #9aa0a6; } +/* Email Read Status Indicator */ +.mail-item-status { + display: flex; + align-items: center; + gap: 0.25rem; + font-size: 0.75rem; + margin-top: 0.25rem; +} + +.mail-read-indicator { + display: inline-flex; + align-items: center; + gap: 0.25rem; + padding: 0.125rem 0.5rem; + border-radius: 12px; + font-size: 0.625rem; + font-weight: 500; + text-transform: uppercase; +} + +.mail-read-indicator.read { + background: #e6f4ea; + color: #137333; +} + +[data-theme="dark"] .mail-read-indicator.read { + background: #1e3a2f; + color: #81c995; +} + +.mail-read-indicator.unread { + background: #fce8e6; + color: #c5221f; +} + +[data-theme="dark"] .mail-read-indicator.unread { + background: #3c2020; + color: #f28b82; +} + +.mail-read-indicator.pending { + background: #fef7e0; + color: #b06000; +} + +[data-theme="dark"] .mail-read-indicator.pending { + background: #3c3020; + color: #fdd663; +} + +.mail-read-indicator .icon { + font-size: 0.75rem; +} + +/* Read count badge */ +.mail-read-count { + font-size: 0.625rem; + color: #5f6368; + margin-left: 0.25rem; +} + +[data-theme="dark"] .mail-read-count { + color: #9aa0a6; +} + +/* Sent folder specific styling */ +.mail-item.sent .mail-item-status { + justify-content: flex-start; +} + +/* Tracking stats panel */ +.tracking-stats { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + padding: 1rem; + background: #f8f9fa; + border-radius: 8px; + margin-bottom: 1rem; +} + +[data-theme="dark"] .tracking-stats { + background: #292a2d; +} + +.tracking-stat { + text-align: center; + padding: 0.75rem; +} + +.tracking-stat-value { + font-size: 1.5rem; + font-weight: 600; + color: #1a73e8; +} + +[data-theme="dark"] .tracking-stat-value { + color: #8ab4f8; +} + +.tracking-stat-label { + font-size: 0.75rem; + color: #5f6368; + margin-top: 0.25rem; +} + +[data-theme="dark"] .tracking-stat-label { + color: #9aa0a6; +} + +/* Read status tooltip */ +.mail-item[data-read-at]:hover::after { + content: attr(data-read-at); + position: absolute; + bottom: 100%; + left: 50%; + transform: translateX(-50%); + padding: 0.5rem 0.75rem; + background: #202124; + color: white; + font-size: 0.75rem; + border-radius: 4px; + white-space: nowrap; + z-index: 100; + pointer-events: none; +} + +[data-theme="dark"] .mail-item[data-read-at]:hover::after { + background: #e8eaed; + color: #202124; +} + +/* Double check mark icon for read emails */ +.checkmark-double { + position: relative; + display: inline-block; + width: 1rem; + height: 0.75rem; +} + +.checkmark-double::before, +.checkmark-double::after { + content: "✓"; + position: absolute; + font-size: 0.75rem; + line-height: 1; +} + +.checkmark-double::before { + left: 0; +} + +.checkmark-double::after { + left: 0.25rem; +} + +.checkmark-double.read::before, +.checkmark-double.read::after { + color: #137333; +} + +[data-theme="dark"] .checkmark-double.read::before, +[data-theme="dark"] .checkmark-double.read::after { + color: #81c995; +} + +.checkmark-double.sent::before, +.checkmark-double.sent::after { + color: #5f6368; +} + +[data-theme="dark"] .checkmark-double.sent::before, +[data-theme="dark"] .checkmark-double.sent::after { + color: #9aa0a6; +} + /* Mail Content View */ .mail-content-view { padding: 2rem; diff --git a/ui/suite/mail/mail.html b/ui/suite/mail/mail.html index e7a7042..449c103 100644 --- a/ui/suite/mail/mail.html +++ b/ui/suite/mail/mail.html @@ -1,9 +1,18 @@
-
+