@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,70 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/components/product/ToolCard.tsx
6
+ var STATE_COLOR = {
7
+ available: "var(--dt-success)",
8
+ managed: "var(--dt-success)",
9
+ locked: "var(--dt-warning)"
10
+ };
11
+ function ToolCard({
12
+ name,
13
+ method = "GET",
14
+ category,
15
+ description = "\uC124\uBA85 \uC5C6\uC74C",
16
+ path = "/",
17
+ state = "available",
18
+ stateLabel,
19
+ style,
20
+ ...rest
21
+ }) {
22
+ const cat = category ?? (name ? name.split("_")[0] : "etc");
23
+ const labels = { available: "\uC0AC\uC6A9 \uAC00\uB2A5", managed: "\uAD00\uB9AC\uD615 \uD0A4", locked: "\uD0A4 \uB4F1\uB85D" };
24
+ return /* @__PURE__ */ jsxRuntime.jsxs(
25
+ "article",
26
+ {
27
+ className: "dt-tool-card",
28
+ ...rest,
29
+ style: {
30
+ borderRadius: "var(--dt-radius-md)",
31
+ background: "var(--dt-surface)",
32
+ boxShadow: "var(--dt-ring), var(--dt-shadow-xs)",
33
+ padding: "16px 18px",
34
+ transition: "box-shadow var(--dt-motion), background-color var(--dt-motion)",
35
+ ...style
36
+ },
37
+ children: [
38
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between", gap: 12 }, children: [
39
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { minWidth: 0 }, children: [
40
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: [
41
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-chip dt-chip-muted", children: cat }),
42
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-chip dt-chip-accent", children: method })
43
+ ] }),
44
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { style: { marginTop: 11, fontSize: 15, fontWeight: 650, letterSpacing: "-0.01em", color: "var(--dt-ink-strong)", wordBreak: "break-all" }, children: name })
45
+ ] }),
46
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "inline-flex", alignItems: "center", gap: 6, flex: "0 0 auto", fontSize: 12, fontWeight: 600, color: STATE_COLOR[state] }, children: [
47
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { width: 6, height: 6, borderRadius: "9999px", background: STATE_COLOR[state] } }),
48
+ stateLabel ?? labels[state]
49
+ ] })
50
+ ] }),
51
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: {
52
+ marginTop: 12,
53
+ fontSize: 13,
54
+ lineHeight: 1.5,
55
+ color: "var(--dt-muted-strong)",
56
+ display: "-webkit-box",
57
+ WebkitLineClamp: 2,
58
+ WebkitBoxOrient: "vertical",
59
+ overflow: "hidden"
60
+ }, children: description }),
61
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginTop: 14, paddingTop: 13, borderTop: "1px solid var(--dt-divider)", display: "flex", alignItems: "center", justifyContent: "space-between", gap: 12 }, children: /* @__PURE__ */ jsxRuntime.jsx("code", { style: { fontFamily: "var(--dt-font-mono)", fontSize: 12, color: "var(--dt-muted)", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: path }) }),
62
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: ".dt-tool-card:hover{box-shadow:var(--dt-ring), var(--dt-shadow-md)}.dt-chip{font-family:var(--dt-font-mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:var(--dt-radius-sm);background:var(--dt-surface-sunken)}.dt-chip-muted{color:var(--dt-muted-strong)}.dt-chip-accent{color:var(--dt-accent)" })
63
+ ]
64
+ }
65
+ );
66
+ }
67
+
68
+ exports.ToolCard = ToolCard;
69
+ //# sourceMappingURL=ToolCard.cjs.map
70
+ //# sourceMappingURL=ToolCard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/product/ToolCard.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"ToolCard.cjs","sourcesContent":["import type { HTMLAttributes } from 'react';\n\nconst STATE_COLOR: Record<'available' | 'managed' | 'locked', string> = {\n available: 'var(--dt-success)',\n managed: 'var(--dt-success)',\n locked: 'var(--dt-warning)',\n};\n\nexport interface ToolCardProps extends HTMLAttributes<HTMLElement> {\n /** Tool name, e.g. \"weather_getForecast\". */\n name: string;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | string;\n /** Category chip; defaults to the name prefix before the first underscore. */\n category?: string;\n description?: string;\n /** Mono API path shown in the footer. */\n path?: string;\n /** Usability state — drives the status dot/label. */\n state?: 'available' | 'managed' | 'locked';\n stateLabel?: string;\n}\n\n/**\n * An MCP tool as shown in the catalog and tool list.\n */\nexport function ToolCard({\n name,\n method = 'GET',\n category,\n description = '설명 없음',\n path = '/',\n state = 'available',\n stateLabel,\n style,\n ...rest\n}: ToolCardProps) {\n const cat = category ?? (name ? name.split('_')[0] : 'etc');\n const labels = { available: '사용 가능', managed: '관리형 키', locked: '키 등록' };\n return (\n <article\n className=\"dt-tool-card\"\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-md)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: '16px 18px',\n transition: 'box-shadow var(--dt-motion), background-color var(--dt-motion)',\n ...style,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div style={{ minWidth: 0 }}>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 8 }}>\n <span className=\"dt-chip dt-chip-muted\">{cat}</span>\n <span className=\"dt-chip dt-chip-accent\">{method}</span>\n </div>\n <h4 style={{ marginTop: 11, fontSize: 15, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)', wordBreak: 'break-all' }}>\n {name}\n </h4>\n </div>\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, flex: '0 0 auto', fontSize: 12, fontWeight: 600, color: STATE_COLOR[state] }}>\n <span style={{ width: 6, height: 6, borderRadius: '9999px', background: STATE_COLOR[state] }} />\n {stateLabel ?? labels[state]}\n </span>\n </div>\n <p style={{\n marginTop: 12, fontSize: 13, lineHeight: 1.5, color: 'var(--dt-muted-strong)',\n display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden',\n }}>\n {description}\n </p>\n <div style={{ marginTop: 14, paddingTop: 13, borderTop: '1px solid var(--dt-divider)', display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 }}>\n <code style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 12, color: 'var(--dt-muted)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {path}\n </code>\n </div>\n <style>{'.dt-tool-card:hover{box-shadow:var(--dt-ring), var(--dt-shadow-md)}.dt-chip{font-family:var(--dt-font-mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:var(--dt-radius-sm);background:var(--dt-surface-sunken)}.dt-chip-muted{color:var(--dt-muted-strong)}.dt-chip-accent{color:var(--dt-accent)'}</style>\n </article>\n );\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface ToolCardProps extends HTMLAttributes<HTMLElement> {
5
+ /** Tool name, e.g. "weather_getForecast". */
6
+ name: string;
7
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | string;
8
+ /** Category chip; defaults to the name prefix before the first underscore. */
9
+ category?: string;
10
+ description?: string;
11
+ /** Mono API path shown in the footer. */
12
+ path?: string;
13
+ /** Usability state — drives the status dot/label. */
14
+ state?: 'available' | 'managed' | 'locked';
15
+ stateLabel?: string;
16
+ }
17
+ /**
18
+ * An MCP tool as shown in the catalog and tool list.
19
+ */
20
+ declare function ToolCard({ name, method, category, description, path, state, stateLabel, style, ...rest }: ToolCardProps): react.JSX.Element;
21
+
22
+ export { ToolCard, type ToolCardProps };
@@ -0,0 +1,22 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface ToolCardProps extends HTMLAttributes<HTMLElement> {
5
+ /** Tool name, e.g. "weather_getForecast". */
6
+ name: string;
7
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | string;
8
+ /** Category chip; defaults to the name prefix before the first underscore. */
9
+ category?: string;
10
+ description?: string;
11
+ /** Mono API path shown in the footer. */
12
+ path?: string;
13
+ /** Usability state — drives the status dot/label. */
14
+ state?: 'available' | 'managed' | 'locked';
15
+ stateLabel?: string;
16
+ }
17
+ /**
18
+ * An MCP tool as shown in the catalog and tool list.
19
+ */
20
+ declare function ToolCard({ name, method, category, description, path, state, stateLabel, style, ...rest }: ToolCardProps): react.JSX.Element;
21
+
22
+ export { ToolCard, type ToolCardProps };
@@ -0,0 +1,68 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+
3
+ // src/components/product/ToolCard.tsx
4
+ var STATE_COLOR = {
5
+ available: "var(--dt-success)",
6
+ managed: "var(--dt-success)",
7
+ locked: "var(--dt-warning)"
8
+ };
9
+ function ToolCard({
10
+ name,
11
+ method = "GET",
12
+ category,
13
+ description = "\uC124\uBA85 \uC5C6\uC74C",
14
+ path = "/",
15
+ state = "available",
16
+ stateLabel,
17
+ style,
18
+ ...rest
19
+ }) {
20
+ const cat = category ?? (name ? name.split("_")[0] : "etc");
21
+ const labels = { available: "\uC0AC\uC6A9 \uAC00\uB2A5", managed: "\uAD00\uB9AC\uD615 \uD0A4", locked: "\uD0A4 \uB4F1\uB85D" };
22
+ return /* @__PURE__ */ jsxs(
23
+ "article",
24
+ {
25
+ className: "dt-tool-card",
26
+ ...rest,
27
+ style: {
28
+ borderRadius: "var(--dt-radius-md)",
29
+ background: "var(--dt-surface)",
30
+ boxShadow: "var(--dt-ring), var(--dt-shadow-xs)",
31
+ padding: "16px 18px",
32
+ transition: "box-shadow var(--dt-motion), background-color var(--dt-motion)",
33
+ ...style
34
+ },
35
+ children: [
36
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between", gap: 12 }, children: [
37
+ /* @__PURE__ */ jsxs("div", { style: { minWidth: 0 }, children: [
38
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: [
39
+ /* @__PURE__ */ jsx("span", { className: "dt-chip dt-chip-muted", children: cat }),
40
+ /* @__PURE__ */ jsx("span", { className: "dt-chip dt-chip-accent", children: method })
41
+ ] }),
42
+ /* @__PURE__ */ jsx("h4", { style: { marginTop: 11, fontSize: 15, fontWeight: 650, letterSpacing: "-0.01em", color: "var(--dt-ink-strong)", wordBreak: "break-all" }, children: name })
43
+ ] }),
44
+ /* @__PURE__ */ jsxs("span", { style: { display: "inline-flex", alignItems: "center", gap: 6, flex: "0 0 auto", fontSize: 12, fontWeight: 600, color: STATE_COLOR[state] }, children: [
45
+ /* @__PURE__ */ jsx("span", { style: { width: 6, height: 6, borderRadius: "9999px", background: STATE_COLOR[state] } }),
46
+ stateLabel ?? labels[state]
47
+ ] })
48
+ ] }),
49
+ /* @__PURE__ */ jsx("p", { style: {
50
+ marginTop: 12,
51
+ fontSize: 13,
52
+ lineHeight: 1.5,
53
+ color: "var(--dt-muted-strong)",
54
+ display: "-webkit-box",
55
+ WebkitLineClamp: 2,
56
+ WebkitBoxOrient: "vertical",
57
+ overflow: "hidden"
58
+ }, children: description }),
59
+ /* @__PURE__ */ jsx("div", { style: { marginTop: 14, paddingTop: 13, borderTop: "1px solid var(--dt-divider)", display: "flex", alignItems: "center", justifyContent: "space-between", gap: 12 }, children: /* @__PURE__ */ jsx("code", { style: { fontFamily: "var(--dt-font-mono)", fontSize: 12, color: "var(--dt-muted)", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: path }) }),
60
+ /* @__PURE__ */ jsx("style", { children: ".dt-tool-card:hover{box-shadow:var(--dt-ring), var(--dt-shadow-md)}.dt-chip{font-family:var(--dt-font-mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:var(--dt-radius-sm);background:var(--dt-surface-sunken)}.dt-chip-muted{color:var(--dt-muted-strong)}.dt-chip-accent{color:var(--dt-accent)" })
61
+ ]
62
+ }
63
+ );
64
+ }
65
+
66
+ export { ToolCard };
67
+ //# sourceMappingURL=ToolCard.mjs.map
68
+ //# sourceMappingURL=ToolCard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/product/ToolCard.tsx"],"names":[],"mappings":"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","file":"ToolCard.mjs","sourcesContent":["import type { HTMLAttributes } from 'react';\n\nconst STATE_COLOR: Record<'available' | 'managed' | 'locked', string> = {\n available: 'var(--dt-success)',\n managed: 'var(--dt-success)',\n locked: 'var(--dt-warning)',\n};\n\nexport interface ToolCardProps extends HTMLAttributes<HTMLElement> {\n /** Tool name, e.g. \"weather_getForecast\". */\n name: string;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | string;\n /** Category chip; defaults to the name prefix before the first underscore. */\n category?: string;\n description?: string;\n /** Mono API path shown in the footer. */\n path?: string;\n /** Usability state — drives the status dot/label. */\n state?: 'available' | 'managed' | 'locked';\n stateLabel?: string;\n}\n\n/**\n * An MCP tool as shown in the catalog and tool list.\n */\nexport function ToolCard({\n name,\n method = 'GET',\n category,\n description = '설명 없음',\n path = '/',\n state = 'available',\n stateLabel,\n style,\n ...rest\n}: ToolCardProps) {\n const cat = category ?? (name ? name.split('_')[0] : 'etc');\n const labels = { available: '사용 가능', managed: '관리형 키', locked: '키 등록' };\n return (\n <article\n className=\"dt-tool-card\"\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-md)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: '16px 18px',\n transition: 'box-shadow var(--dt-motion), background-color var(--dt-motion)',\n ...style,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div style={{ minWidth: 0 }}>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 8 }}>\n <span className=\"dt-chip dt-chip-muted\">{cat}</span>\n <span className=\"dt-chip dt-chip-accent\">{method}</span>\n </div>\n <h4 style={{ marginTop: 11, fontSize: 15, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)', wordBreak: 'break-all' }}>\n {name}\n </h4>\n </div>\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, flex: '0 0 auto', fontSize: 12, fontWeight: 600, color: STATE_COLOR[state] }}>\n <span style={{ width: 6, height: 6, borderRadius: '9999px', background: STATE_COLOR[state] }} />\n {stateLabel ?? labels[state]}\n </span>\n </div>\n <p style={{\n marginTop: 12, fontSize: 13, lineHeight: 1.5, color: 'var(--dt-muted-strong)',\n display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden',\n }}>\n {description}\n </p>\n <div style={{ marginTop: 14, paddingTop: 13, borderTop: '1px solid var(--dt-divider)', display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 }}>\n <code style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 12, color: 'var(--dt-muted)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {path}\n </code>\n </div>\n <style>{'.dt-tool-card:hover{box-shadow:var(--dt-ring), var(--dt-shadow-md)}.dt-chip{font-family:var(--dt-font-mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:var(--dt-radius-sm);background:var(--dt-surface-sunken)}.dt-chip-muted{color:var(--dt-muted-strong)}.dt-chip-accent{color:var(--dt-accent)'}</style>\n </article>\n );\n}\n"]}