@ox-content/vite-plugin 3.0.0-alpha.8 → 3.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/index.cjs +8898 -2585
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +2050 -221
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +2050 -221
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +8839 -2531
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/markdown-tables.cjs +70 -0
  10. package/dist/markdown-tables.cjs.map +1 -0
  11. package/dist/markdown-tables.d.cts +22 -0
  12. package/dist/markdown-tables.d.cts.map +1 -0
  13. package/dist/markdown-tables.d.mts +22 -0
  14. package/dist/markdown-tables.d.mts.map +1 -0
  15. package/dist/markdown-tables.mjs +66 -0
  16. package/dist/markdown-tables.mjs.map +1 -0
  17. package/dist/napi.cjs +44 -0
  18. package/dist/napi.cjs.map +1 -0
  19. package/dist/napi.mjs +34 -0
  20. package/dist/napi.mjs.map +1 -0
  21. package/dist/reader-chrome-client.cjs +103 -0
  22. package/dist/reader-chrome-client.d.cts +2 -0
  23. package/dist/reader-chrome-client.d.mts +2 -0
  24. package/dist/reader-chrome-client.mjs +102 -0
  25. package/dist/reader-chrome.cjs +109 -0
  26. package/dist/reader-chrome.cjs.map +1 -0
  27. package/dist/reader-chrome.d.cts +103 -0
  28. package/dist/reader-chrome.d.mts +103 -0
  29. package/dist/reader-chrome.mjs +98 -0
  30. package/dist/reader-chrome.mjs.map +1 -0
  31. package/dist/styles/all.css +15 -0
  32. package/dist/styles/citations.css +62 -0
  33. package/dist/styles/core.css +2261 -0
  34. package/dist/styles/github.css +262 -0
  35. package/dist/styles/graphviz.css +34 -0
  36. package/dist/styles/magic-links.css +33 -0
  37. package/dist/styles/markdown-tables.css +16 -0
  38. package/dist/styles/mermaid.css +151 -0
  39. package/dist/styles/not-by-ai.css +43 -0
  40. package/dist/styles/ogp.css +170 -0
  41. package/dist/styles/reader-chrome.css +163 -0
  42. package/dist/styles/social.css +678 -0
  43. package/dist/styles/tabs.css +210 -0
  44. package/dist/styles/theme-transition.css +37 -0
  45. package/dist/styles/twitter-full.css +598 -0
  46. package/dist/styles/youtube.css +87 -0
  47. package/dist/theme-tokens.cjs +95 -0
  48. package/dist/theme-tokens.cjs.map +1 -0
  49. package/dist/theme-tokens.d.cts +72 -0
  50. package/dist/theme-tokens.d.cts.map +1 -0
  51. package/dist/theme-tokens.d.mts +72 -0
  52. package/dist/theme-tokens.d.mts.map +1 -0
  53. package/dist/theme-tokens.mjs +91 -0
  54. package/dist/theme-tokens.mjs.map +1 -0
  55. package/dist/theme-transition-client.cjs +161 -0
  56. package/dist/theme-transition-client.d.cts +21 -0
  57. package/dist/theme-transition-client.d.mts +21 -0
  58. package/dist/theme-transition-client.mjs +160 -0
  59. package/dist/twitter-client.cjs +84 -0
  60. package/dist/twitter-client.d.cts +11 -0
  61. package/dist/twitter-client.d.mts +11 -0
  62. package/dist/twitter-client.mjs +83 -0
  63. package/dist/vitepress.cjs +614 -77
  64. package/dist/vitepress.cjs.map +1 -1
  65. package/dist/vitepress.mjs +588 -65
  66. package/dist/vitepress.mjs.map +1 -1
  67. package/package.json +89 -4
  68. package/dist/api.cjs +0 -6563
  69. package/dist/api.cjs.map +0 -1
  70. package/dist/api.mjs +0 -6456
  71. package/dist/api.mjs.map +0 -1
  72. package/dist/interop.cjs +0 -31
  73. package/dist/interop.cjs.map +0 -1
  74. package/dist/interop.mjs +0 -26
  75. package/dist/interop.mjs.map +0 -1
  76. package/dist/tabs.cjs +0 -98
  77. package/dist/tabs.cjs.map +0 -1
  78. package/dist/tabs.mjs +0 -99
  79. package/dist/tabs.mjs.map +0 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Per-control flags for `ssg.readerChrome`.
