@bridger-kr/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/components/core/Badge.cjs +36 -0
- package/dist/components/core/Badge.cjs.map +1 -0
- package/dist/components/core/Badge.d.cts +18 -0
- package/dist/components/core/Badge.d.ts +18 -0
- package/dist/components/core/Badge.mjs +34 -0
- package/dist/components/core/Badge.mjs.map +1 -0
- package/dist/components/core/Button.cjs +57 -0
- package/dist/components/core/Button.cjs.map +1 -0
- package/dist/components/core/Button.d.cts +26 -0
- package/dist/components/core/Button.d.ts +26 -0
- package/dist/components/core/Button.mjs +55 -0
- package/dist/components/core/Button.mjs.map +1 -0
- package/dist/components/core/Card.cjs +57 -0
- package/dist/components/core/Card.cjs.map +1 -0
- package/dist/components/core/Card.d.cts +27 -0
- package/dist/components/core/Card.d.ts +27 -0
- package/dist/components/core/Card.mjs +54 -0
- package/dist/components/core/Card.mjs.map +1 -0
- package/dist/components/core/FilterChip.cjs +54 -0
- package/dist/components/core/FilterChip.cjs.map +1 -0
- package/dist/components/core/FilterChip.d.cts +23 -0
- package/dist/components/core/FilterChip.d.ts +23 -0
- package/dist/components/core/FilterChip.mjs +52 -0
- package/dist/components/core/FilterChip.mjs.map +1 -0
- package/dist/components/core/Input.cjs +67 -0
- package/dist/components/core/Input.cjs.map +1 -0
- package/dist/components/core/Input.d.cts +20 -0
- package/dist/components/core/Input.d.ts +20 -0
- package/dist/components/core/Input.mjs +65 -0
- package/dist/components/core/Input.mjs.map +1 -0
- package/dist/components/core/StatusPill.cjs +57 -0
- package/dist/components/core/StatusPill.cjs.map +1 -0
- package/dist/components/core/StatusPill.d.cts +19 -0
- package/dist/components/core/StatusPill.d.ts +19 -0
- package/dist/components/core/StatusPill.mjs +55 -0
- package/dist/components/core/StatusPill.mjs.map +1 -0
- package/dist/components/core/Surface.cjs +52 -0
- package/dist/components/core/Surface.cjs.map +1 -0
- package/dist/components/core/Surface.d.cts +24 -0
- package/dist/components/core/Surface.d.ts +24 -0
- package/dist/components/core/Surface.mjs +47 -0
- package/dist/components/core/Surface.mjs.map +1 -0
- package/dist/components/core/Tabs.cjs +64 -0
- package/dist/components/core/Tabs.cjs.map +1 -0
- package/dist/components/core/Tabs.d.cts +24 -0
- package/dist/components/core/Tabs.d.ts +24 -0
- package/dist/components/core/Tabs.mjs +62 -0
- package/dist/components/core/Tabs.mjs.map +1 -0
- package/dist/components/data/Avatar.cjs +40 -0
- package/dist/components/data/Avatar.cjs.map +1 -0
- package/dist/components/data/Avatar.d.cts +24 -0
- package/dist/components/data/Avatar.d.ts +24 -0
- package/dist/components/data/Avatar.mjs +38 -0
- package/dist/components/data/Avatar.mjs.map +1 -0
- package/dist/components/data/CodeBlock.cjs +92 -0
- package/dist/components/data/CodeBlock.cjs.map +1 -0
- package/dist/components/data/CodeBlock.d.cts +20 -0
- package/dist/components/data/CodeBlock.d.ts +20 -0
- package/dist/components/data/CodeBlock.mjs +90 -0
- package/dist/components/data/CodeBlock.mjs.map +1 -0
- package/dist/components/data/KeyValue.cjs +55 -0
- package/dist/components/data/KeyValue.cjs.map +1 -0
- package/dist/components/data/KeyValue.d.cts +24 -0
- package/dist/components/data/KeyValue.d.ts +24 -0
- package/dist/components/data/KeyValue.mjs +53 -0
- package/dist/components/data/KeyValue.mjs.map +1 -0
- package/dist/components/data/LogRow.cjs +55 -0
- package/dist/components/data/LogRow.cjs.map +1 -0
- package/dist/components/data/LogRow.d.cts +23 -0
- package/dist/components/data/LogRow.d.ts +23 -0
- package/dist/components/data/LogRow.mjs +53 -0
- package/dist/components/data/LogRow.mjs.map +1 -0
- package/dist/components/data/Pagination.cjs +44 -0
- package/dist/components/data/Pagination.cjs.map +1 -0
- package/dist/components/data/Pagination.d.cts +13 -0
- package/dist/components/data/Pagination.d.ts +13 -0
- package/dist/components/data/Pagination.mjs +42 -0
- package/dist/components/data/Pagination.mjs.map +1 -0
- package/dist/components/data/StatTile.cjs +20 -0
- package/dist/components/data/StatTile.cjs.map +1 -0
- package/dist/components/data/StatTile.d.cts +19 -0
- package/dist/components/data/StatTile.d.ts +19 -0
- package/dist/components/data/StatTile.mjs +18 -0
- package/dist/components/data/StatTile.mjs.map +1 -0
- package/dist/components/data/Table.cjs +45 -0
- package/dist/components/data/Table.cjs.map +1 -0
- package/dist/components/data/Table.d.cts +27 -0
- package/dist/components/data/Table.d.ts +27 -0
- package/dist/components/data/Table.mjs +43 -0
- package/dist/components/data/Table.mjs.map +1 -0
- package/dist/components/data/UsageMeter.cjs +28 -0
- package/dist/components/data/UsageMeter.cjs.map +1 -0
- package/dist/components/data/UsageMeter.d.cts +19 -0
- package/dist/components/data/UsageMeter.d.ts +19 -0
- package/dist/components/data/UsageMeter.mjs +26 -0
- package/dist/components/data/UsageMeter.mjs.map +1 -0
- package/dist/components/feedback/Alert.cjs +78 -0
- package/dist/components/feedback/Alert.cjs.map +1 -0
- package/dist/components/feedback/Alert.d.cts +29 -0
- package/dist/components/feedback/Alert.d.ts +29 -0
- package/dist/components/feedback/Alert.mjs +74 -0
- package/dist/components/feedback/Alert.mjs.map +1 -0
- package/dist/components/feedback/Dialog.cjs +62 -0
- package/dist/components/feedback/Dialog.cjs.map +1 -0
- package/dist/components/feedback/Dialog.d.cts +17 -0
- package/dist/components/feedback/Dialog.d.ts +17 -0
- package/dist/components/feedback/Dialog.mjs +60 -0
- package/dist/components/feedback/Dialog.mjs.map +1 -0
- package/dist/components/feedback/Drawer.cjs +58 -0
- package/dist/components/feedback/Drawer.cjs.map +1 -0
- package/dist/components/feedback/Drawer.d.cts +22 -0
- package/dist/components/feedback/Drawer.d.ts +22 -0
- package/dist/components/feedback/Drawer.mjs +56 -0
- package/dist/components/feedback/Drawer.mjs.map +1 -0
- package/dist/components/feedback/EmptyState.cjs +36 -0
- package/dist/components/feedback/EmptyState.cjs.map +1 -0
- package/dist/components/feedback/EmptyState.d.cts +14 -0
- package/dist/components/feedback/EmptyState.d.ts +14 -0
- package/dist/components/feedback/EmptyState.mjs +34 -0
- package/dist/components/feedback/EmptyState.mjs.map +1 -0
- package/dist/components/feedback/Skeleton.cjs +19 -0
- package/dist/components/feedback/Skeleton.cjs.map +1 -0
- package/dist/components/feedback/Skeleton.d.cts +12 -0
- package/dist/components/feedback/Skeleton.d.ts +12 -0
- package/dist/components/feedback/Skeleton.mjs +17 -0
- package/dist/components/feedback/Skeleton.mjs.map +1 -0
- package/dist/components/feedback/Spinner.cjs +17 -0
- package/dist/components/feedback/Spinner.cjs.map +1 -0
- package/dist/components/feedback/Spinner.d.cts +12 -0
- package/dist/components/feedback/Spinner.d.ts +12 -0
- package/dist/components/feedback/Spinner.mjs +15 -0
- package/dist/components/feedback/Spinner.mjs.map +1 -0
- package/dist/components/feedback/Toast.cjs +32 -0
- package/dist/components/feedback/Toast.cjs.map +1 -0
- package/dist/components/feedback/Toast.d.cts +20 -0
- package/dist/components/feedback/Toast.d.ts +20 -0
- package/dist/components/feedback/Toast.mjs +30 -0
- package/dist/components/feedback/Toast.mjs.map +1 -0
- package/dist/components/feedback/Tooltip.cjs +51 -0
- package/dist/components/feedback/Tooltip.cjs.map +1 -0
- package/dist/components/feedback/Tooltip.d.cts +11 -0
- package/dist/components/feedback/Tooltip.d.ts +11 -0
- package/dist/components/feedback/Tooltip.mjs +49 -0
- package/dist/components/feedback/Tooltip.mjs.map +1 -0
- package/dist/components/forms/Checkbox.cjs +74 -0
- package/dist/components/forms/Checkbox.cjs.map +1 -0
- package/dist/components/forms/Checkbox.d.cts +16 -0
- package/dist/components/forms/Checkbox.d.ts +16 -0
- package/dist/components/forms/Checkbox.mjs +72 -0
- package/dist/components/forms/Checkbox.mjs.map +1 -0
- package/dist/components/forms/Combobox.cjs +217 -0
- package/dist/components/forms/Combobox.cjs.map +1 -0
- package/dist/components/forms/Combobox.d.cts +27 -0
- package/dist/components/forms/Combobox.d.ts +27 -0
- package/dist/components/forms/Combobox.mjs +215 -0
- package/dist/components/forms/Combobox.mjs.map +1 -0
- package/dist/components/forms/FileUpload.cjs +187 -0
- package/dist/components/forms/FileUpload.cjs.map +1 -0
- package/dist/components/forms/FileUpload.d.cts +26 -0
- package/dist/components/forms/FileUpload.d.ts +26 -0
- package/dist/components/forms/FileUpload.mjs +185 -0
- package/dist/components/forms/FileUpload.mjs.map +1 -0
- package/dist/components/forms/RadioGroup.cjs +73 -0
- package/dist/components/forms/RadioGroup.cjs.map +1 -0
- package/dist/components/forms/RadioGroup.d.cts +21 -0
- package/dist/components/forms/RadioGroup.d.ts +21 -0
- package/dist/components/forms/RadioGroup.mjs +71 -0
- package/dist/components/forms/RadioGroup.mjs.map +1 -0
- package/dist/components/forms/SegmentedControl.cjs +67 -0
- package/dist/components/forms/SegmentedControl.cjs.map +1 -0
- package/dist/components/forms/SegmentedControl.d.cts +19 -0
- package/dist/components/forms/SegmentedControl.d.ts +19 -0
- package/dist/components/forms/SegmentedControl.mjs +65 -0
- package/dist/components/forms/SegmentedControl.mjs.map +1 -0
- package/dist/components/forms/Select.cjs +67 -0
- package/dist/components/forms/Select.cjs.map +1 -0
- package/dist/components/forms/Select.d.cts +23 -0
- package/dist/components/forms/Select.d.ts +23 -0
- package/dist/components/forms/Select.mjs +65 -0
- package/dist/components/forms/Select.mjs.map +1 -0
- package/dist/components/forms/Slider.cjs +129 -0
- package/dist/components/forms/Slider.cjs.map +1 -0
- package/dist/components/forms/Slider.d.cts +24 -0
- package/dist/components/forms/Slider.d.ts +24 -0
- package/dist/components/forms/Slider.mjs +127 -0
- package/dist/components/forms/Slider.mjs.map +1 -0
- package/dist/components/forms/Switch.cjs +101 -0
- package/dist/components/forms/Switch.cjs.map +1 -0
- package/dist/components/forms/Switch.d.cts +24 -0
- package/dist/components/forms/Switch.d.ts +24 -0
- package/dist/components/forms/Switch.mjs +98 -0
- package/dist/components/forms/Switch.mjs.map +1 -0
- package/dist/components/forms/Textarea.cjs +35 -0
- package/dist/components/forms/Textarea.cjs.map +1 -0
- package/dist/components/forms/Textarea.d.cts +15 -0
- package/dist/components/forms/Textarea.d.ts +15 -0
- package/dist/components/forms/Textarea.mjs +33 -0
- package/dist/components/forms/Textarea.mjs.map +1 -0
- package/dist/components/navigation/Breadcrumb.cjs +27 -0
- package/dist/components/navigation/Breadcrumb.cjs.map +1 -0
- package/dist/components/navigation/Breadcrumb.d.cts +15 -0
- package/dist/components/navigation/Breadcrumb.d.ts +15 -0
- package/dist/components/navigation/Breadcrumb.mjs +25 -0
- package/dist/components/navigation/Breadcrumb.mjs.map +1 -0
- package/dist/components/navigation/CommandPalette.cjs +136 -0
- package/dist/components/navigation/CommandPalette.cjs.map +1 -0
- package/dist/components/navigation/CommandPalette.d.cts +26 -0
- package/dist/components/navigation/CommandPalette.d.ts +26 -0
- package/dist/components/navigation/CommandPalette.mjs +134 -0
- package/dist/components/navigation/CommandPalette.mjs.map +1 -0
- package/dist/components/navigation/Menu.cjs +104 -0
- package/dist/components/navigation/Menu.cjs.map +1 -0
- package/dist/components/navigation/Menu.d.cts +20 -0
- package/dist/components/navigation/Menu.d.ts +20 -0
- package/dist/components/navigation/Menu.mjs +102 -0
- package/dist/components/navigation/Menu.mjs.map +1 -0
- package/dist/components/navigation/Sidebar.cjs +60 -0
- package/dist/components/navigation/Sidebar.cjs.map +1 -0
- package/dist/components/navigation/Sidebar.d.cts +30 -0
- package/dist/components/navigation/Sidebar.d.ts +30 -0
- package/dist/components/navigation/Sidebar.mjs +58 -0
- package/dist/components/navigation/Sidebar.mjs.map +1 -0
- package/dist/components/navigation/Stepper.cjs +55 -0
- package/dist/components/navigation/Stepper.cjs.map +1 -0
- package/dist/components/navigation/Stepper.d.cts +21 -0
- package/dist/components/navigation/Stepper.d.ts +21 -0
- package/dist/components/navigation/Stepper.mjs +53 -0
- package/dist/components/navigation/Stepper.mjs.map +1 -0
- package/dist/components/product/BrandLogo.cjs +159 -0
- package/dist/components/product/BrandLogo.cjs.map +1 -0
- package/dist/components/product/BrandLogo.d.cts +28 -0
- package/dist/components/product/BrandLogo.d.ts +28 -0
- package/dist/components/product/BrandLogo.mjs +156 -0
- package/dist/components/product/BrandLogo.mjs.map +1 -0
- package/dist/components/product/ProductActionPill.cjs +57 -0
- package/dist/components/product/ProductActionPill.cjs.map +1 -0
- package/dist/components/product/ProductActionPill.d.cts +31 -0
- package/dist/components/product/ProductActionPill.d.ts +31 -0
- package/dist/components/product/ProductActionPill.mjs +52 -0
- package/dist/components/product/ProductActionPill.mjs.map +1 -0
- package/dist/components/product/ProductCinematic.cjs +69 -0
- package/dist/components/product/ProductCinematic.cjs.map +1 -0
- package/dist/components/product/ProductCinematic.d.cts +33 -0
- package/dist/components/product/ProductCinematic.d.ts +33 -0
- package/dist/components/product/ProductCinematic.mjs +63 -0
- package/dist/components/product/ProductCinematic.mjs.map +1 -0
- package/dist/components/product/ProductPageHeader.cjs +35 -0
- package/dist/components/product/ProductPageHeader.cjs.map +1 -0
- package/dist/components/product/ProductPageHeader.d.cts +13 -0
- package/dist/components/product/ProductPageHeader.d.ts +13 -0
- package/dist/components/product/ProductPageHeader.mjs +33 -0
- package/dist/components/product/ProductPageHeader.mjs.map +1 -0
- package/dist/components/product/SectionCard.cjs +72 -0
- package/dist/components/product/SectionCard.cjs.map +1 -0
- package/dist/components/product/SectionCard.d.cts +20 -0
- package/dist/components/product/SectionCard.d.ts +20 -0
- package/dist/components/product/SectionCard.mjs +70 -0
- package/dist/components/product/SectionCard.mjs.map +1 -0
- package/dist/components/product/ToolCard.cjs +70 -0
- package/dist/components/product/ToolCard.cjs.map +1 -0
- package/dist/components/product/ToolCard.d.cts +22 -0
- package/dist/components/product/ToolCard.d.ts +22 -0
- package/dist/components/product/ToolCard.mjs +68 -0
- package/dist/components/product/ToolCard.mjs.map +1 -0
- package/dist/index.cjs +2593 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +49 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.mjs +2532 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +463 -0
- package/package.json +50 -0
|
@@ -0,0 +1,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":";;;;;AAAO,SAAS,MAAM,OAAA,EAA2D;AAC/E,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;ACCO,IAAM,kBAAA,GAAqB;AAAA,EAChC,SAAA,EAAW,WAAA;AAAA,EACX,OAAA,EAAS;AACX;AAIA,IAAM,gBAAA,GAAqD;AAAA,EACzD,CAAC,kBAAA,CAAmB,SAAS,GAAG,4BAAA;AAAA,EAChC,CAAC,kBAAA,CAAmB,OAAO,GAAG;AAChC,CAAA;AAMO,SAAS,YAAA,CAAa,EAAE,IAAA,GAAO,kBAAA,CAAmB,WAAW,SAAA,EAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAsB;AACrH,EAAA,uBACEA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,gBAAA,CAAiB,IAAI,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,IAAA,EAC5E,QAAA,EACH,CAAA;AAEJ;AAMO,SAAS,wBAAA,CAAyB;AAAA,EACvC,QAAA,GAAW,IAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkC;AAChC,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,QAAA,IAAY,0CAA0C,SAAS,CAAA;AAAA,MAC9G,aAAA,EAAY,MAAA;AAAA,MACX,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2BAAA,EAA4B,CAAA;AAAA,wCAC1C,KAAA,EAAA,EAAI,SAAA,EAAU,8BAA6B,OAAA,EAAQ,cAAA,EAAe,qBAAoB,gBAAA,EACrF,QAAA,EAAA;AAAA,0BAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAAE,8CAAA,EAA+C,CAAA;AAAA,0BAC9FA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,GAAE,8CAAA,EAA+C,CAAA;AAAA,0BAC9FA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,GAAE,8CAAA,EAA+C,CAAA;AAAA,0BAC9FA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAwD,GAAE,8CAAA,EAA+C,CAAA;AAAA,0BACzHA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAwD,GAAE,8CAAA,EAA+C,CAAA;AAAA,0BACzHA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAwD,GAAE,8CAAA,EAA+C;AAAA,SAAA,EAC3H;AAAA;AAAA;AAAA,GACF;AAEJ;AAOO,SAAS,kBAAA,CAAmB;AAAA,EACjC,OAAA;AAAA,EACA,KAAA,GAAQ,yBAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA,EAAG,YAAA,EAAY,KAAA,EAAQ,GAAG,IAAA,EAC9E,QAAA,EAAA;AAAA,IAAA,OAAA,mBAAUD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAAyB,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI,EAAA,EAAG,aAAA,EAAY,MAAA,EAAO,OAAA,EAAQ,MAAA,EAAO,CAAA,GAAK,IAAA;AAAA,oBAC/GA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAA,EAAoD,aAAA,EAAY,QAC9E,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAAyB,CAAA,EAC3C,CAAA;AAAA,oBACAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAA,EAAoD,aAAA,EAAY,QAC9E,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAAyB,CAAA,EAC3C,CAAA;AAAA,oBACAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAAyB,eAAY,MAAA,EAAO,CAAA;AAAA,oBAC5DA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAAyB,QAAA,EAAA,KAAA,EAAG;AAAA,GAAA,EAC9C,CAAA;AAEJ;AAaO,SAAS,gBAAgB,EAAE,KAAA,EAAO,OAAO,SAAA,EAAW,GAAG,MAAK,EAAyB;AAC1F,EAAA,uBACEA,cAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA,EAAG,YAAA,EAAY,KAAA,EAAQ,GAAG,IAAA,EAC7E,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,qBACVA,cAAA,CAAC,GAAA,EAAA,EAAiB,IAAA,EAAM,IAAA,CAAK,IAAA,EAC1B,QAAA,EAAA,IAAA,CAAK,KAAA,EAAA,EADA,IAAA,CAAK,GAEb,CACD,CAAA,EACH,CAAA;AAEJ","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"]}
|