@bridger-kr/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/components/core/Badge.cjs +36 -0
- package/dist/components/core/Badge.cjs.map +1 -0
- package/dist/components/core/Badge.d.cts +18 -0
- package/dist/components/core/Badge.d.ts +18 -0
- package/dist/components/core/Badge.mjs +34 -0
- package/dist/components/core/Badge.mjs.map +1 -0
- package/dist/components/core/Button.cjs +57 -0
- package/dist/components/core/Button.cjs.map +1 -0
- package/dist/components/core/Button.d.cts +26 -0
- package/dist/components/core/Button.d.ts +26 -0
- package/dist/components/core/Button.mjs +55 -0
- package/dist/components/core/Button.mjs.map +1 -0
- package/dist/components/core/Card.cjs +57 -0
- package/dist/components/core/Card.cjs.map +1 -0
- package/dist/components/core/Card.d.cts +27 -0
- package/dist/components/core/Card.d.ts +27 -0
- package/dist/components/core/Card.mjs +54 -0
- package/dist/components/core/Card.mjs.map +1 -0
- package/dist/components/core/FilterChip.cjs +54 -0
- package/dist/components/core/FilterChip.cjs.map +1 -0
- package/dist/components/core/FilterChip.d.cts +23 -0
- package/dist/components/core/FilterChip.d.ts +23 -0
- package/dist/components/core/FilterChip.mjs +52 -0
- package/dist/components/core/FilterChip.mjs.map +1 -0
- package/dist/components/core/Input.cjs +67 -0
- package/dist/components/core/Input.cjs.map +1 -0
- package/dist/components/core/Input.d.cts +20 -0
- package/dist/components/core/Input.d.ts +20 -0
- package/dist/components/core/Input.mjs +65 -0
- package/dist/components/core/Input.mjs.map +1 -0
- package/dist/components/core/StatusPill.cjs +57 -0
- package/dist/components/core/StatusPill.cjs.map +1 -0
- package/dist/components/core/StatusPill.d.cts +19 -0
- package/dist/components/core/StatusPill.d.ts +19 -0
- package/dist/components/core/StatusPill.mjs +55 -0
- package/dist/components/core/StatusPill.mjs.map +1 -0
- package/dist/components/core/Surface.cjs +52 -0
- package/dist/components/core/Surface.cjs.map +1 -0
- package/dist/components/core/Surface.d.cts +24 -0
- package/dist/components/core/Surface.d.ts +24 -0
- package/dist/components/core/Surface.mjs +47 -0
- package/dist/components/core/Surface.mjs.map +1 -0
- package/dist/components/core/Tabs.cjs +64 -0
- package/dist/components/core/Tabs.cjs.map +1 -0
- package/dist/components/core/Tabs.d.cts +24 -0
- package/dist/components/core/Tabs.d.ts +24 -0
- package/dist/components/core/Tabs.mjs +62 -0
- package/dist/components/core/Tabs.mjs.map +1 -0
- package/dist/components/data/Avatar.cjs +40 -0
- package/dist/components/data/Avatar.cjs.map +1 -0
- package/dist/components/data/Avatar.d.cts +24 -0
- package/dist/components/data/Avatar.d.ts +24 -0
- package/dist/components/data/Avatar.mjs +38 -0
- package/dist/components/data/Avatar.mjs.map +1 -0
- package/dist/components/data/CodeBlock.cjs +92 -0
- package/dist/components/data/CodeBlock.cjs.map +1 -0
- package/dist/components/data/CodeBlock.d.cts +20 -0
- package/dist/components/data/CodeBlock.d.ts +20 -0
- package/dist/components/data/CodeBlock.mjs +90 -0
- package/dist/components/data/CodeBlock.mjs.map +1 -0
- package/dist/components/data/KeyValue.cjs +55 -0
- package/dist/components/data/KeyValue.cjs.map +1 -0
- package/dist/components/data/KeyValue.d.cts +24 -0
- package/dist/components/data/KeyValue.d.ts +24 -0
- package/dist/components/data/KeyValue.mjs +53 -0
- package/dist/components/data/KeyValue.mjs.map +1 -0
- package/dist/components/data/LogRow.cjs +55 -0
- package/dist/components/data/LogRow.cjs.map +1 -0
- package/dist/components/data/LogRow.d.cts +23 -0
- package/dist/components/data/LogRow.d.ts +23 -0
- package/dist/components/data/LogRow.mjs +53 -0
- package/dist/components/data/LogRow.mjs.map +1 -0
- package/dist/components/data/Pagination.cjs +44 -0
- package/dist/components/data/Pagination.cjs.map +1 -0
- package/dist/components/data/Pagination.d.cts +13 -0
- package/dist/components/data/Pagination.d.ts +13 -0
- package/dist/components/data/Pagination.mjs +42 -0
- package/dist/components/data/Pagination.mjs.map +1 -0
- package/dist/components/data/StatTile.cjs +20 -0
- package/dist/components/data/StatTile.cjs.map +1 -0
- package/dist/components/data/StatTile.d.cts +19 -0
- package/dist/components/data/StatTile.d.ts +19 -0
- package/dist/components/data/StatTile.mjs +18 -0
- package/dist/components/data/StatTile.mjs.map +1 -0
- package/dist/components/data/Table.cjs +45 -0
- package/dist/components/data/Table.cjs.map +1 -0
- package/dist/components/data/Table.d.cts +27 -0
- package/dist/components/data/Table.d.ts +27 -0
- package/dist/components/data/Table.mjs +43 -0
- package/dist/components/data/Table.mjs.map +1 -0
- package/dist/components/data/UsageMeter.cjs +28 -0
- package/dist/components/data/UsageMeter.cjs.map +1 -0
- package/dist/components/data/UsageMeter.d.cts +19 -0
- package/dist/components/data/UsageMeter.d.ts +19 -0
- package/dist/components/data/UsageMeter.mjs +26 -0
- package/dist/components/data/UsageMeter.mjs.map +1 -0
- package/dist/components/feedback/Alert.cjs +78 -0
- package/dist/components/feedback/Alert.cjs.map +1 -0
- package/dist/components/feedback/Alert.d.cts +29 -0
- package/dist/components/feedback/Alert.d.ts +29 -0
- package/dist/components/feedback/Alert.mjs +74 -0
- package/dist/components/feedback/Alert.mjs.map +1 -0
- package/dist/components/feedback/Dialog.cjs +62 -0
- package/dist/components/feedback/Dialog.cjs.map +1 -0
- package/dist/components/feedback/Dialog.d.cts +17 -0
- package/dist/components/feedback/Dialog.d.ts +17 -0
- package/dist/components/feedback/Dialog.mjs +60 -0
- package/dist/components/feedback/Dialog.mjs.map +1 -0
- package/dist/components/feedback/Drawer.cjs +58 -0
- package/dist/components/feedback/Drawer.cjs.map +1 -0
- package/dist/components/feedback/Drawer.d.cts +22 -0
- package/dist/components/feedback/Drawer.d.ts +22 -0
- package/dist/components/feedback/Drawer.mjs +56 -0
- package/dist/components/feedback/Drawer.mjs.map +1 -0
- package/dist/components/feedback/EmptyState.cjs +36 -0
- package/dist/components/feedback/EmptyState.cjs.map +1 -0
- package/dist/components/feedback/EmptyState.d.cts +14 -0
- package/dist/components/feedback/EmptyState.d.ts +14 -0
- package/dist/components/feedback/EmptyState.mjs +34 -0
- package/dist/components/feedback/EmptyState.mjs.map +1 -0
- package/dist/components/feedback/Skeleton.cjs +19 -0
- package/dist/components/feedback/Skeleton.cjs.map +1 -0
- package/dist/components/feedback/Skeleton.d.cts +12 -0
- package/dist/components/feedback/Skeleton.d.ts +12 -0
- package/dist/components/feedback/Skeleton.mjs +17 -0
- package/dist/components/feedback/Skeleton.mjs.map +1 -0
- package/dist/components/feedback/Spinner.cjs +17 -0
- package/dist/components/feedback/Spinner.cjs.map +1 -0
- package/dist/components/feedback/Spinner.d.cts +12 -0
- package/dist/components/feedback/Spinner.d.ts +12 -0
- package/dist/components/feedback/Spinner.mjs +15 -0
- package/dist/components/feedback/Spinner.mjs.map +1 -0
- package/dist/components/feedback/Toast.cjs +32 -0
- package/dist/components/feedback/Toast.cjs.map +1 -0
- package/dist/components/feedback/Toast.d.cts +20 -0
- package/dist/components/feedback/Toast.d.ts +20 -0
- package/dist/components/feedback/Toast.mjs +30 -0
- package/dist/components/feedback/Toast.mjs.map +1 -0
- package/dist/components/feedback/Tooltip.cjs +51 -0
- package/dist/components/feedback/Tooltip.cjs.map +1 -0
- package/dist/components/feedback/Tooltip.d.cts +11 -0
- package/dist/components/feedback/Tooltip.d.ts +11 -0
- package/dist/components/feedback/Tooltip.mjs +49 -0
- package/dist/components/feedback/Tooltip.mjs.map +1 -0
- package/dist/components/forms/Checkbox.cjs +74 -0
- package/dist/components/forms/Checkbox.cjs.map +1 -0
- package/dist/components/forms/Checkbox.d.cts +16 -0
- package/dist/components/forms/Checkbox.d.ts +16 -0
- package/dist/components/forms/Checkbox.mjs +72 -0
- package/dist/components/forms/Checkbox.mjs.map +1 -0
- package/dist/components/forms/Combobox.cjs +217 -0
- package/dist/components/forms/Combobox.cjs.map +1 -0
- package/dist/components/forms/Combobox.d.cts +27 -0
- package/dist/components/forms/Combobox.d.ts +27 -0
- package/dist/components/forms/Combobox.mjs +215 -0
- package/dist/components/forms/Combobox.mjs.map +1 -0
- package/dist/components/forms/FileUpload.cjs +187 -0
- package/dist/components/forms/FileUpload.cjs.map +1 -0
- package/dist/components/forms/FileUpload.d.cts +26 -0
- package/dist/components/forms/FileUpload.d.ts +26 -0
- package/dist/components/forms/FileUpload.mjs +185 -0
- package/dist/components/forms/FileUpload.mjs.map +1 -0
- package/dist/components/forms/RadioGroup.cjs +73 -0
- package/dist/components/forms/RadioGroup.cjs.map +1 -0
- package/dist/components/forms/RadioGroup.d.cts +21 -0
- package/dist/components/forms/RadioGroup.d.ts +21 -0
- package/dist/components/forms/RadioGroup.mjs +71 -0
- package/dist/components/forms/RadioGroup.mjs.map +1 -0
- package/dist/components/forms/SegmentedControl.cjs +67 -0
- package/dist/components/forms/SegmentedControl.cjs.map +1 -0
- package/dist/components/forms/SegmentedControl.d.cts +19 -0
- package/dist/components/forms/SegmentedControl.d.ts +19 -0
- package/dist/components/forms/SegmentedControl.mjs +65 -0
- package/dist/components/forms/SegmentedControl.mjs.map +1 -0
- package/dist/components/forms/Select.cjs +67 -0
- package/dist/components/forms/Select.cjs.map +1 -0
- package/dist/components/forms/Select.d.cts +23 -0
- package/dist/components/forms/Select.d.ts +23 -0
- package/dist/components/forms/Select.mjs +65 -0
- package/dist/components/forms/Select.mjs.map +1 -0
- package/dist/components/forms/Slider.cjs +129 -0
- package/dist/components/forms/Slider.cjs.map +1 -0
- package/dist/components/forms/Slider.d.cts +24 -0
- package/dist/components/forms/Slider.d.ts +24 -0
- package/dist/components/forms/Slider.mjs +127 -0
- package/dist/components/forms/Slider.mjs.map +1 -0
- package/dist/components/forms/Switch.cjs +101 -0
- package/dist/components/forms/Switch.cjs.map +1 -0
- package/dist/components/forms/Switch.d.cts +24 -0
- package/dist/components/forms/Switch.d.ts +24 -0
- package/dist/components/forms/Switch.mjs +98 -0
- package/dist/components/forms/Switch.mjs.map +1 -0
- package/dist/components/forms/Textarea.cjs +35 -0
- package/dist/components/forms/Textarea.cjs.map +1 -0
- package/dist/components/forms/Textarea.d.cts +15 -0
- package/dist/components/forms/Textarea.d.ts +15 -0
- package/dist/components/forms/Textarea.mjs +33 -0
- package/dist/components/forms/Textarea.mjs.map +1 -0
- package/dist/components/navigation/Breadcrumb.cjs +27 -0
- package/dist/components/navigation/Breadcrumb.cjs.map +1 -0
- package/dist/components/navigation/Breadcrumb.d.cts +15 -0
- package/dist/components/navigation/Breadcrumb.d.ts +15 -0
- package/dist/components/navigation/Breadcrumb.mjs +25 -0
- package/dist/components/navigation/Breadcrumb.mjs.map +1 -0
- package/dist/components/navigation/CommandPalette.cjs +136 -0
- package/dist/components/navigation/CommandPalette.cjs.map +1 -0
- package/dist/components/navigation/CommandPalette.d.cts +26 -0
- package/dist/components/navigation/CommandPalette.d.ts +26 -0
- package/dist/components/navigation/CommandPalette.mjs +134 -0
- package/dist/components/navigation/CommandPalette.mjs.map +1 -0
- package/dist/components/navigation/Menu.cjs +104 -0
- package/dist/components/navigation/Menu.cjs.map +1 -0
- package/dist/components/navigation/Menu.d.cts +20 -0
- package/dist/components/navigation/Menu.d.ts +20 -0
- package/dist/components/navigation/Menu.mjs +102 -0
- package/dist/components/navigation/Menu.mjs.map +1 -0
- package/dist/components/navigation/Sidebar.cjs +60 -0
- package/dist/components/navigation/Sidebar.cjs.map +1 -0
- package/dist/components/navigation/Sidebar.d.cts +30 -0
- package/dist/components/navigation/Sidebar.d.ts +30 -0
- package/dist/components/navigation/Sidebar.mjs +58 -0
- package/dist/components/navigation/Sidebar.mjs.map +1 -0
- package/dist/components/navigation/Stepper.cjs +55 -0
- package/dist/components/navigation/Stepper.cjs.map +1 -0
- package/dist/components/navigation/Stepper.d.cts +21 -0
- package/dist/components/navigation/Stepper.d.ts +21 -0
- package/dist/components/navigation/Stepper.mjs +53 -0
- package/dist/components/navigation/Stepper.mjs.map +1 -0
- package/dist/components/product/BrandLogo.cjs +159 -0
- package/dist/components/product/BrandLogo.cjs.map +1 -0
- package/dist/components/product/BrandLogo.d.cts +28 -0
- package/dist/components/product/BrandLogo.d.ts +28 -0
- package/dist/components/product/BrandLogo.mjs +156 -0
- package/dist/components/product/BrandLogo.mjs.map +1 -0
- package/dist/components/product/ProductActionPill.cjs +57 -0
- package/dist/components/product/ProductActionPill.cjs.map +1 -0
- package/dist/components/product/ProductActionPill.d.cts +31 -0
- package/dist/components/product/ProductActionPill.d.ts +31 -0
- package/dist/components/product/ProductActionPill.mjs +52 -0
- package/dist/components/product/ProductActionPill.mjs.map +1 -0
- package/dist/components/product/ProductCinematic.cjs +69 -0
- package/dist/components/product/ProductCinematic.cjs.map +1 -0
- package/dist/components/product/ProductCinematic.d.cts +33 -0
- package/dist/components/product/ProductCinematic.d.ts +33 -0
- package/dist/components/product/ProductCinematic.mjs +63 -0
- package/dist/components/product/ProductCinematic.mjs.map +1 -0
- package/dist/components/product/ProductPageHeader.cjs +35 -0
- package/dist/components/product/ProductPageHeader.cjs.map +1 -0
- package/dist/components/product/ProductPageHeader.d.cts +13 -0
- package/dist/components/product/ProductPageHeader.d.ts +13 -0
- package/dist/components/product/ProductPageHeader.mjs +33 -0
- package/dist/components/product/ProductPageHeader.mjs.map +1 -0
- package/dist/components/product/SectionCard.cjs +72 -0
- package/dist/components/product/SectionCard.cjs.map +1 -0
- package/dist/components/product/SectionCard.d.cts +20 -0
- package/dist/components/product/SectionCard.d.ts +20 -0
- package/dist/components/product/SectionCard.mjs +70 -0
- package/dist/components/product/SectionCard.mjs.map +1 -0
- package/dist/components/product/ToolCard.cjs +70 -0
- package/dist/components/product/ToolCard.cjs.map +1 -0
- package/dist/components/product/ToolCard.d.cts +22 -0
- package/dist/components/product/ToolCard.d.ts +22 -0
- package/dist/components/product/ToolCard.mjs +68 -0
- package/dist/components/product/ToolCard.mjs.map +1 -0
- package/dist/index.cjs +2593 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +49 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.mjs +2532 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +463 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/CodeBlock.tsx"],"names":[],"mappings":"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","file":"CodeBlock.mjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\nimport { useState } from 'react';\n\ntype TokenKind = 'plain' | 'key' | 'str' | 'num' | 'kw' | 'pun';\n\ninterface CodeToken {\n t: string;\n c: TokenKind;\n}\n\nfunction highlight(line: string): CodeToken[] {\n const out: CodeToken[] = [];\n const re = /(\"(?:[^\"\\\\]|\\\\.)*\"\\s*:)|(\"(?:[^\"\\\\]|\\\\.)*\")|(\\b-?\\d+(?:\\.\\d+)?\\b)|(\\b(?:true|false|null|GET|POST|PUT|DELETE)\\b)|([{}[\\],:])/g;\n let last = 0;\n let match: RegExpExecArray | null;\n\n while ((match = re.exec(line)) !== null) {\n if (match.index > last) out.push({ t: line.slice(last, match.index), c: 'plain' });\n if (match[1]) out.push({ t: match[1], c: 'key' });\n else if (match[2]) out.push({ t: match[2], c: 'str' });\n else if (match[3]) out.push({ t: match[3], c: 'num' });\n else if (match[4]) out.push({ t: match[4], c: 'kw' });\n else if (match[5]) out.push({ t: match[5], c: 'pun' });\n last = re.lastIndex;\n }\n\n if (last < line.length) out.push({ t: line.slice(last), c: 'plain' });\n return out;\n}\n\nconst COLOR: Record<TokenKind, string> = { plain: '#cdd0d8', key: '#7fd1c0', str: '#e0a96d', num: '#8fb3ff', kw: '#c98aff', pun: '#8a91a3' };\n\nexport interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n /** The snippet, newline-separated. Lightly token-highlighted (JSON/shell). */\n code?: string;\n /** Header label, e.g. a filename or \"response\". Falls back to language. */\n label?: string;\n language?: string;\n showLineNumbers?: boolean;\n copyable?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Dark code surface for the light page (Stripe-style). Header + copy + line numbers.\n * @startingPoint section=\"Data\" subtitle=\"Dark code block with copy\" viewport=\"520x220\"\n */\nexport function CodeBlock({ code = '', label, language = 'json', showLineNumbers = true, copyable = true, style, ...rest }: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n const lines = String(code).replace(/\\n$/, '').split('\\n');\n\n const copy = () => {\n try { navigator.clipboard?.writeText(code); } catch { /* clipboard unavailable */ }\n setCopied(true); setTimeout(() => setCopied(false), 1400);\n };\n\n return (\n <div {...rest} style={{\n background: 'var(--dt-code-bg)', border: '1px solid var(--dt-code-border)',\n borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden', ...style,\n }}>\n {(label || copyable) ? (\n <div style={{\n display: 'flex', alignItems: 'center', gap: 10, padding: '9px 12px',\n borderBottom: '1px solid var(--dt-code-border)',\n }}>\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: '#8a91a3' }}>{label || language}</span>\n {copyable ? (\n <button\n type=\"button\" onClick={copy}\n style={{\n marginLeft: 'auto', display: 'inline-flex', alignItems: 'center', gap: 6, border: 'none',\n background: 'transparent', color: copied ? '#34d399' : '#8a91a3', cursor: 'pointer',\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, padding: 0,\n }}\n >\n {copied ? (\n <><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M20 6L9 17l-5-5\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>복사됨</>\n ) : (\n <><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" /><path d=\"M5 15V5a2 2 0 0 1 2-2h10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>복사</>\n )}\n </button>\n ) : null}\n </div>\n ) : null}\n <div style={{ padding: '12px 0', overflowX: 'auto' }}>\n {lines.map((line, index) => (\n <div key={index} style={{ display: 'grid', gridTemplateColumns: showLineNumbers ? '38px 1fr' : '1fr', fontFamily: 'var(--dt-font-mono)', fontSize: 12.5, lineHeight: 1.75 }}>\n {showLineNumbers ? <span style={{ textAlign: 'right', paddingRight: 14, color: '#5a6273', userSelect: 'none' }}>{index + 1}</span> : null}\n <code style={{ color: COLOR.plain, whiteSpace: 'pre', paddingRight: 14 }}>\n {highlight(line).map((segment, segmentIndex) => <span key={segmentIndex} style={{ color: COLOR[segment.c] }}>{segment.t}</span>)}\n </code>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
// src/components/data/KeyValue.tsx
|
|
6
|
+
function KeyValue({ items = [], columns = 1, style, ...rest }) {
|
|
7
|
+
return /* @__PURE__ */ jsxRuntime.jsx("dl", { ...rest, style: {
|
|
8
|
+
margin: 0,
|
|
9
|
+
display: "grid",
|
|
10
|
+
gridTemplateColumns: columns === 2 ? "1fr 1fr" : "1fr",
|
|
11
|
+
border: "1px solid var(--dt-border-strong)",
|
|
12
|
+
borderRadius: "var(--dt-radius-lg)",
|
|
13
|
+
overflow: "hidden",
|
|
14
|
+
...style
|
|
15
|
+
}, children: items.map((item, index) => {
|
|
16
|
+
const row = Math.floor(index / columns);
|
|
17
|
+
const col = index % columns;
|
|
18
|
+
const isLastRow = row === Math.floor((items.length - 1) / columns);
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
style: {
|
|
23
|
+
display: "flex",
|
|
24
|
+
alignItems: "baseline",
|
|
25
|
+
justifyContent: "space-between",
|
|
26
|
+
gap: 14,
|
|
27
|
+
padding: "11px 14px",
|
|
28
|
+
borderBottom: isLastRow ? "none" : "1px solid var(--dt-border)",
|
|
29
|
+
borderRight: columns === 2 && col === 0 ? "1px solid var(--dt-border)" : "none"
|
|
30
|
+
},
|
|
31
|
+
children: [
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { style: { fontSize: 12.5, color: "var(--dt-muted)", flex: "0 0 auto" }, children: item.key }),
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { style: {
|
|
34
|
+
margin: 0,
|
|
35
|
+
textAlign: "right",
|
|
36
|
+
minWidth: 0,
|
|
37
|
+
fontFamily: item.mono ? "var(--dt-font-mono)" : "inherit",
|
|
38
|
+
fontSize: item.mono ? 12.5 : 13,
|
|
39
|
+
fontWeight: 600,
|
|
40
|
+
color: item.accent ? "var(--dt-accent)" : "var(--dt-ink-strong)",
|
|
41
|
+
fontVariantNumeric: "tabular-nums",
|
|
42
|
+
overflow: "hidden",
|
|
43
|
+
textOverflow: "ellipsis",
|
|
44
|
+
whiteSpace: "nowrap"
|
|
45
|
+
}, children: item.value })
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
index
|
|
49
|
+
);
|
|
50
|
+
}) });
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
exports.KeyValue = KeyValue;
|
|
54
|
+
//# sourceMappingURL=KeyValue.cjs.map
|
|
55
|
+
//# sourceMappingURL=KeyValue.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/KeyValue.tsx"],"names":["jsx","jsxs"],"mappings":";;;;;AAsBO,SAAS,QAAA,CAAS,EAAE,KAAA,GAAQ,EAAC,EAAG,UAAU,CAAA,EAAG,KAAA,EAAO,GAAG,IAAA,EAAK,EAAkB;AACnF,EAAA,uBACEA,cAAA,CAAC,IAAA,EAAA,EAAI,GAAG,IAAA,EAAM,KAAA,EAAO;AAAA,IACnB,MAAA,EAAQ,CAAA;AAAA,IAAG,OAAA,EAAS,MAAA;AAAA,IACpB,mBAAA,EAAqB,OAAA,KAAY,CAAA,GAAI,SAAA,GAAY,KAAA;AAAA,IACjD,MAAA,EAAQ,mCAAA;AAAA,IAAqC,YAAA,EAAc,qBAAA;AAAA,IAAuB,QAAA,EAAU,QAAA;AAAA,IAC5F,GAAG;AAAA,GACL,EACG,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAC1B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,OAAO,CAAA;AACtC,IAAA,MAAM,MAAM,KAAA,GAAQ,OAAA;AACpB,IAAA,MAAM,YAAY,GAAA,KAAQ,IAAA,CAAK,OAAO,KAAA,CAAM,MAAA,GAAS,KAAK,OAAO,CAAA;AAEjE,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,MAAA;AAAA,UAAQ,UAAA,EAAY,UAAA;AAAA,UAAY,cAAA,EAAgB,eAAA;AAAA,UAAiB,GAAA,EAAK,EAAA;AAAA,UAC/E,OAAA,EAAS,WAAA;AAAA,UACT,YAAA,EAAc,YAAY,MAAA,GAAS,4BAAA;AAAA,UACnC,WAAA,EAAa,OAAA,KAAY,CAAA,IAAK,GAAA,KAAQ,IAAI,4BAAA,GAA+B;AAAA,SAC3E;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,cAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,iBAAA,EAAmB,IAAA,EAAM,UAAA,EAAW,EAAI,QAAA,EAAA,IAAA,CAAK,GAAA,EAAI,CAAA;AAAA,0BACrFA,cAAA,CAAC,QAAG,KAAA,EAAO;AAAA,YACT,MAAA,EAAQ,CAAA;AAAA,YAAG,SAAA,EAAW,OAAA;AAAA,YAAS,QAAA,EAAU,CAAA;AAAA,YACzC,UAAA,EAAY,IAAA,CAAK,IAAA,GAAO,qBAAA,GAAwB,SAAA;AAAA,YAChD,QAAA,EAAU,IAAA,CAAK,IAAA,GAAO,IAAA,GAAO,EAAA;AAAA,YAAI,UAAA,EAAY,GAAA;AAAA,YAC7C,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,kBAAA,GAAqB,sBAAA;AAAA,YAC1C,kBAAA,EAAoB,cAAA;AAAA,YACpB,QAAA,EAAU,QAAA;AAAA,YAAU,YAAA,EAAc,UAAA;AAAA,YAAY,UAAA,EAAY;AAAA,WAC5D,EAAI,eAAK,KAAA,EAAM;AAAA;AAAA,OAAA;AAAA,MAhBV;AAAA,KAiBP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ","file":"KeyValue.cjs","sourcesContent":["import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface KeyValueItem {\n key: string;\n value: ReactNode;\n /** Render the value in JetBrains Mono (paths, IDs, methods). */\n mono?: boolean;\n /** Tint the value persimmon (highlighted field). */\n accent?: boolean;\n}\n\nexport interface KeyValueProps extends Omit<HTMLAttributes<HTMLDListElement>, 'children' | 'style'> {\n items?: KeyValueItem[];\n /** 1 = stacked rows, 2 = two-up grid. */\n columns?: 1 | 2;\n style?: CSSProperties;\n}\n\n/**\n * Definition list for spec metadata — hairline rows, muted key, ink value.\n * @startingPoint section=\"Data\" subtitle=\"Spec metadata as a definition list\" viewport=\"460x220\"\n */\nexport function KeyValue({ items = [], columns = 1, style, ...rest }: KeyValueProps) {\n return (\n <dl {...rest} style={{\n margin: 0, display: 'grid',\n gridTemplateColumns: columns === 2 ? '1fr 1fr' : '1fr',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n ...style,\n }}>\n {items.map((item, index) => {\n const row = Math.floor(index / columns);\n const col = index % columns;\n const isLastRow = row === Math.floor((items.length - 1) / columns);\n\n return (\n <div\n key={index}\n style={{\n display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 14,\n padding: '11px 14px',\n borderBottom: isLastRow ? 'none' : '1px solid var(--dt-border)',\n borderRight: columns === 2 && col === 0 ? '1px solid var(--dt-border)' : 'none',\n }}\n >\n <dt style={{ fontSize: 12.5, color: 'var(--dt-muted)', flex: '0 0 auto' }}>{item.key}</dt>\n <dd style={{\n margin: 0, textAlign: 'right', minWidth: 0,\n fontFamily: item.mono ? 'var(--dt-font-mono)' : 'inherit',\n fontSize: item.mono ? 12.5 : 13, fontWeight: 600,\n color: item.accent ? 'var(--dt-accent)' : 'var(--dt-ink-strong)',\n fontVariantNumeric: 'tabular-nums',\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}>{item.value}</dd>\n </div>\n );\n })}\n </dl>\n );\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
interface KeyValueItem {
|
|
5
|
+
key: string;
|
|
6
|
+
value: ReactNode;
|
|
7
|
+
/** Render the value in JetBrains Mono (paths, IDs, methods). */
|
|
8
|
+
mono?: boolean;
|
|
9
|
+
/** Tint the value persimmon (highlighted field). */
|
|
10
|
+
accent?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface KeyValueProps extends Omit<HTMLAttributes<HTMLDListElement>, 'children' | 'style'> {
|
|
13
|
+
items?: KeyValueItem[];
|
|
14
|
+
/** 1 = stacked rows, 2 = two-up grid. */
|
|
15
|
+
columns?: 1 | 2;
|
|
16
|
+
style?: CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Definition list for spec metadata — hairline rows, muted key, ink value.
|
|
20
|
+
* @startingPoint section="Data" subtitle="Spec metadata as a definition list" viewport="460x220"
|
|
21
|
+
*/
|
|
22
|
+
declare function KeyValue({ items, columns, style, ...rest }: KeyValueProps): react.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { KeyValue, type KeyValueItem, type KeyValueProps };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
interface KeyValueItem {
|
|
5
|
+
key: string;
|
|
6
|
+
value: ReactNode;
|
|
7
|
+
/** Render the value in JetBrains Mono (paths, IDs, methods). */
|
|
8
|
+
mono?: boolean;
|
|
9
|
+
/** Tint the value persimmon (highlighted field). */
|
|
10
|
+
accent?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface KeyValueProps extends Omit<HTMLAttributes<HTMLDListElement>, 'children' | 'style'> {
|
|
13
|
+
items?: KeyValueItem[];
|
|
14
|
+
/** 1 = stacked rows, 2 = two-up grid. */
|
|
15
|
+
columns?: 1 | 2;
|
|
16
|
+
style?: CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Definition list for spec metadata — hairline rows, muted key, ink value.
|
|
20
|
+
* @startingPoint section="Data" subtitle="Spec metadata as a definition list" viewport="460x220"
|
|
21
|
+
*/
|
|
22
|
+
declare function KeyValue({ items, columns, style, ...rest }: KeyValueProps): react.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { KeyValue, type KeyValueItem, type KeyValueProps };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/components/data/KeyValue.tsx
|
|
4
|
+
function KeyValue({ items = [], columns = 1, style, ...rest }) {
|
|
5
|
+
return /* @__PURE__ */ jsx("dl", { ...rest, style: {
|
|
6
|
+
margin: 0,
|
|
7
|
+
display: "grid",
|
|
8
|
+
gridTemplateColumns: columns === 2 ? "1fr 1fr" : "1fr",
|
|
9
|
+
border: "1px solid var(--dt-border-strong)",
|
|
10
|
+
borderRadius: "var(--dt-radius-lg)",
|
|
11
|
+
overflow: "hidden",
|
|
12
|
+
...style
|
|
13
|
+
}, children: items.map((item, index) => {
|
|
14
|
+
const row = Math.floor(index / columns);
|
|
15
|
+
const col = index % columns;
|
|
16
|
+
const isLastRow = row === Math.floor((items.length - 1) / columns);
|
|
17
|
+
return /* @__PURE__ */ jsxs(
|
|
18
|
+
"div",
|
|
19
|
+
{
|
|
20
|
+
style: {
|
|
21
|
+
display: "flex",
|
|
22
|
+
alignItems: "baseline",
|
|
23
|
+
justifyContent: "space-between",
|
|
24
|
+
gap: 14,
|
|
25
|
+
padding: "11px 14px",
|
|
26
|
+
borderBottom: isLastRow ? "none" : "1px solid var(--dt-border)",
|
|
27
|
+
borderRight: columns === 2 && col === 0 ? "1px solid var(--dt-border)" : "none"
|
|
28
|
+
},
|
|
29
|
+
children: [
|
|
30
|
+
/* @__PURE__ */ jsx("dt", { style: { fontSize: 12.5, color: "var(--dt-muted)", flex: "0 0 auto" }, children: item.key }),
|
|
31
|
+
/* @__PURE__ */ jsx("dd", { style: {
|
|
32
|
+
margin: 0,
|
|
33
|
+
textAlign: "right",
|
|
34
|
+
minWidth: 0,
|
|
35
|
+
fontFamily: item.mono ? "var(--dt-font-mono)" : "inherit",
|
|
36
|
+
fontSize: item.mono ? 12.5 : 13,
|
|
37
|
+
fontWeight: 600,
|
|
38
|
+
color: item.accent ? "var(--dt-accent)" : "var(--dt-ink-strong)",
|
|
39
|
+
fontVariantNumeric: "tabular-nums",
|
|
40
|
+
overflow: "hidden",
|
|
41
|
+
textOverflow: "ellipsis",
|
|
42
|
+
whiteSpace: "nowrap"
|
|
43
|
+
}, children: item.value })
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
index
|
|
47
|
+
);
|
|
48
|
+
}) });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { KeyValue };
|
|
52
|
+
//# sourceMappingURL=KeyValue.mjs.map
|
|
53
|
+
//# sourceMappingURL=KeyValue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/KeyValue.tsx"],"names":[],"mappings":";;;AAsBO,SAAS,QAAA,CAAS,EAAE,KAAA,GAAQ,EAAC,EAAG,UAAU,CAAA,EAAG,KAAA,EAAO,GAAG,IAAA,EAAK,EAAkB;AACnF,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAI,GAAG,IAAA,EAAM,KAAA,EAAO;AAAA,IACnB,MAAA,EAAQ,CAAA;AAAA,IAAG,OAAA,EAAS,MAAA;AAAA,IACpB,mBAAA,EAAqB,OAAA,KAAY,CAAA,GAAI,SAAA,GAAY,KAAA;AAAA,IACjD,MAAA,EAAQ,mCAAA;AAAA,IAAqC,YAAA,EAAc,qBAAA;AAAA,IAAuB,QAAA,EAAU,QAAA;AAAA,IAC5F,GAAG;AAAA,GACL,EACG,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAC1B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,OAAO,CAAA;AACtC,IAAA,MAAM,MAAM,KAAA,GAAQ,OAAA;AACpB,IAAA,MAAM,YAAY,GAAA,KAAQ,IAAA,CAAK,OAAO,KAAA,CAAM,MAAA,GAAS,KAAK,OAAO,CAAA;AAEjE,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,MAAA;AAAA,UAAQ,UAAA,EAAY,UAAA;AAAA,UAAY,cAAA,EAAgB,eAAA;AAAA,UAAiB,GAAA,EAAK,EAAA;AAAA,UAC/E,OAAA,EAAS,WAAA;AAAA,UACT,YAAA,EAAc,YAAY,MAAA,GAAS,4BAAA;AAAA,UACnC,WAAA,EAAa,OAAA,KAAY,CAAA,IAAK,GAAA,KAAQ,IAAI,4BAAA,GAA+B;AAAA,SAC3E;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,iBAAA,EAAmB,IAAA,EAAM,UAAA,EAAW,EAAI,QAAA,EAAA,IAAA,CAAK,GAAA,EAAI,CAAA;AAAA,0BACrF,GAAA,CAAC,QAAG,KAAA,EAAO;AAAA,YACT,MAAA,EAAQ,CAAA;AAAA,YAAG,SAAA,EAAW,OAAA;AAAA,YAAS,QAAA,EAAU,CAAA;AAAA,YACzC,UAAA,EAAY,IAAA,CAAK,IAAA,GAAO,qBAAA,GAAwB,SAAA;AAAA,YAChD,QAAA,EAAU,IAAA,CAAK,IAAA,GAAO,IAAA,GAAO,EAAA;AAAA,YAAI,UAAA,EAAY,GAAA;AAAA,YAC7C,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,kBAAA,GAAqB,sBAAA;AAAA,YAC1C,kBAAA,EAAoB,cAAA;AAAA,YACpB,QAAA,EAAU,QAAA;AAAA,YAAU,YAAA,EAAc,UAAA;AAAA,YAAY,UAAA,EAAY;AAAA,WAC5D,EAAI,eAAK,KAAA,EAAM;AAAA;AAAA,OAAA;AAAA,MAhBV;AAAA,KAiBP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ","file":"KeyValue.mjs","sourcesContent":["import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface KeyValueItem {\n key: string;\n value: ReactNode;\n /** Render the value in JetBrains Mono (paths, IDs, methods). */\n mono?: boolean;\n /** Tint the value persimmon (highlighted field). */\n accent?: boolean;\n}\n\nexport interface KeyValueProps extends Omit<HTMLAttributes<HTMLDListElement>, 'children' | 'style'> {\n items?: KeyValueItem[];\n /** 1 = stacked rows, 2 = two-up grid. */\n columns?: 1 | 2;\n style?: CSSProperties;\n}\n\n/**\n * Definition list for spec metadata — hairline rows, muted key, ink value.\n * @startingPoint section=\"Data\" subtitle=\"Spec metadata as a definition list\" viewport=\"460x220\"\n */\nexport function KeyValue({ items = [], columns = 1, style, ...rest }: KeyValueProps) {\n return (\n <dl {...rest} style={{\n margin: 0, display: 'grid',\n gridTemplateColumns: columns === 2 ? '1fr 1fr' : '1fr',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n ...style,\n }}>\n {items.map((item, index) => {\n const row = Math.floor(index / columns);\n const col = index % columns;\n const isLastRow = row === Math.floor((items.length - 1) / columns);\n\n return (\n <div\n key={index}\n style={{\n display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 14,\n padding: '11px 14px',\n borderBottom: isLastRow ? 'none' : '1px solid var(--dt-border)',\n borderRight: columns === 2 && col === 0 ? '1px solid var(--dt-border)' : 'none',\n }}\n >\n <dt style={{ fontSize: 12.5, color: 'var(--dt-muted)', flex: '0 0 auto' }}>{item.key}</dt>\n <dd style={{\n margin: 0, textAlign: 'right', minWidth: 0,\n fontFamily: item.mono ? 'var(--dt-font-mono)' : 'inherit',\n fontSize: item.mono ? 12.5 : 13, fontWeight: 600,\n color: item.accent ? 'var(--dt-accent)' : 'var(--dt-ink-strong)',\n fontVariantNumeric: 'tabular-nums',\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}>{item.value}</dd>\n </div>\n );\n })}\n </dl>\n );\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
// src/components/data/LogRow.tsx
|
|
6
|
+
var LEVEL = {
|
|
7
|
+
ok: { dot: "var(--dt-success)", text: "var(--dt-success)", label: "OK" },
|
|
8
|
+
warn: { dot: "var(--dt-warning)", text: "var(--dt-warning)", label: "WARN" },
|
|
9
|
+
error: { dot: "var(--dt-danger)", text: "var(--dt-danger)", label: "ERR" },
|
|
10
|
+
info: { dot: "var(--dt-muted)", text: "var(--dt-muted-strong)", label: "INFO" }
|
|
11
|
+
};
|
|
12
|
+
function LogRow({ entries = [], style, ...rest }) {
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, style: {
|
|
14
|
+
border: "1px solid var(--dt-border-strong)",
|
|
15
|
+
borderRadius: "var(--dt-radius-lg)",
|
|
16
|
+
overflow: "hidden",
|
|
17
|
+
background: "var(--dt-surface)",
|
|
18
|
+
fontVariantNumeric: "tabular-nums",
|
|
19
|
+
...style
|
|
20
|
+
}, children: entries.map((entry, index) => {
|
|
21
|
+
const level = LEVEL[entry.level] || LEVEL.info;
|
|
22
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
style: {
|
|
26
|
+
display: "grid",
|
|
27
|
+
gridTemplateColumns: "auto 14px 1fr auto",
|
|
28
|
+
alignItems: "center",
|
|
29
|
+
gap: 12,
|
|
30
|
+
padding: "9px 14px",
|
|
31
|
+
borderTop: index === 0 ? "none" : "1px solid var(--dt-border)",
|
|
32
|
+
fontFamily: "var(--dt-font-mono)",
|
|
33
|
+
fontSize: 12
|
|
34
|
+
},
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "var(--dt-muted)" }, children: entry.time }),
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { width: 7, height: 7, borderRadius: 9999, background: level.dot, justifySelf: "center" } }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { style: { minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: [
|
|
39
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "var(--dt-ink-strong)", fontWeight: 600 }, children: entry.tool }),
|
|
40
|
+
entry.message ? /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { color: "var(--dt-muted-strong)" }, children: [
|
|
41
|
+
" ",
|
|
42
|
+
entry.message
|
|
43
|
+
] }) : null
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: entry.latency ? "var(--dt-muted-strong)" : level.text, fontWeight: 600 }, children: entry.latency || level.label })
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
index
|
|
49
|
+
);
|
|
50
|
+
}) });
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
exports.LogRow = LogRow;
|
|
54
|
+
//# sourceMappingURL=LogRow.cjs.map
|
|
55
|
+
//# sourceMappingURL=LogRow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/LogRow.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"LogRow.cjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport type LogLevel = 'ok' | 'warn' | 'error' | 'info';\n\nconst LEVEL: Record<LogLevel, { dot: string; text: string; label: string }> = {\n ok: { dot: 'var(--dt-success)', text: 'var(--dt-success)', label: 'OK' },\n warn: { dot: 'var(--dt-warning)', text: 'var(--dt-warning)', label: 'WARN' },\n error: { dot: 'var(--dt-danger)', text: 'var(--dt-danger)', label: 'ERR' },\n info: { dot: 'var(--dt-muted)', text: 'var(--dt-muted-strong)', label: 'INFO' },\n};\n\nexport interface LogEntry {\n time: string;\n level: LogLevel;\n tool: string;\n message?: string;\n /** Latency string (e.g. \"142ms\"). When absent, the level label shows instead. */\n latency?: string;\n}\n\nexport interface LogRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {\n entries?: LogEntry[];\n style?: CSSProperties;\n}\n\n/**\n * Dense tabular execution-log stream — hairline rows, status dots, mono columns.\n * @startingPoint section=\"Data\" subtitle=\"Execution-log stream\" viewport=\"560x200\"\n */\nexport function LogRow({ entries = [], style, ...rest }: LogRowProps) {\n return (\n <div {...rest} style={{\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n background: 'var(--dt-surface)', fontVariantNumeric: 'tabular-nums', ...style,\n }}>\n {entries.map((entry, index) => {\n const level = LEVEL[entry.level] || LEVEL.info;\n\n return (\n <div\n key={index}\n style={{\n display: 'grid', gridTemplateColumns: 'auto 14px 1fr auto', alignItems: 'center', gap: 12,\n padding: '9px 14px', borderTop: index === 0 ? 'none' : '1px solid var(--dt-border)',\n fontFamily: 'var(--dt-font-mono)', fontSize: 12,\n }}\n >\n <span style={{ color: 'var(--dt-muted)' }}>{entry.time}</span>\n <span style={{ width: 7, height: 7, borderRadius: 9999, background: level.dot, justifySelf: 'center' }} />\n <span style={{ minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n <span style={{ color: 'var(--dt-ink-strong)', fontWeight: 600 }}>{entry.tool}</span>\n {entry.message ? <span style={{ color: 'var(--dt-muted-strong)' }}>{' '}{entry.message}</span> : null}\n </span>\n <span style={{ color: entry.latency ? 'var(--dt-muted-strong)' : level.text, fontWeight: 600 }}>\n {entry.latency || level.label}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
type LogLevel = 'ok' | 'warn' | 'error' | 'info';
|
|
5
|
+
interface LogEntry {
|
|
6
|
+
time: string;
|
|
7
|
+
level: LogLevel;
|
|
8
|
+
tool: string;
|
|
9
|
+
message?: string;
|
|
10
|
+
/** Latency string (e.g. "142ms"). When absent, the level label shows instead. */
|
|
11
|
+
latency?: string;
|
|
12
|
+
}
|
|
13
|
+
interface LogRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
14
|
+
entries?: LogEntry[];
|
|
15
|
+
style?: CSSProperties;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Dense tabular execution-log stream — hairline rows, status dots, mono columns.
|
|
19
|
+
* @startingPoint section="Data" subtitle="Execution-log stream" viewport="560x200"
|
|
20
|
+
*/
|
|
21
|
+
declare function LogRow({ entries, style, ...rest }: LogRowProps): react.JSX.Element;
|
|
22
|
+
|
|
23
|
+
export { type LogEntry, type LogLevel, LogRow, type LogRowProps };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
type LogLevel = 'ok' | 'warn' | 'error' | 'info';
|
|
5
|
+
interface LogEntry {
|
|
6
|
+
time: string;
|
|
7
|
+
level: LogLevel;
|
|
8
|
+
tool: string;
|
|
9
|
+
message?: string;
|
|
10
|
+
/** Latency string (e.g. "142ms"). When absent, the level label shows instead. */
|
|
11
|
+
latency?: string;
|
|
12
|
+
}
|
|
13
|
+
interface LogRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
14
|
+
entries?: LogEntry[];
|
|
15
|
+
style?: CSSProperties;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Dense tabular execution-log stream — hairline rows, status dots, mono columns.
|
|
19
|
+
* @startingPoint section="Data" subtitle="Execution-log stream" viewport="560x200"
|
|
20
|
+
*/
|
|
21
|
+
declare function LogRow({ entries, style, ...rest }: LogRowProps): react.JSX.Element;
|
|
22
|
+
|
|
23
|
+
export { type LogEntry, type LogLevel, LogRow, type LogRowProps };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/components/data/LogRow.tsx
|
|
4
|
+
var LEVEL = {
|
|
5
|
+
ok: { dot: "var(--dt-success)", text: "var(--dt-success)", label: "OK" },
|
|
6
|
+
warn: { dot: "var(--dt-warning)", text: "var(--dt-warning)", label: "WARN" },
|
|
7
|
+
error: { dot: "var(--dt-danger)", text: "var(--dt-danger)", label: "ERR" },
|
|
8
|
+
info: { dot: "var(--dt-muted)", text: "var(--dt-muted-strong)", label: "INFO" }
|
|
9
|
+
};
|
|
10
|
+
function LogRow({ entries = [], style, ...rest }) {
|
|
11
|
+
return /* @__PURE__ */ jsx("div", { ...rest, style: {
|
|
12
|
+
border: "1px solid var(--dt-border-strong)",
|
|
13
|
+
borderRadius: "var(--dt-radius-lg)",
|
|
14
|
+
overflow: "hidden",
|
|
15
|
+
background: "var(--dt-surface)",
|
|
16
|
+
fontVariantNumeric: "tabular-nums",
|
|
17
|
+
...style
|
|
18
|
+
}, children: entries.map((entry, index) => {
|
|
19
|
+
const level = LEVEL[entry.level] || LEVEL.info;
|
|
20
|
+
return /* @__PURE__ */ jsxs(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
style: {
|
|
24
|
+
display: "grid",
|
|
25
|
+
gridTemplateColumns: "auto 14px 1fr auto",
|
|
26
|
+
alignItems: "center",
|
|
27
|
+
gap: 12,
|
|
28
|
+
padding: "9px 14px",
|
|
29
|
+
borderTop: index === 0 ? "none" : "1px solid var(--dt-border)",
|
|
30
|
+
fontFamily: "var(--dt-font-mono)",
|
|
31
|
+
fontSize: 12
|
|
32
|
+
},
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsx("span", { style: { color: "var(--dt-muted)" }, children: entry.time }),
|
|
35
|
+
/* @__PURE__ */ jsx("span", { style: { width: 7, height: 7, borderRadius: 9999, background: level.dot, justifySelf: "center" } }),
|
|
36
|
+
/* @__PURE__ */ jsxs("span", { style: { minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: [
|
|
37
|
+
/* @__PURE__ */ jsx("span", { style: { color: "var(--dt-ink-strong)", fontWeight: 600 }, children: entry.tool }),
|
|
38
|
+
entry.message ? /* @__PURE__ */ jsxs("span", { style: { color: "var(--dt-muted-strong)" }, children: [
|
|
39
|
+
" ",
|
|
40
|
+
entry.message
|
|
41
|
+
] }) : null
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ jsx("span", { style: { color: entry.latency ? "var(--dt-muted-strong)" : level.text, fontWeight: 600 }, children: entry.latency || level.label })
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
index
|
|
47
|
+
);
|
|
48
|
+
}) });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { LogRow };
|
|
52
|
+
//# sourceMappingURL=LogRow.mjs.map
|
|
53
|
+
//# sourceMappingURL=LogRow.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/LogRow.tsx"],"names":[],"mappings":"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","file":"LogRow.mjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport type LogLevel = 'ok' | 'warn' | 'error' | 'info';\n\nconst LEVEL: Record<LogLevel, { dot: string; text: string; label: string }> = {\n ok: { dot: 'var(--dt-success)', text: 'var(--dt-success)', label: 'OK' },\n warn: { dot: 'var(--dt-warning)', text: 'var(--dt-warning)', label: 'WARN' },\n error: { dot: 'var(--dt-danger)', text: 'var(--dt-danger)', label: 'ERR' },\n info: { dot: 'var(--dt-muted)', text: 'var(--dt-muted-strong)', label: 'INFO' },\n};\n\nexport interface LogEntry {\n time: string;\n level: LogLevel;\n tool: string;\n message?: string;\n /** Latency string (e.g. \"142ms\"). When absent, the level label shows instead. */\n latency?: string;\n}\n\nexport interface LogRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {\n entries?: LogEntry[];\n style?: CSSProperties;\n}\n\n/**\n * Dense tabular execution-log stream — hairline rows, status dots, mono columns.\n * @startingPoint section=\"Data\" subtitle=\"Execution-log stream\" viewport=\"560x200\"\n */\nexport function LogRow({ entries = [], style, ...rest }: LogRowProps) {\n return (\n <div {...rest} style={{\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n background: 'var(--dt-surface)', fontVariantNumeric: 'tabular-nums', ...style,\n }}>\n {entries.map((entry, index) => {\n const level = LEVEL[entry.level] || LEVEL.info;\n\n return (\n <div\n key={index}\n style={{\n display: 'grid', gridTemplateColumns: 'auto 14px 1fr auto', alignItems: 'center', gap: 12,\n padding: '9px 14px', borderTop: index === 0 ? 'none' : '1px solid var(--dt-border)',\n fontFamily: 'var(--dt-font-mono)', fontSize: 12,\n }}\n >\n <span style={{ color: 'var(--dt-muted)' }}>{entry.time}</span>\n <span style={{ width: 7, height: 7, borderRadius: 9999, background: level.dot, justifySelf: 'center' }} />\n <span style={{ minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n <span style={{ color: 'var(--dt-ink-strong)', fontWeight: 600 }}>{entry.tool}</span>\n {entry.message ? <span style={{ color: 'var(--dt-muted-strong)' }}>{' '}{entry.message}</span> : null}\n </span>\n <span style={{ color: entry.latency ? 'var(--dt-muted-strong)' : level.text, fontWeight: 600 }}>\n {entry.latency || level.label}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
// src/components/data/Pagination.tsx
|
|
6
|
+
function Pagination({ page = 1, pageCount = 1, onChange, style, ...rest }) {
|
|
7
|
+
const go = (targetPage) => {
|
|
8
|
+
if (targetPage >= 1 && targetPage <= pageCount && targetPage !== page) onChange?.(targetPage);
|
|
9
|
+
};
|
|
10
|
+
const pages = [];
|
|
11
|
+
const add = (targetPage) => pages.push(targetPage);
|
|
12
|
+
if (pageCount <= 7) {
|
|
13
|
+
for (let i = 1; i <= pageCount; i += 1) add(i);
|
|
14
|
+
} else {
|
|
15
|
+
add(1);
|
|
16
|
+
if (page > 3) add("\u2026");
|
|
17
|
+
for (let i = Math.max(2, page - 1); i <= Math.min(pageCount - 1, page + 1); i += 1) add(i);
|
|
18
|
+
if (page < pageCount - 2) add("\u2026");
|
|
19
|
+
add(pageCount);
|
|
20
|
+
}
|
|
21
|
+
const cell = (active) => ({
|
|
22
|
+
minWidth: 32,
|
|
23
|
+
height: 32,
|
|
24
|
+
padding: "0 8px",
|
|
25
|
+
borderRadius: "var(--dt-radius-sm)",
|
|
26
|
+
border: "none",
|
|
27
|
+
cursor: "pointer",
|
|
28
|
+
fontSize: 13,
|
|
29
|
+
fontWeight: 600,
|
|
30
|
+
fontVariantNumeric: "tabular-nums",
|
|
31
|
+
background: active ? "var(--dt-accent)" : "transparent",
|
|
32
|
+
color: active ? "var(--dt-accent-ink)" : "var(--dt-muted-strong)"
|
|
33
|
+
});
|
|
34
|
+
const arrow = (disabled) => ({ ...cell(false), opacity: disabled ? 0.4 : 1, cursor: disabled ? "not-allowed" : "pointer", display: "inline-flex", alignItems: "center", justifyContent: "center" });
|
|
35
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("nav", { ...rest, style: { display: "inline-flex", alignItems: "center", gap: 2, ...style }, "aria-label": "\uD398\uC774\uC9C0", children: [
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { style: arrow(page <= 1), onClick: () => go(page - 1), disabled: page <= 1, "aria-label": "\uC774\uC804", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 6l-6 6 6 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) }),
|
|
37
|
+
pages.map((pageItem, index) => pageItem === "\u2026" ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: { minWidth: 22, textAlign: "center", color: "var(--dt-muted)" }, children: "\u2026" }, `e${index}`) : /* @__PURE__ */ jsxRuntime.jsx("button", { style: cell(pageItem === page), onClick: () => go(pageItem), "aria-current": pageItem === page ? "page" : void 0, children: pageItem }, pageItem)),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { style: arrow(page >= pageCount), onClick: () => go(page + 1), disabled: page >= pageCount, "aria-label": "\uB2E4\uC74C", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 6l6 6-6 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
exports.Pagination = Pagination;
|
|
43
|
+
//# sourceMappingURL=Pagination.cjs.map
|
|
44
|
+
//# sourceMappingURL=Pagination.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/Pagination.tsx"],"names":["jsx"],"mappings":"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","file":"Pagination.cjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\n\ntype PageItem = number | '…';\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange' | 'style'> {\n page?: number;\n pageCount?: number;\n onChange?: (page: number) => void;\n style?: CSSProperties;\n}\n\n/** Pagination — prev/next plus compact page numbers with an ellipsis. */\nexport function Pagination({ page = 1, pageCount = 1, onChange, style, ...rest }: PaginationProps) {\n const go = (targetPage: number) => { if (targetPage >= 1 && targetPage <= pageCount && targetPage !== page) onChange?.(targetPage); };\n const pages: PageItem[] = [];\n const add = (targetPage: PageItem) => pages.push(targetPage);\n\n if (pageCount <= 7) { for (let i = 1; i <= pageCount; i += 1) add(i); }\n else {\n add(1);\n if (page > 3) add('…');\n for (let i = Math.max(2, page - 1); i <= Math.min(pageCount - 1, page + 1); i += 1) add(i);\n if (page < pageCount - 2) add('…');\n add(pageCount);\n }\n\n const cell = (active: boolean): CSSProperties => ({\n minWidth: 32, height: 32, padding: '0 8px', borderRadius: 'var(--dt-radius-sm)', border: 'none', cursor: 'pointer',\n fontSize: 13, fontWeight: 600, fontVariantNumeric: 'tabular-nums',\n background: active ? 'var(--dt-accent)' : 'transparent',\n color: active ? 'var(--dt-accent-ink)' : 'var(--dt-muted-strong)',\n });\n const arrow = (disabled: boolean): CSSProperties => ({ ...cell(false), opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex', alignItems: 'center', justifyContent: 'center' });\n\n return (\n <nav {...rest} style={{ display: 'inline-flex', alignItems: 'center', gap: 2, ...style }} aria-label=\"페이지\">\n <button style={arrow(page <= 1)} onClick={() => go(page - 1)} disabled={page <= 1} aria-label=\"이전\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n {pages.map((pageItem, index) => pageItem === '…'\n ? <span key={`e${index}`} style={{ minWidth: 22, textAlign: 'center', color: 'var(--dt-muted)' }}>…</span>\n : <button key={pageItem} style={cell(pageItem === page)} onClick={() => go(pageItem)} aria-current={pageItem === page ? 'page' : undefined}>{pageItem}</button>)}\n <button style={arrow(page >= pageCount)} onClick={() => go(page + 1)} disabled={page >= pageCount} aria-label=\"다음\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n </nav>\n );\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange' | 'style'> {
|
|
5
|
+
page?: number;
|
|
6
|
+
pageCount?: number;
|
|
7
|
+
onChange?: (page: number) => void;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
}
|
|
10
|
+
/** Pagination — prev/next plus compact page numbers with an ellipsis. */
|
|
11
|
+
declare function Pagination({ page, pageCount, onChange, style, ...rest }: PaginationProps): react.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { Pagination, type PaginationProps };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange' | 'style'> {
|
|
5
|
+
page?: number;
|
|
6
|
+
pageCount?: number;
|
|
7
|
+
onChange?: (page: number) => void;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
}
|
|
10
|
+
/** Pagination — prev/next plus compact page numbers with an ellipsis. */
|
|
11
|
+
declare function Pagination({ page, pageCount, onChange, style, ...rest }: PaginationProps): react.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { Pagination, type PaginationProps };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/components/data/Pagination.tsx
|
|
4
|
+
function Pagination({ page = 1, pageCount = 1, onChange, style, ...rest }) {
|
|
5
|
+
const go = (targetPage) => {
|
|
6
|
+
if (targetPage >= 1 && targetPage <= pageCount && targetPage !== page) onChange?.(targetPage);
|
|
7
|
+
};
|
|
8
|
+
const pages = [];
|
|
9
|
+
const add = (targetPage) => pages.push(targetPage);
|
|
10
|
+
if (pageCount <= 7) {
|
|
11
|
+
for (let i = 1; i <= pageCount; i += 1) add(i);
|
|
12
|
+
} else {
|
|
13
|
+
add(1);
|
|
14
|
+
if (page > 3) add("\u2026");
|
|
15
|
+
for (let i = Math.max(2, page - 1); i <= Math.min(pageCount - 1, page + 1); i += 1) add(i);
|
|
16
|
+
if (page < pageCount - 2) add("\u2026");
|
|
17
|
+
add(pageCount);
|
|
18
|
+
}
|
|
19
|
+
const cell = (active) => ({
|
|
20
|
+
minWidth: 32,
|
|
21
|
+
height: 32,
|
|
22
|
+
padding: "0 8px",
|
|
23
|
+
borderRadius: "var(--dt-radius-sm)",
|
|
24
|
+
border: "none",
|
|
25
|
+
cursor: "pointer",
|
|
26
|
+
fontSize: 13,
|
|
27
|
+
fontWeight: 600,
|
|
28
|
+
fontVariantNumeric: "tabular-nums",
|
|
29
|
+
background: active ? "var(--dt-accent)" : "transparent",
|
|
30
|
+
color: active ? "var(--dt-accent-ink)" : "var(--dt-muted-strong)"
|
|
31
|
+
});
|
|
32
|
+
const arrow = (disabled) => ({ ...cell(false), opacity: disabled ? 0.4 : 1, cursor: disabled ? "not-allowed" : "pointer", display: "inline-flex", alignItems: "center", justifyContent: "center" });
|
|
33
|
+
return /* @__PURE__ */ jsxs("nav", { ...rest, style: { display: "inline-flex", alignItems: "center", gap: 2, ...style }, "aria-label": "\uD398\uC774\uC9C0", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("button", { style: arrow(page <= 1), onClick: () => go(page - 1), disabled: page <= 1, "aria-label": "\uC774\uC804", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx("path", { d: "M15 6l-6 6 6 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) }),
|
|
35
|
+
pages.map((pageItem, index) => pageItem === "\u2026" ? /* @__PURE__ */ jsx("span", { style: { minWidth: 22, textAlign: "center", color: "var(--dt-muted)" }, children: "\u2026" }, `e${index}`) : /* @__PURE__ */ jsx("button", { style: cell(pageItem === page), onClick: () => go(pageItem), "aria-current": pageItem === page ? "page" : void 0, children: pageItem }, pageItem)),
|
|
36
|
+
/* @__PURE__ */ jsx("button", { style: arrow(page >= pageCount), onClick: () => go(page + 1), disabled: page >= pageCount, "aria-label": "\uB2E4\uC74C", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx("path", { d: "M9 6l6 6-6 6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
|
|
37
|
+
] });
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { Pagination };
|
|
41
|
+
//# sourceMappingURL=Pagination.mjs.map
|
|
42
|
+
//# sourceMappingURL=Pagination.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/Pagination.tsx"],"names":[],"mappings":"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","file":"Pagination.mjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\n\ntype PageItem = number | '…';\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange' | 'style'> {\n page?: number;\n pageCount?: number;\n onChange?: (page: number) => void;\n style?: CSSProperties;\n}\n\n/** Pagination — prev/next plus compact page numbers with an ellipsis. */\nexport function Pagination({ page = 1, pageCount = 1, onChange, style, ...rest }: PaginationProps) {\n const go = (targetPage: number) => { if (targetPage >= 1 && targetPage <= pageCount && targetPage !== page) onChange?.(targetPage); };\n const pages: PageItem[] = [];\n const add = (targetPage: PageItem) => pages.push(targetPage);\n\n if (pageCount <= 7) { for (let i = 1; i <= pageCount; i += 1) add(i); }\n else {\n add(1);\n if (page > 3) add('…');\n for (let i = Math.max(2, page - 1); i <= Math.min(pageCount - 1, page + 1); i += 1) add(i);\n if (page < pageCount - 2) add('…');\n add(pageCount);\n }\n\n const cell = (active: boolean): CSSProperties => ({\n minWidth: 32, height: 32, padding: '0 8px', borderRadius: 'var(--dt-radius-sm)', border: 'none', cursor: 'pointer',\n fontSize: 13, fontWeight: 600, fontVariantNumeric: 'tabular-nums',\n background: active ? 'var(--dt-accent)' : 'transparent',\n color: active ? 'var(--dt-accent-ink)' : 'var(--dt-muted-strong)',\n });\n const arrow = (disabled: boolean): CSSProperties => ({ ...cell(false), opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex', alignItems: 'center', justifyContent: 'center' });\n\n return (\n <nav {...rest} style={{ display: 'inline-flex', alignItems: 'center', gap: 2, ...style }} aria-label=\"페이지\">\n <button style={arrow(page <= 1)} onClick={() => go(page - 1)} disabled={page <= 1} aria-label=\"이전\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n {pages.map((pageItem, index) => pageItem === '…'\n ? <span key={`e${index}`} style={{ minWidth: 22, textAlign: 'center', color: 'var(--dt-muted)' }}>…</span>\n : <button key={pageItem} style={cell(pageItem === page)} onClick={() => go(pageItem)} aria-current={pageItem === page ? 'page' : undefined}>{pageItem}</button>)}\n <button style={arrow(page >= pageCount)} onClick={() => go(page + 1)} disabled={page >= pageCount} aria-label=\"다음\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n </nav>\n );\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
// src/components/data/StatTile.tsx
|
|
6
|
+
function StatTile({ label, value, delta, deltaTone = "neutral", hint, style, ...rest }) {
|
|
7
|
+
const tone = { up: "var(--dt-success)", down: "var(--dt-danger)", neutral: "var(--dt-muted)" }[deltaTone];
|
|
8
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...rest, style: { padding: 18, minWidth: 0, ...style }, children: [
|
|
9
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: 11, fontWeight: 650, letterSpacing: "0.04em", textTransform: "uppercase", color: "var(--dt-muted)" }, children: label }),
|
|
10
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginTop: 8, fontSize: 25, fontWeight: 700, lineHeight: 1.1, letterSpacing: "-0.02em", color: "var(--dt-ink-strong)", fontVariantNumeric: "tabular-nums" }, children: value }),
|
|
11
|
+
delta || hint ? /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: 6, display: "flex", alignItems: "center", gap: 6, fontSize: 12, color: "var(--dt-muted)" }, children: [
|
|
12
|
+
delta ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: tone, fontWeight: 600, fontVariantNumeric: "tabular-nums" }, children: delta }) : null,
|
|
13
|
+
hint ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: hint }) : null
|
|
14
|
+
] }) : null
|
|
15
|
+
] });
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.StatTile = StatTile;
|
|
19
|
+
//# sourceMappingURL=StatTile.cjs.map
|
|
20
|
+
//# sourceMappingURL=StatTile.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/data/StatTile.tsx"],"names":["jsxs","jsx"],"mappings":";;;;;AAgBO,SAAS,QAAA,CAAS,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,SAAA,GAAY,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,GAAG,IAAA,EAAK,EAAkB;AAC5G,EAAA,MAAM,IAAA,GAAO,EAAE,EAAA,EAAI,mBAAA,EAAqB,MAAM,kBAAA,EAAoB,OAAA,EAAS,iBAAA,EAAkB,CAAE,SAAS,CAAA;AAExG,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,EAAM,KAAA,EAAO,EAAE,OAAA,EAAS,EAAA,EAAI,QAAA,EAAU,CAAA,EAAG,GAAG,KAAA,EAAM,EACzD,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,GAAA,EAAK,aAAA,EAAe,QAAA,EAAU,aAAA,EAAe,WAAA,EAAa,KAAA,EAAO,iBAAA,IAAsB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,mCACpI,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAG,UAAU,EAAA,EAAI,UAAA,EAAY,KAAK,UAAA,EAAY,GAAA,EAAK,eAAe,SAAA,EAAW,KAAA,EAAO,wBAAwB,kBAAA,EAAoB,cAAA,IAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAChL,SAAS,IAAA,mBACTD,eAAA,CAAC,SAAI,KAAA,EAAO,EAAE,WAAW,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,UAAU,GAAA,EAAK,CAAA,EAAG,UAAU,EAAA,EAAI,KAAA,EAAO,mBAAkB,EAC/G,QAAA,EAAA;AAAA,MAAA,KAAA,mBAAQC,cAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,UAAA,EAAY,GAAA,EAAK,kBAAA,EAAoB,cAAA,EAAe,EAAI,QAAA,EAAA,KAAA,EAAM,CAAA,GAAU,IAAA;AAAA,MAC5G,IAAA,mBAAOA,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,EAAK,CAAA,GAAU;AAAA,KAAA,EAChC,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ","file":"StatTile.cjs","sourcesContent":["import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface StatTileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n label: ReactNode;\n value: ReactNode;\n /** e.g. \"+8.4%\". */\n delta?: ReactNode;\n deltaTone?: 'up' | 'down' | 'neutral';\n hint?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Metric tile — uppercase label, large tabular value, optional delta.\n * The console's KPI unit. Compose several inside a bordered stat row.\n */\nexport function StatTile({ label, value, delta, deltaTone = 'neutral', hint, style, ...rest }: StatTileProps) {\n const tone = { up: 'var(--dt-success)', down: 'var(--dt-danger)', neutral: 'var(--dt-muted)' }[deltaTone];\n\n return (\n <div {...rest} style={{ padding: 18, minWidth: 0, ...style }}>\n <div style={{ fontSize: 11, fontWeight: 650, letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--dt-muted)' }}>{label}</div>\n <div style={{ marginTop: 8, fontSize: 25, fontWeight: 700, lineHeight: 1.1, letterSpacing: '-0.02em', color: 'var(--dt-ink-strong)', fontVariantNumeric: 'tabular-nums' }}>{value}</div>\n {(delta || hint) ? (\n <div style={{ marginTop: 6, display: 'flex', alignItems: 'center', gap: 6, fontSize: 12, color: 'var(--dt-muted)' }}>\n {delta ? <span style={{ color: tone, fontWeight: 600, fontVariantNumeric: 'tabular-nums' }}>{delta}</span> : null}\n {hint ? <span>{hint}</span> : null}\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
interface StatTileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
value: ReactNode;
|
|
7
|
+
/** e.g. "+8.4%". */
|
|
8
|
+
delta?: ReactNode;
|
|
9
|
+
deltaTone?: 'up' | 'down' | 'neutral';
|
|
10
|
+
hint?: ReactNode;
|
|
11
|
+
style?: CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Metric tile — uppercase label, large tabular value, optional delta.
|
|
15
|
+
* The console's KPI unit. Compose several inside a bordered stat row.
|
|
16
|
+
*/
|
|
17
|
+
declare function StatTile({ label, value, delta, deltaTone, hint, style, ...rest }: StatTileProps): react.JSX.Element;
|
|
18
|
+
|
|
19
|
+
export { StatTile, type StatTileProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
interface StatTileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
value: ReactNode;
|
|
7
|
+
/** e.g. "+8.4%". */
|
|
8
|
+
delta?: ReactNode;
|
|
9
|
+
deltaTone?: 'up' | 'down' | 'neutral';
|
|
10
|
+
hint?: ReactNode;
|
|
11
|
+
style?: CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Metric tile — uppercase label, large tabular value, optional delta.
|
|
15
|
+
* The console's KPI unit. Compose several inside a bordered stat row.
|
|
16
|
+
*/
|
|
17
|
+
declare function StatTile({ label, value, delta, deltaTone, hint, style, ...rest }: StatTileProps): react.JSX.Element;
|
|
18
|
+
|
|
19
|
+
export { StatTile, type StatTileProps };
|