@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.
Files changed (273) hide show
  1. package/README.md +62 -0
  2. package/dist/components/core/Badge.cjs +36 -0
  3. package/dist/components/core/Badge.cjs.map +1 -0
  4. package/dist/components/core/Badge.d.cts +18 -0
  5. package/dist/components/core/Badge.d.ts +18 -0
  6. package/dist/components/core/Badge.mjs +34 -0
  7. package/dist/components/core/Badge.mjs.map +1 -0
  8. package/dist/components/core/Button.cjs +57 -0
  9. package/dist/components/core/Button.cjs.map +1 -0
  10. package/dist/components/core/Button.d.cts +26 -0
  11. package/dist/components/core/Button.d.ts +26 -0
  12. package/dist/components/core/Button.mjs +55 -0
  13. package/dist/components/core/Button.mjs.map +1 -0
  14. package/dist/components/core/Card.cjs +57 -0
  15. package/dist/components/core/Card.cjs.map +1 -0
  16. package/dist/components/core/Card.d.cts +27 -0
  17. package/dist/components/core/Card.d.ts +27 -0
  18. package/dist/components/core/Card.mjs +54 -0
  19. package/dist/components/core/Card.mjs.map +1 -0
  20. package/dist/components/core/FilterChip.cjs +54 -0
  21. package/dist/components/core/FilterChip.cjs.map +1 -0
  22. package/dist/components/core/FilterChip.d.cts +23 -0
  23. package/dist/components/core/FilterChip.d.ts +23 -0
  24. package/dist/components/core/FilterChip.mjs +52 -0
  25. package/dist/components/core/FilterChip.mjs.map +1 -0
  26. package/dist/components/core/Input.cjs +67 -0
  27. package/dist/components/core/Input.cjs.map +1 -0
  28. package/dist/components/core/Input.d.cts +20 -0
  29. package/dist/components/core/Input.d.ts +20 -0
  30. package/dist/components/core/Input.mjs +65 -0
  31. package/dist/components/core/Input.mjs.map +1 -0
  32. package/dist/components/core/StatusPill.cjs +57 -0
  33. package/dist/components/core/StatusPill.cjs.map +1 -0
  34. package/dist/components/core/StatusPill.d.cts +19 -0
  35. package/dist/components/core/StatusPill.d.ts +19 -0
  36. package/dist/components/core/StatusPill.mjs +55 -0
  37. package/dist/components/core/StatusPill.mjs.map +1 -0
  38. package/dist/components/core/Surface.cjs +52 -0
  39. package/dist/components/core/Surface.cjs.map +1 -0
  40. package/dist/components/core/Surface.d.cts +24 -0
  41. package/dist/components/core/Surface.d.ts +24 -0
  42. package/dist/components/core/Surface.mjs +47 -0
  43. package/dist/components/core/Surface.mjs.map +1 -0
  44. package/dist/components/core/Tabs.cjs +64 -0
  45. package/dist/components/core/Tabs.cjs.map +1 -0
  46. package/dist/components/core/Tabs.d.cts +24 -0
  47. package/dist/components/core/Tabs.d.ts +24 -0
  48. package/dist/components/core/Tabs.mjs +62 -0
  49. package/dist/components/core/Tabs.mjs.map +1 -0
  50. package/dist/components/data/Avatar.cjs +40 -0
  51. package/dist/components/data/Avatar.cjs.map +1 -0
  52. package/dist/components/data/Avatar.d.cts +24 -0
  53. package/dist/components/data/Avatar.d.ts +24 -0
  54. package/dist/components/data/Avatar.mjs +38 -0
  55. package/dist/components/data/Avatar.mjs.map +1 -0
  56. package/dist/components/data/CodeBlock.cjs +92 -0
  57. package/dist/components/data/CodeBlock.cjs.map +1 -0
  58. package/dist/components/data/CodeBlock.d.cts +20 -0
  59. package/dist/components/data/CodeBlock.d.ts +20 -0
  60. package/dist/components/data/CodeBlock.mjs +90 -0
  61. package/dist/components/data/CodeBlock.mjs.map +1 -0
  62. package/dist/components/data/KeyValue.cjs +55 -0
  63. package/dist/components/data/KeyValue.cjs.map +1 -0
  64. package/dist/components/data/KeyValue.d.cts +24 -0
  65. package/dist/components/data/KeyValue.d.ts +24 -0
  66. package/dist/components/data/KeyValue.mjs +53 -0
  67. package/dist/components/data/KeyValue.mjs.map +1 -0
  68. package/dist/components/data/LogRow.cjs +55 -0
  69. package/dist/components/data/LogRow.cjs.map +1 -0
  70. package/dist/components/data/LogRow.d.cts +23 -0
  71. package/dist/components/data/LogRow.d.ts +23 -0
  72. package/dist/components/data/LogRow.mjs +53 -0
  73. package/dist/components/data/LogRow.mjs.map +1 -0
  74. package/dist/components/data/Pagination.cjs +44 -0
  75. package/dist/components/data/Pagination.cjs.map +1 -0
  76. package/dist/components/data/Pagination.d.cts +13 -0
  77. package/dist/components/data/Pagination.d.ts +13 -0
  78. package/dist/components/data/Pagination.mjs +42 -0
  79. package/dist/components/data/Pagination.mjs.map +1 -0
  80. package/dist/components/data/StatTile.cjs +20 -0
  81. package/dist/components/data/StatTile.cjs.map +1 -0
  82. package/dist/components/data/StatTile.d.cts +19 -0
  83. package/dist/components/data/StatTile.d.ts +19 -0
  84. package/dist/components/data/StatTile.mjs +18 -0
  85. package/dist/components/data/StatTile.mjs.map +1 -0
  86. package/dist/components/data/Table.cjs +45 -0
  87. package/dist/components/data/Table.cjs.map +1 -0
  88. package/dist/components/data/Table.d.cts +27 -0
  89. package/dist/components/data/Table.d.ts +27 -0
  90. package/dist/components/data/Table.mjs +43 -0
  91. package/dist/components/data/Table.mjs.map +1 -0
  92. package/dist/components/data/UsageMeter.cjs +28 -0
  93. package/dist/components/data/UsageMeter.cjs.map +1 -0
  94. package/dist/components/data/UsageMeter.d.cts +19 -0
  95. package/dist/components/data/UsageMeter.d.ts +19 -0
  96. package/dist/components/data/UsageMeter.mjs +26 -0
  97. package/dist/components/data/UsageMeter.mjs.map +1 -0
  98. package/dist/components/feedback/Alert.cjs +78 -0
  99. package/dist/components/feedback/Alert.cjs.map +1 -0
  100. package/dist/components/feedback/Alert.d.cts +29 -0
  101. package/dist/components/feedback/Alert.d.ts +29 -0
  102. package/dist/components/feedback/Alert.mjs +74 -0
  103. package/dist/components/feedback/Alert.mjs.map +1 -0
  104. package/dist/components/feedback/Dialog.cjs +62 -0
  105. package/dist/components/feedback/Dialog.cjs.map +1 -0
  106. package/dist/components/feedback/Dialog.d.cts +17 -0
  107. package/dist/components/feedback/Dialog.d.ts +17 -0
  108. package/dist/components/feedback/Dialog.mjs +60 -0
  109. package/dist/components/feedback/Dialog.mjs.map +1 -0
  110. package/dist/components/feedback/Drawer.cjs +58 -0
  111. package/dist/components/feedback/Drawer.cjs.map +1 -0
  112. package/dist/components/feedback/Drawer.d.cts +22 -0
  113. package/dist/components/feedback/Drawer.d.ts +22 -0
  114. package/dist/components/feedback/Drawer.mjs +56 -0
  115. package/dist/components/feedback/Drawer.mjs.map +1 -0
  116. package/dist/components/feedback/EmptyState.cjs +36 -0
  117. package/dist/components/feedback/EmptyState.cjs.map +1 -0
  118. package/dist/components/feedback/EmptyState.d.cts +14 -0
  119. package/dist/components/feedback/EmptyState.d.ts +14 -0
  120. package/dist/components/feedback/EmptyState.mjs +34 -0
  121. package/dist/components/feedback/EmptyState.mjs.map +1 -0
  122. package/dist/components/feedback/Skeleton.cjs +19 -0
  123. package/dist/components/feedback/Skeleton.cjs.map +1 -0
  124. package/dist/components/feedback/Skeleton.d.cts +12 -0
  125. package/dist/components/feedback/Skeleton.d.ts +12 -0
  126. package/dist/components/feedback/Skeleton.mjs +17 -0
  127. package/dist/components/feedback/Skeleton.mjs.map +1 -0
  128. package/dist/components/feedback/Spinner.cjs +17 -0
  129. package/dist/components/feedback/Spinner.cjs.map +1 -0
  130. package/dist/components/feedback/Spinner.d.cts +12 -0
  131. package/dist/components/feedback/Spinner.d.ts +12 -0
  132. package/dist/components/feedback/Spinner.mjs +15 -0
  133. package/dist/components/feedback/Spinner.mjs.map +1 -0
  134. package/dist/components/feedback/Toast.cjs +32 -0
  135. package/dist/components/feedback/Toast.cjs.map +1 -0
  136. package/dist/components/feedback/Toast.d.cts +20 -0
  137. package/dist/components/feedback/Toast.d.ts +20 -0
  138. package/dist/components/feedback/Toast.mjs +30 -0
  139. package/dist/components/feedback/Toast.mjs.map +1 -0
  140. package/dist/components/feedback/Tooltip.cjs +51 -0
  141. package/dist/components/feedback/Tooltip.cjs.map +1 -0
  142. package/dist/components/feedback/Tooltip.d.cts +11 -0
  143. package/dist/components/feedback/Tooltip.d.ts +11 -0
  144. package/dist/components/feedback/Tooltip.mjs +49 -0
  145. package/dist/components/feedback/Tooltip.mjs.map +1 -0
  146. package/dist/components/forms/Checkbox.cjs +74 -0
  147. package/dist/components/forms/Checkbox.cjs.map +1 -0
  148. package/dist/components/forms/Checkbox.d.cts +16 -0
  149. package/dist/components/forms/Checkbox.d.ts +16 -0
  150. package/dist/components/forms/Checkbox.mjs +72 -0
  151. package/dist/components/forms/Checkbox.mjs.map +1 -0
  152. package/dist/components/forms/Combobox.cjs +217 -0
  153. package/dist/components/forms/Combobox.cjs.map +1 -0
  154. package/dist/components/forms/Combobox.d.cts +27 -0
  155. package/dist/components/forms/Combobox.d.ts +27 -0
  156. package/dist/components/forms/Combobox.mjs +215 -0
  157. package/dist/components/forms/Combobox.mjs.map +1 -0
  158. package/dist/components/forms/FileUpload.cjs +187 -0
  159. package/dist/components/forms/FileUpload.cjs.map +1 -0
  160. package/dist/components/forms/FileUpload.d.cts +26 -0
  161. package/dist/components/forms/FileUpload.d.ts +26 -0
  162. package/dist/components/forms/FileUpload.mjs +185 -0
  163. package/dist/components/forms/FileUpload.mjs.map +1 -0
  164. package/dist/components/forms/RadioGroup.cjs +73 -0
  165. package/dist/components/forms/RadioGroup.cjs.map +1 -0
  166. package/dist/components/forms/RadioGroup.d.cts +21 -0
  167. package/dist/components/forms/RadioGroup.d.ts +21 -0
  168. package/dist/components/forms/RadioGroup.mjs +71 -0
  169. package/dist/components/forms/RadioGroup.mjs.map +1 -0
  170. package/dist/components/forms/SegmentedControl.cjs +67 -0
  171. package/dist/components/forms/SegmentedControl.cjs.map +1 -0
  172. package/dist/components/forms/SegmentedControl.d.cts +19 -0
  173. package/dist/components/forms/SegmentedControl.d.ts +19 -0
  174. package/dist/components/forms/SegmentedControl.mjs +65 -0
  175. package/dist/components/forms/SegmentedControl.mjs.map +1 -0
  176. package/dist/components/forms/Select.cjs +67 -0
  177. package/dist/components/forms/Select.cjs.map +1 -0
  178. package/dist/components/forms/Select.d.cts +23 -0
  179. package/dist/components/forms/Select.d.ts +23 -0
  180. package/dist/components/forms/Select.mjs +65 -0
  181. package/dist/components/forms/Select.mjs.map +1 -0
  182. package/dist/components/forms/Slider.cjs +129 -0
  183. package/dist/components/forms/Slider.cjs.map +1 -0
  184. package/dist/components/forms/Slider.d.cts +24 -0
  185. package/dist/components/forms/Slider.d.ts +24 -0
  186. package/dist/components/forms/Slider.mjs +127 -0
  187. package/dist/components/forms/Slider.mjs.map +1 -0
  188. package/dist/components/forms/Switch.cjs +101 -0
  189. package/dist/components/forms/Switch.cjs.map +1 -0
  190. package/dist/components/forms/Switch.d.cts +24 -0
  191. package/dist/components/forms/Switch.d.ts +24 -0
  192. package/dist/components/forms/Switch.mjs +98 -0
  193. package/dist/components/forms/Switch.mjs.map +1 -0
  194. package/dist/components/forms/Textarea.cjs +35 -0
  195. package/dist/components/forms/Textarea.cjs.map +1 -0
  196. package/dist/components/forms/Textarea.d.cts +15 -0
  197. package/dist/components/forms/Textarea.d.ts +15 -0
  198. package/dist/components/forms/Textarea.mjs +33 -0
  199. package/dist/components/forms/Textarea.mjs.map +1 -0
  200. package/dist/components/navigation/Breadcrumb.cjs +27 -0
  201. package/dist/components/navigation/Breadcrumb.cjs.map +1 -0
  202. package/dist/components/navigation/Breadcrumb.d.cts +15 -0
  203. package/dist/components/navigation/Breadcrumb.d.ts +15 -0
  204. package/dist/components/navigation/Breadcrumb.mjs +25 -0
  205. package/dist/components/navigation/Breadcrumb.mjs.map +1 -0
  206. package/dist/components/navigation/CommandPalette.cjs +136 -0
  207. package/dist/components/navigation/CommandPalette.cjs.map +1 -0
  208. package/dist/components/navigation/CommandPalette.d.cts +26 -0
  209. package/dist/components/navigation/CommandPalette.d.ts +26 -0
  210. package/dist/components/navigation/CommandPalette.mjs +134 -0
  211. package/dist/components/navigation/CommandPalette.mjs.map +1 -0
  212. package/dist/components/navigation/Menu.cjs +104 -0
  213. package/dist/components/navigation/Menu.cjs.map +1 -0
  214. package/dist/components/navigation/Menu.d.cts +20 -0
  215. package/dist/components/navigation/Menu.d.ts +20 -0
  216. package/dist/components/navigation/Menu.mjs +102 -0
  217. package/dist/components/navigation/Menu.mjs.map +1 -0
  218. package/dist/components/navigation/Sidebar.cjs +60 -0
  219. package/dist/components/navigation/Sidebar.cjs.map +1 -0
  220. package/dist/components/navigation/Sidebar.d.cts +30 -0
  221. package/dist/components/navigation/Sidebar.d.ts +30 -0
  222. package/dist/components/navigation/Sidebar.mjs +58 -0
  223. package/dist/components/navigation/Sidebar.mjs.map +1 -0
  224. package/dist/components/navigation/Stepper.cjs +55 -0
  225. package/dist/components/navigation/Stepper.cjs.map +1 -0
  226. package/dist/components/navigation/Stepper.d.cts +21 -0
  227. package/dist/components/navigation/Stepper.d.ts +21 -0
  228. package/dist/components/navigation/Stepper.mjs +53 -0
  229. package/dist/components/navigation/Stepper.mjs.map +1 -0
  230. package/dist/components/product/BrandLogo.cjs +159 -0
  231. package/dist/components/product/BrandLogo.cjs.map +1 -0
  232. package/dist/components/product/BrandLogo.d.cts +28 -0
  233. package/dist/components/product/BrandLogo.d.ts +28 -0
  234. package/dist/components/product/BrandLogo.mjs +156 -0
  235. package/dist/components/product/BrandLogo.mjs.map +1 -0
  236. package/dist/components/product/ProductActionPill.cjs +57 -0
  237. package/dist/components/product/ProductActionPill.cjs.map +1 -0
  238. package/dist/components/product/ProductActionPill.d.cts +31 -0
  239. package/dist/components/product/ProductActionPill.d.ts +31 -0
  240. package/dist/components/product/ProductActionPill.mjs +52 -0
  241. package/dist/components/product/ProductActionPill.mjs.map +1 -0
  242. package/dist/components/product/ProductCinematic.cjs +69 -0
  243. package/dist/components/product/ProductCinematic.cjs.map +1 -0
  244. package/dist/components/product/ProductCinematic.d.cts +33 -0
  245. package/dist/components/product/ProductCinematic.d.ts +33 -0
  246. package/dist/components/product/ProductCinematic.mjs +63 -0
  247. package/dist/components/product/ProductCinematic.mjs.map +1 -0
  248. package/dist/components/product/ProductPageHeader.cjs +35 -0
  249. package/dist/components/product/ProductPageHeader.cjs.map +1 -0
  250. package/dist/components/product/ProductPageHeader.d.cts +13 -0
  251. package/dist/components/product/ProductPageHeader.d.ts +13 -0
  252. package/dist/components/product/ProductPageHeader.mjs +33 -0
  253. package/dist/components/product/ProductPageHeader.mjs.map +1 -0
  254. package/dist/components/product/SectionCard.cjs +72 -0
  255. package/dist/components/product/SectionCard.cjs.map +1 -0
  256. package/dist/components/product/SectionCard.d.cts +20 -0
  257. package/dist/components/product/SectionCard.d.ts +20 -0
  258. package/dist/components/product/SectionCard.mjs +70 -0
  259. package/dist/components/product/SectionCard.mjs.map +1 -0
  260. package/dist/components/product/ToolCard.cjs +70 -0
  261. package/dist/components/product/ToolCard.cjs.map +1 -0
  262. package/dist/components/product/ToolCard.d.cts +22 -0
  263. package/dist/components/product/ToolCard.d.ts +22 -0
  264. package/dist/components/product/ToolCard.mjs +68 -0
  265. package/dist/components/product/ToolCard.mjs.map +1 -0
  266. package/dist/index.cjs +2593 -0
  267. package/dist/index.cjs.map +1 -0
  268. package/dist/index.d.cts +49 -0
  269. package/dist/index.d.ts +49 -0
  270. package/dist/index.mjs +2532 -0
  271. package/dist/index.mjs.map +1 -0
  272. package/dist/styles.css +463 -0
  273. 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 };