Tenbagger Hunter์ ๋ชจ๋ UI๋ ์ด ๋ฌธ์๋ฅผ ๋ฐ๋ฅธ๋ค. AI/์ฌ๋ ๋๊ฐ ์์ ํ๋ ์ด ๊ท์น ๋ฐ์ผ๋ก ๋๊ฐ์ง ์๋ ๊ฒ์ด ์ปจ์ ์ ์ง์ ํต์ฌ์ด๋ค. ํ ํฐ์ ์ค์ ๊ฐ์ app/globals.css
:root๊ฐ ๋จ์ผ ์์ค(SSOT).
๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง: docs/design/bloomberg-reference-3.png (์ด๊ฒ ์ ๋ณธ. ์ด ํ๋ฉด์ ํฝ์
๋จ์๋ก ๋ชจ์ฌํ๋ค.)
Bloomberg Professional (2010๋ ๋ GUI) โ Win95 ์ ์ฒด(๋ฒ ๋ฒจ) ์์ ฏ + ๋ค์ด๋น ํ์ดํ๋ฐ + ๊ฒ์ ๋ฐ์ดํฐ ์์ญ + ์ฃผํฉ ํค๋/๋ผ๋ฒจ + ํฐ ๊ฐ + ์ด๋ก/๋นจ๊ฐ ๋ฑ๋ฝ + ์์ ๋งํฌ. ์๋จ ์ปฌ๋ฌ ํ์ ํค ํด๋ฐ, ์ฐ์ธก ๋ผ์ธ์ฐจํธ(์ ์ ๊ทธ๋ฆฌ๋+๊ฑฐ๋๋ ๋ฐ), ํ๋จ ๋ฒํธ ๋ด์คํผ๋ + ์ด๋ก ๋ฐฐ๋. ํฌ๋ฆฌ์คํ LCD(๊ธ๋ก์ฐยท์ค์บ๋ผ์ธ ์์), ์ด๊ณ ๋ฐ๋(10~11px).
- ์์ ํ ํฐ๋ง. raw hexยท
bg-neutral-*ยทtext-emerald-*๊ธ์ง โbg-term-*,text-term-*๋ง. - ๋ชจ์๋ฆฌ๋ ๊ฐ์ง.
rounded-*๊ธ์ง (radius ํ ํฐ์ด ์ ๋ถ0). - ํฐํธ๋ ๋ชจ๋
ธ์คํ์ด์ค. body ๊ธฐ๋ณธ 11px/
line-height 1.2. sans๋ก ๋ฎ์ง ๋ง ๊ฒ. - ์
์ฒด๋ ๋ฒ ๋ฒจ๋ก๋ง. ๊น์ด๊ฐ์
.bevel(๋์ถ) /.bevel-in(ํจ๋ชฐ) ์ ํธ๋ก. ์์box-shadow/๊ทธ๋ผ๋ฐ์ด์ /blur๊ธ์ง. ๊ธ๋ก์ฐยทCRT ์ค์บ๋ผ์ธ ๊ธ์ง(์ด ๋ ํผ๋ฐ์ค์ ์๋ค). - ํจ๋ ํ์ดํ๋ฐ๋ ๋ค์ด๋น.
<Panel>์ดbg-term-navyํค๋ + ์ฃผํฉ ์ ๋ชฉ + ์์ ์ฝ๋๋ฅผ ์๋ ์ ์ฉ. ์ง์ ํค๋๋ฅผ ๋ค์ ์น ํ์ง ๋ง ๊ฒ. - ์ด๊ณ ๋ฐ๋. ํจ๋ฉ
p-0.5p-1, gapgap-pxgap-1, ํฐํธtext-[9px]~text-[11px]. ์ฌ๋ฐฑ์ ์ฌ์น. - ํ ๊ท์น. ์ปฌ๋ผ ํค๋๋ ์ฃผํฉ(
<ColHead>), ๋ผ๋ฒจ์term-muted, ๊ฐ์ ํฐ์(term-white), ๋ฑ๋ฝ์<Delta>(์ด๋ก/๋นจ๊ฐ +/-). ์ซ์์tabular-nums. ํ ์ค๋ฌด๋ฌ๋odd:bg-term-navy-dk/40.
| ์ฉ๋ | ํด๋์ค | ์ |
|---|---|---|
| ๋ฐ์ดํฐ ๋ฐํ | bg-term-bg / bg-term-panel |
๊ฒ์ |
| ํ์ดํ๋ฐ/๋ค๋น | bg-term-navy |
๋ก์ด ๋ธ๋ฃจ |
| ๊ฐ์กฐ ํ/ํจ๋ชฐ | bg-term-navy-dk |
์งํ ๋ธ๋ฃจ |
| ํด๋ฐ/๋ฐ์คํฌํฑ | bg-term-chrome |
๋คํฌ ๊ทธ๋ ์ด |
| ๋ฒ ๋ฒจ ํ์ด๋ผ์ดํธ/๊ทธ๋ฆผ์ | --term-bevel-lt / --term-bevel-dk |
(box-shadow ์ ์ฉ) |
| ํค๋ยท๋ผ๋ฒจยท์๊ทธ๋์ฒ | text-term-accent / bg-term-accent |
์ฃผํฉ #ff8c1a |
| ๊ฐ(๊ธฐ๋ณธ ํ ์คํธ) | text-term-white (=term-fg) |
์ ํ์ดํธ |
| ๋ณด์กฐ ๋ผ๋ฒจ | text-term-muted |
๋ฐ์ ํ์ |
| ์์น | text-term-up |
์ด๋ก |
| ํ๋ฝ | text-term-down |
๋นจ๊ฐ |
| ๋งํฌ/์ฝ๋ | text-term-info |
์์ |
| ๋ ธ๋ ๊ฐ์กฐ | text-term-warn |
๋ ธ๋ |
| ๋ณด์กฐ ๊ฐ์กฐ | text-term-mag |
๋ง์ ํ |
| ๋นํ์ฑ/๋จ์ | text-term-faint |
components/terminal/index.tsx:
<Panel title code>โ ๋ค์ด๋น ํ์ดํ๋ฐ + ๋ฒ ๋ฒจ + ๊ฒ์ ๋ณธ๋ฌธ. ๋ชจ๋ ์ฐฝ์ ๊ธฐ๋ณธ.<DataRow label value tone>โ ๋ผ๋ฒจ/๊ฐ ํ ์ค.<ColHead cols>โ ์ฃผํฉ ์ปฌ๋ผ ํค๋ ํ.<Delta value>โ ์ฆ๊ฐ(์ด๋ก/๋นจ๊ฐ +/-).<Tag tone>โ ๋ฒ ๋ฒจ ์ปฌ๋ฌ ์นฉ.<Cell tone>โ ํํธ๋งต ์ (grid gap-px๋ก ๋งคํธ๋ฆญ์ค).<Sparkline data>โ ๋ธ๋ก๋ฌธ์ ๋ฏธ๋์ฐจํธ.<Bar pct>โ ๋น์จ ๋ฐ.<TickerTape items>โ ์คํฌ๋กค ์์ธ.<NewsFeed items>โ ๋ฒํธ ๋ด์ค ํผ๋.
components/terminal/chart.tsx:
<LineChartPanel series volume yLabels xLabels>โ SVG ๋ผ์ธ์ฐจํธ(์ ์ ๊ทธ๋ฆฌ๋ + ๊ฑฐ๋๋ ๋ฐ + ์ถ). ํฐ ์ฐจํธ๋ ์ด๊ฑธ๋ก.
components/terminal/toolbar.tsx:
<TopToolbar>โ ์๋จ ์ปฌ๋ฌ ํ์ ํค ๊ทธ๋ฆฌ๋.
components/terminal/command-line.tsx:
<CommandLine>โCMD โฆ <GO>์ ๋ ฅ.
์ ์ญ ์ ํธ: .bevel / .bevel-in(์
์ฒด), .term-cursor(๋ธ๋งํน ์ปค์), .term-glow(์ด ์ปจ์
์์ no-op).
์ ํ๋ฉด์ ๋ง๋ค ๋ ๋จผ์ "Panel + DataRow + ColHead + Cell + LineChartPanel ์กฐํฉ์ผ๋ก ์งค ์ ์๋?"๋ฅผ ์๋ฌธํ๋ค. ์์ผ๋ฉด ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์ถ๊ฐํ๊ณ ์ฌ์ฌ์ฉ (์ผํ์ฑ ์คํ์ผ ๊ธ์ง).
- raw hex /
neutral-*/*-400์ ์ ์ผ๋? (term-* ํ ํฐ๋ง) -
rounded-*์ ์ผ๋? - ๊น์ด๋
.bevel/.bevel-in๋ง? (์์ box-shadow/๊ธ๋ก์ฐ/๊ทธ๋ผ๋ฐ์ด์ ์๋) - ํจ๋์
<Panel>(๋ค์ด๋น ํค๋)๋ก ๊ฐ์๋? - ํ๋
<ColHead>+<DataRow>+<Delta>, ์ซ์tabular-nums? - ์ด๊ณ ๋ฐ๋(โค11px, p-1 ์ดํ) ์ ์ง?
git grep -nE 'rounded-|neutral-[0-9]|emerald-|amber-[0-9]|#[0-9a-fA-F]{3,6}' -- 'app/**/*.tsx' 'components/**/*.tsx'๋น์ด ์์ผ๋ฉด OK (์์ธ: globals.css/tailwind.config.ts ํ ํฐ ์ ์๋ถ).