From 0dd379c271e84125ab60ce555c35a019877eb4ef Mon Sep 17 00:00:00 2001
From: Pavel ` for a glyph lucide has.
- Bordered purple buttons (`border-primary text-primary hover:bg-primary`):
`variant="outline-primary"`.
- Tiny inline actions (`h-auto px-2 py-1 text-xs`): `size="xs"`.
@@ -117,9 +125,10 @@ Patterns:
while `data-placeholder` is set (`data-placeholder={value ? undefined : ''}`).
Pass only layout (`w-full justify-between`) and keep the chevron as the
last child.
-- A button or picker that sits in a row of fields is `size="field"`: 42px,
- the height of `Input` (default) and `SelectTrigger size="lg"`, so a form
- column has one height. With `shape="pill"` its text starts 21px in, like
+- A button or picker that sits in a row of fields is `size="field"`: 42px.
+ `Input` and `SelectTrigger` take `size="field"` too (the same 42px as
+ Input `default` and SelectTrigger `lg`), so a form column has one name for
+ one height; prefer `field` in new form rows. With `shape="pill"` its text starts 21px in, like
the Input and Select pills beside it. The agent form's pickers are
`combobox field pill`, its Add button `outline-primary field pill`.
- Rows in the navigation sidebar (`hover:bg-sidebar-accent … pl-3 gap-2.5
@@ -136,20 +145,37 @@ rounded-3xl`) are `variant="sidebar-item"`: left-aligned, full-radius, normal
gives it `foreground` text and a `primary` underline. Padding-free tabs (a
sub-nav with `gap-6`) add `size="inline"`, which keeps 4px above the line;
the row draws the 1px baseline, and `-mb-px` lays the underline over it.
- Tabs that switch a panel in place use `ui/tabs` instead.
+ Use them for a row of route links (the agent sub-nav: a `
@@ -688,11 +674,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
)}
title={t('modals.searchConversations.searchPlaceholder')}
>
-
@@ -849,7 +830,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) { onClick={() => setNavOpen(true)} aria-label="Toggle mobile menu" > -
+{label}
-+
{value}
{sub ?{sub}
: null} diff --git a/frontend/src/admin/Usage.tsx b/frontend/src/admin/Usage.tsx index dbaf9c39..df3406eb 100644 --- a/frontend/src/admin/Usage.tsx +++ b/frontend/src/admin/Usage.tsx @@ -176,9 +176,9 @@ export default function Usage() { />+
{metric === 'cost' ? 'Spend' : 'Token usage'}
- Top users -
+Top users
{topUsers.length === 0 ? (No usage.
) : ( diff --git a/frontend/src/admin/Users.tsx b/frontend/src/admin/Users.tsx index dda2fd60..eedc557a 100644 --- a/frontend/src/admin/Users.tsx +++ b/frontend/src/admin/Users.tsx @@ -1,4 +1,5 @@ import { + ChevronDown, Eye, Gauge, LogOut, @@ -11,14 +12,15 @@ import { useCallback, useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import adminService from '../api/services/adminService'; -import ThreeDots from '../assets/three-dots.svg'; import { Badge } from '../components/ui/badge'; import { Button } from '../components/ui/button'; import { + ActionMenu, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, + type MenuOption, } from '../components/ui/dropdown-menu'; import { Input } from '../components/ui/input'; import { Modal } from '../components/ui/modal'; @@ -337,56 +339,31 @@ export default function Users() { className="flex items-center justify-end" onClick={(e) => e.stopPropagation()} > -- {t('agents.form.advanced.tokenLimitingDescription')} -
-- {t('agents.form.advanced.requestLimitingDescription')} -
-- {t( - 'agents.form.advanced.systemPromptOverrideDescription', - )} -
-- {t('agents.form.guardrails.enableDescription')} -
-{t('agents.form.guardrails.monitorHint')} @@ -394,10 +396,11 @@ export default function GuardrailsSection({
- {t('agents.form.guardrails.blockMessageDescription')} -
-- {t('agents.form.guardrails.failOpenDescription')} -
-- {t('agents.form.guardrails.confidenceHint')} -
-{error}
} - -- Image updates are included the next time you save. -
-- {t( - 'agents.form.advanced.systemPromptOverrideDescription', - )} -
-- Auto: send native when the model supports - it, otherwise extract text. -
-+
Selected model does not support structured output.
@@ -2342,29 +2304,12 @@ function WorkflowBuilderInner() { "required": ["summary"] }`} /> - {selectedAgentJsonSchemaText.trim() !== - '' && ( -- {selectedAgentJsonSchemaError - ? `Invalid JSON schema: ${selectedAgentJsonSchemaError}` - : 'Valid JSON schema'} -
- )} -Artifacts
-{helpText}
- )} -{errors[key]}
- )} -{errors[key]}
- )} -
{t('settings.sources.graphrag.view.title')}
@@ -195,7 +189,7 @@ const GraphView: React.FC {t('settings.sources.graphrag.view.empty')}
+
+
{t('settings.sources.wiki.livingTitle')}
@@ -305,11 +300,12 @@ const WikiViewer: React.FC