Initial commit

This commit is contained in:
2026-05-25 08:22:12 +07:00
commit a152c99cce
154 changed files with 39033 additions and 0 deletions

View File

@ -0,0 +1,201 @@
---
name: Soundbox Ops
colors:
surface: '#faf8ff'
surface-dim: '#d9d9e5'
surface-bright: '#faf8ff'
surface-container-lowest: '#ffffff'
surface-container-low: '#f3f3fe'
surface-container: '#ededf9'
surface-container-high: '#e7e7f3'
surface-container-highest: '#e1e2ed'
on-surface: '#191b23'
on-surface-variant: '#434655'
inverse-surface: '#2e3039'
inverse-on-surface: '#f0f0fb'
outline: '#737686'
outline-variant: '#c3c6d7'
surface-tint: '#0053db'
primary: '#004ac6'
on-primary: '#ffffff'
primary-container: '#2563eb'
on-primary-container: '#eeefff'
inverse-primary: '#b4c5ff'
secondary: '#505f76'
on-secondary: '#ffffff'
secondary-container: '#d0e1fb'
on-secondary-container: '#54647a'
tertiary: '#943700'
on-tertiary: '#ffffff'
tertiary-container: '#bc4800'
on-tertiary-container: '#ffede6'
error: '#ba1a1a'
on-error: '#ffffff'
error-container: '#ffdad6'
on-error-container: '#93000a'
primary-fixed: '#dbe1ff'
primary-fixed-dim: '#b4c5ff'
on-primary-fixed: '#00174b'
on-primary-fixed-variant: '#003ea8'
secondary-fixed: '#d3e4fe'
secondary-fixed-dim: '#b7c8e1'
on-secondary-fixed: '#0b1c30'
on-secondary-fixed-variant: '#38485d'
tertiary-fixed: '#ffdbcd'
tertiary-fixed-dim: '#ffb596'
on-tertiary-fixed: '#360f00'
on-tertiary-fixed-variant: '#7d2d00'
background: '#F8FAFC'
on-background: '#191b23'
surface-variant: '#e1e2ed'
success: '#16A34A'
warning: '#F59E0B'
danger: '#DC2626'
info: '#0EA5E9'
slate-900: '#0F172A'
slate-700: '#334155'
slate-500: '#64748B'
slate-200: '#E2E8F0'
slate-100: '#F1F5F9'
typography:
display-lg:
fontFamily: Plus Jakarta Sans
fontSize: 36px
fontWeight: '600'
lineHeight: 44px
letterSpacing: -0.02em
headline-lg:
fontFamily: Plus Jakarta Sans
fontSize: 28px
fontWeight: '600'
lineHeight: 36px
headline-md:
fontFamily: Plus Jakarta Sans
fontSize: 20px
fontWeight: '600'
lineHeight: 28px
body-lg:
fontFamily: Inter
fontSize: 16px
fontWeight: '400'
lineHeight: 24px
body-md:
fontFamily: Inter
fontSize: 14px
fontWeight: '400'
lineHeight: 20px
label-md:
fontFamily: Inter
fontSize: 12px
fontWeight: '500'
lineHeight: 16px
letterSpacing: 0.01em
metric-lg:
fontFamily: Inter
fontSize: 32px
fontWeight: '600'
lineHeight: 40px
metric-sm:
fontFamily: Inter
fontSize: 14px
fontWeight: '600'
lineHeight: 20px
rounded:
sm: 0.125rem
DEFAULT: 0.25rem
md: 0.375rem
lg: 0.5rem
xl: 0.75rem
full: 9999px
spacing:
topbar-height: 72px
page-padding: 24px
card-padding: 20px
row-height: 52px
gutter: 24px
---
## Brand & Style
The design system is engineered for the high-stakes environment of fintech operations. The brand personality is **Precise, Reliable, and Proactive**, focusing on the seamless bridge between digital ledgers and physical IoT soundboxes.
The chosen style is **Corporate / Modern** with a heavy emphasis on **Data-Centricity**. This is achieved through a structured information hierarchy that prioritizes rapid scanning of transaction states and device health. The interface utilizes high-density layouts, subtle tonal layering to separate operational controls from data displays, and a functional aesthetic that avoids unnecessary decoration in favor of utility and speed.
**Key visual principles:**
- **Clarity over Flourish:** Every pixel must serve a functional purpose in the monitoring workflow.
- **Immediate Feedback:** Use of distinct semantic colors to highlight system anomalies or successful settlements.
- **Operational Efficiency:** Minimizing clicks through the use of drawers and context-aware action bars.
## Colors
The palette is anchored by **Primary Blue (#2563EB)** to evoke trust and established financial authority. The neutral foundation is built exclusively on the **Slate** scale, providing a cool, professional backdrop that allows semantic alerts to stand out.
**Usage Guidance:**
- **Primary:** Actionable elements, active navigation states, and primary buttons.
- **Semantic Colors:** Reserved strictly for status indicators (Success for 'Settled', Warning for 'Degraded', Danger for 'Offline/Failed').
- **Neutrals:** `Slate-900` for primary headings, `Slate-700` for body text, and `Slate-100/200` for borders and subtle backgrounds.
- **Background:** The `F8FAFC` base provides a low-strain environment for long-duration operational shifts.
## Typography
This design system employs a dual-font strategy. **Plus Jakarta Sans** is used for headings to provide a modern, clean fintech feel, while **Inter** is used for all body and functional text for maximum legibility at small sizes.
**Tabular Numbers:**
Crucial for a platform dealing with currency (IDR) and device IDs, all metric-related typography must have `font-variant-numeric: tabular-nums` enabled. This ensures that columns of numbers align perfectly in data tables and KPI cards, facilitating easier comparison.
**Scale and Hierarchy:**
- Headlines use Semibold (`600`) to anchor page sections.
- Body text remains Regular (`400`) for extended reading in audit logs.
- Labels use Medium (`500`) with slight letter spacing for specialized metadata.
## Layout & Spacing
The system follows a **12-column fluid grid** for the main content area, allowing the platform to scale from large monitoring displays to standard laptops.
**Key Layout Rules:**
- **Fixed Infrastructure:** The topbar is locked at `72px` and the sidebar remains visible for Admin/Merchant portals to provide persistent global context.
- **Density:** We utilize a "Comfortable-Compact" rhythm. Page margins are set to `24px`, but internal card components and data tables use tighter spacing to maximize information density without sacrificing touch/click targets.
- **Vertical Rhythm:** A base `4px` / `8px` grid governs all spacing. Data tables utilize a consistent `52px` row height to accommodate status chips and action buttons comfortably.
## Elevation & Depth
To maintain a "fast and clean" feel, the system avoids heavy drop shadows. Instead, it utilizes **Tonal Layers** and **Low-Contrast Outlines**.
- **Level 0 (Surface):** `#F8FAFC` (Background) - The lowest layer.
- **Level 1 (Cards/Container):** `#FFFFFF` with a `1px` border of `Slate-200`. This is the primary surface for all data widgets.
- **Level 2 (Interactive):** Elements that require focus (like drawers or modals) use a very soft, diffused shadow (`0 10px 15px -3px rgb(0 0 0 / 0.1)`) to lift them above the data grid.
- **Depth via Border:** Sticky headers in tables use a `1px` bottom border in `Slate-200` rather than a shadow to indicate they are "above" the scrolling content while maintaining a flat, professional profile.
## Shapes
The design system adopts a **Soft** shape language. A `0.25rem` (4px) base radius is used for most UI elements, which maintains a professional, structured look while appearing modern.
- **Components:** Buttons, Input fields, and KPI cards use the base `rounded` (4px) or `rounded-lg` (8px).
- **Status Chips:** Use `rounded-full` (pill-shaped) to distinguish them from interactive buttons.
- **Icons:** Should follow the same geometric principles—no sharp 90-degree corners, but not overly rounded or "bubbly."
## Components
### KPI Cards
Standardized containers for top-level metrics. They include a `label-md` for title, a `metric-lg` for the value, and a bottom section for `metric-sm` trend indicators (e.g., +12% vs last month).
### Data Tables
- **Sticky Header:** Background remains white with a `Slate-200` bottom border during scroll.
- **Numeric Alignment:** Amounts and percentages are right-aligned using tabular numbers.
- **Row Hover:** Use `Slate-50` background on hover to facilitate line scanning.
### Status Chips
Pill-shaped badges with low-opacity backgrounds and high-contrast text:
- **Active/Online/Settled:** Green (Success)
- **Pending/Retrying:** Orange (Warning)
- **Failed/Offline:** Red (Danger)
- **Default/Inactive:** Slate-500 (Neutral)
### Vertical Timelines
Used for transaction history and device lifecycle. Dots represent states; solid lines represent completed paths, and dashed lines represent pending/future steps.
### Audit Blocks (Raw Payload Viewer)
Monospaced font (`Courier Prime` or `JetBrains Mono` as an alternative), contained in a `Slate-900` box with a 'Copy' action always present in the top-right corner.
### Detail Drawers
Standardized side-panel that slides from the right. It allows for "quick inspection" of a merchant or device without losing the context of the main list.