Error variant toasts no longer auto-close after 5 seconds. Duration 0
means "no auto-dismiss". Other variants unchanged.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The .env wrapper had its own border/background/padding which caused a
nested border appearance when wrapping a Select component. Simplified
to a plain flex container — the child component handles its own styling.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
CSS Modules scopes animation names, so the global @keyframes spin in
reset.css was not visible. The spinner rendered but never animated.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TopBar was a monolith that hardcoded server-specific controls (status
filters, time range, auto-refresh, search trigger). Extract these into
standalone SearchTrigger and AutoRefreshToggle components. TopBar now
accepts children for the center slot, letting consumers compose their
own controls. Fixescameleer/cameleer-saas#53.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Consolidate formatDuration, statusToVariant, statusLabel, formatTimestamp,
toRouteNodeType, and durationClass from 5 page/component files into one
shared utils module.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add --font-size-min: 12px token to tokens.css. Replace all 10px and 11px
font-size declarations with 12px across 54 CSS module files for improved
readability.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Allows consumers to inject custom menu items above the Logout action
in the user dropdown. Items are separated from Logout by a divider.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stripped 8 near-white path layers (brightness > 200) from the traced SVG,
leaving only amber/gold tones. Regenerated all PNG variants from the
cleaned SVG. Validated on dark and red backgrounds with zero artifacts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
32-scan potrace vector trace with transparent background. Added to brand
assets inventory, documentation, and package exports.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Consumers now import via @cameleer/design-system/assets/<filename> instead
of named aliases like /logo-32. Simpler, more flexible, and supports any
future assets without adding new export entries.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Traced the original logo with Inkscape (16-scan potrace, background removal)
and re-exported all PNG variants with transparent backgrounds. Also reduces
total asset size from ~1.7MB to ~630KB.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add brand assets as static package exports (logo, logo-16 through logo-512, logo-svg)
with pre-generated PNG sizes for favicons, PWA icons, Apple touch icons, and social images.
Includes inventory showcase section and updated documentation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Allows consuming apps to pass a custom dropdown or any interactive
element instead of a static string label. Rendering changed from
<span> to <div> to support block-level children.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Revert auto-sliding when paused — time range only advances with
auto-refresh on. Add refreshTimeRange() to useGlobalFilters for
on-demand recomputation from the active preset.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The preset time window now advances on a 10s interval regardless of
auto-refresh state. Pausing only stops query polling — the window
stays current so manual refreshes see up-to-date data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Widen SearchCategory from a closed union to string. Known categories
(application, exchange, attribute, route, agent) keep their labels.
Unknown categories render with title-cased labels and appear as
dynamic tabs derived from the data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- COMPONENT_GUIDE: note search renders between Header and Sections,
no chevrons on section headers
- Spec: update rendering diagrams and description to match
implemented behavior
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Search input now renders between Sidebar.Header and first Section
instead of above Header (fixes cameleer3-server#120)
- Remove ChevronRight/ChevronDown from section headers — the entire
row is already clickable, chevrons added visual noise
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The toggle was only on the chevron button. Now the full row
(chevron + icon + label) triggers onToggle on click or Enter/Space.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add onKeyDown (Enter/Space) to the CommandPalette overlay backdrop div and
result item divs to satisfy SonarQube S1082. RouteFlow and ProcessorTimeline
already had the fixes in place.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extract per-key arrow handler logic into standalone functions outside the
component in SidebarTree.tsx and TreeView.tsx, reducing handleKeyDown
cognitive complexity from 31 to below the 15-unit maximum.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Sidebar, SidebarTree, useStarred to import paths
- Update navigation decision tree with compound component entries
- Replace old Sidebar props description with compound API
- Add standard page layout composition pattern for new Sidebar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- RouteDetail.tsx was missed in page stripping pass — remove AppShell
+ Sidebar wrapper, replace with fragment
- LayoutSection.tsx used StatusDot status= instead of variant=
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move all application-specific sidebar logic (tree builders, starred items,
section collapse state, sidebarReveal handling) out of the DS Sidebar into
a shared LayoutShell that wraps Outlet for route-level layout sharing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace legacy monolithic Sidebar test suite with 16 tests covering the
new compound component API (Sidebar.Header, Section, Footer, FooterLink)
including icon-rail collapsed mode, search input visibility, and active
state highlighting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Render icon between chevron and label in expanded SidebarSection
- Remove !open guard from icon-rail click — always fire both callbacks
- Add border-left: 3px solid transparent to .treeSection so
.treeSectionActive border-left-color takes effect
- Remove duplicate .treeSectionLabel CSS declaration
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Export SidebarTree, SidebarTreeNode, and useStarred from the layout
barrel. Remove old app-domain type exports (SidebarApp, SidebarRoute,
SidebarAgent) that no longer exist in the rewritten Sidebar.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the monolithic Sidebar (560 lines of app-specific logic) with
a composable shell exposing Sidebar.Header, Sidebar.Section,
Sidebar.Footer, and Sidebar.FooterLink sub-components. Application
logic (tree builders, starred items, domain types) is removed — those
responsibilities move to the consuming app layer.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Create context and hook to share collapsed state and toggle callback
between compound component sub-components.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add searchValue prop for controlled input, SidebarContext for
collapsed state propagation, LayoutShell migration plan, and
icon-rail simultaneous callback behavior.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Search: DS renders dumb controlled input, app owns state and passes
filterQuery to SidebarTree instances. Icon-rail click: fires both
onCollapseToggle and onToggle simultaneously, no navigation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the /exchanges/ path guard so sidebarRevealPath is used whenever
available, enabling correct sidebar selection on dashboard, runtime, and
all other tabs when navigating via Cmd-K.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add rechartsTheme config object that maps design tokens to Recharts
component props, ensuring visual consistency without adding Recharts
as a dependency. Also export CHART_COLORS, ChartSeries, and DataPoint
types for public use. Document charting strategy in COMPONENT_GUIDE.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Make Dashboard table fill viewport height with sticky header/footer
and internal scrolling. Expand mock exchange data from 15 to 200
records and Inventory showcase from 5 to 500 records.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>