rspress-plugin-api-extractor 0.1.1 → 0.2.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 +2 -2
- package/api-extracted-package.js +426 -0
- package/build-program.js +120 -0
- package/build-stages.js +664 -0
- package/category-resolver.js +50 -0
- package/code-post-processor.js +38 -0
- package/config-helpers.js +106 -0
- package/config-utils.js +258 -0
- package/content-hash.js +79 -0
- package/errors.js +29 -0
- package/formatter.js +69 -0
- package/hide-cut-transformer.js +96 -0
- package/index.d.ts +901 -831
- package/index.js +4 -6332
- package/layers/ConfigServiceLive.js +377 -0
- package/layers/ObservabilityLive.js +136 -0
- package/layers/PathDerivationServiceLive.js +16 -0
- package/layers/SnapshotServiceLive.js +94 -0
- package/layers/TypeRegistryServiceLive.js +46 -0
- package/llms-processing.js +270 -0
- package/llms-program.js +262 -0
- package/loader.js +186 -0
- package/markdown/cross-linker.js +156 -0
- package/markdown/helpers.js +364 -0
- package/markdown/index.js +11 -0
- package/markdown/page-generators/class-page.js +357 -0
- package/markdown/page-generators/enum-page.js +152 -0
- package/markdown/page-generators/function-page.js +127 -0
- package/markdown/page-generators/index-pages.js +27 -0
- package/markdown/page-generators/interface-page.js +307 -0
- package/markdown/page-generators/namespace-page.js +280 -0
- package/markdown/page-generators/type-alias-page.js +110 -0
- package/markdown/page-generators/variable-page.js +110 -0
- package/markdown/shiki-utils.js +48 -0
- package/migrations/001_create_snapshots.js +25 -0
- package/model-loader.js +95 -0
- package/multi-entry-resolver.js +70 -0
- package/og-resolver.js +271 -0
- package/package.json +63 -72
- package/path-derivation.js +48 -0
- package/plugin.js +218 -0
- package/prettier-formatter.js +73 -0
- package/public/tsconfig/rspress.json +44 -0
- package/remark-api-codeblocks.js +130 -0
- package/remark-with-api.js +172 -0
- package/route-collisions.js +52 -0
- package/runtime/components/ApiExample/index.js +33 -0
- package/runtime/components/ApiLlmsPackageActions/index.js +277 -0
- package/runtime/components/ApiLlmsViewOptions/index.js +294 -0
- package/runtime/components/ApiMember/index.js +53 -0
- package/runtime/components/ApiSignature/index.js +36 -0
- package/runtime/components/EnumMembersTable/index.css +99 -0
- package/runtime/components/EnumMembersTable/index.js +38 -0
- package/runtime/components/EnumMembersTable/index.module.js +10 -0
- package/runtime/components/ExampleBlock/index.css +11 -0
- package/runtime/components/ExampleBlock/index.js +31 -0
- package/runtime/components/ExampleBlock/index.module.js +9 -0
- package/runtime/components/MarkdownContent/index.js +31 -0
- package/runtime/components/MarkdownText/index.js +33 -0
- package/runtime/components/MemberSignature/index.css +26 -0
- package/runtime/components/MemberSignature/index.js +54 -0
- package/runtime/components/MemberSignature/index.module.js +10 -0
- package/runtime/components/ParametersTable/index.css +103 -0
- package/runtime/components/ParametersTable/index.js +38 -0
- package/runtime/components/ParametersTable/index.module.js +10 -0
- package/runtime/components/SignatureBlock/index.css +26 -0
- package/runtime/components/SignatureBlock/index.js +36 -0
- package/runtime/components/SignatureBlock/index.module.js +10 -0
- package/runtime/components/SignatureCode/index.css +52 -0
- package/runtime/components/SignatureCode/index.js +44 -0
- package/runtime/components/SignatureCode/index.module.js +10 -0
- package/runtime/components/SignatureToolbar/index.css +122 -0
- package/runtime/components/SignatureToolbar/index.js +52 -0
- package/runtime/components/SignatureToolbar/index.module.js +14 -0
- package/runtime/components/buttons/ButtonGroup.js +16 -0
- package/runtime/components/buttons/CopyCodeButton.js +44 -0
- package/runtime/components/buttons/WrapSignatureButton.js +24 -0
- package/runtime/components/buttons/index.css +36 -0
- package/runtime/components/buttons/index.module.js +9 -0
- package/runtime/components/icons/CheckIcon/index.js +23 -0
- package/runtime/components/icons/CopyIcon/index.js +23 -0
- package/runtime/components/icons/UnwrapIcon/index.js +25 -0
- package/runtime/components/icons/WrapIcon/index.js +23 -0
- package/runtime/components/shared/_twoslash.css +440 -0
- package/runtime/components/shared/types.js +0 -0
- package/runtime/components/shared/variables.css +82 -0
- package/runtime/hooks/useWrapToggle.js +35 -0
- package/runtime/index.d.ts +513 -173
- package/runtime/index.js +13 -664
- package/runtime/utils/decode-hast.js +33 -0
- package/runtime/utils/hast-renderer.js +24 -0
- package/schemas/config.js +199 -0
- package/schemas/index.js +5 -0
- package/schemas/opengraph.js +26 -0
- package/schemas/performance.js +19 -0
- package/serve.js +133 -0
- package/services/ConfigService.js +7 -0
- package/services/PathDerivationService.js +7 -0
- package/services/SnapshotService.js +7 -0
- package/services/TypeRegistryService.js +7 -0
- package/shiki-transformer.js +758 -0
- package/tsconfig-parser.js +127 -0
- package/tsdoc-metadata.json +11 -11
- package/twoslash-patterns.js +87 -0
- package/twoslash-transformer.js +316 -0
- package/type-reference-extractor.js +201 -0
- package/typescript-config.js +168 -0
- package/vfs-registry.js +121 -0
- package/0~llms-program.js +0 -344
- package/runtime/index.css +0 -1016
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { hastToReact } from "../../utils/hast-renderer.js";
|
|
2
|
+
import index_module_default from "./index.module.js";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import clsx from "clsx";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/components/SignatureCode/index.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Code block for displaying syntax-highlighted signatures
|
|
10
|
+
* Supports wrapped and unwrapped states
|
|
11
|
+
* Uses HAST for safe rendering without dangerouslySetInnerHTML
|
|
12
|
+
*/
|
|
13
|
+
function SignatureCode({ hast, wrapped }) {
|
|
14
|
+
const containerRef = useRef(null);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const container = containerRef.current;
|
|
17
|
+
if (!container) return;
|
|
18
|
+
const handleMouseOver = (e) => {
|
|
19
|
+
const hover = e.target.closest?.(".twoslash-hover");
|
|
20
|
+
if (!hover) return;
|
|
21
|
+
const popup = hover.querySelector(".twoslash-popup-container");
|
|
22
|
+
if (!popup) return;
|
|
23
|
+
const hoverRect = hover.getBoundingClientRect();
|
|
24
|
+
const containerWidth = container.getBoundingClientRect().width;
|
|
25
|
+
popup.style.setProperty("--popup-top", `${hoverRect.bottom + 4}px`);
|
|
26
|
+
popup.style.setProperty("--popup-left", `${hoverRect.left}px`);
|
|
27
|
+
popup.style.setProperty("--popup-max-width", `${containerWidth * .75}px`);
|
|
28
|
+
};
|
|
29
|
+
container.addEventListener("mouseover", handleMouseOver);
|
|
30
|
+
return () => container.removeEventListener("mouseover", handleMouseOver);
|
|
31
|
+
}, []);
|
|
32
|
+
if (!hast) return /* @__PURE__ */ jsx("div", {
|
|
33
|
+
ref: containerRef,
|
|
34
|
+
className: clsx(index_module_default.code, wrapped && index_module_default.wrapped)
|
|
35
|
+
});
|
|
36
|
+
return /* @__PURE__ */ jsx("div", {
|
|
37
|
+
ref: containerRef,
|
|
38
|
+
className: clsx("api-doc-code", index_module_default.code, wrapped && index_module_default.wrapped),
|
|
39
|
+
children: hastToReact(hast)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { SignatureCode };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import './index.css';
|
|
2
|
+
//#region src/runtime/components/SignatureCode/index.module.css
|
|
3
|
+
var index_module_default = {
|
|
4
|
+
"code": "Ze8uHG_code",
|
|
5
|
+
"rpDark": "Ze8uHG_rp-dark",
|
|
6
|
+
"wrapped": "Ze8uHG_wrapped"
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { index_module_default as default };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
.HQ_pKG_toolbar {
|
|
2
|
+
justify-content: flex-end;
|
|
3
|
+
align-items: flex-end;
|
|
4
|
+
gap: var(--api-spacing-sm);
|
|
5
|
+
padding: var(--api-spacing-sm);
|
|
6
|
+
background-color: var(--api-color-bg);
|
|
7
|
+
border-top-left-radius: var(--api-border-radius);
|
|
8
|
+
border-top-right-radius: var(--api-border-radius);
|
|
9
|
+
display: flex;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
html.HQ_pKG_rp-dark .HQ_pKG_toolbar {
|
|
13
|
+
background-color: var(--api-color-bg);
|
|
14
|
+
border-bottom-color: var(--api-color-border);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.HQ_pKG_toolbar:has(.HQ_pKG_memberHeading) {
|
|
18
|
+
justify-content: space-between;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.HQ_pKG_toolbar h2, .HQ_pKG_toolbar h3 {
|
|
22
|
+
font-size: var(--api-font-size-lg);
|
|
23
|
+
padding-left: var(--api-spacing-sm);
|
|
24
|
+
font-family: var(--rp-font-family-mono);
|
|
25
|
+
margin-top: 0;
|
|
26
|
+
margin-bottom: 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.HQ_pKG_toolbarLeft {
|
|
30
|
+
gap: var(--api-spacing-sm);
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
flex: 1;
|
|
33
|
+
display: flex;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.HQ_pKG_memberHeading {
|
|
37
|
+
font-size: var(--api-font-size-md);
|
|
38
|
+
color: var(--api-color-text);
|
|
39
|
+
height: auto;
|
|
40
|
+
font-weight: 600;
|
|
41
|
+
line-height: var(--api-line-height-base);
|
|
42
|
+
user-select: auto;
|
|
43
|
+
margin: 0;
|
|
44
|
+
position: relative;
|
|
45
|
+
overflow: visible;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
html.HQ_pKG_rp-dark .HQ_pKG_memberHeading {
|
|
49
|
+
color: var(--api-color-text);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.HQ_pKG_memberHeading .rp-header-anchor {
|
|
53
|
+
opacity: 0;
|
|
54
|
+
font-weight: 500;
|
|
55
|
+
font-size: inherit;
|
|
56
|
+
color: var(--rp-c-brand);
|
|
57
|
+
text-decoration: none;
|
|
58
|
+
transition: color .25s, opacity .25s;
|
|
59
|
+
position: absolute;
|
|
60
|
+
left: -1.2rem;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.HQ_pKG_memberHeading:hover .rp-header-anchor {
|
|
64
|
+
opacity: .85;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.HQ_pKG_memberHeading .rp-header-anchor:hover {
|
|
68
|
+
border-bottom: 1px solid var(--rp-c-brand);
|
|
69
|
+
opacity: .85;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.HQ_pKG_memberHeadingH2 {
|
|
73
|
+
font-size: var(--api-font-size-lg);
|
|
74
|
+
text-transform: lowercase;
|
|
75
|
+
border-top: none;
|
|
76
|
+
margin-top: 0;
|
|
77
|
+
margin-bottom: 0;
|
|
78
|
+
padding-top: 0;
|
|
79
|
+
font-weight: 600;
|
|
80
|
+
line-height: 2rem;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.HQ_pKG_memberHeadingH2:before, .HQ_pKG_memberHeadingH2:after {
|
|
84
|
+
content: none;
|
|
85
|
+
margin: 0;
|
|
86
|
+
padding: 0;
|
|
87
|
+
display: none;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.HQ_pKG_memberHeadingH2 .rp-header-anchor {
|
|
91
|
+
font-size: var(--api-font-size-lg);
|
|
92
|
+
left: -1.5rem;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.HQ_pKG_summary {
|
|
96
|
+
padding: 0;
|
|
97
|
+
padding-left: var(--api-spacing-sm);
|
|
98
|
+
font-size: var(--api-font-size-md);
|
|
99
|
+
line-height: var(--api-line-height-base);
|
|
100
|
+
color: var(--api-color-text-secondary);
|
|
101
|
+
background-color: #0000;
|
|
102
|
+
border: none;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
html.HQ_pKG_rp-dark .HQ_pKG_summary {
|
|
106
|
+
color: var(--api-color-text-secondary);
|
|
107
|
+
background-color: #0000;
|
|
108
|
+
border: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.HQ_pKG_summary p:first-child {
|
|
112
|
+
margin-top: 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.HQ_pKG_summary p:last-child, .HQ_pKG_summary ul:last-child, .HQ_pKG_summary ol:last-child {
|
|
116
|
+
margin-bottom: 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.HQ_pKG_buttons {
|
|
120
|
+
gap: var(--api-spacing-sm);
|
|
121
|
+
display: flex;
|
|
122
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { MarkdownContent } from "../MarkdownContent/index.js";
|
|
2
|
+
import index_module_default from "./index.module.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import clsx from "clsx";
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/components/SignatureToolbar/index.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Toolbar for signature blocks
|
|
9
|
+
* Displays optional heading, summary, and action buttons
|
|
10
|
+
*/
|
|
11
|
+
function SignatureToolbar({ heading, summary, buttons }) {
|
|
12
|
+
const renderHeading = () => {
|
|
13
|
+
if (!heading) return null;
|
|
14
|
+
const HeadingTag = heading.level;
|
|
15
|
+
const headingClasses = heading.className || clsx("rp-toc-include", index_module_default.memberHeading, heading.level === "h2" && index_module_default.memberHeadingH2);
|
|
16
|
+
return /* @__PURE__ */ jsxs(HeadingTag, {
|
|
17
|
+
id: heading.id,
|
|
18
|
+
className: headingClasses,
|
|
19
|
+
children: [heading.id && /* @__PURE__ */ jsx("a", {
|
|
20
|
+
href: `#${heading.id}`,
|
|
21
|
+
className: "rp-header-anchor rp-link",
|
|
22
|
+
tabIndex: -1,
|
|
23
|
+
"aria-label": "Permalink",
|
|
24
|
+
children: "#"
|
|
25
|
+
}), heading.text]
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const renderSummary = () => {
|
|
29
|
+
if (!summary) return null;
|
|
30
|
+
return /* @__PURE__ */ jsx("div", {
|
|
31
|
+
className: index_module_default.summary,
|
|
32
|
+
children: /* @__PURE__ */ jsx(MarkdownContent, { children: summary })
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
if (heading) return /* @__PURE__ */ jsxs("div", {
|
|
36
|
+
className: index_module_default.toolbar,
|
|
37
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
38
|
+
className: index_module_default.toolbarLeft,
|
|
39
|
+
children: [renderHeading(), renderSummary()]
|
|
40
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
41
|
+
className: index_module_default.buttons,
|
|
42
|
+
children: buttons
|
|
43
|
+
})]
|
|
44
|
+
});
|
|
45
|
+
return /* @__PURE__ */ jsx("div", {
|
|
46
|
+
className: index_module_default.toolbar,
|
|
47
|
+
children: buttons
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
export { SignatureToolbar };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import './index.css';
|
|
2
|
+
//#region src/runtime/components/SignatureToolbar/index.module.css
|
|
3
|
+
var index_module_default = {
|
|
4
|
+
"buttons": "HQ_pKG_buttons",
|
|
5
|
+
"memberHeading": "HQ_pKG_memberHeading",
|
|
6
|
+
"memberHeadingH2": "HQ_pKG_memberHeadingH2",
|
|
7
|
+
"rpDark": "HQ_pKG_rp-dark",
|
|
8
|
+
"summary": "HQ_pKG_summary",
|
|
9
|
+
"toolbar": "HQ_pKG_toolbar",
|
|
10
|
+
"toolbarLeft": "HQ_pKG_toolbarLeft"
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { index_module_default as default };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import index_module_default from "./index.module.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/components/buttons/ButtonGroup.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Container for grouping multiple buttons with consistent spacing
|
|
7
|
+
*/
|
|
8
|
+
function ButtonGroup({ children }) {
|
|
9
|
+
return /* @__PURE__ */ jsx("div", {
|
|
10
|
+
className: index_module_default.buttonGroup,
|
|
11
|
+
children
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ButtonGroup };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import index_module_default from "./index.module.js";
|
|
2
|
+
import { CheckIcon } from "../icons/CheckIcon/index.js";
|
|
3
|
+
import { CopyIcon } from "../icons/CopyIcon/index.js";
|
|
4
|
+
import { useCallback, useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import clsx from "clsx";
|
|
7
|
+
|
|
8
|
+
//#region src/runtime/components/buttons/CopyCodeButton.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Copy code button for code blocks
|
|
11
|
+
* Shows copy icon, changes to checkmark on success
|
|
12
|
+
*/
|
|
13
|
+
function CopyCodeButton({ code }) {
|
|
14
|
+
const [copied, setCopied] = useState(false);
|
|
15
|
+
const handleCopy = useCallback(async () => {
|
|
16
|
+
try {
|
|
17
|
+
await navigator.clipboard.writeText(code);
|
|
18
|
+
setCopied(true);
|
|
19
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
20
|
+
} catch {
|
|
21
|
+
const textarea = document.createElement("textarea");
|
|
22
|
+
textarea.value = code;
|
|
23
|
+
textarea.style.position = "fixed";
|
|
24
|
+
textarea.style.opacity = "0";
|
|
25
|
+
document.body.appendChild(textarea);
|
|
26
|
+
textarea.select();
|
|
27
|
+
document.execCommand("copy");
|
|
28
|
+
document.body.removeChild(textarea);
|
|
29
|
+
setCopied(true);
|
|
30
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
31
|
+
}
|
|
32
|
+
}, [code]);
|
|
33
|
+
return /* @__PURE__ */ jsx("button", {
|
|
34
|
+
type: "button",
|
|
35
|
+
className: clsx(index_module_default.button, copied && "active"),
|
|
36
|
+
onClick: handleCopy,
|
|
37
|
+
"aria-label": copied ? "Copied!" : "Copy code",
|
|
38
|
+
title: copied ? "Copied!" : "Copy code",
|
|
39
|
+
children: copied ? /* @__PURE__ */ jsx(CheckIcon, { size: 16 }) : /* @__PURE__ */ jsx(CopyIcon, { size: 16 })
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { CopyCodeButton };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import index_module_default from "./index.module.js";
|
|
2
|
+
import { UnwrapIcon } from "../icons/UnwrapIcon/index.js";
|
|
3
|
+
import { WrapIcon } from "../icons/WrapIcon/index.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import clsx from "clsx";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/components/buttons/WrapSignatureButton.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Wrap toggle button for API signature blocks
|
|
10
|
+
* Shows wrapped/unwrapped state with distinct icons
|
|
11
|
+
*/
|
|
12
|
+
function WrapSignatureButton({ wrapped, onToggle }) {
|
|
13
|
+
return /* @__PURE__ */ jsx("button", {
|
|
14
|
+
type: "button",
|
|
15
|
+
className: clsx(index_module_default.button, wrapped && "active"),
|
|
16
|
+
onClick: onToggle,
|
|
17
|
+
"aria-label": wrapped ? "Disable line wrapping" : "Enable line wrapping",
|
|
18
|
+
title: wrapped ? "Disable wrapping" : "Enable wrapping",
|
|
19
|
+
children: wrapped ? /* @__PURE__ */ jsx(UnwrapIcon, { size: 16 }) : /* @__PURE__ */ jsx(WrapIcon, { size: 16 })
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { WrapSignatureButton };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
.Fw3JAa_buttonGroup {
|
|
2
|
+
gap: var(--api-spacing-sm);
|
|
3
|
+
display: flex;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.Fw3JAa_button {
|
|
7
|
+
align-items: center;
|
|
8
|
+
gap: var(--api-spacing-xs);
|
|
9
|
+
padding: var(--api-spacing-xs) var(--api-spacing-md);
|
|
10
|
+
font-size: var(--api-font-size-sm);
|
|
11
|
+
font-weight: 500;
|
|
12
|
+
line-height: var(--api-line-height-button);
|
|
13
|
+
color: var(--api-color-text);
|
|
14
|
+
background-color: var(--api-color-bg-secondary);
|
|
15
|
+
border: 1px solid var(--api-color-border-secondary);
|
|
16
|
+
border-radius: var(--api-border-radius);
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
transition: all var(--api-transition-fast);
|
|
19
|
+
display: inline-flex;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.Fw3JAa_button:hover {
|
|
23
|
+
background-color: var(--api-color-hover-bg);
|
|
24
|
+
border-color: var(--api-color-border-hover);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.Fw3JAa_button:active {
|
|
28
|
+
background-color: var(--api-color-active-bg);
|
|
29
|
+
transform: scale(.98);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.Fw3JAa_button svg {
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
width: 16px;
|
|
35
|
+
height: 16px;
|
|
36
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/components/icons/CheckIcon/index.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Check/checkmark icon for success states
|
|
6
|
+
* Shows a checkmark indicating success/completion
|
|
7
|
+
*/
|
|
8
|
+
function CheckIcon({ size = 16, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
10
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
11
|
+
width: size,
|
|
12
|
+
height: size,
|
|
13
|
+
viewBox: "0 0 24 24",
|
|
14
|
+
...props,
|
|
15
|
+
children: [/* @__PURE__ */ jsx("title", { children: "Copied" }), /* @__PURE__ */ jsx("path", {
|
|
16
|
+
fill: "currentColor",
|
|
17
|
+
d: "M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59L21 7Z"
|
|
18
|
+
})]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { CheckIcon };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/components/icons/CopyIcon/index.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Copy icon for copy code buttons
|
|
6
|
+
* Shows two overlapping rectangles indicating copy/duplicate
|
|
7
|
+
*/
|
|
8
|
+
function CopyIcon({ size = 16, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
10
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
11
|
+
width: size,
|
|
12
|
+
height: size,
|
|
13
|
+
viewBox: "0 0 24 24",
|
|
14
|
+
...props,
|
|
15
|
+
children: [/* @__PURE__ */ jsx("title", { children: "Copy" }), /* @__PURE__ */ jsx("path", {
|
|
16
|
+
fill: "currentColor",
|
|
17
|
+
d: "M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"
|
|
18
|
+
})]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { CopyIcon };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/components/icons/UnwrapIcon/index.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Unwrap icon for text wrapping toggle buttons (active state)
|
|
6
|
+
* Shows wrapped lines with an arrow indicating active wrap mode
|
|
7
|
+
* Uses green color to indicate active state
|
|
8
|
+
*/
|
|
9
|
+
function UnwrapIcon({ size = 16, ...props }) {
|
|
10
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
11
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
12
|
+
width: size,
|
|
13
|
+
height: size,
|
|
14
|
+
viewBox: "0 0 24 24",
|
|
15
|
+
"aria-label": "Wrapped",
|
|
16
|
+
...props,
|
|
17
|
+
children: [/* @__PURE__ */ jsx("title", { children: "Unwrap" }), /* @__PURE__ */ jsx("path", {
|
|
18
|
+
fill: "#22a041",
|
|
19
|
+
d: "M21 5H3v2h18zM3 19h7v-2H3zm0-6h15c1 0 2 .43 2 2s-1 2-2 2h-2v-2l-4 3l4 3v-2h2c2.95 0 4-1.27 4-4c0-2.72-1-4-4-4H3z"
|
|
20
|
+
})]
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { UnwrapIcon };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/components/icons/WrapIcon/index.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Wrap icon for text wrapping toggle buttons
|
|
6
|
+
* Shows lines with an arrow indicating text will wrap
|
|
7
|
+
*/
|
|
8
|
+
function WrapIcon({ size = 16, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
10
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
11
|
+
width: size,
|
|
12
|
+
height: size,
|
|
13
|
+
viewBox: "0 0 24 24",
|
|
14
|
+
...props,
|
|
15
|
+
children: [/* @__PURE__ */ jsx("title", { children: "Wrap" }), /* @__PURE__ */ jsx("path", {
|
|
16
|
+
fill: "currentColor",
|
|
17
|
+
d: "M16 7H3V5h13v2M3 19h13v-2H3v2m19-7l-4-3v2H3v2h15v2l4-3Z"
|
|
18
|
+
})]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { WrapIcon };
|