@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,69 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/lib/cx.ts
6
+ function cx(...classes) {
7
+ return classes.filter(Boolean).join(" ");
8
+ }
9
+ var PRODUCT_SHELL_TONE = {
10
+ Cinematic: "cinematic",
11
+ Console: "console"
12
+ };
13
+ var SHELL_TONE_CLASS = {
14
+ [PRODUCT_SHELL_TONE.Cinematic]: "dt-product-shell-cinematic",
15
+ [PRODUCT_SHELL_TONE.Console]: "dt-product-shell-console"
16
+ };
17
+ function ProductShell({ tone = PRODUCT_SHELL_TONE.Cinematic, className, children, ...rest }) {
18
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx("dt-product-shell", SHELL_TONE_CLASS[tone], className), ...rest, children });
19
+ }
20
+ function ProductCinematicBackdrop({
21
+ animated = true,
22
+ className,
23
+ ...rest
24
+ }) {
25
+ return /* @__PURE__ */ jsxRuntime.jsxs(
26
+ "div",
27
+ {
28
+ className: cx("dt-product-cinematic-backdrop", animated && "dt-product-cinematic-backdrop-animated", className),
29
+ "aria-hidden": "true",
30
+ ...rest,
31
+ children: [
32
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "dt-product-cinematic-wash" }),
33
+ /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "dt-product-cinematic-lines", viewBox: "0 0 1440 720", preserveAspectRatio: "xMidYMid slice", children: [
34
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "dt-product-cinematic-track", d: "M-60 248 H520 C690 248 710 168 884 168 H1500" }),
35
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "dt-product-cinematic-track", d: "M-60 430 H510 C660 430 692 542 872 542 H1500" }),
36
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "dt-product-cinematic-track", d: "M-60 338 H610 C748 338 770 326 930 326 H1500" }),
37
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "dt-product-cinematic-flow dt-product-cinematic-flow-a", d: "M-60 248 H520 C690 248 710 168 884 168 H1500" }),
38
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "dt-product-cinematic-flow dt-product-cinematic-flow-b", d: "M-60 430 H510 C660 430 692 542 872 542 H1500" }),
39
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "dt-product-cinematic-flow dt-product-cinematic-flow-c", d: "M-60 338 H610 C748 338 770 326 930 326 H1500" })
40
+ ] })
41
+ ]
42
+ }
43
+ );
44
+ }
45
+ function ProductMotionField({
46
+ gridSrc,
47
+ label = "Live API routing motion",
48
+ className,
49
+ ...rest
50
+ }) {
51
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx("dt-product-motion-field", className), "aria-label": label, ...rest, children: [
52
+ gridSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { className: "dt-product-motion-grid", src: gridSrc, alt: "", "aria-hidden": "true", loading: "lazy" }) : null,
53
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-motion-orbit dt-product-motion-orbit-a", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-motion-node" }) }),
54
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-motion-orbit dt-product-motion-orbit-b", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-motion-node" }) }),
55
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-motion-axis", "aria-hidden": "true" }),
56
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-motion-copy", children: "API" })
57
+ ] });
58
+ }
59
+ function ProductSideRail({ items, label, className, ...rest }) {
60
+ return /* @__PURE__ */ jsxRuntime.jsx("aside", { className: cx("dt-product-side-rail", className), "aria-label": label, ...rest, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.href, children: item.label }, item.key)) });
61
+ }
62
+
63
+ exports.PRODUCT_SHELL_TONE = PRODUCT_SHELL_TONE;
64
+ exports.ProductCinematicBackdrop = ProductCinematicBackdrop;
65
+ exports.ProductMotionField = ProductMotionField;
66
+ exports.ProductShell = ProductShell;
67
+ exports.ProductSideRail = ProductSideRail;
68
+ //# sourceMappingURL=ProductCinematic.cjs.map
69
+ //# sourceMappingURL=ProductCinematic.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cx.ts","../../../src/components/product/ProductCinematic.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"ProductCinematic.cjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const PRODUCT_SHELL_TONE = {\n Cinematic: 'cinematic',\n Console: 'console',\n} as const;\n\nexport type ProductShellTone = (typeof PRODUCT_SHELL_TONE)[keyof typeof PRODUCT_SHELL_TONE];\n\nconst SHELL_TONE_CLASS: Record<ProductShellTone, string> = {\n [PRODUCT_SHELL_TONE.Cinematic]: 'dt-product-shell-cinematic',\n [PRODUCT_SHELL_TONE.Console]: 'dt-product-shell-console',\n};\n\nexport interface ProductShellProps extends HTMLAttributes<HTMLDivElement> {\n tone?: ProductShellTone;\n}\n\nexport function ProductShell({ tone = PRODUCT_SHELL_TONE.Cinematic, className, children, ...rest }: ProductShellProps) {\n return (\n <div className={cx('dt-product-shell', SHELL_TONE_CLASS[tone], className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport interface ProductCinematicBackdropProps extends HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n}\n\nexport function ProductCinematicBackdrop({\n animated = true,\n className,\n ...rest\n}: ProductCinematicBackdropProps) {\n return (\n <div\n className={cx('dt-product-cinematic-backdrop', animated && 'dt-product-cinematic-backdrop-animated', className)}\n aria-hidden=\"true\"\n {...rest}\n >\n <div className=\"dt-product-cinematic-wash\" />\n <svg className=\"dt-product-cinematic-lines\" viewBox=\"0 0 1440 720\" preserveAspectRatio=\"xMidYMid slice\">\n <path className=\"dt-product-cinematic-track\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-a\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-b\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-c\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n </svg>\n </div>\n );\n}\n\nexport interface ProductMotionFieldProps extends HTMLAttributes<HTMLDivElement> {\n gridSrc?: string;\n label?: string;\n}\n\nexport function ProductMotionField({\n gridSrc,\n label = 'Live API routing motion',\n className,\n ...rest\n}: ProductMotionFieldProps) {\n return (\n <div className={cx('dt-product-motion-field', className)} aria-label={label} {...rest}>\n {gridSrc ? <img className=\"dt-product-motion-grid\" src={gridSrc} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" /> : null}\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-a\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-b\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-axis\" aria-hidden=\"true\" />\n <span className=\"dt-product-motion-copy\">API</span>\n </div>\n );\n}\n\nexport interface ProductSideRailItem {\n key: string;\n href: string;\n label: ReactNode;\n}\n\nexport interface ProductSideRailProps extends HTMLAttributes<HTMLElement> {\n items: readonly ProductSideRailItem[];\n label: string;\n}\n\nexport function ProductSideRail({ items, label, className, ...rest }: ProductSideRailProps) {\n return (\n <aside className={cx('dt-product-side-rail', className)} aria-label={label} {...rest}>\n {items.map((item) => (\n <a key={item.key} href={item.href}>\n {item.label}\n </a>\n ))}\n </aside>\n );\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ declare const PRODUCT_SHELL_TONE: {
5
+ readonly Cinematic: "cinematic";
6
+ readonly Console: "console";
7
+ };
8
+ type ProductShellTone = (typeof PRODUCT_SHELL_TONE)[keyof typeof PRODUCT_SHELL_TONE];
9
+ interface ProductShellProps extends HTMLAttributes<HTMLDivElement> {
10
+ tone?: ProductShellTone;
11
+ }
12
+ declare function ProductShell({ tone, className, children, ...rest }: ProductShellProps): react.JSX.Element;
13
+ interface ProductCinematicBackdropProps extends HTMLAttributes<HTMLDivElement> {
14
+ animated?: boolean;
15
+ }
16
+ declare function ProductCinematicBackdrop({ animated, className, ...rest }: ProductCinematicBackdropProps): react.JSX.Element;
17
+ interface ProductMotionFieldProps extends HTMLAttributes<HTMLDivElement> {
18
+ gridSrc?: string;
19
+ label?: string;
20
+ }
21
+ declare function ProductMotionField({ gridSrc, label, className, ...rest }: ProductMotionFieldProps): react.JSX.Element;
22
+ interface ProductSideRailItem {
23
+ key: string;
24
+ href: string;
25
+ label: ReactNode;
26
+ }
27
+ interface ProductSideRailProps extends HTMLAttributes<HTMLElement> {
28
+ items: readonly ProductSideRailItem[];
29
+ label: string;
30
+ }
31
+ declare function ProductSideRail({ items, label, className, ...rest }: ProductSideRailProps): react.JSX.Element;
32
+
33
+ export { PRODUCT_SHELL_TONE, ProductCinematicBackdrop, type ProductCinematicBackdropProps, ProductMotionField, type ProductMotionFieldProps, ProductShell, type ProductShellProps, type ProductShellTone, ProductSideRail, type ProductSideRailItem, type ProductSideRailProps };
@@ -0,0 +1,33 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ declare const PRODUCT_SHELL_TONE: {
5
+ readonly Cinematic: "cinematic";
6
+ readonly Console: "console";
7
+ };
8
+ type ProductShellTone = (typeof PRODUCT_SHELL_TONE)[keyof typeof PRODUCT_SHELL_TONE];
9
+ interface ProductShellProps extends HTMLAttributes<HTMLDivElement> {
10
+ tone?: ProductShellTone;
11
+ }
12
+ declare function ProductShell({ tone, className, children, ...rest }: ProductShellProps): react.JSX.Element;
13
+ interface ProductCinematicBackdropProps extends HTMLAttributes<HTMLDivElement> {
14
+ animated?: boolean;
15
+ }
16
+ declare function ProductCinematicBackdrop({ animated, className, ...rest }: ProductCinematicBackdropProps): react.JSX.Element;
17
+ interface ProductMotionFieldProps extends HTMLAttributes<HTMLDivElement> {
18
+ gridSrc?: string;
19
+ label?: string;
20
+ }
21
+ declare function ProductMotionField({ gridSrc, label, className, ...rest }: ProductMotionFieldProps): react.JSX.Element;
22
+ interface ProductSideRailItem {
23
+ key: string;
24
+ href: string;
25
+ label: ReactNode;
26
+ }
27
+ interface ProductSideRailProps extends HTMLAttributes<HTMLElement> {
28
+ items: readonly ProductSideRailItem[];
29
+ label: string;
30
+ }
31
+ declare function ProductSideRail({ items, label, className, ...rest }: ProductSideRailProps): react.JSX.Element;
32
+
33
+ export { PRODUCT_SHELL_TONE, ProductCinematicBackdrop, type ProductCinematicBackdropProps, ProductMotionField, type ProductMotionFieldProps, ProductShell, type ProductShellProps, type ProductShellTone, ProductSideRail, type ProductSideRailItem, type ProductSideRailProps };
@@ -0,0 +1,63 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+
3
+ // src/lib/cx.ts
4
+ function cx(...classes) {
5
+ return classes.filter(Boolean).join(" ");
6
+ }
7
+ var PRODUCT_SHELL_TONE = {
8
+ Cinematic: "cinematic",
9
+ Console: "console"
10
+ };
11
+ var SHELL_TONE_CLASS = {
12
+ [PRODUCT_SHELL_TONE.Cinematic]: "dt-product-shell-cinematic",
13
+ [PRODUCT_SHELL_TONE.Console]: "dt-product-shell-console"
14
+ };
15
+ function ProductShell({ tone = PRODUCT_SHELL_TONE.Cinematic, className, children, ...rest }) {
16
+ return /* @__PURE__ */ jsx("div", { className: cx("dt-product-shell", SHELL_TONE_CLASS[tone], className), ...rest, children });
17
+ }
18
+ function ProductCinematicBackdrop({
19
+ animated = true,
20
+ className,
21
+ ...rest
22
+ }) {
23
+ return /* @__PURE__ */ jsxs(
24
+ "div",
25
+ {
26
+ className: cx("dt-product-cinematic-backdrop", animated && "dt-product-cinematic-backdrop-animated", className),
27
+ "aria-hidden": "true",
28
+ ...rest,
29
+ children: [
30
+ /* @__PURE__ */ jsx("div", { className: "dt-product-cinematic-wash" }),
31
+ /* @__PURE__ */ jsxs("svg", { className: "dt-product-cinematic-lines", viewBox: "0 0 1440 720", preserveAspectRatio: "xMidYMid slice", children: [
32
+ /* @__PURE__ */ jsx("path", { className: "dt-product-cinematic-track", d: "M-60 248 H520 C690 248 710 168 884 168 H1500" }),
33
+ /* @__PURE__ */ jsx("path", { className: "dt-product-cinematic-track", d: "M-60 430 H510 C660 430 692 542 872 542 H1500" }),
34
+ /* @__PURE__ */ jsx("path", { className: "dt-product-cinematic-track", d: "M-60 338 H610 C748 338 770 326 930 326 H1500" }),
35
+ /* @__PURE__ */ jsx("path", { className: "dt-product-cinematic-flow dt-product-cinematic-flow-a", d: "M-60 248 H520 C690 248 710 168 884 168 H1500" }),
36
+ /* @__PURE__ */ jsx("path", { className: "dt-product-cinematic-flow dt-product-cinematic-flow-b", d: "M-60 430 H510 C660 430 692 542 872 542 H1500" }),
37
+ /* @__PURE__ */ jsx("path", { className: "dt-product-cinematic-flow dt-product-cinematic-flow-c", d: "M-60 338 H610 C748 338 770 326 930 326 H1500" })
38
+ ] })
39
+ ]
40
+ }
41
+ );
42
+ }
43
+ function ProductMotionField({
44
+ gridSrc,
45
+ label = "Live API routing motion",
46
+ className,
47
+ ...rest
48
+ }) {
49
+ return /* @__PURE__ */ jsxs("div", { className: cx("dt-product-motion-field", className), "aria-label": label, ...rest, children: [
50
+ gridSrc ? /* @__PURE__ */ jsx("img", { className: "dt-product-motion-grid", src: gridSrc, alt: "", "aria-hidden": "true", loading: "lazy" }) : null,
51
+ /* @__PURE__ */ jsx("span", { className: "dt-product-motion-orbit dt-product-motion-orbit-a", "aria-hidden": "true", children: /* @__PURE__ */ jsx("span", { className: "dt-product-motion-node" }) }),
52
+ /* @__PURE__ */ jsx("span", { className: "dt-product-motion-orbit dt-product-motion-orbit-b", "aria-hidden": "true", children: /* @__PURE__ */ jsx("span", { className: "dt-product-motion-node" }) }),
53
+ /* @__PURE__ */ jsx("span", { className: "dt-product-motion-axis", "aria-hidden": "true" }),
54
+ /* @__PURE__ */ jsx("span", { className: "dt-product-motion-copy", children: "API" })
55
+ ] });
56
+ }
57
+ function ProductSideRail({ items, label, className, ...rest }) {
58
+ return /* @__PURE__ */ jsx("aside", { className: cx("dt-product-side-rail", className), "aria-label": label, ...rest, children: items.map((item) => /* @__PURE__ */ jsx("a", { href: item.href, children: item.label }, item.key)) });
59
+ }
60
+
61
+ export { PRODUCT_SHELL_TONE, ProductCinematicBackdrop, ProductMotionField, ProductShell, ProductSideRail };
62
+ //# sourceMappingURL=ProductCinematic.mjs.map
63
+ //# sourceMappingURL=ProductCinematic.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cx.ts","../../../src/components/product/ProductCinematic.tsx"],"names":[],"mappings":"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","file":"ProductCinematic.mjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const PRODUCT_SHELL_TONE = {\n Cinematic: 'cinematic',\n Console: 'console',\n} as const;\n\nexport type ProductShellTone = (typeof PRODUCT_SHELL_TONE)[keyof typeof PRODUCT_SHELL_TONE];\n\nconst SHELL_TONE_CLASS: Record<ProductShellTone, string> = {\n [PRODUCT_SHELL_TONE.Cinematic]: 'dt-product-shell-cinematic',\n [PRODUCT_SHELL_TONE.Console]: 'dt-product-shell-console',\n};\n\nexport interface ProductShellProps extends HTMLAttributes<HTMLDivElement> {\n tone?: ProductShellTone;\n}\n\nexport function ProductShell({ tone = PRODUCT_SHELL_TONE.Cinematic, className, children, ...rest }: ProductShellProps) {\n return (\n <div className={cx('dt-product-shell', SHELL_TONE_CLASS[tone], className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport interface ProductCinematicBackdropProps extends HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n}\n\nexport function ProductCinematicBackdrop({\n animated = true,\n className,\n ...rest\n}: ProductCinematicBackdropProps) {\n return (\n <div\n className={cx('dt-product-cinematic-backdrop', animated && 'dt-product-cinematic-backdrop-animated', className)}\n aria-hidden=\"true\"\n {...rest}\n >\n <div className=\"dt-product-cinematic-wash\" />\n <svg className=\"dt-product-cinematic-lines\" viewBox=\"0 0 1440 720\" preserveAspectRatio=\"xMidYMid slice\">\n <path className=\"dt-product-cinematic-track\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-a\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-b\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-c\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n </svg>\n </div>\n );\n}\n\nexport interface ProductMotionFieldProps extends HTMLAttributes<HTMLDivElement> {\n gridSrc?: string;\n label?: string;\n}\n\nexport function ProductMotionField({\n gridSrc,\n label = 'Live API routing motion',\n className,\n ...rest\n}: ProductMotionFieldProps) {\n return (\n <div className={cx('dt-product-motion-field', className)} aria-label={label} {...rest}>\n {gridSrc ? <img className=\"dt-product-motion-grid\" src={gridSrc} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" /> : null}\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-a\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-b\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-axis\" aria-hidden=\"true\" />\n <span className=\"dt-product-motion-copy\">API</span>\n </div>\n );\n}\n\nexport interface ProductSideRailItem {\n key: string;\n href: string;\n label: ReactNode;\n}\n\nexport interface ProductSideRailProps extends HTMLAttributes<HTMLElement> {\n items: readonly ProductSideRailItem[];\n label: string;\n}\n\nexport function ProductSideRail({ items, label, className, ...rest }: ProductSideRailProps) {\n return (\n <aside className={cx('dt-product-side-rail', className)} aria-label={label} {...rest}>\n {items.map((item) => (\n <a key={item.key} href={item.href}>\n {item.label}\n </a>\n ))}\n </aside>\n );\n}\n"]}
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/lib/cx.ts
6
+ function cx(...classes) {
7
+ return classes.filter(Boolean).join(" ");
8
+ }
9
+ function ProductPageHeader({
10
+ eyebrow,
11
+ title,
12
+ description,
13
+ actions,
14
+ children,
15
+ className,
16
+ ...rest
17
+ }) {
18
+ return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: cx("dt-product-page-header", className), ...rest, children: [
19
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dt-product-page-header-row", children: [
20
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dt-product-page-header-copy", children: [
21
+ eyebrow ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dt-product-page-header-eyebrow", children: eyebrow }) : null,
22
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dt-product-page-header-text", children: [
23
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { children: title }),
24
+ description ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: description }) : null
25
+ ] })
26
+ ] }),
27
+ actions ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "dt-product-page-header-actions", children: actions }) : null
28
+ ] }),
29
+ children ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "dt-product-page-header-content", children }) : null
30
+ ] });
31
+ }
32
+
33
+ exports.ProductPageHeader = ProductPageHeader;
34
+ //# sourceMappingURL=ProductPageHeader.cjs.map
35
+ //# sourceMappingURL=ProductPageHeader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cx.ts","../../../src/components/product/ProductPageHeader.tsx"],"names":["jsxs","jsx"],"mappings":";;;;;AAAO,SAAS,MAAM,OAAA,EAA2D;AAC/E,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;ACSO,SAAS,iBAAA,CAAkB;AAAA,EAChC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACEA,eAAA,CAAC,YAAO,SAAA,EAAW,EAAA,CAAG,0BAA0B,SAAS,CAAA,EAAI,GAAG,IAAA,EAC9D,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACZ,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAUC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gCAAA,EAAkC,mBAAQ,CAAA,GAAU,IAAA;AAAA,wBAC/ED,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,QAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACV,WAAA,mBAAcA,cAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,WAAA,EAAY,CAAA,GAAO;AAAA,SAAA,EACxC;AAAA,OAAA,EACF,CAAA;AAAA,MACC,0BAAUA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,mBAAQ,CAAA,GAAS;AAAA,KAAA,EAC/E,CAAA;AAAA,IACC,2BAAWA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,UAAS,CAAA,GAAS;AAAA,GAAA,EACjF,CAAA;AAEJ","file":"ProductPageHeader.cjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface ProductPageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n children?: ReactNode;\n}\n\nexport function ProductPageHeader({\n eyebrow,\n title,\n description,\n actions,\n children,\n className,\n ...rest\n}: ProductPageHeaderProps) {\n return (\n <header className={cx('dt-product-page-header', className)} {...rest}>\n <div className=\"dt-product-page-header-row\">\n <div className=\"dt-product-page-header-copy\">\n {eyebrow ? <span className=\"dt-product-page-header-eyebrow\">{eyebrow}</span> : null}\n <div className=\"dt-product-page-header-text\">\n <h1>{title}</h1>\n {description ? <p>{description}</p> : null}\n </div>\n </div>\n {actions ? <div className=\"dt-product-page-header-actions\">{actions}</div> : null}\n </div>\n {children ? <div className=\"dt-product-page-header-content\">{children}</div> : null}\n </header>\n );\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface ProductPageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
5
+ eyebrow?: ReactNode;
6
+ title: ReactNode;
7
+ description?: ReactNode;
8
+ actions?: ReactNode;
9
+ children?: ReactNode;
10
+ }
11
+ declare function ProductPageHeader({ eyebrow, title, description, actions, children, className, ...rest }: ProductPageHeaderProps): react.JSX.Element;
12
+
13
+ export { ProductPageHeader, type ProductPageHeaderProps };
@@ -0,0 +1,13 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface ProductPageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
5
+ eyebrow?: ReactNode;
6
+ title: ReactNode;
7
+ description?: ReactNode;
8
+ actions?: ReactNode;
9
+ children?: ReactNode;
10
+ }
11
+ declare function ProductPageHeader({ eyebrow, title, description, actions, children, className, ...rest }: ProductPageHeaderProps): react.JSX.Element;
12
+
13
+ export { ProductPageHeader, type ProductPageHeaderProps };
@@ -0,0 +1,33 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+
3
+ // src/lib/cx.ts
4
+ function cx(...classes) {
5
+ return classes.filter(Boolean).join(" ");
6
+ }
7
+ function ProductPageHeader({
8
+ eyebrow,
9
+ title,
10
+ description,
11
+ actions,
12
+ children,
13
+ className,
14
+ ...rest
15
+ }) {
16
+ return /* @__PURE__ */ jsxs("header", { className: cx("dt-product-page-header", className), ...rest, children: [
17
+ /* @__PURE__ */ jsxs("div", { className: "dt-product-page-header-row", children: [
18
+ /* @__PURE__ */ jsxs("div", { className: "dt-product-page-header-copy", children: [
19
+ eyebrow ? /* @__PURE__ */ jsx("span", { className: "dt-product-page-header-eyebrow", children: eyebrow }) : null,
20
+ /* @__PURE__ */ jsxs("div", { className: "dt-product-page-header-text", children: [
21
+ /* @__PURE__ */ jsx("h1", { children: title }),
22
+ description ? /* @__PURE__ */ jsx("p", { children: description }) : null
23
+ ] })
24
+ ] }),
25
+ actions ? /* @__PURE__ */ jsx("div", { className: "dt-product-page-header-actions", children: actions }) : null
26
+ ] }),
27
+ children ? /* @__PURE__ */ jsx("div", { className: "dt-product-page-header-content", children }) : null
28
+ ] });
29
+ }
30
+
31
+ export { ProductPageHeader };
32
+ //# sourceMappingURL=ProductPageHeader.mjs.map
33
+ //# sourceMappingURL=ProductPageHeader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cx.ts","../../../src/components/product/ProductPageHeader.tsx"],"names":[],"mappings":";;;AAAO,SAAS,MAAM,OAAA,EAA2D;AAC/E,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;ACSO,SAAS,iBAAA,CAAkB;AAAA,EAChC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACE,IAAA,CAAC,YAAO,SAAA,EAAW,EAAA,CAAG,0BAA0B,SAAS,CAAA,EAAI,GAAG,IAAA,EAC9D,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACZ,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gCAAA,EAAkC,mBAAQ,CAAA,GAAU,IAAA;AAAA,wBAC/E,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACV,WAAA,mBAAc,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,WAAA,EAAY,CAAA,GAAO;AAAA,SAAA,EACxC;AAAA,OAAA,EACF,CAAA;AAAA,MACC,0BAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,mBAAQ,CAAA,GAAS;AAAA,KAAA,EAC/E,CAAA;AAAA,IACC,2BAAW,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,UAAS,CAAA,GAAS;AAAA,GAAA,EACjF,CAAA;AAEJ","file":"ProductPageHeader.mjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface ProductPageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n children?: ReactNode;\n}\n\nexport function ProductPageHeader({\n eyebrow,\n title,\n description,\n actions,\n children,\n className,\n ...rest\n}: ProductPageHeaderProps) {\n return (\n <header className={cx('dt-product-page-header', className)} {...rest}>\n <div className=\"dt-product-page-header-row\">\n <div className=\"dt-product-page-header-copy\">\n {eyebrow ? <span className=\"dt-product-page-header-eyebrow\">{eyebrow}</span> : null}\n <div className=\"dt-product-page-header-text\">\n <h1>{title}</h1>\n {description ? <p>{description}</p> : null}\n </div>\n </div>\n {actions ? <div className=\"dt-product-page-header-actions\">{actions}</div> : null}\n </div>\n {children ? <div className=\"dt-product-page-header-content\">{children}</div> : null}\n </header>\n );\n}\n"]}
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/lib/cx.ts
6
+ function cx(...classes) {
7
+ return classes.filter(Boolean).join(" ");
8
+ }
9
+ function SectionCard({
10
+ eyebrow,
11
+ title,
12
+ description,
13
+ action,
14
+ children,
15
+ contentClassName,
16
+ style,
17
+ ...rest
18
+ }) {
19
+ const hasHeader = Boolean(eyebrow || title || description || action);
20
+ return /* @__PURE__ */ jsxRuntime.jsxs(
21
+ "section",
22
+ {
23
+ ...rest,
24
+ style: {
25
+ borderRadius: "var(--dt-radius-lg)",
26
+ background: "var(--dt-surface)",
27
+ boxShadow: "var(--dt-ring), var(--dt-shadow-xs)",
28
+ padding: "var(--dt-space-4)",
29
+ ...style
30
+ },
31
+ children: [
32
+ hasHeader ? /* @__PURE__ */ jsxRuntime.jsxs(
33
+ "header",
34
+ {
35
+ style: {
36
+ display: "flex",
37
+ alignItems: "flex-start",
38
+ justifyContent: "space-between",
39
+ gap: "var(--dt-space-3)",
40
+ marginBottom: children ? "var(--dt-space-3)" : 0
41
+ },
42
+ children: [
43
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { minWidth: 0 }, children: [
44
+ eyebrow ? /* @__PURE__ */ jsxRuntime.jsx(
45
+ "p",
46
+ {
47
+ style: {
48
+ marginBottom: 6,
49
+ fontSize: 12,
50
+ fontWeight: 650,
51
+ textTransform: "uppercase",
52
+ color: "var(--dt-muted)"
53
+ },
54
+ children: eyebrow
55
+ }
56
+ ) : null,
57
+ title ? /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { fontSize: 18, fontWeight: 650, letterSpacing: "-0.01em", color: "var(--dt-ink-strong)" }, children: title }) : null,
58
+ description ? /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginTop: 6, fontSize: 13, lineHeight: 1.55, color: "var(--dt-muted-strong)", maxWidth: 560 }, children: description }) : null
59
+ ] }),
60
+ action ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: "0 0 auto" }, children: action }) : null
61
+ ]
62
+ }
63
+ ) : null,
64
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(contentClassName), children })
65
+ ]
66
+ }
67
+ );
68
+ }
69
+
70
+ exports.SectionCard = SectionCard;
71
+ //# sourceMappingURL=SectionCard.cjs.map
72
+ //# sourceMappingURL=SectionCard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cx.ts","../../../src/components/product/SectionCard.tsx"],"names":["jsxs","jsx"],"mappings":";;;;;AAAO,SAAS,MAAM,OAAA,EAA2D;AAC/E,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;ACgBO,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,OAAA,IAAW,KAAA,IAAS,eAAe,MAAM,CAAA;AACnE,EAAA,uBACEA,eAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,YAAA,EAAc,qBAAA;AAAA,QACd,UAAA,EAAY,mBAAA;AAAA,QACZ,SAAA,EAAW,qCAAA;AAAA,QACX,OAAA,EAAS,mBAAA;AAAA,QACT,GAAG;AAAA,OACL;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,SAAA,mBACCA,eAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,YAAA;AAAA,cACZ,cAAA,EAAgB,eAAA;AAAA,cAChB,GAAA,EAAK,mBAAA;AAAA,cACL,YAAA,EAAc,WAAW,mBAAA,GAAsB;AAAA,aACjD;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,GAAE,EACvB,QAAA,EAAA;AAAA,gBAAA,OAAA,mBACCC,cAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,YAAA,EAAc,CAAA;AAAA,sBACd,QAAA,EAAU,EAAA;AAAA,sBACV,UAAA,EAAY,GAAA;AAAA,sBACZ,aAAA,EAAe,WAAA;AAAA,sBACf,KAAA,EAAO;AAAA,qBACT;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,iBACH,GACE,IAAA;AAAA,gBACH,KAAA,mBACCA,cAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,GAAA,EAAK,eAAe,SAAA,EAAW,KAAA,EAAO,sBAAA,EAAuB,EACjG,iBACH,CAAA,GACE,IAAA;AAAA,gBACH,8BACCA,cAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,WAAW,CAAA,EAAG,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,MAAM,KAAA,EAAO,wBAAA,EAA0B,UAAU,GAAA,EAAI,EACtG,uBACH,CAAA,GACE;AAAA,eAAA,EACN,CAAA;AAAA,cACC,MAAA,kCAAU,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAW,EAAI,QAAA,EAAA,MAAA,EAAO,CAAA,GAAS;AAAA;AAAA;AAAA,SAC/D,GACE,IAAA;AAAA,uCACH,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gBAAgB,GAAI,QAAA,EAAS;AAAA;AAAA;AAAA,GAClD;AAEJ","file":"SectionCard.cjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface SectionCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: string;\n title?: ReactNode;\n description?: ReactNode;\n /** Right-aligned action (usually a ghost Button). */\n action?: ReactNode;\n children?: ReactNode;\n contentClassName?: string;\n}\n\n/**\n * Console section panel — title, description, action, body. No eyebrow kicker:\n * the title is a plain noun-phrase heading, the section's own content does the\n * rest. Lay items flat inside; never card-in-card.\n */\nexport function SectionCard({\n eyebrow,\n title,\n description,\n action,\n children,\n contentClassName,\n style,\n ...rest\n}: SectionCardProps) {\n const hasHeader = Boolean(eyebrow || title || description || action);\n return (\n <section\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-lg)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: 'var(--dt-space-4)',\n ...style,\n }}\n >\n {hasHeader ? (\n <header\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 'var(--dt-space-3)',\n marginBottom: children ? 'var(--dt-space-3)' : 0,\n }}\n >\n <div style={{ minWidth: 0 }}>\n {eyebrow ? (\n <p\n style={{\n marginBottom: 6,\n fontSize: 12,\n fontWeight: 650,\n textTransform: 'uppercase',\n color: 'var(--dt-muted)',\n }}\n >\n {eyebrow}\n </p>\n ) : null}\n {title ? (\n <h3 style={{ fontSize: 18, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>\n {title}\n </h3>\n ) : null}\n {description ? (\n <p style={{ marginTop: 6, fontSize: 13, lineHeight: 1.55, color: 'var(--dt-muted-strong)', maxWidth: 560 }}>\n {description}\n </p>\n ) : null}\n </div>\n {action ? <div style={{ flex: '0 0 auto' }}>{action}</div> : null}\n </header>\n ) : null}\n <div className={cx(contentClassName)}>{children}</div>\n </section>\n );\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface SectionCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
5
+ eyebrow?: string;
6
+ title?: ReactNode;
7
+ description?: ReactNode;
8
+ /** Right-aligned action (usually a ghost Button). */
9
+ action?: ReactNode;
10
+ children?: ReactNode;
11
+ contentClassName?: string;
12
+ }
13
+ /**
14
+ * Console section panel — title, description, action, body. No eyebrow kicker:
15
+ * the title is a plain noun-phrase heading, the section's own content does the
16
+ * rest. Lay items flat inside; never card-in-card.
17
+ */
18
+ declare function SectionCard({ eyebrow, title, description, action, children, contentClassName, style, ...rest }: SectionCardProps): react.JSX.Element;
19
+
20
+ export { SectionCard, type SectionCardProps };
@@ -0,0 +1,20 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface SectionCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
5
+ eyebrow?: string;
6
+ title?: ReactNode;
7
+ description?: ReactNode;
8
+ /** Right-aligned action (usually a ghost Button). */
9
+ action?: ReactNode;
10
+ children?: ReactNode;
11
+ contentClassName?: string;
12
+ }
13
+ /**
14
+ * Console section panel — title, description, action, body. No eyebrow kicker:
15
+ * the title is a plain noun-phrase heading, the section's own content does the
16
+ * rest. Lay items flat inside; never card-in-card.
17
+ */
18
+ declare function SectionCard({ eyebrow, title, description, action, children, contentClassName, style, ...rest }: SectionCardProps): react.JSX.Element;
19
+
20
+ export { SectionCard, type SectionCardProps };
@@ -0,0 +1,70 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+
3
+ // src/lib/cx.ts
4
+ function cx(...classes) {
5
+ return classes.filter(Boolean).join(" ");
6
+ }
7
+ function SectionCard({
8
+ eyebrow,
9
+ title,
10
+ description,
11
+ action,
12
+ children,
13
+ contentClassName,
14
+ style,
15
+ ...rest
16
+ }) {
17
+ const hasHeader = Boolean(eyebrow || title || description || action);
18
+ return /* @__PURE__ */ jsxs(
19
+ "section",
20
+ {
21
+ ...rest,
22
+ style: {
23
+ borderRadius: "var(--dt-radius-lg)",
24
+ background: "var(--dt-surface)",
25
+ boxShadow: "var(--dt-ring), var(--dt-shadow-xs)",
26
+ padding: "var(--dt-space-4)",
27
+ ...style
28
+ },
29
+ children: [
30
+ hasHeader ? /* @__PURE__ */ jsxs(
31
+ "header",
32
+ {
33
+ style: {
34
+ display: "flex",
35
+ alignItems: "flex-start",
36
+ justifyContent: "space-between",
37
+ gap: "var(--dt-space-3)",
38
+ marginBottom: children ? "var(--dt-space-3)" : 0
39
+ },
40
+ children: [
41
+ /* @__PURE__ */ jsxs("div", { style: { minWidth: 0 }, children: [
42
+ eyebrow ? /* @__PURE__ */ jsx(
43
+ "p",
44
+ {
45
+ style: {
46
+ marginBottom: 6,
47
+ fontSize: 12,
48
+ fontWeight: 650,
49
+ textTransform: "uppercase",
50
+ color: "var(--dt-muted)"
51
+ },
52
+ children: eyebrow
53
+ }
54
+ ) : null,
55
+ title ? /* @__PURE__ */ jsx("h3", { style: { fontSize: 18, fontWeight: 650, letterSpacing: "-0.01em", color: "var(--dt-ink-strong)" }, children: title }) : null,
56
+ description ? /* @__PURE__ */ jsx("p", { style: { marginTop: 6, fontSize: 13, lineHeight: 1.55, color: "var(--dt-muted-strong)", maxWidth: 560 }, children: description }) : null
57
+ ] }),
58
+ action ? /* @__PURE__ */ jsx("div", { style: { flex: "0 0 auto" }, children: action }) : null
59
+ ]
60
+ }
61
+ ) : null,
62
+ /* @__PURE__ */ jsx("div", { className: cx(contentClassName), children })
63
+ ]
64
+ }
65
+ );
66
+ }
67
+
68
+ export { SectionCard };
69
+ //# sourceMappingURL=SectionCard.mjs.map
70
+ //# sourceMappingURL=SectionCard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cx.ts","../../../src/components/product/SectionCard.tsx"],"names":[],"mappings":";;;AAAO,SAAS,MAAM,OAAA,EAA2D;AAC/E,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;ACgBO,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,OAAA,IAAW,KAAA,IAAS,eAAe,MAAM,CAAA;AACnE,EAAA,uBACE,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,YAAA,EAAc,qBAAA;AAAA,QACd,UAAA,EAAY,mBAAA;AAAA,QACZ,SAAA,EAAW,qCAAA;AAAA,QACX,OAAA,EAAS,mBAAA;AAAA,QACT,GAAG;AAAA,OACL;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,SAAA,mBACC,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,YAAA;AAAA,cACZ,cAAA,EAAgB,eAAA;AAAA,cAChB,GAAA,EAAK,mBAAA;AAAA,cACL,YAAA,EAAc,WAAW,mBAAA,GAAsB;AAAA,aACjD;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,GAAE,EACvB,QAAA,EAAA;AAAA,gBAAA,OAAA,mBACC,GAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,YAAA,EAAc,CAAA;AAAA,sBACd,QAAA,EAAU,EAAA;AAAA,sBACV,UAAA,EAAY,GAAA;AAAA,sBACZ,aAAA,EAAe,WAAA;AAAA,sBACf,KAAA,EAAO;AAAA,qBACT;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,iBACH,GACE,IAAA;AAAA,gBACH,KAAA,mBACC,GAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,GAAA,EAAK,eAAe,SAAA,EAAW,KAAA,EAAO,sBAAA,EAAuB,EACjG,iBACH,CAAA,GACE,IAAA;AAAA,gBACH,8BACC,GAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,WAAW,CAAA,EAAG,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,MAAM,KAAA,EAAO,wBAAA,EAA0B,UAAU,GAAA,EAAI,EACtG,uBACH,CAAA,GACE;AAAA,eAAA,EACN,CAAA;AAAA,cACC,MAAA,uBAAU,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAW,EAAI,QAAA,EAAA,MAAA,EAAO,CAAA,GAAS;AAAA;AAAA;AAAA,SAC/D,GACE,IAAA;AAAA,4BACH,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gBAAgB,GAAI,QAAA,EAAS;AAAA;AAAA;AAAA,GAClD;AAEJ","file":"SectionCard.mjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface SectionCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: string;\n title?: ReactNode;\n description?: ReactNode;\n /** Right-aligned action (usually a ghost Button). */\n action?: ReactNode;\n children?: ReactNode;\n contentClassName?: string;\n}\n\n/**\n * Console section panel — title, description, action, body. No eyebrow kicker:\n * the title is a plain noun-phrase heading, the section's own content does the\n * rest. Lay items flat inside; never card-in-card.\n */\nexport function SectionCard({\n eyebrow,\n title,\n description,\n action,\n children,\n contentClassName,\n style,\n ...rest\n}: SectionCardProps) {\n const hasHeader = Boolean(eyebrow || title || description || action);\n return (\n <section\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-lg)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: 'var(--dt-space-4)',\n ...style,\n }}\n >\n {hasHeader ? (\n <header\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 'var(--dt-space-3)',\n marginBottom: children ? 'var(--dt-space-3)' : 0,\n }}\n >\n <div style={{ minWidth: 0 }}>\n {eyebrow ? (\n <p\n style={{\n marginBottom: 6,\n fontSize: 12,\n fontWeight: 650,\n textTransform: 'uppercase',\n color: 'var(--dt-muted)',\n }}\n >\n {eyebrow}\n </p>\n ) : null}\n {title ? (\n <h3 style={{ fontSize: 18, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>\n {title}\n </h3>\n ) : null}\n {description ? (\n <p style={{ marginTop: 6, fontSize: 13, lineHeight: 1.55, color: 'var(--dt-muted-strong)', maxWidth: 560 }}>\n {description}\n </p>\n ) : null}\n </div>\n {action ? <div style={{ flex: '0 0 auto' }}>{action}</div> : null}\n </header>\n ) : null}\n <div className={cx(contentClassName)}>{children}</div>\n </section>\n );\n}\n"]}