3
+ *
4
+ * Omitted fields stay on when the feature itself is enabled.
5
+ */
6
+ export interface ReaderChromeOptions {
7
+ /**
8
+ * Copy button on fenced code blocks. The clipboard is read in the browser,
9
+ * never at build time.
10
+ *
11
+ * @default true
12
+ */
13
+ copy?: boolean;
14
+
15
+ /**
16
+ * Icon and `rel="noopener noreferrer"` on outbound `http(s)` links.
17
+ * Relative, hash, and same-document links are left alone.
18
+ *
19
+ * @default true
20
+ */
21
+ externalLinks?: boolean;
22
+
23
+ /**
24
+ * Back-to-top control that appears after the page is scrolled.
25
+ *
26
+ * @default true
27
+ */
28
+ backToTop?: boolean;
29
+ }
30
+
31
+ /**
32
+ * Resolved reader chrome. `false` means no extra markup or JS.
33
+ */
34
+ export type ResolvedReaderChrome =
35
+ | false
36
+ | {
37
+ copy: boolean;
38
+ externalLinks: boolean;
39
+ backToTop: boolean;
40
+ };
41
+
42
+ type EnabledReaderChrome = Exclude<ResolvedReaderChrome, false>;
43
+
44
+ export type ReaderChromeInput =
45
+ | boolean
46
+ | ReaderChromeOptions
47
+ | EnabledReaderChrome
48
+ | undefined;
49
+
50
+ /**
51
+ * Resolve the public reader-chrome option shape.
52
+ */
53
+ export declare function resolveReaderChromeInput(
54
+ input?: ReaderChromeInput,
55
+ ): ResolvedReaderChrome;
56
+
57
+ /**
58
+ * Apply the same native reader-chrome HTML transform used by the built-in SSG.
59
+ */
60
+ export declare function applyReaderChromeHtml(
61
+ html: string,
62
+ input?: ReaderChromeInput,
63
+ ): string;
64
+
65
+ /**
66
+ * Root attributes consumed by the browser runtime.
67
+ */
68
+ export declare function readerChromeAttributes(
69
+ input?: ReaderChromeInput,
70
+ ): Readonly<Record<string, "">>;
71
+
72
+ /**
73
+ * Render the root attributes as a leading-space HTML fragment.
74
+ */
75
+ export declare function renderReaderChromeAttributes(input?: ReaderChromeInput): string;
76
+
77
+ /**
78
+ * CSS shared by the built-in SSG and custom hosts.
79
+ */
80
+ export declare function readerChromeCss(input?: ReaderChromeInput): string;
81
+
82
+ /**
83
+ * Auto-initializing script shared by the built-in SSG and custom hosts.
84
+ */
85
+ export declare function readerChromeScript(input?: ReaderChromeInput): string;
86
+
87
+ /**
88
+ * Inline stylesheet tag for hosts that do not import
89
+ * `@ox-content/vite-plugin/styles/reader-chrome.css`.
90
+ */
91
+ export declare function renderReaderChromeStyleTag(input?: ReaderChromeInput): string;
92
+
93
+ /**
94
+ * Inline auto-init script for static hosts that do not bundle
95
+ * `@ox-content/vite-plugin/reader-chrome/client`.
96
+ */
97
+ export declare function renderReaderChromeScriptTag(input?: ReaderChromeInput): string;
98
+
99
+ export declare function readerChromeIsEnabled(
100
+ chrome: ResolvedReaderChrome,
101
+ ): chrome is Exclude<ResolvedReaderChrome, false>;
102
+
103
+ export declare function readerChromeNeedsJs(chrome: ResolvedReaderChrome): boolean;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Per-control flags for `ssg.readerChrome`.
3
+ *
4
+ * Omitted fields stay on when the feature itself is enabled.
5
+ */
6
+ export interface ReaderChromeOptions {
7
+ /**
8
+ * Copy button on fenced code blocks. The clipboard is read in the browser,
9
+ * never at build time.
10
+ *
11
+ * @default true
12
+ */
13
+ copy?: boolean;
14
+
15
+ /**
16
+ * Icon and `rel="noopener noreferrer"` on outbound `http(s)` links.
17
+ * Relative, hash, and same-document links are left alone.
18
+ *
19
+ * @default true
20
+ */
21
+ externalLinks?: boolean;
22
+
23
+ /**
24
+ * Back-to-top control that appears after the page is scrolled.
25
+ *
26
+ * @default true
27
+ */
28
+ backToTop?: boolean;
29
+ }
30
+
31
+ /**
32
+ * Resolved reader chrome. `false` means no extra markup or JS.
33
+ */
34
+ export type ResolvedReaderChrome =
35
+ | false
36
+ | {
37
+ copy: boolean;
38
+ externalLinks: boolean;
39
+ backToTop: boolean;
40
+ };
41
+
42
+ type EnabledReaderChrome = Exclude<ResolvedReaderChrome, false>;
43
+
44
+ export type ReaderChromeInput =
45
+ | boolean
46
+ | ReaderChromeOptions
47
+ | EnabledReaderChrome
48
+ | undefined;
49
+
50
+ /**
51
+ * Resolve the public reader-chrome option shape.
52
+ */
53
+ export declare function resolveReaderChromeInput(
54
+ input?: ReaderChromeInput,
55
+ ): ResolvedReaderChrome;
56
+
57
+ /**
58
+ * Apply the same native reader-chrome HTML transform used by the built-in SSG.
59
+ */
60
+ export declare function applyReaderChromeHtml(
61
+ html: string,
62
+ input?: ReaderChromeInput,
63
+ ): string;
64
+
65
+ /**
66
+ * Root attributes consumed by the browser runtime.
67
+ */
68
+ export declare function readerChromeAttributes(
69
+ input?: ReaderChromeInput,
70
+ ): Readonly<Record<string, "">>;
71
+
72
+ /**
73
+ * Render the root attributes as a leading-space HTML fragment.
74
+ */
75
+ export declare function renderReaderChromeAttributes(input?: ReaderChromeInput): string;
76
+
77
+ /**
78
+ * CSS shared by the built-in SSG and custom hosts.
79
+ */
80
+ export declare function readerChromeCss(input?: ReaderChromeInput): string;
81
+
82
+ /**
83
+ * Auto-initializing script shared by the built-in SSG and custom hosts.
84
+ */
85
+ export declare function readerChromeScript(input?: ReaderChromeInput): string;
86
+
87
+ /**
88
+ * Inline stylesheet tag for hosts that do not import
89
+ * `@ox-content/vite-plugin/styles/reader-chrome.css`.
90
+ */
91
+ export declare function renderReaderChromeStyleTag(input?: ReaderChromeInput): string;
92
+
93
+ /**
94
+ * Inline auto-init script for static hosts that do not bundle
95
+ * `@ox-content/vite-plugin/reader-chrome/client`.
96
+ */
97
+ export declare function renderReaderChromeScriptTag(input?: ReaderChromeInput): string;
98
+
99
+ export declare function readerChromeIsEnabled(
100
+ chrome: ResolvedReaderChrome,
101
+ ): chrome is Exclude<ResolvedReaderChrome, false>;
102
+
103
+ export declare function readerChromeNeedsJs(chrome: ResolvedReaderChrome): boolean;
@@ -0,0 +1,98 @@
1
+ import { n as importNapiModuleSync } from "./napi.mjs";
2
+ //#region src/reader-chrome.ts
3
+ const EMPTY_ATTRIBUTES = Object.freeze({});
4
+ /**
5
+ * Resolve the public reader-chrome option shape.
6
+ *
7
+ * `true` mirrors `ssg.readerChrome: true`: copy, outbound-link decoration, and
8
+ * back-to-top are enabled. Object fields default on, so `{ copy: false }`
9
+ * disables only the copy button.
10
+ */
11
+ function resolveReaderChromeInput(input = true) {
12
+ if (!input) return false;
13
+ if (input === true) return {
14
+ copy: true,
15
+ externalLinks: true,
16
+ backToTop: true
17
+ };
18
+ return {
19
+ copy: input.copy ?? true,
20
+ externalLinks: input.externalLinks ?? true,
21
+ backToTop: input.backToTop ?? true
22
+ };
23
+ }
24
+ /**
25
+ * Apply the same native reader-chrome HTML transform used by the built-in SSG.
26
+ *
27
+ * This rewrites rendered article HTML. It wraps fenced `<pre>` blocks for copy
28
+ * controls and decorates outbound links when enabled. Back-to-top remains a
29
+ * document-shell control, so it is exposed through the asset helpers.
30
+ */
31
+ function applyReaderChromeHtml(html, input = true) {
32
+ const chrome = resolveReaderChromeInput(input);
33
+ if (!chrome || !chrome.copy && !chrome.externalLinks) return html;
34
+ return importNapiModuleSync().applySsgReaderChromeHtml(html, {
35
+ copy: chrome.copy,
36
+ externalLinks: chrome.externalLinks,
37
+ backToTop: chrome.backToTop
38
+ });
39
+ }
40
+ /**
41
+ * Root attributes consumed by the browser runtime.
42
+ */
43
+ function readerChromeAttributes(input = true) {
44
+ const chrome = resolveReaderChromeInput(input);
45
+ if (!readerChromeIsEnabled(chrome)) return EMPTY_ATTRIBUTES;
46
+ return {
47
+ "data-ox-reader-chrome": "",
48
+ ...chrome.copy ? { "data-ox-copy": "" } : {},
49
+ ...chrome.externalLinks ? { "data-ox-external-links": "" } : {},
50
+ ...chrome.backToTop ? { "data-ox-back-to-top": "" } : {}
51
+ };
52
+ }
53
+ /**
54
+ * Render the root attributes as a leading-space HTML fragment.
55
+ *
56
+ * Useful in template strings: `<article${renderReaderChromeAttributes()}>`.
57
+ */
58
+ function renderReaderChromeAttributes(input = true) {
59
+ return Object.keys(readerChromeAttributes(input)).map((name) => ` ${name}`).join("");
60
+ }
61
+ /**
62
+ * CSS shared by the built-in SSG and custom hosts.
63
+ */
64
+ function readerChromeCss(input = true) {
65
+ return readerChromeIsEnabled(resolveReaderChromeInput(input)) ? importNapiModuleSync().getSsgReaderChromeCss() : "";
66
+ }
67
+ /**
68
+ * Auto-initializing script shared by the built-in SSG and custom hosts.
69
+ */
70
+ function readerChromeScript(input = true) {
71
+ return readerChromeNeedsJs(resolveReaderChromeInput(input)) ? importNapiModuleSync().getSsgReaderChromeScript() : "";
72
+ }
73
+ /**
74
+ * Inline stylesheet tag for hosts that do not import
75
+ * `@ox-content/vite-plugin/styles/reader-chrome.css`.
76
+ */
77
+ function renderReaderChromeStyleTag(input = true) {
78
+ const css = readerChromeCss(input);
79
+ return css ? `<style data-ox-style="reader-chrome">\n${css}</style>` : "";
80
+ }
81
+ /**
82
+ * Inline auto-init script for static hosts that do not bundle
83
+ * `@ox-content/vite-plugin/reader-chrome/client`.
84
+ */
85
+ function renderReaderChromeScriptTag(input = true) {
86
+ const js = readerChromeScript(input);
87
+ return js ? `<script data-ox-script="reader-chrome">\n${js}<\/script>` : "";
88
+ }
89
+ function readerChromeIsEnabled(chrome) {
90
+ return Boolean(chrome && (chrome.copy || chrome.externalLinks || chrome.backToTop));
91
+ }
92
+ function readerChromeNeedsJs(chrome) {
93
+ return Boolean(chrome && (chrome.copy || chrome.backToTop));
94
+ }
95
+ //#endregion
96
+ export { applyReaderChromeHtml, readerChromeAttributes, readerChromeCss, readerChromeIsEnabled, readerChromeNeedsJs, readerChromeScript, renderReaderChromeAttributes, renderReaderChromeScriptTag, renderReaderChromeStyleTag, resolveReaderChromeInput };
97
+
98
+ //# sourceMappingURL=reader-chrome.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader-chrome.mjs","names":[],"sources":["../src/reader-chrome.ts"],"sourcesContent":["import { importNapiModuleSync } from \"./napi\";\nimport type { ReaderChromeOptions, ResolvedReaderChrome } from \"./reader-chrome-options\";\n\nexport type { ReaderChromeOptions, ResolvedReaderChrome };\n\ntype EnabledReaderChrome = Exclude<ResolvedReaderChrome, false>;\n\nexport type ReaderChromeInput = boolean | ReaderChromeOptions | EnabledReaderChrome | undefined;\n\nconst EMPTY_ATTRIBUTES = Object.freeze({}) as Readonly<Record<string, \"\">>;\n\n/**\n * Resolve the public reader-chrome option shape.\n *\n * `true` mirrors `ssg.readerChrome: true`: copy, outbound-link decoration, and\n * back-to-top are enabled. Object fields default on, so `{ copy: false }`\n * disables only the copy button.\n */\nexport function resolveReaderChromeInput(input: ReaderChromeInput = true): ResolvedReaderChrome {\n if (!input) {\n return false;\n }\n if (input === true) {\n return { copy: true, externalLinks: true, backToTop: true };\n }\n return {\n copy: input.copy ?? true,\n externalLinks: input.externalLinks ?? true,\n backToTop: input.backToTop ?? true,\n };\n}\n\n/**\n * Apply the same native reader-chrome HTML transform used by the built-in SSG.\n *\n * This rewrites rendered article HTML. It wraps fenced `<pre>` blocks for copy\n * controls and decorates outbound links when enabled. Back-to-top remains a\n * document-shell control, so it is exposed through the asset helpers.\n */\nexport function applyReaderChromeHtml(html: string, input: ReaderChromeInput = true): string {\n const chrome = resolveReaderChromeInput(input);\n if (!chrome || (!chrome.copy && !chrome.externalLinks)) {\n return html;\n }\n return importNapiModuleSync().applySsgReaderChromeHtml(html, {\n copy: chrome.copy,\n externalLinks: chrome.externalLinks,\n backToTop: chrome.backToTop,\n });\n}\n\n/**\n * Root attributes consumed by the browser runtime.\n */\nexport function readerChromeAttributes(\n input: ReaderChromeInput = true,\n): Readonly<Record<string, \"\">> {\n const chrome = resolveReaderChromeInput(input);\n if (!readerChromeIsEnabled(chrome)) {\n return EMPTY_ATTRIBUTES;\n }\n\n return {\n \"data-ox-reader-chrome\": \"\",\n ...(chrome.copy ? { \"data-ox-copy\": \"\" as const } : {}),\n ...(chrome.externalLinks ? { \"data-ox-external-links\": \"\" as const } : {}),\n ...(chrome.backToTop ? { \"data-ox-back-to-top\": \"\" as const } : {}),\n };\n}\n\n/**\n * Render the root attributes as a leading-space HTML fragment.\n *\n * Useful in template strings: `<article${renderReaderChromeAttributes()}>`.\n */\nexport function renderReaderChromeAttributes(input: ReaderChromeInput = true): string {\n return Object.keys(readerChromeAttributes(input))\n .map((name) => ` ${name}`)\n .join(\"\");\n}\n\n/**\n * CSS shared by the built-in SSG and custom hosts.\n */\nexport function readerChromeCss(input: ReaderChromeInput = true): string {\n return readerChromeIsEnabled(resolveReaderChromeInput(input))\n ? importNapiModuleSync().getSsgReaderChromeCss()\n : \"\";\n}\n\n/**\n * Auto-initializing script shared by the built-in SSG and custom hosts.\n */\nexport function readerChromeScript(input: ReaderChromeInput = true): string {\n return readerChromeNeedsJs(resolveReaderChromeInput(input))\n ? importNapiModuleSync().getSsgReaderChromeScript()\n : \"\";\n}\n\n/**\n * Inline stylesheet tag for hosts that do not import\n * `@ox-content/vite-plugin/styles/reader-chrome.css`.\n */\nexport function renderReaderChromeStyleTag(input: ReaderChromeInput = true): string {\n const css = readerChromeCss(input);\n return css ? `<style data-ox-style=\"reader-chrome\">\\n${css}</style>` : \"\";\n}\n\n/**\n * Inline auto-init script for static hosts that do not bundle\n * `@ox-content/vite-plugin/reader-chrome/client`.\n */\nexport function renderReaderChromeScriptTag(input: ReaderChromeInput = true): string {\n const js = readerChromeScript(input);\n return js ? `<script data-ox-script=\"reader-chrome\">\\n${js}</script>` : \"\";\n}\n\nexport function readerChromeIsEnabled(\n chrome: ResolvedReaderChrome,\n): chrome is Exclude<ResolvedReaderChrome, false> {\n return Boolean(chrome && (chrome.copy || chrome.externalLinks || chrome.backToTop));\n}\n\nexport function readerChromeNeedsJs(chrome: ResolvedReaderChrome): boolean {\n return Boolean(chrome && (chrome.copy || chrome.backToTop));\n}\n"],"mappings":";;AASA,MAAM,mBAAmB,OAAO,OAAO,CAAC,CAAC;;;;;;;;AASzC,SAAgB,yBAAyB,QAA2B,MAA4B;CAC9F,IAAI,CAAC,OACH,OAAO;CAET,IAAI,UAAU,MACZ,OAAO;EAAE,MAAM;EAAM,eAAe;EAAM,WAAW;CAAK;CAE5D,OAAO;EACL,MAAM,MAAM,QAAQ;EACpB,eAAe,MAAM,iBAAiB;EACtC,WAAW,MAAM,aAAa;CAChC;AACF;;;;;;;;AASA,SAAgB,sBAAsB,MAAc,QAA2B,MAAc;CAC3F,MAAM,SAAS,yBAAyB,KAAK;CAC7C,IAAI,CAAC,UAAW,CAAC,OAAO,QAAQ,CAAC,OAAO,eACtC,OAAO;CAET,OAAO,qBAAqB,CAAC,CAAC,yBAAyB,MAAM;EAC3D,MAAM,OAAO;EACb,eAAe,OAAO;EACtB,WAAW,OAAO;CACpB,CAAC;AACH;;;;AAKA,SAAgB,uBACd,QAA2B,MACG;CAC9B,MAAM,SAAS,yBAAyB,KAAK;CAC7C,IAAI,CAAC,sBAAsB,MAAM,GAC/B,OAAO;CAGT,OAAO;EACL,yBAAyB;EACzB,GAAI,OAAO,OAAO,EAAE,gBAAgB,GAAY,IAAI,CAAC;EACrD,GAAI,OAAO,gBAAgB,EAAE,0BAA0B,GAAY,IAAI,CAAC;EACxE,GAAI,OAAO,YAAY,EAAE,uBAAuB,GAAY,IAAI,CAAC;CACnE;AACF;;;;;;AAOA,SAAgB,6BAA6B,QAA2B,MAAc;CACpF,OAAO,OAAO,KAAK,uBAAuB,KAAK,CAAC,CAAC,CAC9C,KAAK,SAAS,IAAI,MAAM,CAAC,CACzB,KAAK,EAAE;AACZ;;;;AAKA,SAAgB,gBAAgB,QAA2B,MAAc;CACvE,OAAO,sBAAsB,yBAAyB,KAAK,CAAC,IACxD,qBAAqB,CAAC,CAAC,sBAAsB,IAC7C;AACN;;;;AAKA,SAAgB,mBAAmB,QAA2B,MAAc;CAC1E,OAAO,oBAAoB,yBAAyB,KAAK,CAAC,IACtD,qBAAqB,CAAC,CAAC,yBAAyB,IAChD;AACN;;;;;AAMA,SAAgB,2BAA2B,QAA2B,MAAc;CAClF,MAAM,MAAM,gBAAgB,KAAK;CACjC,OAAO,MAAM,0CAA0C,IAAI,YAAY;AACzE;;;;;AAMA,SAAgB,4BAA4B,QAA2B,MAAc;CACnF,MAAM,KAAK,mBAAmB,KAAK;CACnC,OAAO,KAAK,4CAA4C,GAAG,cAAa;AAC1E;AAEA,SAAgB,sBACd,QACgD;CAChD,OAAO,QAAQ,WAAW,OAAO,QAAQ,OAAO,iBAAiB,OAAO,UAAU;AACpF;AAEA,SAAgB,oBAAoB,QAAuC;CACzE,OAAO,QAAQ,WAAW,OAAO,QAAQ,OAAO,UAAU;AAC5D"}
@@ -0,0 +1,15 @@
1
+ @import "./core.css";
2
+ @import "./magic-links.css";
3
+ @import "./social.css";
4
+ @import "./twitter-full.css";
5
+ @import "./ogp.css";
6
+ @import "./github.css";
7
+ @import "./markdown-tables.css";
8
+ @import "./youtube.css";
9
+ @import "./tabs.css";
10
+ @import "./mermaid.css";
11
+ @import "./graphviz.css";
12
+ @import "./citations.css";
13
+ @import "./not-by-ai.css";
14
+ @import "./reader-chrome.css";
15
+ @import "./theme-transition.css";
@@ -0,0 +1,62 @@
1
+ .content .ox-cite {
2
+ white-space: nowrap;
3
+ font-size: 0.95em;
4
+ }
5
+
6
+ .content .ox-cite__ref {
7
+ font-variant-numeric: tabular-nums;
8
+ text-decoration-thickness: 0.08em;
9
+ text-underline-offset: 0.2em;
10
+ }
11
+
12
+ .content .ox-cite__ref:focus-visible,
13
+ .content .ox-bibliography__item:focus-within {
14
+ outline: var(--octc-focus-ring);
15
+ outline-offset: var(--octc-focus-offset);
16
+ }
17
+
18
+ .content .ox-cite__ref:target,
19
+ .content .ox-bibliography__item:target {
20
+ background: var(--octc-color-code-line-focus);
21
+ }
22
+
23
+ .content .ox-bibliography {
24
+ margin-top: 2rem;
25
+ padding-top: 1rem;
26
+ border-top: 1px solid var(--octc-color-border);
27
+ }
28
+
29
+ .content .ox-bibliography__title {
30
+ margin-top: 0;
31
+ font-size: 1.25rem;
32
+ }
33
+
34
+ .content .ox-bibliography__list {
35
+ margin-block: 0;
36
+ padding-inline-start: 1.5rem;
37
+ }
38
+
39
+ .content .ox-bibliography__item {
40
+ padding-inline-start: 0.25rem;
41
+ color: var(--octc-color-text-muted);
42
+ }
43
+
44
+ .content .ox-bibliography__item + .ox-bibliography__item {
45
+ margin-top: 0.65rem;
46
+ }
47
+
48
+ .content .ox-bibliography__item cite {
49
+ color: var(--octc-color-text);
50
+ font-style: italic;
51
+ }
52
+
53
+ .content .ox-bibliography__url,
54
+ .content .ox-bibliography__doi {
55
+ overflow-wrap: anywhere;
56
+ }
57
+
58
+ @media print {
59
+ .content .ox-cite__ref {
60
+ text-decoration: none;
61
+ }
62
+ }