chore: align public-facing assets with cameleer.io
Replace personal/internal references in shipped artifacts ahead of institutionalizing the product. registry.cameleer.io becomes the public endpoint for the npm package and repository URL; gitea.siegeln.net remains the internal CI publish target. Mock seed-admin renamed from "Hendrik Siegeln" to "Ada Sterling" across pages, audit log, RBAC mocks, and ui-mocks; Java exception namespace switched from com.cameleer3 to io.cameleer in the route detail mock. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<!-- gitnexus:start -->
|
<!-- gitnexus:start -->
|
||||||
# GitNexus — Code Intelligence
|
# GitNexus — Code Intelligence
|
||||||
|
|
||||||
This project is indexed by GitNexus as **design-system** (1536 symbols, 2408 relationships, 23 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
This project is indexed by GitNexus as **design-system** (1537 symbols, 2409 relationships, 23 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
||||||
|
|
||||||
> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
|
> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
|
||||||
|
|
||||||
|
|||||||
10
CLAUDE.md
10
CLAUDE.md
@@ -51,18 +51,18 @@ import { ThemeProvider } from '../design-system/providers/ThemeProvider'
|
|||||||
|
|
||||||
This design system is published as `@cameleer/design-system` to the Gitea npm registry.
|
This design system is published as `@cameleer/design-system` to the Gitea npm registry.
|
||||||
|
|
||||||
### Registry: `https://gitea.siegeln.net/api/packages/cameleer/npm/`
|
### Registry: `https://registry.cameleer.io/api/packages/cameleer/npm/`
|
||||||
|
|
||||||
### Setup in a consuming app
|
### Setup in a consuming app
|
||||||
|
|
||||||
1. Add `.npmrc` to the project root:
|
1. Add `.npmrc` to the project root:
|
||||||
|
|
||||||
```
|
```
|
||||||
@cameleer:registry=https://gitea.siegeln.net/api/packages/cameleer/npm/
|
@cameleer:registry=https://registry.cameleer.io/api/packages/cameleer/npm/
|
||||||
//gitea.siegeln.net/api/packages/cameleer/npm/:_authToken=${GITEA_TOKEN}
|
//registry.cameleer.io/api/packages/cameleer/npm/:_authToken=${REGISTRY_TOKEN}
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: CI pipelines for consuming apps also need this `.npmrc` and a `GITEA_TOKEN` secret to fetch the package during `npm ci`.
|
Note: CI pipelines for consuming apps also need this `.npmrc` and a `REGISTRY_TOKEN` secret to fetch the package during `npm ci`.
|
||||||
|
|
||||||
2. Install:
|
2. Install:
|
||||||
|
|
||||||
@@ -132,7 +132,7 @@ import camelSvg from '@cameleer/design-system/assets/camel-logo.svg' // simp
|
|||||||
<!-- gitnexus:start -->
|
<!-- gitnexus:start -->
|
||||||
# GitNexus — Code Intelligence
|
# GitNexus — Code Intelligence
|
||||||
|
|
||||||
This project is indexed by GitNexus as **design-system** (1536 symbols, 2408 relationships, 23 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
This project is indexed by GitNexus as **design-system** (1537 symbols, 2409 relationships, 23 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
||||||
|
|
||||||
> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
|
> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
|
||||||
|
|
||||||
|
|||||||
@@ -21,11 +21,11 @@
|
|||||||
"*.css"
|
"*.css"
|
||||||
],
|
],
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"registry": "https://gitea.siegeln.net/api/packages/cameleer/npm/"
|
"registry": "https://registry.cameleer.io/api/packages/cameleer/npm/"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://gitea.siegeln.net/cameleer/design-system.git"
|
"url": "https://registry.cameleer.io/cameleer/design-system.git"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export function AdminLayout({ title, children }: AdminLayoutProps) {
|
|||||||
{ label: title },
|
{ label: title },
|
||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<Tabs
|
<Tabs
|
||||||
tabs={ADMIN_TABS}
|
tabs={ADMIN_TABS}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const day = 24 * hour
|
|||||||
export const AUDIT_EVENTS: AuditEvent[] = [
|
export const AUDIT_EVENTS: AuditEvent[] = [
|
||||||
{
|
{
|
||||||
id: 'audit-1', timestamp: new Date(now - 0.5 * hour).toISOString(),
|
id: 'audit-1', timestamp: new Date(now - 0.5 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'CREATE_USER',
|
username: 'ada', category: 'USER_MGMT', action: 'CREATE_USER',
|
||||||
target: 'users/alice', result: 'SUCCESS',
|
target: 'users/alice', result: 'SUCCESS',
|
||||||
detail: { displayName: 'Alice Johnson', roles: ['VIEWER'] },
|
detail: { displayName: 'Alice Johnson', roles: ['VIEWER'] },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -46,14 +46,14 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-5', timestamp: new Date(now - 3 * hour).toISOString(),
|
id: 'audit-5', timestamp: new Date(now - 3 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'CONFIG', action: 'UPDATE_THRESHOLD',
|
username: 'ada', category: 'CONFIG', action: 'UPDATE_THRESHOLD',
|
||||||
target: 'thresholds/pool-connections', result: 'SUCCESS',
|
target: 'thresholds/pool-connections', result: 'SUCCESS',
|
||||||
detail: { field: 'maxConnections', oldValue: 50, newValue: 100 },
|
detail: { field: 'maxConnections', oldValue: 50, newValue: 100 },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-6', timestamp: new Date(now - 4 * hour).toISOString(),
|
id: 'audit-6', timestamp: new Date(now - 4 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'ASSIGN_ROLE',
|
username: 'ada', category: 'USER_MGMT', action: 'ASSIGN_ROLE',
|
||||||
target: 'users/bob', result: 'SUCCESS',
|
target: 'users/bob', result: 'SUCCESS',
|
||||||
detail: { role: 'EDITOR', method: 'direct' },
|
detail: { role: 'EDITOR', method: 'direct' },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -74,7 +74,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-9', timestamp: new Date(now - 8 * hour).toISOString(),
|
id: 'audit-9', timestamp: new Date(now - 8 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'CREATE_GROUP',
|
username: 'ada', category: 'USER_MGMT', action: 'CREATE_GROUP',
|
||||||
target: 'groups/developers', result: 'SUCCESS',
|
target: 'groups/developers', result: 'SUCCESS',
|
||||||
detail: { parent: null },
|
detail: { parent: null },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -88,7 +88,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-11', timestamp: new Date(now - 12 * hour).toISOString(),
|
id: 'audit-11', timestamp: new Date(now - 12 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'CONFIG', action: 'UPDATE_OIDC',
|
username: 'ada', category: 'CONFIG', action: 'UPDATE_OIDC',
|
||||||
target: 'config/oidc', result: 'SUCCESS',
|
target: 'config/oidc', result: 'SUCCESS',
|
||||||
detail: { field: 'autoSignup', oldValue: false, newValue: true },
|
detail: { field: 'autoSignup', oldValue: false, newValue: true },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -102,7 +102,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-13', timestamp: new Date(now - 1 * day - 2 * hour).toISOString(),
|
id: 'audit-13', timestamp: new Date(now - 1 * day - 2 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'DELETE_USER',
|
username: 'ada', category: 'USER_MGMT', action: 'DELETE_USER',
|
||||||
target: 'users/temp-user', result: 'SUCCESS',
|
target: 'users/temp-user', result: 'SUCCESS',
|
||||||
detail: { reason: 'cleanup' },
|
detail: { reason: 'cleanup' },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -116,7 +116,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-15', timestamp: new Date(now - 1 * day - 6 * hour).toISOString(),
|
id: 'audit-15', timestamp: new Date(now - 1 * day - 6 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'UPDATE_GROUP',
|
username: 'ada', category: 'USER_MGMT', action: 'UPDATE_GROUP',
|
||||||
target: 'groups/admins', result: 'SUCCESS',
|
target: 'groups/admins', result: 'SUCCESS',
|
||||||
detail: { addedMembers: ['alice'], removedMembers: [] },
|
detail: { addedMembers: ['alice'], removedMembers: [] },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -137,7 +137,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-18', timestamp: new Date(now - 2 * day - 5 * hour).toISOString(),
|
id: 'audit-18', timestamp: new Date(now - 2 * day - 5 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'CONFIG', action: 'UPDATE_THRESHOLD',
|
username: 'ada', category: 'CONFIG', action: 'UPDATE_THRESHOLD',
|
||||||
target: 'thresholds/latency-p99', result: 'SUCCESS',
|
target: 'thresholds/latency-p99', result: 'SUCCESS',
|
||||||
detail: { field: 'warningMs', oldValue: 500, newValue: 300 },
|
detail: { field: 'warningMs', oldValue: 500, newValue: 300 },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -151,7 +151,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-20', timestamp: new Date(now - 3 * day - 2 * hour).toISOString(),
|
id: 'audit-20', timestamp: new Date(now - 3 * day - 2 * hour).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'ASSIGN_ROLE',
|
username: 'ada', category: 'USER_MGMT', action: 'ASSIGN_ROLE',
|
||||||
target: 'groups/developers', result: 'SUCCESS',
|
target: 'groups/developers', result: 'SUCCESS',
|
||||||
detail: { role: 'EDITOR', method: 'group_assignment' },
|
detail: { role: 'EDITOR', method: 'group_assignment' },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -172,7 +172,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-23', timestamp: new Date(now - 5 * day).toISOString(),
|
id: 'audit-23', timestamp: new Date(now - 5 * day).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'CREATE_ROLE',
|
username: 'ada', category: 'USER_MGMT', action: 'CREATE_ROLE',
|
||||||
target: 'roles/OPERATOR', result: 'SUCCESS',
|
target: 'roles/OPERATOR', result: 'SUCCESS',
|
||||||
detail: { scope: 'custom', description: 'Pipeline operator' },
|
detail: { scope: 'custom', description: 'Pipeline operator' },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
@@ -186,7 +186,7 @@ export const AUDIT_EVENTS: AuditEvent[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'audit-25', timestamp: new Date(now - 6 * day).toISOString(),
|
id: 'audit-25', timestamp: new Date(now - 6 * day).toISOString(),
|
||||||
username: 'hendrik', category: 'USER_MGMT', action: 'CREATE_USER',
|
username: 'ada', category: 'USER_MGMT', action: 'CREATE_USER',
|
||||||
target: 'users/bob', result: 'SUCCESS',
|
target: 'users/bob', result: 'SUCCESS',
|
||||||
detail: { displayName: 'Bob Smith', roles: ['VIEWER'] },
|
detail: { displayName: 'Bob Smith', roles: ['VIEWER'] },
|
||||||
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
ipAddress: '10.0.1.42', userAgent: 'Mozilla/5.0 Chrome/125',
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ export function UsersTab() {
|
|||||||
size="sm"
|
size="sm"
|
||||||
variant="danger"
|
variant="danger"
|
||||||
onClick={() => setDeleteTarget(selected)}
|
onClick={() => setDeleteTarget(selected)}
|
||||||
disabled={selected.username === 'hendrik'}
|
disabled={selected.username === 'ada'}
|
||||||
>
|
>
|
||||||
Delete
|
Delete
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ export const MOCK_GROUPS: MockGroup[] = [
|
|||||||
|
|
||||||
export const MOCK_USERS: MockUser[] = [
|
export const MOCK_USERS: MockUser[] = [
|
||||||
{
|
{
|
||||||
id: 'usr-1', username: 'hendrik', displayName: 'Hendrik Siegeln',
|
id: 'usr-1', username: 'ada', displayName: 'Ada Sterling',
|
||||||
email: 'hendrik@example.com', provider: 'local', createdAt: '2025-01-15T10:00:00Z',
|
email: 'ada@example.com', provider: 'local', createdAt: '2025-01-15T10:00:00Z',
|
||||||
directRoles: ['ADMIN'], directGroups: ['grp-1'],
|
directRoles: ['ADMIN'], directGroups: ['grp-1'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ export function AgentHealth() {
|
|||||||
<TopBar
|
<TopBar
|
||||||
breadcrumb={buildBreadcrumb(scope)}
|
breadcrumb={buildBreadcrumb(scope)}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ export function AgentInstance() {
|
|||||||
if (!agent) {
|
if (!agent) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<TopBar breadcrumb={[{ label: 'Agents', href: '/agents' }, { label: 'Not Found' }]} environment="PRODUCTION" user={{ name: 'hendrik' }} />
|
<TopBar breadcrumb={[{ label: 'Agents', href: '/agents' }, { label: 'Not Found' }]} environment="PRODUCTION" user={{ name: 'ada' }} />
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<div className={styles.notFound}>Agent instance not found.</div>
|
<div className={styles.notFound}>Agent instance not found.</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -159,7 +159,7 @@ export function AgentInstance() {
|
|||||||
{ label: instanceId! },
|
{ label: instanceId! },
|
||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export function ApiDocs() {
|
|||||||
breadcrumb={[{ label: 'API Documentation' }]}
|
breadcrumb={[{ label: 'API Documentation' }]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
|
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
title="API Documentation"
|
title="API Documentation"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export function AppDetail() {
|
|||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
|
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
title="Application Detail"
|
title="Application Detail"
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ export function Dashboard() {
|
|||||||
: [{ label: 'Applications' }]
|
: [{ label: 'Applications' }]
|
||||||
}
|
}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Scrollable content */}
|
{/* Scrollable content */}
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ export function ExchangeDetail() {
|
|||||||
{ label: id ?? 'Unknown' },
|
{ label: id ?? 'Unknown' },
|
||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<InfoCallout variant="warning">Exchange "{id}" not found in mock data.</InfoCallout>
|
<InfoCallout variant="warning">Exchange "{id}" not found in mock data.</InfoCallout>
|
||||||
@@ -210,7 +210,7 @@ export function ExchangeDetail() {
|
|||||||
{ label: exchange.id },
|
{ label: exchange.id },
|
||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Scrollable content */}
|
{/* Scrollable content */}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ export function LayoutSection() {
|
|||||||
{ label: 'order-ingest' },
|
{ label: 'order-ingest' },
|
||||||
]}
|
]}
|
||||||
environment="production"
|
environment="production"
|
||||||
user={{ name: 'Hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
>
|
>
|
||||||
<SearchTrigger onClick={() => {}} />
|
<SearchTrigger onClick={() => {}} />
|
||||||
<AutoRefreshToggle active={true} onChange={() => {}} />
|
<AutoRefreshToggle active={true} onChange={() => {}} />
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ export function RouteDetail() {
|
|||||||
{ label: id ?? 'Unknown' },
|
{ label: id ?? 'Unknown' },
|
||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<InfoCallout variant="warning">Route "{id}" not found in mock data.</InfoCallout>
|
<InfoCallout variant="warning">Route "{id}" not found in mock data.</InfoCallout>
|
||||||
@@ -193,7 +193,7 @@ export function RouteDetail() {
|
|||||||
]}
|
]}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
|
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Scrollable content */}
|
{/* Scrollable content */}
|
||||||
|
|||||||
@@ -412,7 +412,7 @@ export function Routes() {
|
|||||||
<TopBar
|
<TopBar
|
||||||
breadcrumb={breadcrumb}
|
breadcrumb={breadcrumb}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<div className={styles.refreshIndicator}>
|
<div className={styles.refreshIndicator}>
|
||||||
@@ -456,7 +456,7 @@ export function Routes() {
|
|||||||
<TopBar
|
<TopBar
|
||||||
breadcrumb={breadcrumb}
|
breadcrumb={breadcrumb}
|
||||||
environment="PRODUCTION"
|
environment="PRODUCTION"
|
||||||
user={{ name: 'hendrik' }}
|
user={{ name: 'ada' }}
|
||||||
/>
|
/>
|
||||||
<div className={styles.content}>
|
<div className={styles.content}>
|
||||||
<div className={styles.refreshIndicator}>
|
<div className={styles.refreshIndicator}>
|
||||||
|
|||||||
@@ -1133,8 +1133,8 @@ td {
|
|||||||
<div class="topbar-right">
|
<div class="topbar-right">
|
||||||
<span class="topbar-env">PRODUCTION</span>
|
<span class="topbar-env">PRODUCTION</span>
|
||||||
<div class="topbar-user">
|
<div class="topbar-user">
|
||||||
<span>hendrik</span>
|
<span>ada</span>
|
||||||
<div class="topbar-avatar">H</div>
|
<div class="topbar-avatar">A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1338,8 +1338,8 @@ td {
|
|||||||
<span class="topbar-env">PRODUCTION</span>
|
<span class="topbar-env">PRODUCTION</span>
|
||||||
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
||||||
<div class="topbar-user">
|
<div class="topbar-user">
|
||||||
<span>hendrik</span>
|
<span>ada</span>
|
||||||
<div class="topbar-avatar">H</div>
|
<div class="topbar-avatar">A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1525,8 +1525,8 @@ td {
|
|||||||
<span class="topbar-env">PRODUCTION</span>
|
<span class="topbar-env">PRODUCTION</span>
|
||||||
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
||||||
<div class="topbar-user">
|
<div class="topbar-user">
|
||||||
<span>hendrik</span>
|
<span>ada</span>
|
||||||
<div class="topbar-avatar">H</div>
|
<div class="topbar-avatar">A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1439,8 +1439,8 @@ body {
|
|||||||
<div class="topbar-right">
|
<div class="topbar-right">
|
||||||
<span class="topbar-env">PRODUCTION</span>
|
<span class="topbar-env">PRODUCTION</span>
|
||||||
<div class="topbar-user">
|
<div class="topbar-user">
|
||||||
<span>hendrik</span>
|
<span>ada</span>
|
||||||
<div class="topbar-avatar">H</div>
|
<div class="topbar-avatar">A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1294,8 +1294,8 @@ tbody tr:hover .drill-arrow { color: var(--amber); }
|
|||||||
<span class="topbar-env">PRODUCTION</span>
|
<span class="topbar-env">PRODUCTION</span>
|
||||||
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
||||||
<div class="topbar-user">
|
<div class="topbar-user">
|
||||||
<span>hendrik</span>
|
<span>ada</span>
|
||||||
<div class="topbar-avatar">H</div>
|
<div class="topbar-avatar">A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2162,7 +2162,7 @@ tbody tr:hover .drill-arrow { color: var(--amber); }
|
|||||||
<div class="feed-item">
|
<div class="feed-item">
|
||||||
<div class="feed-icon feed-warn">△</div>
|
<div class="feed-icon feed-warn">△</div>
|
||||||
<div class="feed-content">
|
<div class="feed-content">
|
||||||
<div class="feed-text"><strong>Route stopped</strong> — <span class="feed-route">dead-letter-processor</span> manually stopped by operator hendrik</div>
|
<div class="feed-text"><strong>Route stopped</strong> — <span class="feed-route">dead-letter-processor</span> manually stopped by operator ada</div>
|
||||||
<div class="feed-meta">05:48:22 · 3h 26m ago</div>
|
<div class="feed-meta">05:48:22 · 3h 26m ago</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1570,8 +1570,8 @@ tbody tr.row-running { border-left: 3px solid var(--running); }
|
|||||||
<span class="topbar-env">PRODUCTION</span>
|
<span class="topbar-env">PRODUCTION</span>
|
||||||
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
<span class="topbar-shift">Shift: Day (06:00-18:00)</span>
|
||||||
<div class="topbar-user">
|
<div class="topbar-user">
|
||||||
<span>hendrik</span>
|
<span>ada</span>
|
||||||
<div class="topbar-avatar">H</div>
|
<div class="topbar-avatar">A</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2200,7 +2200,7 @@ tbody tr.row-running { border-left: 3px solid var(--running); }
|
|||||||
<div class="error-count-label">times</div>
|
<div class="error-count-label">times</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="error-pattern-info">
|
<div class="error-pattern-info">
|
||||||
<div class="error-exception-class">com.cameleer3.validation.OrderValidationException</div>
|
<div class="error-exception-class">io.cameleer.validation.OrderValidationException</div>
|
||||||
<div class="error-message-preview">Order validation failed: required field 'shippingAddress.postalCode' is null or empty. Validation rule: ADDR-001. Source system: EDI-US.</div>
|
<div class="error-message-preview">Order validation failed: required field 'shippingAddress.postalCode' is null or empty. Validation rule: ADDR-001. Source system: EDI-US.</div>
|
||||||
<div class="error-pattern-meta">
|
<div class="error-pattern-meta">
|
||||||
<span>Processor: <span class="mono">OrderValidator</span></span>
|
<span>Processor: <span class="mono">OrderValidator</span></span>
|
||||||
|
|||||||
Reference in New Issue
Block a user