@oxide/design-system 6.3.0 → 6.4.1-canary.fec0981
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/dist/asciidoc.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as _oxide_react_asciidoc from '@oxide/react-asciidoc';
|
|
3
|
-
import { DocumentSection, Block, DocumentBlock } from '@oxide/react-asciidoc';
|
|
3
|
+
import { DocumentSection, Block, DocumentBlock, InlineOverrides } from '@oxide/react-asciidoc';
|
|
4
4
|
import * as _asciidoctor_core from '@asciidoctor/core';
|
|
5
|
-
import { Document, Registry
|
|
5
|
+
import { Document, Registry } from '@asciidoctor/core';
|
|
6
6
|
|
|
7
7
|
declare function useIntersectionObserver(elements: Element[], callback: IntersectionObserverCallback, options: IntersectionObserverInit): IntersectionObserver | null;
|
|
8
8
|
declare function useActiveSectionTracking(initialSections: Element[], onSectionChange: (element: Element) => void, debug?: boolean): {
|
|
@@ -63,10 +63,19 @@ declare const AsciiDocBlocks: {
|
|
|
63
63
|
* '/<wbr/>path/<wbr/>to/<wbr/>long/<wbr/>file.txt'
|
|
64
64
|
*/
|
|
65
65
|
declare const renderWithBreaks: (text: string) => string;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
66
|
+
/**
|
|
67
|
+
* Inline-level overrides for the renderer. Pass these to `<Asciidoc>` as
|
|
68
|
+
* `options.inlineOverrides` to apply our customisations to inline content:
|
|
69
|
+
*
|
|
70
|
+
* <Asciidoc document={doc} options={{ overrides: AsciiDocBlocks, inlineOverrides }} />
|
|
71
|
+
*
|
|
72
|
+
* The only customisation today is inserting `<wbr/>` break opportunities into
|
|
73
|
+
* inline monospaced (`code`) spans so long paths and URLs wrap nicely. Every
|
|
74
|
+
* other quoted subtype is rendered exactly as the renderer would by default —
|
|
75
|
+
* we round-trip the node through `inlineHtml` (the renderer's own serialiser)
|
|
76
|
+
* and `parse` it back into React elements, so there's no risk of drifting from
|
|
77
|
+
* the stock output.
|
|
78
|
+
*/
|
|
79
|
+
declare const inlineOverrides: InlineOverrides;
|
|
71
80
|
|
|
72
|
-
export { AsciiDocBlocks, DesktopOutline,
|
|
81
|
+
export { AsciiDocBlocks, DesktopOutline, SmallScreenOutline, attrs, handleDocument, highlight, inlineOverrides, loadAsciidoctor, renderWithBreaks, useActiveSectionTracking, useDelegatedReactRouterLinks, useIntersectionObserver };
|
|
@@ -7,11 +7,14 @@ import {
|
|
|
7
7
|
} from "../../../chunk-H5ZEQGTH.js";
|
|
8
8
|
|
|
9
9
|
// components/src/asciidoc/index.tsx
|
|
10
|
-
import
|
|
11
|
-
|
|
10
|
+
import {
|
|
11
|
+
Content as Content4,
|
|
12
|
+
inlineHtml,
|
|
13
|
+
parse as parse3
|
|
14
|
+
} from "@oxide/react-asciidoc";
|
|
12
15
|
|
|
13
16
|
// components/src/asciidoc/Admonition.tsx
|
|
14
|
-
import { Content,
|
|
17
|
+
import { Content, RenderInline } from "@oxide/react-asciidoc";
|
|
15
18
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
19
|
var themeForAdmonition = {
|
|
17
20
|
note: "green-theme",
|
|
@@ -36,8 +39,8 @@ var Admonition = ({ node }) => {
|
|
|
36
39
|
/* @__PURE__ */ jsxs("div", { className: "admonition-content content", children: [
|
|
37
40
|
/* @__PURE__ */ jsx("div", { children: titleCase(attrs2.name.toString()) }),
|
|
38
41
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
39
|
-
node.
|
|
40
|
-
node.
|
|
42
|
+
node.titleInlines && /* @__PURE__ */ jsx("div", { className: "admonition-title", children: /* @__PURE__ */ jsx(RenderInline, { nodes: node.titleInlines }) }),
|
|
43
|
+
node.inlines && /* @__PURE__ */ jsx(RenderInline, { nodes: node.inlines }),
|
|
41
44
|
/* @__PURE__ */ jsx(Content, { blocks: node.blocks })
|
|
42
45
|
] })
|
|
43
46
|
] })
|
|
@@ -84,20 +87,20 @@ var Warning12 = ({ className }) => /* @__PURE__ */ jsx(
|
|
|
84
87
|
var Admonition_default = Admonition;
|
|
85
88
|
|
|
86
89
|
// components/src/asciidoc/Section.tsx
|
|
87
|
-
import { Content as Content2, parse as
|
|
90
|
+
import { Content as Content2, parse, RenderInline as RenderInline2 } from "@oxide/react-asciidoc";
|
|
88
91
|
import cn from "classnames";
|
|
89
92
|
import { createElement } from "react";
|
|
90
93
|
import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
91
|
-
var stripAnchors = (str) => str.replace(/<a[^>]*>(.*?)<\/a>/gi, "$1");
|
|
92
94
|
var Section = ({ node }) => {
|
|
93
95
|
const level = node.level;
|
|
94
96
|
let title = "";
|
|
95
97
|
let sectNum = node.num;
|
|
96
98
|
sectNum = sectNum && sectNum[0] === "." ? "" : sectNum;
|
|
99
|
+
const titleContent = node.hasCaption ? parse(node.title) : /* @__PURE__ */ jsx2(RenderInline2, { nodes: node.titleInlines });
|
|
97
100
|
title = /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
98
101
|
/* @__PURE__ */ jsx2("span", { className: "anchor", id: node.id || "", "aria-hidden": "true" }),
|
|
99
102
|
/* @__PURE__ */ jsxs2("a", { className: "link group", href: `#${node.id}`, children: [
|
|
100
|
-
|
|
103
|
+
titleContent,
|
|
101
104
|
/* @__PURE__ */ jsx2(Link16Icon_default, { className: "text-accent-secondary ml-2 hidden group-hover:inline-block" })
|
|
102
105
|
] })
|
|
103
106
|
] });
|
|
@@ -122,11 +125,12 @@ var Table = ({ node }) => /* @__PURE__ */ jsx3("div", { className: "table-wrappe
|
|
|
122
125
|
var Table_default = Table;
|
|
123
126
|
|
|
124
127
|
// components/src/asciidoc/TableOfContents.tsx
|
|
125
|
-
import { parse as
|
|
128
|
+
import { parse as parse2 } from "@oxide/react-asciidoc";
|
|
126
129
|
import * as Accordion from "@radix-ui/react-accordion";
|
|
127
130
|
import cn2 from "classnames";
|
|
128
131
|
import { Fragment as Fragment2, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
129
132
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
133
|
+
var dropAnchors = (html) => html.includes("<a") ? html.replace(/<(?:a\b[^>]*|\/a)>/g, "") : html;
|
|
130
134
|
function useIntersectionObserver(elements, callback, options) {
|
|
131
135
|
const [observer, setObserver] = useState(null);
|
|
132
136
|
useEffect(() => {
|
|
@@ -300,7 +304,7 @@ var DesktopOutline = ({
|
|
|
300
304
|
style: {
|
|
301
305
|
paddingLeft: `${0.5 + item.level * 0.5}rem`
|
|
302
306
|
},
|
|
303
|
-
children:
|
|
307
|
+
children: parse2(dropAnchors(item.title))
|
|
304
308
|
}
|
|
305
309
|
)
|
|
306
310
|
}
|
|
@@ -338,7 +342,7 @@ var SmallScreenOutline = ({
|
|
|
338
342
|
style: {
|
|
339
343
|
paddingLeft: `${0.5 + item.level * 0.5}rem`
|
|
340
344
|
},
|
|
341
|
-
children:
|
|
345
|
+
children: parse2(dropAnchors(item.title))
|
|
342
346
|
}
|
|
343
347
|
)
|
|
344
348
|
}
|
|
@@ -403,6 +407,7 @@ function useDelegatedReactRouterLinks(navigate, nodeRef, key) {
|
|
|
403
407
|
// components/src/asciidoc/util.ts
|
|
404
408
|
import asciidoctor from "@asciidoctor/core";
|
|
405
409
|
import {
|
|
410
|
+
Inline,
|
|
406
411
|
prepareDocument,
|
|
407
412
|
processDocument
|
|
408
413
|
} from "@oxide/react-asciidoc";
|
|
@@ -2005,18 +2010,15 @@ var oxide_syntax_default = {
|
|
|
2005
2010
|
};
|
|
2006
2011
|
|
|
2007
2012
|
// components/src/asciidoc/util.ts
|
|
2008
|
-
var
|
|
2013
|
+
var highlighterPromise = null;
|
|
2009
2014
|
var customLanguages = ["oxql", "p4"];
|
|
2010
2015
|
var supportedLanguages = [...Object.keys(bundledLanguages), ...customLanguages];
|
|
2011
|
-
|
|
2012
|
-
if (!
|
|
2016
|
+
function getHighlighter() {
|
|
2017
|
+
if (!highlighterPromise) {
|
|
2013
2018
|
const langs = [{ ...oxql_tmLanguage_default }, { ...p4_tmLanguage_default }];
|
|
2014
|
-
|
|
2015
|
-
themes: [oxide_syntax_default],
|
|
2016
|
-
langs
|
|
2017
|
-
});
|
|
2019
|
+
highlighterPromise = createHighlighter({ themes: [oxide_syntax_default], langs });
|
|
2018
2020
|
}
|
|
2019
|
-
return
|
|
2021
|
+
return highlighterPromise;
|
|
2020
2022
|
}
|
|
2021
2023
|
async function highlightCode(code, lang, { inline = false } = {}) {
|
|
2022
2024
|
const h = await getHighlighter();
|
|
@@ -2033,12 +2035,18 @@ async function highlightCode(code, lang, { inline = false } = {}) {
|
|
|
2033
2035
|
var highlight = async (block) => {
|
|
2034
2036
|
if (block.type === "listing") {
|
|
2035
2037
|
const literalBlock = block;
|
|
2036
|
-
if (!literalBlock.content) {
|
|
2038
|
+
if (!literalBlock.content || typeof literalBlock.content !== "string") {
|
|
2037
2039
|
return block;
|
|
2038
2040
|
}
|
|
2039
|
-
const
|
|
2041
|
+
const lineComment = literalBlock.attributes["line-comment"];
|
|
2042
|
+
const content = Inline.subCallouts(
|
|
2043
|
+
literalBlock.content,
|
|
2044
|
+
true,
|
|
2045
|
+
lineComment !== void 0 ? String(lineComment) : void 0
|
|
2046
|
+
);
|
|
2047
|
+
const calloutRegex = /<i class="conum" data-value="\d+"><\/i>(?:<b>\(\d+\)<\/b>)?/g;
|
|
2040
2048
|
const callouts = [];
|
|
2041
|
-
const placeholderContent =
|
|
2049
|
+
const placeholderContent = content.replace(calloutRegex, (match) => {
|
|
2042
2050
|
callouts.push(match);
|
|
2043
2051
|
return `__CALLOUT_PLACEHOLDER_${callouts.length - 1}__`;
|
|
2044
2052
|
});
|
|
@@ -2075,37 +2083,17 @@ var attrs = {
|
|
|
2075
2083
|
var loadAsciidoctor = ({
|
|
2076
2084
|
extensions = []
|
|
2077
2085
|
}) => {
|
|
2078
|
-
const
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
constructor() {
|
|
2082
|
-
this.baseConverter = new ad2.Html5Converter();
|
|
2083
|
-
}
|
|
2084
|
-
convert(node, transform) {
|
|
2085
|
-
switch (node.getNodeName()) {
|
|
2086
|
-
case "inline_callout":
|
|
2087
|
-
return convertInlineCallout(node);
|
|
2088
|
-
// We know this is always inline
|
|
2089
|
-
default:
|
|
2090
|
-
break;
|
|
2091
|
-
}
|
|
2092
|
-
return this.baseConverter.convert(node, transform);
|
|
2093
|
-
}
|
|
2094
|
-
}
|
|
2095
|
-
extensions.forEach((extension) => ad2.Extensions.register(extension));
|
|
2096
|
-
ad2.ConverterFactory.register(new InlineConverter2(), ["html5"]);
|
|
2097
|
-
return ad2;
|
|
2086
|
+
const ad = asciidoctor();
|
|
2087
|
+
extensions.forEach((extension) => ad.Extensions.register(extension));
|
|
2088
|
+
return ad;
|
|
2098
2089
|
};
|
|
2099
|
-
function convertInlineCallout(node) {
|
|
2100
|
-
return `<i class="conum" data-value="${node.getText()}"></i>`;
|
|
2101
|
-
}
|
|
2102
2090
|
var handleDocument = async (document) => {
|
|
2103
2091
|
const doc = prepareDocument(document);
|
|
2104
2092
|
return await processDocument(doc, highlight);
|
|
2105
2093
|
};
|
|
2106
2094
|
|
|
2107
2095
|
// components/src/asciidoc/index.tsx
|
|
2108
|
-
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
2096
|
+
import { Fragment as Fragment3, jsx as jsx5 } from "react/jsx-runtime";
|
|
2109
2097
|
var MinimalDocument = ({ document }) => /* @__PURE__ */ jsx5("div", { id: "content", className: "asciidoc-body w-full", children: /* @__PURE__ */ jsx5(Content4, { blocks: document.blocks }) });
|
|
2110
2098
|
var AsciiDocBlocks = {
|
|
2111
2099
|
Admonition: Admonition_default,
|
|
@@ -2121,74 +2109,23 @@ var renderWithBreaks = (text) => {
|
|
|
2121
2109
|
return segment.replace(/(?:^|(?<=\S))\/(?=\S)/g, "/<wbr/>");
|
|
2122
2110
|
}).join("");
|
|
2123
2111
|
};
|
|
2124
|
-
var
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
"single": ["‘", "’"],
|
|
2130
|
-
"mark": ["<mark>", "</mark>", true],
|
|
2131
|
-
"superscript": ["<sup>", "</sup>", true],
|
|
2132
|
-
"subscript": ["<sub>", "</sub>", true],
|
|
2133
|
-
"unquoted": ["<span>", "</span>", true],
|
|
2134
|
-
"asciimath": ["\\$", "\\$"],
|
|
2135
|
-
"latexmath": ["\\(", "\\)"]
|
|
2136
|
-
};
|
|
2137
|
-
var chop = (str) => str.substring(0, str.length - 1);
|
|
2138
|
-
var convertInlineQuoted = (node) => {
|
|
2139
|
-
const type = node.getType();
|
|
2140
|
-
const quoteTag = QUOTE_TAGS[type];
|
|
2141
|
-
const [open, close, tag] = quoteTag || ["", ""];
|
|
2142
|
-
let text = node.getText();
|
|
2143
|
-
if (type === "monospaced") {
|
|
2144
|
-
text = renderWithBreaks(text);
|
|
2145
|
-
}
|
|
2146
|
-
const id = node.getId();
|
|
2147
|
-
const role = node.getRole();
|
|
2148
|
-
const idAttr = id ? `id="${id}"` : "";
|
|
2149
|
-
const classAttr = role ? `class="${role}"` : "";
|
|
2150
|
-
const attrs2 = `${idAttr} ${classAttr}`;
|
|
2151
|
-
if (id || role) {
|
|
2152
|
-
if (tag) {
|
|
2153
|
-
return `${chop(open)} ${attrs2}>${text}${close}`;
|
|
2154
|
-
} else {
|
|
2155
|
-
return `<span ${attrs2}>${open}${text}${close}</span>`;
|
|
2156
|
-
}
|
|
2157
|
-
} else {
|
|
2158
|
-
return `${open}${text}${close}`;
|
|
2159
|
-
}
|
|
2160
|
-
};
|
|
2161
|
-
function convertInlineCallout2(node) {
|
|
2162
|
-
return `<i class="conum" data-value="${node.getText()}"></i>`;
|
|
2163
|
-
}
|
|
2164
|
-
var ad = asciidoctor2();
|
|
2165
|
-
var InlineConverter = class {
|
|
2166
|
-
baseConverter;
|
|
2167
|
-
constructor() {
|
|
2168
|
-
this.baseConverter = new ad.Html5Converter();
|
|
2169
|
-
}
|
|
2170
|
-
convert(node, transform) {
|
|
2171
|
-
switch (node.getNodeName()) {
|
|
2172
|
-
case "inline_quoted":
|
|
2173
|
-
return convertInlineQuoted(node);
|
|
2174
|
-
// We know this is always inline
|
|
2175
|
-
case "inline_callout":
|
|
2176
|
-
return convertInlineCallout2(node);
|
|
2177
|
-
// We know this is always inline
|
|
2178
|
-
default:
|
|
2179
|
-
break;
|
|
2112
|
+
var inlineOverrides = {
|
|
2113
|
+
quoted: ({ node }) => {
|
|
2114
|
+
let { __html } = inlineHtml([node]);
|
|
2115
|
+
if (node.subtype === "monospaced") {
|
|
2116
|
+
__html = renderWithBreaks(__html);
|
|
2180
2117
|
}
|
|
2181
|
-
return
|
|
2118
|
+
return /* @__PURE__ */ jsx5(Fragment3, { children: parse3(__html) });
|
|
2182
2119
|
}
|
|
2183
2120
|
};
|
|
2184
2121
|
export {
|
|
2185
2122
|
AsciiDocBlocks,
|
|
2186
2123
|
DesktopOutline,
|
|
2187
|
-
InlineConverter,
|
|
2188
2124
|
SmallScreenOutline,
|
|
2189
2125
|
attrs,
|
|
2190
2126
|
handleDocument,
|
|
2191
2127
|
highlight,
|
|
2128
|
+
inlineOverrides,
|
|
2192
2129
|
loadAsciidoctor,
|
|
2193
2130
|
renderWithBreaks,
|
|
2194
2131
|
useActiveSectionTracking,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/src/asciidoc/index.tsx","../../../../components/src/asciidoc/Admonition.tsx","../../../../components/src/asciidoc/Section.tsx","../../../../components/src/asciidoc/Table.tsx","../../../../components/src/asciidoc/TableOfContents.tsx","../../../../components/src/asciidoc/use-delegated-links.ts","../../../../components/src/asciidoc/util.ts","../../../../components/src/asciidoc/langs/oxql.tmLanguage.json","../../../../components/src/asciidoc/langs/p4.tmLanguage.json","../../../../components/src/asciidoc/oxide-syntax.json"],"sourcesContent":["/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport asciidoctor, { Block, Html5Converter, Inline } from '@asciidoctor/core'\nimport { Content, type DocumentBlock } from '@oxide/react-asciidoc'\n\nimport Admonition from './Admonition'\nimport Section from './Section'\nimport Table from './Table'\nimport {\n DesktopOutline,\n SmallScreenOutline,\n useActiveSectionTracking,\n useIntersectionObserver,\n} from './TableOfContents'\nimport { useDelegatedReactRouterLinks } from './use-delegated-links'\nimport { attrs, handleDocument, highlight, loadAsciidoctor } from './util'\n\nconst MinimalDocument = ({ document }: { document: DocumentBlock }) => (\n <div id=\"content\" className=\"asciidoc-body w-full\">\n <Content blocks={document.blocks} />\n </div>\n)\n\nconst AsciiDocBlocks = {\n Admonition,\n Table,\n Section,\n MinimalDocument,\n}\n\n/**\n * Adds word break opportunities (<wbr/>) after slashes in text, except within HTML tags.\n * This function is used to improve line breaks for long paths or URLs in rendered content.\n * *\n * renderWithBreaks('/path/to/long/file.txt')\n * '/<wbr/>path/<wbr/>to/<wbr/>long/<wbr/>file.txt'\n */\nexport const renderWithBreaks = (text: string): string => {\n return text\n .split(/(<[^>]*>)/g)\n .map((segment) => {\n // if the segment is an HTML tag, leave it unchanged\n if (segment.startsWith('<') && segment.endsWith('>')) {\n return segment\n }\n // replace slashes that are not surrounded by spaces\n return segment.replace(/(?:^|(?<=\\S))\\/(?=\\S)/g, '/<wbr/>')\n })\n .join('')\n}\n\n// prettier-ignore\nconst QUOTE_TAGS: {[key: string]: [string, string, boolean?]} = {\n \"monospaced\": ['<code>', '</code>', true],\n \"emphasis\": ['<em>', '</em>', true],\n \"strong\": ['<strong>', '</strong>', true],\n \"double\": ['“', '”'],\n \"single\": ['‘', '’'],\n \"mark\": ['<mark>', '</mark>', true],\n \"superscript\": ['<sup>', '</sup>', true],\n \"subscript\": ['<sub>', '</sub>', true],\n \"unquoted\": ['<span>', '</span>', true],\n \"asciimath\": ['\\\\$', '\\\\$'],\n \"latexmath\": ['\\\\(', '\\\\)'],\n}\n\nconst chop = (str: string) => str.substring(0, str.length - 1)\n\nconst convertInlineQuoted = (node: Inline) => {\n const type = node.getType()\n const quoteTag = QUOTE_TAGS[type]\n const [open, close, tag] = quoteTag || ['', '']\n\n let text = node.getText()\n\n // Add <wbr> for line breaks with long paths\n // Ignores a / if there's a space before it\n if (type === 'monospaced') {\n text = renderWithBreaks(text)\n }\n\n const id = node.getId()\n const role = node.getRole()\n\n const idAttr = id ? `id=\"${id}\"` : ''\n const classAttr = role ? `class=\"${role}\"` : ''\n const attrs = `${idAttr} ${classAttr}`\n\n if (id || role) {\n if (tag) {\n return `${chop(open)} ${attrs}>${text}${close}`\n } else {\n return `<span ${attrs}>${open}${text}${close}</span>`\n }\n } else {\n return `${open}${text}${close}`\n }\n}\n\nfunction convertInlineCallout(node: Inline): string {\n return `<i class=\"conum\" data-value=\"${node.getText()}\"></i>`\n}\n\nconst ad = asciidoctor()\n\nclass InlineConverter {\n baseConverter: Html5Converter\n\n constructor() {\n this.baseConverter = new ad.Html5Converter()\n }\n\n convert(node: Block, transform: string) {\n switch (node.getNodeName()) {\n case 'inline_quoted':\n return convertInlineQuoted(node as unknown as Inline) // We know this is always inline\n case 'inline_callout':\n return convertInlineCallout(node as unknown as Inline) // We know this is always inline\n default:\n break\n }\n\n return this.baseConverter.convert(node, transform)\n }\n}\n\nexport {\n AsciiDocBlocks,\n handleDocument,\n highlight,\n loadAsciidoctor,\n attrs,\n DesktopOutline,\n SmallScreenOutline,\n useActiveSectionTracking,\n useIntersectionObserver,\n InlineConverter,\n useDelegatedReactRouterLinks,\n}\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { Content, parse, type AdmonitionBlock } from '@oxide/react-asciidoc'\n\nimport { titleCase } from '../utils'\n\nconst themeForAdmonition: Record<string, string> = {\n note: 'green-theme',\n caution: 'yellow-theme',\n important: 'yellow-theme',\n warning: 'red-theme',\n tip: 'purple-theme',\n}\n\nconst Admonition = ({ node }: { node: AdmonitionBlock }) => {\n const attrs = node.attributes\n const theme = themeForAdmonition[attrs.name] || ''\n\n let icon\n if (attrs.name === 'caution') {\n icon = <Error12 />\n } else if (attrs.name === 'warning') {\n icon = <Warning12 />\n } else {\n icon = <Error12 className=\"rotate-180\" />\n }\n\n return (\n <div className={`admonitionblock ${attrs.name} ${theme}`}>\n <div className=\"admonition-icon\">{icon}</div>\n <div className=\"admonition-content content\">\n <div>{titleCase(attrs.name.toString())}</div>\n <div>\n {node.title && <div className=\"admonition-title\">{node.title}</div>}\n {node.content && parse(node.content)}\n <Content blocks={node.blocks} />\n </div>\n </div>\n </div>\n )\n}\n\nconst Error12 = ({ className }: { className?: string }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12A6 6 0 1 0 6 0a6 6 0 0 0 0 12Zm.083-9c.368 0 .667.299.667.667v2.666A.667.667 0 0 1 6.083 7h-.166a.667.667 0 0 1-.667-.667V3.667c0-.368.299-.667.667-.667h.166Zm0 5c.368 0 .667.299.667.667v.166a.667.667 0 0 1-.667.667h-.166a.667.667 0 0 1-.667-.667v-.166c0-.368.299-.667.667-.667h.166Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n\nconst Warning12 = ({ className }: { className?: string }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12A6 6 0 1 0 6 0a6 6 0 0 0 0 12Zm.083-9c.368 0 .667.299.667.667v2.666A.667.667 0 0 1 6.083 7h-.166a.667.667 0 0 1-.667-.667V3.667c0-.368.299-.667.667-.667h.166Zm0 5c.368 0 .667.299.667.667v.166a.667.667 0 0 1-.667.667h-.166a.667.667 0 0 1-.667-.667v-.166c0-.368.299-.667.667-.667h.166Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n\nexport default Admonition\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { Link16Icon } from '@/icons/react'\nimport { Content, parse, type SectionBlock } from '@oxide/react-asciidoc'\nimport cn from 'classnames'\nimport { createElement, type JSX } from 'react'\n\n// We need to remove anchors from the section title (and table of contents) because having\n// an anchor within an anchor causes a client/server render mismatch\nexport const stripAnchors = (str: string) => str.replace(/<a[^>]*>(.*?)<\\/a>/gi, '$1')\n\nconst Section = ({ node }: { node: SectionBlock }) => {\n const level = node.level\n let title: JSX.Element | string = ''\n\n let sectNum = node.num\n sectNum = sectNum && sectNum[0] === '.' ? '' : sectNum\n\n title = (\n <>\n <span className=\"anchor\" id={node.id || ''} aria-hidden=\"true\" />\n <a className=\"link group\" href={`#${node.id}`}>\n {parse(stripAnchors(node.title))}\n <Link16Icon className=\"text-accent-secondary ml-2 hidden group-hover:inline-block\" />\n </a>\n </>\n )\n\n if (level === 0) {\n return (\n <>\n <h1 className={cn('sect0', node.role)} data-sectnum={sectNum}>\n {title}\n </h1>\n <Content blocks={node.blocks} />\n </>\n )\n } else {\n return (\n <div className={cn(`sect${level}`, node.role)}>\n {createElement(`h${level + 1}`, { 'data-sectnum': sectNum }, title)}\n <div className=\"sectionbody\">\n <Content blocks={node.blocks} />\n </div>\n </div>\n )\n }\n}\n\nexport default Section\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { Table as InnerTable, type TableBlock } from '@oxide/react-asciidoc'\n\nconst Table = ({ node }: { node: TableBlock }) => (\n <div className=\"table-wrapper\">\n <InnerTable node={node} />\n </div>\n)\n\nexport default Table\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { DirectionRightIcon } from '@/icons/react'\nimport { parse, type DocumentSection } from '@oxide/react-asciidoc'\nimport * as Accordion from '@radix-ui/react-accordion'\nimport cn from 'classnames'\nimport { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { stripAnchors } from './Section'\n\nexport function useIntersectionObserver(\n elements: Element[],\n callback: IntersectionObserverCallback,\n options: IntersectionObserverInit,\n) {\n const [observer, setObserver] = useState<IntersectionObserver | null>(null)\n\n // Create the observer in an effect so we can tear it down when this unmounts\n useEffect(() => {\n const observer = new IntersectionObserver(callback, options)\n setObserver(observer)\n\n return () => {\n observer.disconnect()\n }\n }, [callback, options])\n\n // Bind the elements that should be listened for\n useEffect(() => {\n if (observer) {\n for (const element of elements) {\n observer.observe(element)\n }\n }\n\n return () => {\n if (observer) {\n for (const element of elements) {\n observer.unobserve(element)\n }\n }\n }\n }, [elements, observer])\n\n return observer\n}\n\n// Create threshold steps that trigger intersection events every 0.05%. This is needed to provide\n// decent measurements on very tall elements. In the future we could instead compute the needed\n// thresholds on a per element basis so that we are measuring per pixel instead of per percent.\nconst THRESHOLD = [...Array(2000).keys()].map((n) => n / 2000)\n\nfunction isTopLevelSection(element: Element): boolean {\n return element.classList.contains('sect1')\n}\n\n// Uses the asciidoc generated classes to find the closest section wrapping parent element\nfunction findParentSection(element: Element): Element | null {\n const sect2Wrapper = element.closest('.sect2')\n return sect2Wrapper ? sect2Wrapper : element.closest('.sect1')\n}\n\nfunction newSection(\n node: number,\n element: Element,\n wrapper: Element,\n parent: number | null,\n): Section {\n return {\n node,\n element,\n wrapper,\n parent,\n children: [],\n }\n}\n\nfunction buildSectionTree(elements: Element[]): Section[] {\n const sections = []\n let parent = null\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i]\n const parentWrapper = findParentSection(element)\n\n if (parentWrapper) {\n if (parentWrapper && isTopLevelSection(parentWrapper)) {\n const section = newSection(i, element, parentWrapper, null)\n sections.push(section)\n parent = section\n } else {\n if (parent === null) {\n // Fail to construct a tree if the provided elements are invalid\n return []\n } else {\n const section = newSection(i, element, parentWrapper, parent.node)\n parent.children.push(i)\n sections.push(section)\n }\n }\n } else {\n // Fail to construct a tree if the provided elements are invalid\n return []\n }\n }\n\n return sections\n}\n\nfunction maxIndex(nums: number[]): number | undefined {\n return nums.reduce<number | undefined>((maxIndex, current, currentIndex) => {\n const currentMax = maxIndex !== undefined ? nums[maxIndex] : 0\n return current > currentMax ? currentIndex : maxIndex\n }, undefined)\n}\n\ntype Section = {\n node: number\n element: Element\n wrapper: Element\n parent: number | null\n children: number[]\n}\n// This hook will call the provided callback whenever a section that is identified by a heading is\n// determined to be \"active\". A section is considered to be the \"active\" section when covers more\n// space of the specified measuring area than any other section.\nexport function useActiveSectionTracking(\n initialSections: Element[],\n onSectionChange: (element: Element) => void,\n debug = false,\n) {\n // Construct a tree in the form of a basic array that will allow for traversing between parent\n // an child nodes quickly\n const [sectionWrappers, setSectionWrappers] = useState<Section[]>(\n buildSectionTree(initialSections),\n )\n\n // Internally we need to track the coverage percentage for each element without triggering\n // renders\n const sectionMeasurements = useRef<number[]>([])\n\n // The caller only provides the hook with section headers and so we need to map those to their\n // relevant containing sections\n const setSections = useCallback(\n (sections: Element[]) => {\n setSectionWrappers(buildSectionTree(sections))\n\n // When sections change we need to also zero out our section visibility measurements\n sectionMeasurements.current = []\n },\n [setSectionWrappers],\n )\n\n // Create the section tracker\n const wrapperActivator = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n // For each observed element that has interacted with our intersection window we want to\n // compute and record the percentage of space that is covered by the element. This work is all\n // performed off of the main thread\n for (const entry of entries) {\n // Find where in our list of section wrapper elements the entry that changed is\n const index = sectionWrappers.findIndex((node) => node.wrapper === entry.target)\n\n // We are only trying to detect vertical scroll changes and therefore only need to use the\n // heigh to compute the coverage percentage\n const covered = entry.intersectionRect.height / (entry.rootBounds?.height || 1)\n sectionMeasurements.current[index] = covered\n }\n\n // For each section element, compute the amount of space that is \"owned\" by that element. In\n // this check, space is considered \"owned\" by the element furthest down the tree.\n //\n // Example:\n // A parent element covers 70% of the measured space. This element has two child elements,\n // one that covers 30%, and another that covers 25%. In this case both of the child elements\n // own their respective spaces, and the parent owns 15% (70 - (30 + 25)) of the space.\n //\n // Because we are only trying to determine the space owned by a single element, we do not need\n // to traverse further than that elements direct descendants\n const ownedSectionSizes = sectionWrappers.map((section) => {\n const childSizes = section.children\n .map((c) => sectionMeasurements.current[c])\n .reduce((c, a) => c + a, 0)\n return sectionMeasurements.current[section.node] - childSizes\n })\n\n // Now that we have a list of how much of the measured space each element takes up, we simply\n // find the element that is taking up the most space, and assign it to be the current section\n const activeSectionIndex = maxIndex(ownedSectionSizes)\n\n if (activeSectionIndex !== undefined) {\n onSectionChange(sectionWrappers[activeSectionIndex].element)\n }\n },\n [sectionWrappers, onSectionChange],\n )\n\n // Define our measurement area. This space is relative to the root element (i.e. the screen). It\n // is a band that starts at 5% down from the top, and ends at 80% up from the bottom of the\n // screen.\n const wrapperSettings = useMemo(\n () => ({ threshold: THRESHOLD, rootMargin: `-15% 0px -70% 0px` }),\n [],\n )\n\n // We need to ensure that we are only sending valid sections to be observed\n const bindableWrappers = useMemo(\n () => sectionWrappers.map((s) => s.wrapper),\n [sectionWrappers],\n )\n\n // Generate the intersection observer based on the above configuration\n const sectionObserver = useIntersectionObserver(\n bindableWrappers,\n wrapperActivator,\n wrapperSettings,\n )\n\n let debugNode = null\n if (debug && sectionObserver?.root === null) {\n // Parse and invert the margins\n const edges = sectionObserver.rootMargin.split(' ').map((margin) => {\n if (margin.endsWith('%')) {\n return parseInt(margin) * -1 + '%'\n } else if (margin.endsWith('px')) {\n return parseInt(margin) * -1 + 'px'\n } else {\n return '0px'\n }\n })\n\n debugNode = (\n <div\n style={{\n position: 'fixed',\n top: edges[0],\n right: edges[1],\n bottom: edges[2],\n left: edges[3],\n background: 'rgba(255, 92, 170, 0.2)',\n border: '1px solid rgba(255, 92, 170)',\n pointerEvents: 'none',\n zIndex: 500,\n }}\n />\n )\n }\n\n return {\n setSections,\n debugNode,\n }\n}\n\nexport const DesktopOutline = ({\n toc,\n activeItem,\n className,\n}: {\n toc: DocumentSection[]\n activeItem: string\n className?: string\n}) => {\n const renderToc = (sections: DocumentSection[]) => {\n return sections.map((item) => (\n <Fragment key={item.id}>\n <li\n data-level={item.level}\n className={cn('text-sans-sm mb-0 list-none', item.level > 2 && 'hidden')}\n >\n <a\n href={`#${item.id}`}\n className={cn(\n 'block border-l py-[4px] pr-4',\n activeItem === item.id\n ? 'active text-accent-secondary light:text-default light:border-green-800 border-accent-secondary hover:text-accent hover:light:text-raise'\n : 'text-tertiary border-secondary hover:text-secondary',\n )}\n style={{\n paddingLeft: `${0.5 + item.level * 0.5}rem`,\n }}\n >\n {parse(stripAnchors(item.title))}\n </a>\n </li>\n {item.sections && renderToc(item.sections)}\n </Fragment>\n ))\n }\n\n if (toc && toc.length > 0) {\n return <ul className={cn('toc w-(--toc-width)', className)}>{renderToc(toc)}</ul>\n }\n\n return null\n}\nexport const SmallScreenOutline = ({\n toc,\n activeItem,\n className,\n}: {\n toc: DocumentSection[]\n activeItem: string\n className?: string\n}) => {\n const [value, setValue] = useState('')\n\n const renderToc = (sections: DocumentSection[]) => {\n return sections.map((item) => (\n <Fragment key={item.id}>\n <li\n data-level={item.level}\n className={cn('text-sans-sm list-none', item.level > 2 && 'hidden')}\n >\n <a\n href={`#${item.id}`}\n onClick={() => setValue('')}\n className={cn(\n 'block border-l py-[4px]',\n activeItem === item.id\n ? 'active text-accent-secondary light:text-default light:border-green-800 border-accent-secondary hover:text-accent'\n : 'text-tertiary border-secondary hover:text-secondary',\n )}\n style={{\n paddingLeft: `${0.5 + item.level * 0.5}rem`,\n }}\n >\n {parse(stripAnchors(item.title))}\n </a>\n </li>\n {item.sections && renderToc(item.sections)}\n </Fragment>\n ))\n }\n\n if (toc && toc.length > 0) {\n return (\n <Accordion.Root\n type=\"single\"\n className={cn(\n 'toc bg-default border-secondary sticky top-[calc(var(--header-height)-1px)] z-10 -mt-px mb-10 block w-full border-t border-b print:hidden',\n className,\n )}\n collapsible\n value={value}\n onValueChange={setValue}\n >\n <Accordion.Item value=\"toc\">\n <Accordion.Header>\n <Accordion.Trigger className=\"text-sans-md text-default hover:bg-hover flex h-12 w-full items-center justify-between px-(--container-px) [&>svg]:data-[state=open]:rotate-90\">\n Table of Contents{' '}\n <DirectionRightIcon className=\"text-tertiary transition-all\" />\n </Accordion.Trigger>\n </Accordion.Header>\n\n <Accordion.Content className=\"animated-accordion hydrated border-secondary max-h-[60vh] w-full overflow-y-scroll border-t px-(--container-px)\">\n <div className=\"py-4\">{renderToc(toc)}</div>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )\n }\n\n return null\n}\n","/**\n * MIT License\n *\n * Copyright (c) React Training LLC 2015-2021\n * Copyright (c) Shopify Inc. 2022-2023\n * From https://github.com/remix-run/react-router-website/blob/main/app/ui/delegate-markdown-links.ts\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n */\nimport { useEffect } from 'react'\n\n// copied from React Router, unlikely to change\n// https://github.com/remix-run/react-router/blob/7b041811/packages/react-router/lib/router/history.ts#L32-L50\ninterface Path {\n pathname: string\n search: string\n hash: string\n}\n\n// https://github.com/remix-run/react-router/blob/7b041811/packages/react-router/lib/router/history.ts#L101-L105\ntype To = string | Partial<Path>\n\n// Converts regular AsciiDoc a tags and makes them React Routery\n// Added key so that this is reloaded when the user routes from one document to another directly\nfunction useDelegatedReactRouterLinks(\n // this is to avoid a dependency on remix/react router\n /** Pass in the result of `useNavigate()` in the calling application. */\n navigate: (to: To) => void,\n nodeRef: React.RefObject<HTMLElement | null>,\n key: string,\n) {\n useEffect(() => {\n const node = nodeRef.current\n const handler = (event: MouseEvent) => {\n if (!nodeRef.current) return\n\n if (!(event.target instanceof HTMLElement)) return\n\n const a = event.target.closest('a')\n\n if (\n a && // is anchor or has anchor parent\n a.hasAttribute('href') && // has an href\n a.host === window.location.host && // is internal\n event.button === 0 && // left click\n (!a.target || a.target === '_self') && // Let browser handle \"target=_blank\" etc.\n !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) // not modified\n ) {\n event.preventDefault()\n const { pathname, search, hash } = a\n navigate({ pathname, search, hash })\n }\n }\n\n if (!node) return\n node.addEventListener('click', handler)\n\n return () => {\n node?.removeEventListener('click', handler)\n }\n }, [navigate, nodeRef, key])\n}\n\nexport { useDelegatedReactRouterLinks }\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport asciidoctor, {\n type Block as AdBlock,\n type Document,\n type Html5Converter,\n type Inline,\n type Registry,\n} from '@asciidoctor/core'\nimport {\n Block,\n LiteralBlock,\n prepareDocument,\n processDocument,\n} from '@oxide/react-asciidoc'\nimport {\n bundledLanguages,\n createHighlighter,\n type BundledLanguage,\n type BundledTheme,\n type HighlighterGeneric,\n type LanguageInput,\n} from 'shiki'\n\nimport oxql from './langs/oxql.tmLanguage.json'\n// p4.tmLanguage.json is derived from the highlights query in\n// https://github.com/oxidecomputer/tree-sitter-p4 (queries/highlights.scm).\nimport p4 from './langs/p4.tmLanguage.json'\nimport theme from './oxide-syntax.json'\n\nlet highlighter: HighlighterGeneric<BundledLanguage, BundledTheme> | null = null\nconst customLanguages = ['oxql', 'p4']\nconst supportedLanguages = [...Object.keys(bundledLanguages), ...customLanguages]\n\nexport async function getHighlighter() {\n if (!highlighter) {\n const langs: LanguageInput[] = [{ ...oxql }, { ...p4 }]\n\n highlighter = await createHighlighter({\n themes: [theme],\n langs,\n })\n }\n\n return highlighter\n}\n\nexport async function highlightCode(\n code: string,\n lang: string,\n { inline = false }: { inline?: boolean } = {},\n): Promise<string> {\n const h = await getHighlighter()\n const resolved = supportedLanguages.includes(lang) ? lang : 'text'\n if (!h.getLoadedLanguages().includes(resolved)) {\n await h.loadLanguage(resolved as BundledLanguage)\n }\n return h.codeToHtml(code, {\n lang: resolved,\n theme,\n ...(inline ? { structure: 'inline' as const } : {}),\n })\n}\n\nconst highlight = async (block: Block): Promise<Block> => {\n if (block.type === 'listing') {\n const literalBlock = block as LiteralBlock\n\n if (!literalBlock.content) {\n return block\n }\n\n // Replace callouts with placeholders before highlighting\n // without this they are decoded and are no displayed as HTML\n const calloutRegex = /<i class=\"conum\" data-value=\"\\d+\"><\\/i>/g\n const callouts: string[] = []\n const placeholderContent = literalBlock.content.replace(calloutRegex, (match) => {\n callouts.push(match)\n return `__CALLOUT_PLACEHOLDER_${callouts.length - 1}__`\n })\n\n // If no language specified, we still want to support callouts\n if (!literalBlock.language) {\n return {\n ...block,\n content: placeholderContent.replace(\n /__CALLOUT_PLACEHOLDER_(\\d+)__/g,\n (_, index) => callouts[parseInt(index)],\n ),\n }\n }\n\n const highlightedContent = await highlightCode(\n placeholderContent,\n literalBlock.language,\n { inline: true },\n )\n\n // Restore callouts in the highlighted content\n const restoredContent = highlightedContent.replace(\n /__CALLOUT_PLACEHOLDER_(\\d+)__/g,\n (_, index) => callouts[parseInt(index)],\n )\n\n return {\n ...block,\n content: restoredContent,\n }\n }\n return block\n}\n\nconst attrs = {\n sectlinks: 'true',\n stem: 'latexmath',\n stylesheet: false,\n}\n\nconst loadAsciidoctor = ({\n extensions = [],\n}: {\n extensions?: ((this: Registry) => void)[]\n}) => {\n const ad = asciidoctor()\n\n /*\n For styling inline elements\n we cannot do this through the AsciiDoc tree\n */\n class InlineConverter {\n baseConverter: Html5Converter\n\n constructor() {\n this.baseConverter = new ad.Html5Converter()\n }\n\n convert(node: AdBlock, transform: string) {\n switch (node.getNodeName()) {\n case 'inline_callout':\n return convertInlineCallout(node as unknown as Inline) // We know this is always inline\n default:\n break\n }\n\n return this.baseConverter.convert(node, transform)\n }\n }\n\n extensions.forEach((extension) => ad.Extensions.register(extension))\n ad.ConverterFactory.register(new InlineConverter(), ['html5'])\n\n return ad\n}\n\n// These are a little nicer to style than the default\nfunction convertInlineCallout(node: Inline): string {\n return `<i class=\"conum\" data-value=\"${node.getText()}\"></i>`\n}\n\nconst handleDocument = async (document: Document) => {\n const doc = prepareDocument(document)\n return await processDocument(doc, highlight)\n}\n\nexport { handleDocument, highlight, loadAsciidoctor, attrs }\n","{\n \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n \"name\": \"oxql\",\n \"repository\": {\n \"keywords\": {\n \"patterns\": [\n {\n \"name\": \"keyword.control.oxql\",\n \"match\": \"\\\\b(if|while|for|return)\\\\b\"\n }\n ]\n },\n \"strings\": {\n \"name\": \"string.quoted.double.oxql\",\n \"begin\": \"\\\"\",\n \"end\": \"\\\"\",\n \"patterns\": [\n {\n \"name\": \"constant.character.escape.oxql\",\n \"match\": \"\\\\\\\\.\"\n }\n ]\n }\n },\n \"scopeName\": \"source.oxql\",\n \"patterns\": [\n {\n \"name\": \"keyword.control.oxql\",\n \"match\": \"\\\\b(get|join|align|filter|group_by)\\\\b\"\n },\n {\n \"name\": \"string.quoted.double.oxql\",\n \"begin\": \"\\\"\",\n \"end\": \"\\\"\",\n \"patterns\": [\n {\n \"name\": \"constant.character.escape.oxql\",\n \"match\": \"\\\\\\\\.\"\n }\n ]\n },\n {\n \"name\": \"constant.numeric.oxql\",\n \"match\": \"\\\\b\\\\d+[smhdw]\\\\b\"\n },\n {\n \"name\": \"constant.numeric.datetime.oxql\",\n \"match\": \"@\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\"\n },\n {\n \"name\": \"constant.numeric.function.oxql\",\n \"match\": \"@now\\\\(\\\\)\"\n },\n {\n \"name\": \"constant.numeric.oxql\",\n \"match\": \"\\\\b\\\\d+\\\\b\"\n },\n {\n \"name\": \"comment.block.oxql\",\n \"begin\": \"/\\\\*\",\n \"end\": \"\\\\*/\"\n },\n {\n \"name\": \"comment.line.double-slash.oxql\",\n \"match\": \"//.*$\"\n },\n {\n \"name\": \"keyword.operator.oxql\",\n \"match\": \"\\\\|\"\n }\n ]\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n \"name\": \"p4\",\n \"scopeName\": \"source.p4\",\n \"repository\": {\n \"comment\": {\n \"patterns\": [\n {\n \"name\": \"comment.line.double-slash.p4\",\n \"match\": \"//.*$\"\n },\n {\n \"name\": \"comment.block.p4\",\n \"begin\": \"/\\\\*\",\n \"end\": \"\\\\*/\"\n }\n ]\n },\n \"keywords\": {\n \"patterns\": [\n {\n \"name\": \"constant.language.p4\",\n \"match\": \"\\\\b(?:false|true)\\\\b\"\n },\n {\n \"name\": \"keyword.control.p4\",\n \"match\": \"\\\\b(?:default_action|transition|counters|NoAction|optional|actions|control|default|package|ternary|typedef|action|extern|header|meters|parser|return|select|struct|apply|const|exact|inout|range|state|table|else|size|key|lpm|out|if|in|_)\\\\b\"\n },\n {\n \"name\": \"storage.type.p4\",\n \"match\": \"\\\\b(?:packet_out|packet_in|varbit|error|tuple|bool|bit|int)\\\\b\"\n }\n ]\n }\n },\n \"patterns\": [\n {\n \"name\": \"keyword.control.directive.p4\",\n \"match\": \"^\\\\s*#\\\\s*\\\\w+\"\n },\n {\n \"include\": \"#comment\"\n },\n {\n \"name\": \"string.quoted.double.p4\",\n \"begin\": \"\\\"\",\n \"end\": \"\\\"\",\n \"patterns\": [\n {\n \"name\": \"constant.character.escape.p4\",\n \"match\": \"\\\\\\\\.\"\n }\n ]\n },\n {\n \"match\": \"(@)([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"punctuation.definition.annotation.p4\"\n },\n \"2\": {\n \"name\": \"storage.type.annotation.p4\"\n }\n }\n },\n {\n \"name\": \"storage.type.p4\",\n \"match\": \"\\\\b(?:bit|varbit)\\\\s*<\\\\s*\\\\d+\\\\s*>|\\\\btuple\\\\s*<(?:[^<>]|<[^>]*>)*>\"\n },\n {\n \"name\": \"constant.numeric.p4\",\n \"match\": \"\\\\b(?:\\\\d+w0x[0-9a-fA-F]+|\\\\d+w\\\\d+|0x[0-9a-fA-F]+|\\\\d+)\\\\b\"\n },\n {\n \"match\": \"\\\\b(typedef|struct|header|extern)\\\\s+([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n },\n \"2\": {\n \"name\": \"storage.type.p4\"\n }\n }\n },\n {\n \"match\": \"\\\\b(table|parser|control|state|package)\\\\s+([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n },\n \"2\": {\n \"name\": \"entity.name.type.p4\"\n }\n }\n },\n {\n \"match\": \"\\\\b(action)\\\\s+([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n },\n \"2\": {\n \"name\": \"entity.name.function.p4\"\n }\n }\n },\n {\n \"name\": \"storage.type.p4\",\n \"match\": \"\\\\b[A-Za-z_]\\\\w*_[th]\\\\b\"\n },\n {\n \"begin\": \"\\\\b(actions)\\\\s*=\\\\s*\\\\{\",\n \"end\": \"\\\\}\",\n \"beginCaptures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n }\n },\n \"patterns\": [\n {\n \"include\": \"#comment\"\n },\n {\n \"include\": \"#keywords\"\n },\n {\n \"name\": \"entity.name.function.p4\",\n \"match\": \"\\\\b[A-Za-z_]\\\\w*\\\\b\"\n }\n ]\n },\n {\n \"include\": \"#keywords\"\n },\n {\n \"match\": \"(\\\\.)([A-Za-z_]\\\\w*)(?=\\\\s*\\\\()\",\n \"captures\": {\n \"1\": {\n \"name\": \"punctuation.accessor.p4\"\n },\n \"2\": {\n \"name\": \"entity.name.function.p4\"\n }\n }\n },\n {\n \"name\": \"entity.name.function.p4\",\n \"match\": \"(?<!\\\\.)\\\\b[A-Za-z_]\\\\w*(?=\\\\s*\\\\()\"\n }\n ]\n}\n","{\n \"name\": \"Oxide Dark\",\n \"colors\": {\n \"editor.background\": \"var(--syntax-bg)\",\n \"editor.foreground\": \"var(--syntax-fg)\"\n },\n \"tokenColors\": [\n {\n \"scope\": [\n \"text\",\n \"source\",\n \"variable.other.readwrite\",\n \"punctuation.definition.variable\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"punctuation\",\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"comment\", \"punctuation.definition.comment\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\"\n }\n },\n {\n \"scope\": [\"string\", \"punctuation.definition.string\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-string)\"\n }\n },\n {\n \"scope\": \"constant.character.escape\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\n \"constant.numeric\",\n \"variable.other.constant\",\n \"entity.name.constant\",\n \"constant.language.boolean\",\n \"constant.language.false\",\n \"constant.language.true\",\n \"keyword.other.unit.user-defined\",\n \"keyword.other.unit.suffix.floating-point\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"keyword\",\n \"keyword.operator.word\",\n \"keyword.operator.new\",\n \"variable.language.super\",\n \"support.type.primitive\",\n \"storage.type\",\n \"storage.modifier\",\n \"punctuation.definition.keyword\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"entity.name.tag.documentation\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"keyword.operator\",\n \"punctuation.accessor\",\n \"punctuation.definition.generic\",\n \"meta.function.closure punctuation.section.parameters\",\n \"punctuation.definition.tag\",\n \"punctuation.separator.key-value\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.function\",\n \"meta.function-call.method\",\n \"support.function\",\n \"support.function.misc\",\n \"variable.function\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.class\",\n \"entity.other.inherited-class\",\n \"support.class\",\n \"meta.function-call.constructor\",\n \"entity.name.struct\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.enum\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"meta.enum variable.other.readwrite\", \"variable.other.enummember\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.property.object\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\"meta.type\", \"meta.type-alias\", \"support.type\", \"entity.name.type\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"meta.annotation variable.function\",\n \"meta.annotation variable.annotation.function\",\n \"meta.annotation punctuation.definition.annotation\",\n \"meta.decorator\",\n \"punctuation.decorator\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"variable.parameter\", \"meta.function.parameters\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": [\"constant.language\", \"support.function.builtin\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"entity.other.attribute-name.documentation\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"keyword.control.directive\", \"punctuation.definition.directive\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"punctuation.definition.typeparameters\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"entity.name.namespace\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"support.type.property-name.css\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"variable.language.this\",\n \"variable.language.this punctuation.definition.variable\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"variable.object.property\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"string.template variable\", \"string variable\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"keyword.operator.new\",\n \"settings\": {\n \"fontStyle\": \"bold\"\n }\n },\n {\n \"scope\": \"storage.modifier.specifier.extern.cpp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.scope-resolution.template.call.cpp\",\n \"entity.name.scope-resolution.parameter.cpp\",\n \"entity.name.scope-resolution.cpp\",\n \"entity.name.scope-resolution.function.definition.cpp\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"storage.type.class.doxygen\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"storage.modifier.reference.cpp\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.interpolation.cs\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"comment.block.documentation.cs\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\n \"source.css entity.other.attribute-name.class.css\",\n \"entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"punctuation.separator.operator.css\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"source.css entity.other.attribute-name.pseudo-class\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"source.css constant.other.unicode-range\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"source.css variable.parameter.url\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.type.vendored.property-name\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"source.css meta.property-value variable\",\n \"source.css meta.property-value variable.other.less\",\n \"source.css meta.property-value variable.other.less punctuation.definition.variable.less\",\n \"meta.definition.variable.scss\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": [\n \"source.css meta.property-list variable\",\n \"meta.property-list variable.other.less\",\n \"meta.property-list variable.other.less punctuation.definition.variable.less\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"keyword.other.unit.percentage.css\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"source.css meta.attribute-selector\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"keyword.other.definition.ini\",\n \"punctuation.support.type.property-name.json\",\n \"support.type.property-name.json\",\n \"punctuation.support.type.property-name.toml\",\n \"support.type.property-name.toml\",\n \"entity.name.tag.yaml\",\n \"punctuation.support.type.property-name.yaml\",\n \"support.type.property-name.yaml\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"constant.language.json\", \"constant.language.yaml\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"entity.name.type.anchor.yaml\", \"variable.other.alias.yaml\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.type.property-name.table\", \"entity.name.section.group-title.ini\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.time.datetime.offset.toml\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\"punctuation.definition.anchor.yaml\", \"punctuation.definition.alias.yaml\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"entity.other.document.begin.yaml\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"markup.changed.diff\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"meta.diff.header.from-file\",\n \"meta.diff.header.to-file\",\n \"punctuation.definition.from-file.diff\",\n \"punctuation.definition.to-file.diff\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"markup.inserted.diff\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"markup.deleted.diff\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"variable.other.env\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\"string.quoted variable.other.env\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"support.function.builtin.gdscript\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"constant.language.gdscript\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"comment meta.annotation.go\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"comment meta.annotation.parameters.go\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.language.go\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"variable.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"string.unquoted.alias.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-string-alias)\"\n }\n },\n {\n \"scope\": \"constant.character.enum.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-string-alias)\"\n }\n },\n {\n \"scope\": [\n \"keyword.other.doctype\",\n \"meta.tag.sgml.doctype punctuation.definition.tag\",\n \"meta.tag.metadata.doctype entity.name.tag\",\n \"meta.tag.metadata.doctype punctuation.definition.tag\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\"entity.name.tag\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"text.html constant.character.entity\",\n \"text.html constant.character.entity punctuation\",\n \"constant.character.entity.xml\",\n \"constant.character.entity.xml punctuation\",\n \"constant.character.entity.js.jsx\",\n \"constant.charactger.entity.js.jsx punctuation\",\n \"constant.character.entity.tsx\",\n \"constant.character.entity.tsx punctuation\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"entity.other.attribute-name\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"support.class.component\",\n \"support.class.component.jsx\",\n \"support.class.component.tsx\",\n \"support.class.component.vue\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"punctuation.definition.annotation\", \"storage.type.annotation\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.enum.java\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"storage.modifier.import.java\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"comment.block.javadoc.java keyword.other.documentation.javadoc.java\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"meta.export variable.other.readwrite.js\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": [\n \"variable.other.constant.js\",\n \"variable.other.constant.ts\",\n \"variable.other.property.js\",\n \"variable.other.property.ts\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"variable.other.jsdoc\", \"comment.block.documentation variable.other\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"storage.type.class.jsdoc\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"support.type.object.console.js\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"support.constant.node\", \"support.type.object.module.js\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"storage.modifier.implements\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"constant.language.null.js\",\n \"constant.language.null.ts\",\n \"constant.language.undefined.js\",\n \"constant.language.undefined.ts\",\n \"support.type.builtin.ts\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"variable.parameter.generic\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"keyword.declaration.function.arrow.js\", \"storage.type.function.arrow.ts\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"punctuation.decorator.ts\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"keyword.operator.expression.in.js\",\n \"keyword.operator.expression.in.ts\",\n \"keyword.operator.expression.infer.ts\",\n \"keyword.operator.expression.instanceof.js\",\n \"keyword.operator.expression.instanceof.ts\",\n \"keyword.operator.expression.is\",\n \"keyword.operator.expression.keyof.ts\",\n \"keyword.operator.expression.of.js\",\n \"keyword.operator.expression.of.ts\",\n \"keyword.operator.expression.typeof.ts\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"support.function.macro.julia\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"constant.language.julia\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.symbol.julia\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"text.tex keyword.control.preamble\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"text.tex support.function.be\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"constant.other.general.math.tex\",\n \"settings\": {\n \"foreground\": \"var(--syntax-string-alias)\"\n }\n },\n {\n \"scope\": \"comment.line.double-dash.documentation.lua storage.type.annotation.lua\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"comment.line.double-dash.documentation.lua entity.name.variable.lua\",\n \"comment.line.double-dash.documentation.lua variable.lua\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\n \"heading.1.markdown punctuation.definition.heading.markdown\",\n \"heading.1.markdown\",\n \"heading.1.quarto punctuation.definition.heading.quarto\",\n \"heading.1.quarto\",\n \"markup.heading.atx.1.mdx\",\n \"markup.heading.atx.1.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.setext.1.markdown\",\n \"markup.heading.heading-0.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\n \"heading.2.markdown punctuation.definition.heading.markdown\",\n \"heading.2.markdown\",\n \"heading.2.quarto punctuation.definition.heading.quarto\",\n \"heading.2.quarto\",\n \"markup.heading.atx.2.mdx\",\n \"markup.heading.atx.2.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.setext.2.markdown\",\n \"markup.heading.heading-1.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"heading.3.markdown punctuation.definition.heading.markdown\",\n \"heading.3.markdown\",\n \"heading.3.quarto punctuation.definition.heading.quarto\",\n \"heading.3.quarto\",\n \"markup.heading.atx.3.mdx\",\n \"markup.heading.atx.3.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-2.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"heading.4.markdown punctuation.definition.heading.markdown\",\n \"heading.4.markdown\",\n \"heading.4.quarto punctuation.definition.heading.quarto\",\n \"heading.4.quarto\",\n \"markup.heading.atx.4.mdx\",\n \"markup.heading.atx.4.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-3.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"heading.5.markdown punctuation.definition.heading.markdown\",\n \"heading.5.markdown\",\n \"heading.5.quarto punctuation.definition.heading.quarto\",\n \"heading.5.quarto\",\n \"markup.heading.atx.5.mdx\",\n \"markup.heading.atx.5.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-4.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"heading.6.markdown punctuation.definition.heading.markdown\",\n \"heading.6.markdown\",\n \"heading.6.quarto punctuation.definition.heading.quarto\",\n \"heading.6.quarto\",\n \"markup.heading.atx.6.mdx\",\n \"markup.heading.atx.6.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-5.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"markup.bold\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\",\n \"fontStyle\": \"bold\"\n }\n },\n {\n \"scope\": \"markup.italic\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"markup.strikethrough\",\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\",\n \"fontStyle\": \"strikethrough\"\n }\n },\n {\n \"scope\": [\"punctuation.definition.link\", \"markup.underline.link\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"text.html.markdown punctuation.definition.link.title\",\n \"text.html.quarto punctuation.definition.link.title\",\n \"string.other.link.title.markdown\",\n \"string.other.link.title.quarto\",\n \"markup.link\",\n \"punctuation.definition.constant.markdown\",\n \"punctuation.definition.constant.quarto\",\n \"constant.other.reference.link.markdown\",\n \"constant.other.reference.link.quarto\",\n \"markup.substitution.attribute-reference\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-blue-pale)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.raw.markdown\",\n \"punctuation.definition.raw.quarto\",\n \"markup.inline.raw.string.markdown\",\n \"markup.inline.raw.string.quarto\",\n \"markup.raw.block.markdown\",\n \"markup.raw.block.quarto\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"fenced_code.block.language\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"markup.fenced_code.block punctuation.definition\",\n \"markup.raw support.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\"\n }\n },\n {\n \"scope\": [\"markup.quote\", \"punctuation.definition.quote.begin\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"meta.separator.markdown\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.list.begin.markdown\",\n \"punctuation.definition.list.begin.quarto\",\n \"markup.list.bullet\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"markup.heading.quarto\",\n \"settings\": {\n \"fontStyle\": \"bold\"\n }\n },\n {\n \"scope\": [\n \"entity.other.attribute-name.multipart.nix\",\n \"entity.other.attribute-name.single.nix\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"variable.parameter.name.nix\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"meta.embedded variable.parameter.name.nix\",\n \"settings\": {\n \"foreground\": \"var(--syntax-blue-pale)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"string.unquoted.path.nix\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.attribute.builtin\", \"meta.attribute.php\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"meta.function.parameters.php punctuation.definition.variable.php\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"constant.language.php\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"text.html.php support.function\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"keyword.other.phpdoc.php\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.variable.magic.python\", \"meta.function-call.arguments.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"support.function.magic.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"variable.parameter.function.language.special.self.python\",\n \"variable.language.special.self.python\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"keyword.control.flow.python\", \"keyword.operator.logical.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"storage.type.function.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"support.token.decorator.python\",\n \"meta.function.decorator.identifier.python\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\"meta.function-call.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.function.decorator.python\",\n \"punctuation.definition.decorator.python\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.character.format.placeholder.other.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\"support.type.exception.python\", \"support.function.builtin.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"support.type.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.language.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\"meta.indexed-name.python\", \"meta.item-access.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"storage.type.string.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.function.parameters.python\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"string.regexp punctuation.definition.string.begin\",\n \"string.regexp punctuation.definition.string.end\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"keyword.control.anchor.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"string.regexp.ts\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.group.regexp\",\n \"keyword.other.back-reference.regexp\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"punctuation.definition.character-class.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.character-class.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"constant.other.character-class.range.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-rose)\"\n }\n },\n {\n \"scope\": \"keyword.operator.quantifier.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"constant.character.numeric.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.group.no-capture.regexp\",\n \"meta.assertion.look-ahead.regexp\",\n \"meta.assertion.negative-look-ahead.regexp\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"meta.annotation.rust\",\n \"meta.annotation.rust punctuation\",\n \"meta.attribute.rust\",\n \"punctuation.definition.attribute.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"meta.attribute.rust string.quoted.double.rust\",\n \"meta.attribute.rust string.quoted.single.char.rust\"\n ],\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"entity.name.function.macro.rules.rust\",\n \"storage.type.module.rust\",\n \"storage.modifier.rust\",\n \"storage.type.struct.rust\",\n \"storage.type.enum.rust\",\n \"storage.type.trait.rust\",\n \"storage.type.union.rust\",\n \"storage.type.impl.rust\",\n \"storage.type.rust\",\n \"storage.type.function.rust\",\n \"storage.type.type.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"entity.name.type.numeric.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"meta.generic.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.impl.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.module.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.trait.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"storage.type.source.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.union.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"meta.enum.rust storage.type.source.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"support.macro.rust\",\n \"meta.macro.rust support.function.rust\",\n \"entity.name.function.macro.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\"storage.modifier.lifetime.rust\", \"entity.name.type.lifetime\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"string.quoted.double.rust constant.other.placeholder.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"meta.function.return-type.rust meta.generic.rust storage.type.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"meta.function.call.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"punctuation.brackets.angle.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"constant.other.caps.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"meta.function.definition.rust variable.other.rust\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"meta.function.call.rust variable.other.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"variable.language.self.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\n \"variable.other.metavariable.name.rust\",\n \"meta.macro.metavariable.rust keyword.operator.macro.dollar.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\n \"comment.line.shebang\",\n \"comment.line.shebang punctuation.definition.comment\",\n \"comment.line.shebang\",\n \"punctuation.definition.comment.shebang.shell\",\n \"meta.shebang.shell\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"comment.line.shebang constant.language\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"meta.function-call.arguments.shell punctuation.definition.variable.shell\",\n \"meta.function-call.arguments.shell punctuation.section.interpolation\",\n \"meta.function-call.arguments.shell punctuation.definition.variable.shell\",\n \"meta.function-call.arguments.shell punctuation.section.interpolation\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"meta.string meta.interpolation.parameter.shell variable.other.readwrite\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"source.shell punctuation.section.interpolation\",\n \"punctuation.definition.evaluation.backticks.shell\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"entity.name.tag.heredoc.shell\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"string.quoted.double.shell variable.other.normal.shell\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"token.info-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-blue)\"\n }\n },\n {\n \"scope\": \"token.warn-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-amber)\"\n }\n },\n {\n \"scope\": \"token.error-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"token.debug-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-purple)\"\n }\n }\n ]\n}\n"],"mappings":"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","names":["asciidoctor","Content","attrs","Content","parse","jsx","jsxs","jsx","parse","cn","Fragment","jsx","jsxs","observer","maxIndex","Fragment","cn","parse","useEffect","ad","InlineConverter","jsx","Content","attrs","convertInlineCallout","asciidoctor"]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/src/asciidoc/index.tsx","../../../../components/src/asciidoc/Admonition.tsx","../../../../components/src/asciidoc/Section.tsx","../../../../components/src/asciidoc/Table.tsx","../../../../components/src/asciidoc/TableOfContents.tsx","../../../../components/src/asciidoc/use-delegated-links.ts","../../../../components/src/asciidoc/util.ts","../../../../components/src/asciidoc/langs/oxql.tmLanguage.json","../../../../components/src/asciidoc/langs/p4.tmLanguage.json","../../../../components/src/asciidoc/oxide-syntax.json"],"sourcesContent":["/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport {\n Content,\n inlineHtml,\n parse,\n type DocumentBlock,\n type InlineOverrides,\n} from '@oxide/react-asciidoc'\n\nimport Admonition from './Admonition'\nimport Section from './Section'\nimport Table from './Table'\nimport {\n DesktopOutline,\n SmallScreenOutline,\n useActiveSectionTracking,\n useIntersectionObserver,\n} from './TableOfContents'\nimport { useDelegatedReactRouterLinks } from './use-delegated-links'\nimport { attrs, handleDocument, highlight, loadAsciidoctor } from './util'\n\nconst MinimalDocument = ({ document }: { document: DocumentBlock }) => (\n <div id=\"content\" className=\"asciidoc-body w-full\">\n <Content blocks={document.blocks} />\n </div>\n)\n\nconst AsciiDocBlocks = {\n Admonition,\n Table,\n Section,\n MinimalDocument,\n}\n\n/**\n * Adds word break opportunities (<wbr/>) after slashes in text, except within HTML tags.\n * This function is used to improve line breaks for long paths or URLs in rendered content.\n * *\n * renderWithBreaks('/path/to/long/file.txt')\n * '/<wbr/>path/<wbr/>to/<wbr/>long/<wbr/>file.txt'\n */\nexport const renderWithBreaks = (text: string): string => {\n return text\n .split(/(<[^>]*>)/g)\n .map((segment) => {\n // if the segment is an HTML tag, leave it unchanged\n if (segment.startsWith('<') && segment.endsWith('>')) {\n return segment\n }\n // replace slashes that are not surrounded by spaces\n return segment.replace(/(?:^|(?<=\\S))\\/(?=\\S)/g, '/<wbr/>')\n })\n .join('')\n}\n\n/**\n * Inline-level overrides for the renderer. Pass these to `<Asciidoc>` as\n * `options.inlineOverrides` to apply our customisations to inline content:\n *\n * <Asciidoc document={doc} options={{ overrides: AsciiDocBlocks, inlineOverrides }} />\n *\n * The only customisation today is inserting `<wbr/>` break opportunities into\n * inline monospaced (`code`) spans so long paths and URLs wrap nicely. Every\n * other quoted subtype is rendered exactly as the renderer would by default —\n * we round-trip the node through `inlineHtml` (the renderer's own serialiser)\n * and `parse` it back into React elements, so there's no risk of drifting from\n * the stock output.\n */\nexport const inlineOverrides: InlineOverrides = {\n quoted: ({ node }) => {\n let { __html } = inlineHtml([node])\n if (node.subtype === 'monospaced') {\n __html = renderWithBreaks(__html)\n }\n return <>{parse(__html)}</>\n },\n}\n\nexport {\n AsciiDocBlocks,\n handleDocument,\n highlight,\n loadAsciidoctor,\n attrs,\n DesktopOutline,\n SmallScreenOutline,\n useActiveSectionTracking,\n useIntersectionObserver,\n useDelegatedReactRouterLinks,\n}\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { Content, RenderInline, type AdmonitionBlock } from '@oxide/react-asciidoc'\n\nimport { titleCase } from '../utils'\n\nconst themeForAdmonition: Record<string, string> = {\n note: 'green-theme',\n caution: 'yellow-theme',\n important: 'yellow-theme',\n warning: 'red-theme',\n tip: 'purple-theme',\n}\n\nconst Admonition = ({ node }: { node: AdmonitionBlock }) => {\n const attrs = node.attributes\n const theme = themeForAdmonition[attrs.name] || ''\n\n let icon\n if (attrs.name === 'caution') {\n icon = <Error12 />\n } else if (attrs.name === 'warning') {\n icon = <Warning12 />\n } else {\n icon = <Error12 className=\"rotate-180\" />\n }\n\n return (\n <div className={`admonitionblock ${attrs.name} ${theme}`}>\n <div className=\"admonition-icon\">{icon}</div>\n <div className=\"admonition-content content\">\n <div>{titleCase(attrs.name.toString())}</div>\n <div>\n {node.titleInlines && (\n <div className=\"admonition-title\">\n <RenderInline nodes={node.titleInlines} />\n </div>\n )}\n {/* Simple (single-paragraph) admonitions carry their content as an\n inline AST; multi-block admonitions render their child blocks. */}\n {node.inlines && <RenderInline nodes={node.inlines} />}\n <Content blocks={node.blocks} />\n </div>\n </div>\n </div>\n )\n}\n\nconst Error12 = ({ className }: { className?: string }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12A6 6 0 1 0 6 0a6 6 0 0 0 0 12Zm.083-9c.368 0 .667.299.667.667v2.666A.667.667 0 0 1 6.083 7h-.166a.667.667 0 0 1-.667-.667V3.667c0-.368.299-.667.667-.667h.166Zm0 5c.368 0 .667.299.667.667v.166a.667.667 0 0 1-.667.667h-.166a.667.667 0 0 1-.667-.667v-.166c0-.368.299-.667.667-.667h.166Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n\nconst Warning12 = ({ className }: { className?: string }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12A6 6 0 1 0 6 0a6 6 0 0 0 0 12Zm.083-9c.368 0 .667.299.667.667v2.666A.667.667 0 0 1 6.083 7h-.166a.667.667 0 0 1-.667-.667V3.667c0-.368.299-.667.667-.667h.166Zm0 5c.368 0 .667.299.667.667v.166a.667.667 0 0 1-.667.667h-.166a.667.667 0 0 1-.667-.667v-.166c0-.368.299-.667.667-.667h.166Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n\nexport default Admonition\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { Link16Icon } from '@/icons/react'\nimport { Content, parse, RenderInline, type SectionBlock } from '@oxide/react-asciidoc'\nimport cn from 'classnames'\nimport { createElement, type JSX } from 'react'\n\nconst Section = ({ node }: { node: SectionBlock }) => {\n const level = node.level\n let title: JSX.Element | string = ''\n\n let sectNum = node.num\n sectNum = sectNum && sectNum[0] === '.' ? '' : sectNum\n\n // Captioned titles (appendices, etc.) arrive as an HTML string; everything\n // else comes from the inline AST. The title carries no self-link, so wrapping\n // it in our own `<a>` below doesn't nest anchors.\n const titleContent = node.hasCaption ? (\n parse(node.title)\n ) : (\n <RenderInline nodes={node.titleInlines} />\n )\n\n title = (\n <>\n <span className=\"anchor\" id={node.id || ''} aria-hidden=\"true\" />\n <a className=\"link group\" href={`#${node.id}`}>\n {titleContent}\n <Link16Icon className=\"text-accent-secondary ml-2 hidden group-hover:inline-block\" />\n </a>\n </>\n )\n\n if (level === 0) {\n return (\n <>\n <h1 className={cn('sect0', node.role)} data-sectnum={sectNum}>\n {title}\n </h1>\n <Content blocks={node.blocks} />\n </>\n )\n } else {\n return (\n <div className={cn(`sect${level}`, node.role)}>\n {createElement(`h${level + 1}`, { 'data-sectnum': sectNum }, title)}\n <div className=\"sectionbody\">\n <Content blocks={node.blocks} />\n </div>\n </div>\n )\n }\n}\n\nexport default Section\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { Table as InnerTable, type TableBlock } from '@oxide/react-asciidoc'\n\nconst Table = ({ node }: { node: TableBlock }) => (\n <div className=\"table-wrapper\">\n <InnerTable node={node} />\n </div>\n)\n\nexport default Table\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport { DirectionRightIcon } from '@/icons/react'\nimport { parse, type DocumentSection } from '@oxide/react-asciidoc'\nimport * as Accordion from '@radix-ui/react-accordion'\nimport cn from 'classnames'\nimport { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\n// A TOC entry is itself an `<a>`, so any anchors inside the title text would\n// nest (invalid HTML + a client/server hydration mismatch). Strip the anchor\n// tags but keep their inner content — mirrors asciidoctor's `DropAnchorRx`\n// (and the renderer's own `convert_outline`).\nconst dropAnchors = (html: string): string =>\n html.includes('<a') ? html.replace(/<(?:a\\b[^>]*|\\/a)>/g, '') : html\n\nexport function useIntersectionObserver(\n elements: Element[],\n callback: IntersectionObserverCallback,\n options: IntersectionObserverInit,\n) {\n const [observer, setObserver] = useState<IntersectionObserver | null>(null)\n\n // Create the observer in an effect so we can tear it down when this unmounts\n useEffect(() => {\n const observer = new IntersectionObserver(callback, options)\n setObserver(observer)\n\n return () => {\n observer.disconnect()\n }\n }, [callback, options])\n\n // Bind the elements that should be listened for\n useEffect(() => {\n if (observer) {\n for (const element of elements) {\n observer.observe(element)\n }\n }\n\n return () => {\n if (observer) {\n for (const element of elements) {\n observer.unobserve(element)\n }\n }\n }\n }, [elements, observer])\n\n return observer\n}\n\n// Create threshold steps that trigger intersection events every 0.05%. This is needed to provide\n// decent measurements on very tall elements. In the future we could instead compute the needed\n// thresholds on a per element basis so that we are measuring per pixel instead of per percent.\nconst THRESHOLD = [...Array(2000).keys()].map((n) => n / 2000)\n\nfunction isTopLevelSection(element: Element): boolean {\n return element.classList.contains('sect1')\n}\n\n// Uses the asciidoc generated classes to find the closest section wrapping parent element\nfunction findParentSection(element: Element): Element | null {\n const sect2Wrapper = element.closest('.sect2')\n return sect2Wrapper ? sect2Wrapper : element.closest('.sect1')\n}\n\nfunction newSection(\n node: number,\n element: Element,\n wrapper: Element,\n parent: number | null,\n): Section {\n return {\n node,\n element,\n wrapper,\n parent,\n children: [],\n }\n}\n\nfunction buildSectionTree(elements: Element[]): Section[] {\n const sections = []\n let parent = null\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i]\n const parentWrapper = findParentSection(element)\n\n if (parentWrapper) {\n if (parentWrapper && isTopLevelSection(parentWrapper)) {\n const section = newSection(i, element, parentWrapper, null)\n sections.push(section)\n parent = section\n } else {\n if (parent === null) {\n // Fail to construct a tree if the provided elements are invalid\n return []\n } else {\n const section = newSection(i, element, parentWrapper, parent.node)\n parent.children.push(i)\n sections.push(section)\n }\n }\n } else {\n // Fail to construct a tree if the provided elements are invalid\n return []\n }\n }\n\n return sections\n}\n\nfunction maxIndex(nums: number[]): number | undefined {\n return nums.reduce<number | undefined>((maxIndex, current, currentIndex) => {\n const currentMax = maxIndex !== undefined ? nums[maxIndex] : 0\n return current > currentMax ? currentIndex : maxIndex\n }, undefined)\n}\n\ntype Section = {\n node: number\n element: Element\n wrapper: Element\n parent: number | null\n children: number[]\n}\n// This hook will call the provided callback whenever a section that is identified by a heading is\n// determined to be \"active\". A section is considered to be the \"active\" section when covers more\n// space of the specified measuring area than any other section.\nexport function useActiveSectionTracking(\n initialSections: Element[],\n onSectionChange: (element: Element) => void,\n debug = false,\n) {\n // Construct a tree in the form of a basic array that will allow for traversing between parent\n // an child nodes quickly\n const [sectionWrappers, setSectionWrappers] = useState<Section[]>(\n buildSectionTree(initialSections),\n )\n\n // Internally we need to track the coverage percentage for each element without triggering\n // renders\n const sectionMeasurements = useRef<number[]>([])\n\n // The caller only provides the hook with section headers and so we need to map those to their\n // relevant containing sections\n const setSections = useCallback(\n (sections: Element[]) => {\n setSectionWrappers(buildSectionTree(sections))\n\n // When sections change we need to also zero out our section visibility measurements\n sectionMeasurements.current = []\n },\n [setSectionWrappers],\n )\n\n // Create the section tracker\n const wrapperActivator = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n // For each observed element that has interacted with our intersection window we want to\n // compute and record the percentage of space that is covered by the element. This work is all\n // performed off of the main thread\n for (const entry of entries) {\n // Find where in our list of section wrapper elements the entry that changed is\n const index = sectionWrappers.findIndex((node) => node.wrapper === entry.target)\n\n // We are only trying to detect vertical scroll changes and therefore only need to use the\n // heigh to compute the coverage percentage\n const covered = entry.intersectionRect.height / (entry.rootBounds?.height || 1)\n sectionMeasurements.current[index] = covered\n }\n\n // For each section element, compute the amount of space that is \"owned\" by that element. In\n // this check, space is considered \"owned\" by the element furthest down the tree.\n //\n // Example:\n // A parent element covers 70% of the measured space. This element has two child elements,\n // one that covers 30%, and another that covers 25%. In this case both of the child elements\n // own their respective spaces, and the parent owns 15% (70 - (30 + 25)) of the space.\n //\n // Because we are only trying to determine the space owned by a single element, we do not need\n // to traverse further than that elements direct descendants\n const ownedSectionSizes = sectionWrappers.map((section) => {\n const childSizes = section.children\n .map((c) => sectionMeasurements.current[c])\n .reduce((c, a) => c + a, 0)\n return sectionMeasurements.current[section.node] - childSizes\n })\n\n // Now that we have a list of how much of the measured space each element takes up, we simply\n // find the element that is taking up the most space, and assign it to be the current section\n const activeSectionIndex = maxIndex(ownedSectionSizes)\n\n if (activeSectionIndex !== undefined) {\n onSectionChange(sectionWrappers[activeSectionIndex].element)\n }\n },\n [sectionWrappers, onSectionChange],\n )\n\n // Define our measurement area. This space is relative to the root element (i.e. the screen). It\n // is a band that starts at 5% down from the top, and ends at 80% up from the bottom of the\n // screen.\n const wrapperSettings = useMemo(\n () => ({ threshold: THRESHOLD, rootMargin: `-15% 0px -70% 0px` }),\n [],\n )\n\n // We need to ensure that we are only sending valid sections to be observed\n const bindableWrappers = useMemo(\n () => sectionWrappers.map((s) => s.wrapper),\n [sectionWrappers],\n )\n\n // Generate the intersection observer based on the above configuration\n const sectionObserver = useIntersectionObserver(\n bindableWrappers,\n wrapperActivator,\n wrapperSettings,\n )\n\n let debugNode = null\n if (debug && sectionObserver?.root === null) {\n // Parse and invert the margins\n const edges = sectionObserver.rootMargin.split(' ').map((margin) => {\n if (margin.endsWith('%')) {\n return parseInt(margin) * -1 + '%'\n } else if (margin.endsWith('px')) {\n return parseInt(margin) * -1 + 'px'\n } else {\n return '0px'\n }\n })\n\n debugNode = (\n <div\n style={{\n position: 'fixed',\n top: edges[0],\n right: edges[1],\n bottom: edges[2],\n left: edges[3],\n background: 'rgba(255, 92, 170, 0.2)',\n border: '1px solid rgba(255, 92, 170)',\n pointerEvents: 'none',\n zIndex: 500,\n }}\n />\n )\n }\n\n return {\n setSections,\n debugNode,\n }\n}\n\nexport const DesktopOutline = ({\n toc,\n activeItem,\n className,\n}: {\n toc: DocumentSection[]\n activeItem: string\n className?: string\n}) => {\n const renderToc = (sections: DocumentSection[]) => {\n return sections.map((item) => (\n <Fragment key={item.id}>\n <li\n data-level={item.level}\n className={cn('text-sans-sm mb-0 list-none', item.level > 2 && 'hidden')}\n >\n <a\n href={`#${item.id}`}\n className={cn(\n 'block border-l py-[4px] pr-4',\n activeItem === item.id\n ? 'active text-accent-secondary light:text-default light:border-green-800 border-accent-secondary hover:text-accent hover:light:text-raise'\n : 'text-tertiary border-secondary hover:text-secondary',\n )}\n style={{\n paddingLeft: `${0.5 + item.level * 0.5}rem`,\n }}\n >\n {parse(dropAnchors(item.title))}\n </a>\n </li>\n {item.sections && renderToc(item.sections)}\n </Fragment>\n ))\n }\n\n if (toc && toc.length > 0) {\n return <ul className={cn('toc w-(--toc-width)', className)}>{renderToc(toc)}</ul>\n }\n\n return null\n}\nexport const SmallScreenOutline = ({\n toc,\n activeItem,\n className,\n}: {\n toc: DocumentSection[]\n activeItem: string\n className?: string\n}) => {\n const [value, setValue] = useState('')\n\n const renderToc = (sections: DocumentSection[]) => {\n return sections.map((item) => (\n <Fragment key={item.id}>\n <li\n data-level={item.level}\n className={cn('text-sans-sm list-none', item.level > 2 && 'hidden')}\n >\n <a\n href={`#${item.id}`}\n onClick={() => setValue('')}\n className={cn(\n 'block border-l py-[4px]',\n activeItem === item.id\n ? 'active text-accent-secondary light:text-default light:border-green-800 border-accent-secondary hover:text-accent'\n : 'text-tertiary border-secondary hover:text-secondary',\n )}\n style={{\n paddingLeft: `${0.5 + item.level * 0.5}rem`,\n }}\n >\n {parse(dropAnchors(item.title))}\n </a>\n </li>\n {item.sections && renderToc(item.sections)}\n </Fragment>\n ))\n }\n\n if (toc && toc.length > 0) {\n return (\n <Accordion.Root\n type=\"single\"\n className={cn(\n 'toc bg-default border-secondary sticky top-[calc(var(--header-height)-1px)] z-10 -mt-px mb-10 block w-full border-t border-b print:hidden',\n className,\n )}\n collapsible\n value={value}\n onValueChange={setValue}\n >\n <Accordion.Item value=\"toc\">\n <Accordion.Header>\n <Accordion.Trigger className=\"text-sans-md text-default hover:bg-hover flex h-12 w-full items-center justify-between px-(--container-px) [&>svg]:data-[state=open]:rotate-90\">\n Table of Contents{' '}\n <DirectionRightIcon className=\"text-tertiary transition-all\" />\n </Accordion.Trigger>\n </Accordion.Header>\n\n <Accordion.Content className=\"animated-accordion hydrated border-secondary max-h-[60vh] w-full overflow-y-scroll border-t px-(--container-px)\">\n <div className=\"py-4\">{renderToc(toc)}</div>\n </Accordion.Content>\n </Accordion.Item>\n </Accordion.Root>\n )\n }\n\n return null\n}\n","/**\n * MIT License\n *\n * Copyright (c) React Training LLC 2015-2021\n * Copyright (c) Shopify Inc. 2022-2023\n * From https://github.com/remix-run/react-router-website/blob/main/app/ui/delegate-markdown-links.ts\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n */\nimport { useEffect } from 'react'\n\n// copied from React Router, unlikely to change\n// https://github.com/remix-run/react-router/blob/7b041811/packages/react-router/lib/router/history.ts#L32-L50\ninterface Path {\n pathname: string\n search: string\n hash: string\n}\n\n// https://github.com/remix-run/react-router/blob/7b041811/packages/react-router/lib/router/history.ts#L101-L105\ntype To = string | Partial<Path>\n\n// Converts regular AsciiDoc a tags and makes them React Routery\n// Added key so that this is reloaded when the user routes from one document to another directly\nfunction useDelegatedReactRouterLinks(\n // this is to avoid a dependency on remix/react router\n /** Pass in the result of `useNavigate()` in the calling application. */\n navigate: (to: To) => void,\n nodeRef: React.RefObject<HTMLElement | null>,\n key: string,\n) {\n useEffect(() => {\n const node = nodeRef.current\n const handler = (event: MouseEvent) => {\n if (!nodeRef.current) return\n\n if (!(event.target instanceof HTMLElement)) return\n\n const a = event.target.closest('a')\n\n if (\n a && // is anchor or has anchor parent\n a.hasAttribute('href') && // has an href\n a.host === window.location.host && // is internal\n event.button === 0 && // left click\n (!a.target || a.target === '_self') && // Let browser handle \"target=_blank\" etc.\n !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) // not modified\n ) {\n event.preventDefault()\n const { pathname, search, hash } = a\n navigate({ pathname, search, hash })\n }\n }\n\n if (!node) return\n node.addEventListener('click', handler)\n\n return () => {\n node?.removeEventListener('click', handler)\n }\n }, [navigate, nodeRef, key])\n}\n\nexport { useDelegatedReactRouterLinks }\n","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, you can obtain one at https://mozilla.org/MPL/2.0/.\n *\n * Copyright Oxide Computer Company\n */\nimport asciidoctor, { type Document, type Registry } from '@asciidoctor/core'\nimport {\n Block,\n Inline,\n LiteralBlock,\n prepareDocument,\n processDocument,\n} from '@oxide/react-asciidoc'\nimport {\n bundledLanguages,\n createHighlighter,\n type BundledLanguage,\n type BundledTheme,\n type HighlighterGeneric,\n type LanguageInput,\n} from 'shiki'\n\nimport oxql from './langs/oxql.tmLanguage.json'\n// p4.tmLanguage.json is derived from the highlights query in\n// https://github.com/oxidecomputer/tree-sitter-p4 (queries/highlights.scm).\nimport p4 from './langs/p4.tmLanguage.json'\nimport theme from './oxide-syntax.json'\n\nlet highlighterPromise: Promise<\n HighlighterGeneric<BundledLanguage, BundledTheme>\n> | null = null\nconst customLanguages = ['oxql', 'p4']\nconst supportedLanguages = [...Object.keys(bundledLanguages), ...customLanguages]\n\nexport function getHighlighter() {\n if (!highlighterPromise) {\n const langs: LanguageInput[] = [{ ...oxql }, { ...p4 }]\n highlighterPromise = createHighlighter({ themes: [theme], langs })\n }\n return highlighterPromise\n}\n\nexport async function highlightCode(\n code: string,\n lang: string,\n { inline = false }: { inline?: boolean } = {},\n): Promise<string> {\n const h = await getHighlighter()\n const resolved = supportedLanguages.includes(lang) ? lang : 'text'\n if (!h.getLoadedLanguages().includes(resolved)) {\n await h.loadLanguage(resolved as BundledLanguage)\n }\n return h.codeToHtml(code, {\n lang: resolved,\n theme,\n ...(inline ? { structure: 'inline' as const } : {}),\n })\n}\n\nconst highlight = async (block: Block): Promise<Block> => {\n if (block.type === 'listing') {\n const literalBlock = block as LiteralBlock\n\n // Listing content is always a single string (the per-paragraph array form\n // is only used for table cells), but the type is a union — guard for it.\n if (!literalBlock.content || typeof literalBlock.content !== 'string') {\n return block\n }\n\n // Turn callout markers (`<N>`, optionally comment-prefixed) into the\n // `<i class=\"conum\" data-value=\"N\"></i><b>(N)</b>` markup asciidoc.css\n // styles (it hides the trailing `<b>`).\n const lineComment = literalBlock.attributes['line-comment']\n const content = Inline.subCallouts(\n literalBlock.content,\n true,\n lineComment !== undefined ? String(lineComment) : undefined,\n )\n\n // Replace the conum markup with placeholders before highlighting, otherwise\n // the syntax highlighter escapes it and it shows up as literal text. Cover\n // the trailing `<b>` badge too so the whole unit is restored intact.\n const calloutRegex =\n /<i class=\"conum\" data-value=\"\\d+\"><\\/i>(?:<b>\\(\\d+\\)<\\/b>)?/g\n const callouts: string[] = []\n const placeholderContent = content.replace(calloutRegex, (match) => {\n callouts.push(match)\n return `__CALLOUT_PLACEHOLDER_${callouts.length - 1}__`\n })\n\n // If no language specified, we still want to support callouts\n if (!literalBlock.language) {\n return {\n ...block,\n content: placeholderContent.replace(\n /__CALLOUT_PLACEHOLDER_(\\d+)__/g,\n (_, index) => callouts[parseInt(index)],\n ),\n }\n }\n\n const highlightedContent = await highlightCode(\n placeholderContent,\n literalBlock.language,\n { inline: true },\n )\n\n // Restore callouts in the highlighted content\n const restoredContent = highlightedContent.replace(\n /__CALLOUT_PLACEHOLDER_(\\d+)__/g,\n (_, index) => callouts[parseInt(index)],\n )\n\n return {\n ...block,\n content: restoredContent,\n }\n }\n return block\n}\n\nconst attrs = {\n sectlinks: 'true',\n stem: 'latexmath',\n stylesheet: false,\n}\n\nconst loadAsciidoctor = ({\n extensions = [],\n}: {\n extensions?: ((this: Registry) => void)[]\n}) => {\n const ad = asciidoctor()\n\n // Rendering goes through `prepareDocument` + React templates, so only\n // extensions need registering; they run at `ad.load` time (e.g. include\n // processing). Inline content (callouts, quotes, etc.) is produced by the\n // renderer's inline parser.\n extensions.forEach((extension) => ad.Extensions.register(extension))\n\n return ad\n}\n\nconst handleDocument = async (document: Document) => {\n const doc = prepareDocument(document)\n return await processDocument(doc, highlight)\n}\n\nexport { handleDocument, highlight, loadAsciidoctor, attrs }\n","{\n \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n \"name\": \"oxql\",\n \"repository\": {\n \"keywords\": {\n \"patterns\": [\n {\n \"name\": \"keyword.control.oxql\",\n \"match\": \"\\\\b(if|while|for|return)\\\\b\"\n }\n ]\n },\n \"strings\": {\n \"name\": \"string.quoted.double.oxql\",\n \"begin\": \"\\\"\",\n \"end\": \"\\\"\",\n \"patterns\": [\n {\n \"name\": \"constant.character.escape.oxql\",\n \"match\": \"\\\\\\\\.\"\n }\n ]\n }\n },\n \"scopeName\": \"source.oxql\",\n \"patterns\": [\n {\n \"name\": \"keyword.control.oxql\",\n \"match\": \"\\\\b(get|join|align|filter|group_by)\\\\b\"\n },\n {\n \"name\": \"string.quoted.double.oxql\",\n \"begin\": \"\\\"\",\n \"end\": \"\\\"\",\n \"patterns\": [\n {\n \"name\": \"constant.character.escape.oxql\",\n \"match\": \"\\\\\\\\.\"\n }\n ]\n },\n {\n \"name\": \"constant.numeric.oxql\",\n \"match\": \"\\\\b\\\\d+[smhdw]\\\\b\"\n },\n {\n \"name\": \"constant.numeric.datetime.oxql\",\n \"match\": \"@\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\"\n },\n {\n \"name\": \"constant.numeric.function.oxql\",\n \"match\": \"@now\\\\(\\\\)\"\n },\n {\n \"name\": \"constant.numeric.oxql\",\n \"match\": \"\\\\b\\\\d+\\\\b\"\n },\n {\n \"name\": \"comment.block.oxql\",\n \"begin\": \"/\\\\*\",\n \"end\": \"\\\\*/\"\n },\n {\n \"name\": \"comment.line.double-slash.oxql\",\n \"match\": \"//.*$\"\n },\n {\n \"name\": \"keyword.operator.oxql\",\n \"match\": \"\\\\|\"\n }\n ]\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n \"name\": \"p4\",\n \"scopeName\": \"source.p4\",\n \"repository\": {\n \"comment\": {\n \"patterns\": [\n {\n \"name\": \"comment.line.double-slash.p4\",\n \"match\": \"//.*$\"\n },\n {\n \"name\": \"comment.block.p4\",\n \"begin\": \"/\\\\*\",\n \"end\": \"\\\\*/\"\n }\n ]\n },\n \"keywords\": {\n \"patterns\": [\n {\n \"name\": \"constant.language.p4\",\n \"match\": \"\\\\b(?:false|true)\\\\b\"\n },\n {\n \"name\": \"keyword.control.p4\",\n \"match\": \"\\\\b(?:default_action|transition|counters|NoAction|optional|actions|control|default|package|ternary|typedef|action|extern|header|meters|parser|return|select|struct|apply|const|exact|inout|range|state|table|else|size|key|lpm|out|if|in|_)\\\\b\"\n },\n {\n \"name\": \"storage.type.p4\",\n \"match\": \"\\\\b(?:packet_out|packet_in|varbit|error|tuple|bool|bit|int)\\\\b\"\n }\n ]\n }\n },\n \"patterns\": [\n {\n \"name\": \"keyword.control.directive.p4\",\n \"match\": \"^\\\\s*#\\\\s*\\\\w+\"\n },\n {\n \"include\": \"#comment\"\n },\n {\n \"name\": \"string.quoted.double.p4\",\n \"begin\": \"\\\"\",\n \"end\": \"\\\"\",\n \"patterns\": [\n {\n \"name\": \"constant.character.escape.p4\",\n \"match\": \"\\\\\\\\.\"\n }\n ]\n },\n {\n \"match\": \"(@)([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"punctuation.definition.annotation.p4\"\n },\n \"2\": {\n \"name\": \"storage.type.annotation.p4\"\n }\n }\n },\n {\n \"name\": \"storage.type.p4\",\n \"match\": \"\\\\b(?:bit|varbit)\\\\s*<\\\\s*\\\\d+\\\\s*>|\\\\btuple\\\\s*<(?:[^<>]|<[^>]*>)*>\"\n },\n {\n \"name\": \"constant.numeric.p4\",\n \"match\": \"\\\\b(?:\\\\d+w0x[0-9a-fA-F]+|\\\\d+w\\\\d+|0x[0-9a-fA-F]+|\\\\d+)\\\\b\"\n },\n {\n \"match\": \"\\\\b(typedef|struct|header|extern)\\\\s+([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n },\n \"2\": {\n \"name\": \"storage.type.p4\"\n }\n }\n },\n {\n \"match\": \"\\\\b(table|parser|control|state|package)\\\\s+([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n },\n \"2\": {\n \"name\": \"entity.name.type.p4\"\n }\n }\n },\n {\n \"match\": \"\\\\b(action)\\\\s+([A-Za-z_]\\\\w*)\",\n \"captures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n },\n \"2\": {\n \"name\": \"entity.name.function.p4\"\n }\n }\n },\n {\n \"name\": \"storage.type.p4\",\n \"match\": \"\\\\b[A-Za-z_]\\\\w*_[th]\\\\b\"\n },\n {\n \"begin\": \"\\\\b(actions)\\\\s*=\\\\s*\\\\{\",\n \"end\": \"\\\\}\",\n \"beginCaptures\": {\n \"1\": {\n \"name\": \"keyword.control.p4\"\n }\n },\n \"patterns\": [\n {\n \"include\": \"#comment\"\n },\n {\n \"include\": \"#keywords\"\n },\n {\n \"name\": \"entity.name.function.p4\",\n \"match\": \"\\\\b[A-Za-z_]\\\\w*\\\\b\"\n }\n ]\n },\n {\n \"include\": \"#keywords\"\n },\n {\n \"match\": \"(\\\\.)([A-Za-z_]\\\\w*)(?=\\\\s*\\\\()\",\n \"captures\": {\n \"1\": {\n \"name\": \"punctuation.accessor.p4\"\n },\n \"2\": {\n \"name\": \"entity.name.function.p4\"\n }\n }\n },\n {\n \"name\": \"entity.name.function.p4\",\n \"match\": \"(?<!\\\\.)\\\\b[A-Za-z_]\\\\w*(?=\\\\s*\\\\()\"\n }\n ]\n}\n","{\n \"name\": \"Oxide Dark\",\n \"colors\": {\n \"editor.background\": \"var(--syntax-bg)\",\n \"editor.foreground\": \"var(--syntax-fg)\"\n },\n \"tokenColors\": [\n {\n \"scope\": [\n \"text\",\n \"source\",\n \"variable.other.readwrite\",\n \"punctuation.definition.variable\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"punctuation\",\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"comment\", \"punctuation.definition.comment\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\"\n }\n },\n {\n \"scope\": [\"string\", \"punctuation.definition.string\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-string)\"\n }\n },\n {\n \"scope\": \"constant.character.escape\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\n \"constant.numeric\",\n \"variable.other.constant\",\n \"entity.name.constant\",\n \"constant.language.boolean\",\n \"constant.language.false\",\n \"constant.language.true\",\n \"keyword.other.unit.user-defined\",\n \"keyword.other.unit.suffix.floating-point\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"keyword\",\n \"keyword.operator.word\",\n \"keyword.operator.new\",\n \"variable.language.super\",\n \"support.type.primitive\",\n \"storage.type\",\n \"storage.modifier\",\n \"punctuation.definition.keyword\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"entity.name.tag.documentation\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"keyword.operator\",\n \"punctuation.accessor\",\n \"punctuation.definition.generic\",\n \"meta.function.closure punctuation.section.parameters\",\n \"punctuation.definition.tag\",\n \"punctuation.separator.key-value\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.function\",\n \"meta.function-call.method\",\n \"support.function\",\n \"support.function.misc\",\n \"variable.function\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.class\",\n \"entity.other.inherited-class\",\n \"support.class\",\n \"meta.function-call.constructor\",\n \"entity.name.struct\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.enum\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"meta.enum variable.other.readwrite\", \"variable.other.enummember\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.property.object\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\"meta.type\", \"meta.type-alias\", \"support.type\", \"entity.name.type\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"meta.annotation variable.function\",\n \"meta.annotation variable.annotation.function\",\n \"meta.annotation punctuation.definition.annotation\",\n \"meta.decorator\",\n \"punctuation.decorator\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"variable.parameter\", \"meta.function.parameters\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": [\"constant.language\", \"support.function.builtin\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"entity.other.attribute-name.documentation\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"keyword.control.directive\", \"punctuation.definition.directive\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"punctuation.definition.typeparameters\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"entity.name.namespace\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"support.type.property-name.css\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"variable.language.this\",\n \"variable.language.this punctuation.definition.variable\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"variable.object.property\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"string.template variable\", \"string variable\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"keyword.operator.new\",\n \"settings\": {\n \"fontStyle\": \"bold\"\n }\n },\n {\n \"scope\": \"storage.modifier.specifier.extern.cpp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.scope-resolution.template.call.cpp\",\n \"entity.name.scope-resolution.parameter.cpp\",\n \"entity.name.scope-resolution.cpp\",\n \"entity.name.scope-resolution.function.definition.cpp\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"storage.type.class.doxygen\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"storage.modifier.reference.cpp\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.interpolation.cs\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"comment.block.documentation.cs\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\n \"source.css entity.other.attribute-name.class.css\",\n \"entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"punctuation.separator.operator.css\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"source.css entity.other.attribute-name.pseudo-class\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"source.css constant.other.unicode-range\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"source.css variable.parameter.url\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.type.vendored.property-name\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"source.css meta.property-value variable\",\n \"source.css meta.property-value variable.other.less\",\n \"source.css meta.property-value variable.other.less punctuation.definition.variable.less\",\n \"meta.definition.variable.scss\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": [\n \"source.css meta.property-list variable\",\n \"meta.property-list variable.other.less\",\n \"meta.property-list variable.other.less punctuation.definition.variable.less\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"keyword.other.unit.percentage.css\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"source.css meta.attribute-selector\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"keyword.other.definition.ini\",\n \"punctuation.support.type.property-name.json\",\n \"support.type.property-name.json\",\n \"punctuation.support.type.property-name.toml\",\n \"support.type.property-name.toml\",\n \"entity.name.tag.yaml\",\n \"punctuation.support.type.property-name.yaml\",\n \"support.type.property-name.yaml\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"constant.language.json\", \"constant.language.yaml\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"entity.name.type.anchor.yaml\", \"variable.other.alias.yaml\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.type.property-name.table\", \"entity.name.section.group-title.ini\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.time.datetime.offset.toml\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\"punctuation.definition.anchor.yaml\", \"punctuation.definition.alias.yaml\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"entity.other.document.begin.yaml\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"markup.changed.diff\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"meta.diff.header.from-file\",\n \"meta.diff.header.to-file\",\n \"punctuation.definition.from-file.diff\",\n \"punctuation.definition.to-file.diff\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"markup.inserted.diff\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"markup.deleted.diff\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"variable.other.env\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\"string.quoted variable.other.env\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"support.function.builtin.gdscript\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"constant.language.gdscript\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"comment meta.annotation.go\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"comment meta.annotation.parameters.go\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.language.go\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"variable.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"string.unquoted.alias.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-string-alias)\"\n }\n },\n {\n \"scope\": \"constant.character.enum.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql\",\n \"settings\": {\n \"foreground\": \"var(--syntax-string-alias)\"\n }\n },\n {\n \"scope\": [\n \"keyword.other.doctype\",\n \"meta.tag.sgml.doctype punctuation.definition.tag\",\n \"meta.tag.metadata.doctype entity.name.tag\",\n \"meta.tag.metadata.doctype punctuation.definition.tag\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\"entity.name.tag\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"text.html constant.character.entity\",\n \"text.html constant.character.entity punctuation\",\n \"constant.character.entity.xml\",\n \"constant.character.entity.xml punctuation\",\n \"constant.character.entity.js.jsx\",\n \"constant.charactger.entity.js.jsx punctuation\",\n \"constant.character.entity.tsx\",\n \"constant.character.entity.tsx punctuation\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"entity.other.attribute-name\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"support.class.component\",\n \"support.class.component.jsx\",\n \"support.class.component.tsx\",\n \"support.class.component.vue\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"punctuation.definition.annotation\", \"storage.type.annotation\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.enum.java\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"storage.modifier.import.java\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"comment.block.javadoc.java keyword.other.documentation.javadoc.java\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"meta.export variable.other.readwrite.js\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": [\n \"variable.other.constant.js\",\n \"variable.other.constant.ts\",\n \"variable.other.property.js\",\n \"variable.other.property.ts\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"variable.other.jsdoc\", \"comment.block.documentation variable.other\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"storage.type.class.jsdoc\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"support.type.object.console.js\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"support.constant.node\", \"support.type.object.module.js\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"storage.modifier.implements\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"constant.language.null.js\",\n \"constant.language.null.ts\",\n \"constant.language.undefined.js\",\n \"constant.language.undefined.ts\",\n \"support.type.builtin.ts\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"variable.parameter.generic\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"keyword.declaration.function.arrow.js\", \"storage.type.function.arrow.ts\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"punctuation.decorator.ts\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"keyword.operator.expression.in.js\",\n \"keyword.operator.expression.in.ts\",\n \"keyword.operator.expression.infer.ts\",\n \"keyword.operator.expression.instanceof.js\",\n \"keyword.operator.expression.instanceof.ts\",\n \"keyword.operator.expression.is\",\n \"keyword.operator.expression.keyof.ts\",\n \"keyword.operator.expression.of.js\",\n \"keyword.operator.expression.of.ts\",\n \"keyword.operator.expression.typeof.ts\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"support.function.macro.julia\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"constant.language.julia\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.symbol.julia\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"text.tex keyword.control.preamble\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"text.tex support.function.be\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"constant.other.general.math.tex\",\n \"settings\": {\n \"foreground\": \"var(--syntax-string-alias)\"\n }\n },\n {\n \"scope\": \"comment.line.double-dash.documentation.lua storage.type.annotation.lua\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"comment.line.double-dash.documentation.lua entity.name.variable.lua\",\n \"comment.line.double-dash.documentation.lua variable.lua\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\n \"heading.1.markdown punctuation.definition.heading.markdown\",\n \"heading.1.markdown\",\n \"heading.1.quarto punctuation.definition.heading.quarto\",\n \"heading.1.quarto\",\n \"markup.heading.atx.1.mdx\",\n \"markup.heading.atx.1.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.setext.1.markdown\",\n \"markup.heading.heading-0.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\n \"heading.2.markdown punctuation.definition.heading.markdown\",\n \"heading.2.markdown\",\n \"heading.2.quarto punctuation.definition.heading.quarto\",\n \"heading.2.quarto\",\n \"markup.heading.atx.2.mdx\",\n \"markup.heading.atx.2.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.setext.2.markdown\",\n \"markup.heading.heading-1.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"heading.3.markdown punctuation.definition.heading.markdown\",\n \"heading.3.markdown\",\n \"heading.3.quarto punctuation.definition.heading.quarto\",\n \"heading.3.quarto\",\n \"markup.heading.atx.3.mdx\",\n \"markup.heading.atx.3.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-2.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"heading.4.markdown punctuation.definition.heading.markdown\",\n \"heading.4.markdown\",\n \"heading.4.quarto punctuation.definition.heading.quarto\",\n \"heading.4.quarto\",\n \"markup.heading.atx.4.mdx\",\n \"markup.heading.atx.4.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-3.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"heading.5.markdown punctuation.definition.heading.markdown\",\n \"heading.5.markdown\",\n \"heading.5.quarto punctuation.definition.heading.quarto\",\n \"heading.5.quarto\",\n \"markup.heading.atx.5.mdx\",\n \"markup.heading.atx.5.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-4.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"heading.6.markdown punctuation.definition.heading.markdown\",\n \"heading.6.markdown\",\n \"heading.6.quarto punctuation.definition.heading.quarto\",\n \"heading.6.quarto\",\n \"markup.heading.atx.6.mdx\",\n \"markup.heading.atx.6.mdx punctuation.definition.heading.mdx\",\n \"markup.heading.heading-5.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"markup.bold\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\",\n \"fontStyle\": \"bold\"\n }\n },\n {\n \"scope\": \"markup.italic\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"markup.strikethrough\",\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\",\n \"fontStyle\": \"strikethrough\"\n }\n },\n {\n \"scope\": [\"punctuation.definition.link\", \"markup.underline.link\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"text.html.markdown punctuation.definition.link.title\",\n \"text.html.quarto punctuation.definition.link.title\",\n \"string.other.link.title.markdown\",\n \"string.other.link.title.quarto\",\n \"markup.link\",\n \"punctuation.definition.constant.markdown\",\n \"punctuation.definition.constant.quarto\",\n \"constant.other.reference.link.markdown\",\n \"constant.other.reference.link.quarto\",\n \"markup.substitution.attribute-reference\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-blue-pale)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.raw.markdown\",\n \"punctuation.definition.raw.quarto\",\n \"markup.inline.raw.string.markdown\",\n \"markup.inline.raw.string.quarto\",\n \"markup.raw.block.markdown\",\n \"markup.raw.block.quarto\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"fenced_code.block.language\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"markup.fenced_code.block punctuation.definition\",\n \"markup.raw support.asciidoc\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-comment)\"\n }\n },\n {\n \"scope\": [\"markup.quote\", \"punctuation.definition.quote.begin\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"meta.separator.markdown\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.list.begin.markdown\",\n \"punctuation.definition.list.begin.quarto\",\n \"markup.list.bullet\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"markup.heading.quarto\",\n \"settings\": {\n \"fontStyle\": \"bold\"\n }\n },\n {\n \"scope\": [\n \"entity.other.attribute-name.multipart.nix\",\n \"entity.other.attribute-name.single.nix\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"variable.parameter.name.nix\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"meta.embedded variable.parameter.name.nix\",\n \"settings\": {\n \"foreground\": \"var(--syntax-blue-pale)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"string.unquoted.path.nix\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.attribute.builtin\", \"meta.attribute.php\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"meta.function.parameters.php punctuation.definition.variable.php\",\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"constant.language.php\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"text.html.php support.function\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"keyword.other.phpdoc.php\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\"support.variable.magic.python\", \"meta.function-call.arguments.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\"support.function.magic.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"variable.parameter.function.language.special.self.python\",\n \"variable.language.special.self.python\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\"keyword.control.flow.python\", \"keyword.operator.logical.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"storage.type.function.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\n \"support.token.decorator.python\",\n \"meta.function.decorator.identifier.python\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\"meta.function-call.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"entity.name.function.decorator.python\",\n \"punctuation.definition.decorator.python\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.character.format.placeholder.other.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\"support.type.exception.python\", \"support.function.builtin.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"support.type.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.language.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": [\"meta.indexed-name.python\", \"meta.item-access.python\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"storage.type.string.python\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"meta.function.parameters.python\",\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"string.regexp punctuation.definition.string.begin\",\n \"string.regexp punctuation.definition.string.end\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"keyword.control.anchor.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"string.regexp.ts\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.group.regexp\",\n \"keyword.other.back-reference.regexp\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"punctuation.definition.character-class.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"constant.other.character-class.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"constant.other.character-class.range.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-rose)\"\n }\n },\n {\n \"scope\": \"keyword.operator.quantifier.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"constant.character.numeric.regexp\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"punctuation.definition.group.no-capture.regexp\",\n \"meta.assertion.look-ahead.regexp\",\n \"meta.assertion.negative-look-ahead.regexp\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\n \"meta.annotation.rust\",\n \"meta.annotation.rust punctuation\",\n \"meta.attribute.rust\",\n \"punctuation.definition.attribute.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"meta.attribute.rust string.quoted.double.rust\",\n \"meta.attribute.rust string.quoted.single.char.rust\"\n ],\n \"settings\": {\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": [\n \"entity.name.function.macro.rules.rust\",\n \"storage.type.module.rust\",\n \"storage.modifier.rust\",\n \"storage.type.struct.rust\",\n \"storage.type.enum.rust\",\n \"storage.type.trait.rust\",\n \"storage.type.union.rust\",\n \"storage.type.impl.rust\",\n \"storage.type.rust\",\n \"storage.type.function.rust\",\n \"storage.type.type.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"entity.name.type.numeric.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\",\n \"fontStyle\": \"\"\n }\n },\n {\n \"scope\": \"meta.generic.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.impl.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.module.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.trait.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"storage.type.source.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"entity.name.union.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": \"meta.enum.rust storage.type.source.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"support.macro.rust\",\n \"meta.macro.rust support.function.rust\",\n \"entity.name.function.macro.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": [\"storage.modifier.lifetime.rust\", \"entity.name.type.lifetime\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"string.quoted.double.rust constant.other.placeholder.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"meta.function.return-type.rust meta.generic.rust storage.type.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"meta.function.call.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"punctuation.brackets.angle.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-function)\"\n }\n },\n {\n \"scope\": \"constant.other.caps.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\"meta.function.definition.rust variable.other.rust\"],\n \"settings\": {\n \"foreground\": \"var(--syntax-parameter)\"\n }\n },\n {\n \"scope\": \"meta.function.call.rust variable.other.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"variable.language.self.rust\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": [\n \"variable.other.metavariable.name.rust\",\n \"meta.macro.metavariable.rust keyword.operator.macro.dollar.rust\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": [\n \"comment.line.shebang\",\n \"comment.line.shebang punctuation.definition.comment\",\n \"comment.line.shebang\",\n \"punctuation.definition.comment.shebang.shell\",\n \"meta.shebang.shell\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-escape)\"\n }\n },\n {\n \"scope\": \"comment.line.shebang constant.language\",\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": [\n \"meta.function-call.arguments.shell punctuation.definition.variable.shell\",\n \"meta.function-call.arguments.shell punctuation.section.interpolation\",\n \"meta.function-call.arguments.shell punctuation.definition.variable.shell\",\n \"meta.function-call.arguments.shell punctuation.section.interpolation\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"meta.string meta.interpolation.parameter.shell variable.other.readwrite\",\n \"settings\": {\n \"foreground\": \"var(--syntax-number)\"\n }\n },\n {\n \"scope\": [\n \"source.shell punctuation.section.interpolation\",\n \"punctuation.definition.evaluation.backticks.shell\"\n ],\n \"settings\": {\n \"foreground\": \"var(--syntax-operator)\"\n }\n },\n {\n \"scope\": \"entity.name.tag.heredoc.shell\",\n \"settings\": {\n \"foreground\": \"var(--syntax-keyword)\"\n }\n },\n {\n \"scope\": \"string.quoted.double.shell variable.other.normal.shell\",\n \"settings\": {\n \"foreground\": \"var(--syntax-fg)\"\n }\n },\n {\n \"scope\": \"token.info-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-blue)\"\n }\n },\n {\n \"scope\": \"token.warn-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-amber)\"\n }\n },\n {\n \"scope\": \"token.error-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-builtin)\"\n }\n },\n {\n \"scope\": \"token.debug-token\",\n \"settings\": {\n \"foreground\": \"var(--syntax-purple)\"\n }\n }\n ]\n}\n"],"mappings":"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","names":["Content","parse","attrs","Content","RenderInline","jsx","jsxs","jsx","parse","cn","Fragment","jsx","jsxs","observer","maxIndex","useEffect","Fragment","jsx","Content","parse"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxide/design-system",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.1-canary.fec0981",
|
|
4
4
|
"description": "Home of reusable design assets and token for oxide internal sites",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
64
|
"@asciidoctor/core": "^3.0.0",
|
|
65
|
-
"@oxide/react-asciidoc": "^
|
|
65
|
+
"@oxide/react-asciidoc": "^2.0.0--canary.54.26752676803.0",
|
|
66
66
|
"react": ">=18.0.0",
|
|
67
67
|
"react-dom": ">=18.0.0"
|
|
68
68
|
},
|
package/styles/tailwind.css
CHANGED
|
@@ -173,3 +173,14 @@ Make sure disabled buttons don't get the pointer cursor.
|
|
|
173
173
|
background-color: color-mix(in srgb, currentColor 8%, transparent);
|
|
174
174
|
border-color: color-mix(in srgb, currentColor 10%, transparent);
|
|
175
175
|
}
|
|
176
|
+
|
|
177
|
+
/* Expands an element's hit area by N pixels on all sides via a transparent ::after overlay, without affecting layout. Usage: `target-8` adds 8px of clickable padding around the element. */
|
|
178
|
+
@utility target-* {
|
|
179
|
+
position: relative;
|
|
180
|
+
|
|
181
|
+
&::after {
|
|
182
|
+
content: '';
|
|
183
|
+
position: absolute;
|
|
184
|
+
inset: calc(--value(integer) * -1px);
|
|
185
|
+
}
|
|
186
|
+
}
|