@valkyrianlabs/payload-markdown 1.3.1

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 (204) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/dist/blocks/MarkdownBlock/Component.d.ts +2 -0
  4. package/dist/blocks/MarkdownBlock/Component.js +13 -0
  5. package/dist/blocks/MarkdownBlock/Component.js.map +1 -0
  6. package/dist/blocks/MarkdownBlock/config.d.ts +2 -0
  7. package/dist/blocks/MarkdownBlock/config.js +20 -0
  8. package/dist/blocks/MarkdownBlock/config.js.map +1 -0
  9. package/dist/blocks/MarkdownBlock/types.d.js +3 -0
  10. package/dist/blocks/MarkdownBlock/types.d.js.map +1 -0
  11. package/dist/components/MarkdownRenderer/Component.client.d.ts +5 -0
  12. package/dist/components/MarkdownRenderer/Component.client.js +163 -0
  13. package/dist/components/MarkdownRenderer/Component.client.js.map +1 -0
  14. package/dist/components/MarkdownRenderer/Component.d.ts +3 -0
  15. package/dist/components/MarkdownRenderer/Component.js +87 -0
  16. package/dist/components/MarkdownRenderer/Component.js.map +1 -0
  17. package/dist/components/MarkdownRenderer/index.css +69 -0
  18. package/dist/components/MarkdownRenderer/index.module.css +45 -0
  19. package/dist/components/MarkdownRenderer/index.module.scss +43 -0
  20. package/dist/components/MarkdownRenderer/index.scss +83 -0
  21. package/dist/components/MarkdownRenderer/types.d.js +5 -0
  22. package/dist/components/MarkdownRenderer/types.d.js.map +1 -0
  23. package/dist/core/codeConfig.d.ts +6 -0
  24. package/dist/core/codeConfig.js +45 -0
  25. package/dist/core/codeConfig.js.map +1 -0
  26. package/dist/core/codeToHtml.d.ts +5 -0
  27. package/dist/core/codeToHtml.js +180 -0
  28. package/dist/core/codeToHtml.js.map +1 -0
  29. package/dist/core/plugins/rehypeApplyLayoutClasses.d.ts +4 -0
  30. package/dist/core/plugins/rehypeApplyLayoutClasses.js +72 -0
  31. package/dist/core/plugins/rehypeApplyLayoutClasses.js.map +1 -0
  32. package/dist/core/plugins/rehypeStripAuthoredInlineStyles.d.ts +3 -0
  33. package/dist/core/plugins/rehypeStripAuthoredInlineStyles.js +17 -0
  34. package/dist/core/plugins/rehypeStripAuthoredInlineStyles.js.map +1 -0
  35. package/dist/core/plugins/remarkCompileLayouts.d.ts +3 -0
  36. package/dist/core/plugins/remarkCompileLayouts.js +169 -0
  37. package/dist/core/plugins/remarkCompileLayouts.js.map +1 -0
  38. package/dist/core/plugins/remarkHeadingAnchorsAndToc.d.ts +3 -0
  39. package/dist/core/plugins/remarkHeadingAnchorsAndToc.js +68 -0
  40. package/dist/core/plugins/remarkHeadingAnchorsAndToc.js.map +1 -0
  41. package/dist/core/plugins/remarkLayoutDirectives.d.ts +3 -0
  42. package/dist/core/plugins/remarkLayoutDirectives.js +26 -0
  43. package/dist/core/plugins/remarkLayoutDirectives.js.map +1 -0
  44. package/dist/core/plugins/remarkLayoutSentinels.d.ts +3 -0
  45. package/dist/core/plugins/remarkLayoutSentinels.js +184 -0
  46. package/dist/core/plugins/remarkLayoutSentinels.js.map +1 -0
  47. package/dist/core/plugins/remarkLiftLayoutDirectives.d.ts +3 -0
  48. package/dist/core/plugins/remarkLiftLayoutDirectives.js +93 -0
  49. package/dist/core/plugins/remarkLiftLayoutDirectives.js.map +1 -0
  50. package/dist/core/plugins/remarkNormalizeLayoutSyntax.d.ts +3 -0
  51. package/dist/core/plugins/remarkValidateDirectiveThemes.d.ts +4 -0
  52. package/dist/core/plugins/remarkValidateDirectiveThemes.js +28 -0
  53. package/dist/core/plugins/remarkValidateDirectiveThemes.js.map +1 -0
  54. package/dist/core/renderMarkdown.d.ts +2 -0
  55. package/dist/core/renderMarkdown.js +270 -0
  56. package/dist/core/renderMarkdown.js.map +1 -0
  57. package/dist/core/types.d.js +7 -0
  58. package/dist/core/types.d.js.map +1 -0
  59. package/dist/core/types.d.ts +238 -0
  60. package/dist/core/types.js +5 -0
  61. package/dist/core/types.js.map +1 -0
  62. package/dist/directives/attributes.d.ts +14 -0
  63. package/dist/directives/attributes.js +121 -0
  64. package/dist/directives/attributes.js.map +1 -0
  65. package/dist/directives/definitions/callout.d.ts +6 -0
  66. package/dist/directives/definitions/callout.js +107 -0
  67. package/dist/directives/definitions/callout.js.map +1 -0
  68. package/dist/directives/definitions/card.d.ts +4 -0
  69. package/dist/directives/definitions/card.js +120 -0
  70. package/dist/directives/definitions/card.js.map +1 -0
  71. package/dist/directives/definitions/cards.d.ts +7 -0
  72. package/dist/directives/definitions/cards.js +72 -0
  73. package/dist/directives/definitions/cards.js.map +1 -0
  74. package/dist/directives/definitions/cell.d.ts +4 -0
  75. package/dist/directives/definitions/cell.js +44 -0
  76. package/dist/directives/definitions/cell.js.map +1 -0
  77. package/dist/directives/definitions/columns.d.ts +4 -0
  78. package/dist/directives/definitions/columns.js +89 -0
  79. package/dist/directives/definitions/columns.js.map +1 -0
  80. package/dist/directives/definitions/details.d.ts +2 -0
  81. package/dist/directives/definitions/details.js +76 -0
  82. package/dist/directives/definitions/details.js.map +1 -0
  83. package/dist/directives/definitions/section.d.ts +2 -0
  84. package/dist/directives/definitions/section.js +32 -0
  85. package/dist/directives/definitions/section.js.map +1 -0
  86. package/dist/directives/definitions/steps.d.ts +2 -0
  87. package/dist/directives/definitions/steps.js +242 -0
  88. package/dist/directives/definitions/steps.js.map +1 -0
  89. package/dist/directives/definitions/tab.d.ts +8 -0
  90. package/dist/directives/definitions/tab.js +59 -0
  91. package/dist/directives/definitions/tab.js.map +1 -0
  92. package/dist/directives/definitions/tabs.d.ts +2 -0
  93. package/dist/directives/definitions/tabs.js +197 -0
  94. package/dist/directives/definitions/tabs.js.map +1 -0
  95. package/dist/directives/definitions/toc.d.ts +7 -0
  96. package/dist/directives/definitions/toc.js +59 -0
  97. package/dist/directives/definitions/toc.js.map +1 -0
  98. package/dist/directives/diagnostics.d.ts +8 -0
  99. package/dist/directives/diagnostics.js +167 -0
  100. package/dist/directives/diagnostics.js.map +1 -0
  101. package/dist/directives/headingAnchors.d.ts +9 -0
  102. package/dist/directives/headingAnchors.js +54 -0
  103. package/dist/directives/headingAnchors.js.map +1 -0
  104. package/dist/directives/index.d.ts +5 -0
  105. package/dist/directives/index.js +6 -0
  106. package/dist/directives/index.js.map +1 -0
  107. package/dist/directives/registry.d.ts +20 -0
  108. package/dist/directives/registry.js +152 -0
  109. package/dist/directives/registry.js.map +1 -0
  110. package/dist/directives/renderData.d.ts +3 -0
  111. package/dist/directives/renderData.js +11 -0
  112. package/dist/directives/renderData.js.map +1 -0
  113. package/dist/directives/themes.d.ts +25 -0
  114. package/dist/directives/themes.js +274 -0
  115. package/dist/directives/themes.js.map +1 -0
  116. package/dist/directives/types.d.ts +72 -0
  117. package/dist/directives/types.js +3 -0
  118. package/dist/directives/types.js.map +1 -0
  119. package/dist/editor/MarkdownCodeMirror/Component.client.d.ts +8 -0
  120. package/dist/editor/MarkdownCodeMirror/Component.client.js +78 -0
  121. package/dist/editor/MarkdownCodeMirror/Component.client.js.map +1 -0
  122. package/dist/editor/MarkdownCodeMirror/Component.d.ts +9 -0
  123. package/dist/editor/MarkdownCodeMirror/Component.js +10 -0
  124. package/dist/editor/MarkdownCodeMirror/Component.js.map +1 -0
  125. package/dist/editor/MarkdownCodeMirror.d.ts +8 -0
  126. package/dist/editor/MarkdownCodeMirror.js +74 -0
  127. package/dist/editor/MarkdownCodeMirror.js.map +1 -0
  128. package/dist/editor/MarkdownEditor.d.ts +10 -0
  129. package/dist/editor/MarkdownEditor.js +22 -0
  130. package/dist/editor/MarkdownEditor.js.map +1 -0
  131. package/dist/editor/directives/completions.d.ts +5 -0
  132. package/dist/editor/directives/completions.js +93 -0
  133. package/dist/editor/directives/completions.js.map +1 -0
  134. package/dist/editor/directives/diagnostics.d.ts +1 -0
  135. package/dist/editor/directives/diagnostics.js +12 -0
  136. package/dist/editor/directives/diagnostics.js.map +1 -0
  137. package/dist/editor/themes/payload.d.ts +27 -0
  138. package/dist/editor/themes/payload.js +269 -0
  139. package/dist/editor/themes/payload.js.map +1 -0
  140. package/dist/editor/themes/support/highlighters.d.ts +20 -0
  141. package/dist/editor/themes/support/highlighters.js +1141 -0
  142. package/dist/editor/themes/support/highlighters.js.map +1 -0
  143. package/dist/editor/themes/support/lang.d.ts +40 -0
  144. package/dist/editor/themes/support/lang.js +201 -0
  145. package/dist/editor/themes/support/lang.js.map +1 -0
  146. package/dist/exports/advanced.d.ts +3 -0
  147. package/dist/exports/advanced.js +5 -0
  148. package/dist/exports/advanced.js.map +1 -0
  149. package/dist/exports/client.d.ts +1 -0
  150. package/dist/exports/client.js +2 -0
  151. package/dist/exports/client.js.map +1 -0
  152. package/dist/exports/server.d.ts +3 -0
  153. package/dist/exports/server.js +5 -0
  154. package/dist/exports/server.js.map +1 -0
  155. package/dist/field/BlocksParams/config.d.ts +7 -0
  156. package/dist/field/BlocksParams/config.js +149 -0
  157. package/dist/field/BlocksParams/config.js.map +1 -0
  158. package/dist/field/CodeBlock/config.d.ts +7 -0
  159. package/dist/field/CodeBlock/config.js +321 -0
  160. package/dist/field/CodeBlock/config.js.map +1 -0
  161. package/dist/field/CodeBlockConfig/config.d.ts +7 -0
  162. package/dist/field/CodeBlockConfig/config.js +306 -0
  163. package/dist/field/CodeBlockConfig/config.js.map +1 -0
  164. package/dist/field/CodeBlockParams/config.d.ts +7 -0
  165. package/dist/field/CodeBlockParams/config.js +321 -0
  166. package/dist/field/CodeBlockParams/config.js.map +1 -0
  167. package/dist/field/Config/config.d.ts +7 -0
  168. package/dist/field/Config/config.js +149 -0
  169. package/dist/field/Config/config.js.map +1 -0
  170. package/dist/field/MarkdownField/Component.d.ts +2 -0
  171. package/dist/field/MarkdownField/Component.js +42 -0
  172. package/dist/field/MarkdownField/Component.js.map +1 -0
  173. package/dist/field/MarkdownField/config.d.ts +3 -0
  174. package/dist/field/MarkdownField/config.js +20 -0
  175. package/dist/field/MarkdownField/config.js.map +1 -0
  176. package/dist/field/Tailwind/config.d.ts +9 -0
  177. package/dist/field/Tailwind/config.js +13 -0
  178. package/dist/field/Tailwind/config.js.map +1 -0
  179. package/dist/field/TailwindField/config.d.ts +9 -0
  180. package/dist/field/TailwindField/config.js +13 -0
  181. package/dist/field/TailwindField/config.js.map +1 -0
  182. package/dist/index.d.ts +10 -0
  183. package/dist/index.js +91 -0
  184. package/dist/index.js.map +1 -0
  185. package/dist/runtime/index.d.ts +36 -0
  186. package/dist/runtime/index.js +124 -0
  187. package/dist/runtime/index.js.map +1 -0
  188. package/dist/styles/directiveSurface.d.ts +11 -0
  189. package/dist/styles/directiveSurface.js +38 -0
  190. package/dist/styles/directiveSurface.js.map +1 -0
  191. package/dist/types/core.d.ts +285 -0
  192. package/dist/types/core.js +5 -0
  193. package/dist/types/core.js.map +1 -0
  194. package/dist/types/layoutToken.d.ts +1 -0
  195. package/dist/types/layoutToken.js +3 -0
  196. package/dist/types/layoutToken.js.map +1 -0
  197. package/dist/types/mdast.d.js +5 -0
  198. package/dist/types/mdast.d.js.map +1 -0
  199. package/dist/types.d.js +3 -0
  200. package/dist/types.d.js.map +1 -0
  201. package/dist/types.d.ts +80 -0
  202. package/dist/types.js +3 -0
  203. package/dist/types.js.map +1 -0
  204. package/package.json +181 -0
@@ -0,0 +1,13 @@
1
+ export function vlMdTailwindField(options = {}) {
2
+ const { name = 'vlTailwindsField', admin, defaultValue, label = 'Tailwinds', required = false } = options;
3
+ return {
4
+ name,
5
+ type: 'text',
6
+ admin,
7
+ defaultValue,
8
+ label,
9
+ required
10
+ };
11
+ }
12
+
13
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/field/Tailwind/config.ts"],"sourcesContent":["import type { Field, TextField } from 'payload'\n\nexport type TailwindFieldOptions = {\n admin?: Partial<TextField['admin']>\n defaultValue?: string\n label?: string\n name?: string\n required?: boolean\n}\n\nexport function vlMdTailwindField(options: TailwindFieldOptions = {}): Field {\n const {\n name = 'vlTailwindsField',\n admin,\n defaultValue,\n label = 'Tailwinds',\n required = false\n } = options\n\n return {\n name,\n type: 'text',\n admin,\n defaultValue,\n label,\n required,\n }\n}\n"],"names":["vlMdTailwindField","options","name","admin","defaultValue","label","required","type"],"mappings":"AAUA,OAAO,SAASA,kBAAkBC,UAAgC,CAAC,CAAC;IAClE,MAAM,EACJC,OAAO,kBAAkB,EACzBC,KAAK,EACLC,YAAY,EACZC,QAAQ,WAAW,EACnBC,WAAW,KAAK,EACjB,GAAGL;IAEJ,OAAO;QACLC;QACAK,MAAM;QACNJ;QACAC;QACAC;QACAC;IACF;AACF"}
@@ -0,0 +1,9 @@
1
+ import type { Field, TextField } from 'payload';
2
+ export type TailwindFieldOptions = {
3
+ admin?: Partial<TextField['admin']>;
4
+ defaultValue?: string;
5
+ label?: string;
6
+ name?: string;
7
+ required?: boolean;
8
+ };
9
+ export declare function tailwindField(options?: TailwindFieldOptions): Field;
@@ -0,0 +1,13 @@
1
+ export function tailwindField(options = {}) {
2
+ const { name = 'vlTailwindsField', admin, defaultValue, label = 'Tailwinds', required = false } = options;
3
+ return {
4
+ name,
5
+ type: 'text',
6
+ admin,
7
+ defaultValue,
8
+ label,
9
+ required
10
+ };
11
+ }
12
+
13
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/field/TailwindField/config.ts"],"sourcesContent":["import type { Field, TextField } from 'payload'\n\nexport type TailwindFieldOptions = {\n admin?: Partial<TextField['admin']>\n defaultValue?: string\n label?: string\n name?: string\n required?: boolean\n}\n\nexport function tailwindField(options: TailwindFieldOptions = {}): Field {\n const {\n name = 'vlTailwindsField',\n admin,\n defaultValue,\n label = 'Tailwinds',\n required = false\n } = options\n\n return {\n name,\n type: 'text',\n admin,\n defaultValue,\n label,\n required,\n }\n}\n"],"names":["tailwindField","options","name","admin","defaultValue","label","required","type"],"mappings":"AAUA,OAAO,SAASA,cAAcC,UAAgC,CAAC,CAAC;IAC9D,MAAM,EACJC,OAAO,kBAAkB,EACzBC,KAAK,EACLC,YAAY,EACZC,QAAQ,WAAW,EACnBC,WAAW,KAAK,EACjB,GAAGL;IAEJ,OAAO;QACLC;QACAK,MAAM;QACNJ;QACAC;QACAC;QACAC;IACF;AACF"}
@@ -0,0 +1,10 @@
1
+ import type { Plugin } from 'payload';
2
+ import type { MarkdownFieldOptions, PayloadMarkdownConfig } from './types.js';
3
+ import { MarkdownBlock } from './blocks/MarkdownBlock/config.js';
4
+ import { DEFAULT_CODE_LANGS } from './core/codeToHtml.js';
5
+ import { DEFAULT_CALLOUT_THEMES, DEFAULT_CARD_THEMES, DEFAULT_CARDS_THEMES, DEFAULT_CELL_THEMES, DEFAULT_COLUMNS_THEMES, DEFAULT_DETAILS_THEMES, DEFAULT_SECTION_THEMES, DEFAULT_STEPS_THEMES, DEFAULT_TAB_THEMES, DEFAULT_TABS_THEMES, DEFAULT_TOC_THEMES } from './directives/themes.js';
6
+ import { markdownField } from './field/MarkdownField/config.js';
7
+ export declare const payloadMarkdown: (pluginOptions?: PayloadMarkdownConfig) => Plugin;
8
+ export { DEFAULT_CALLOUT_THEMES, DEFAULT_CARD_THEMES, DEFAULT_CARDS_THEMES, DEFAULT_CELL_THEMES, DEFAULT_CODE_LANGS, DEFAULT_COLUMNS_THEMES, DEFAULT_DETAILS_THEMES, DEFAULT_SECTION_THEMES, DEFAULT_STEPS_THEMES, DEFAULT_TAB_THEMES, DEFAULT_TABS_THEMES, DEFAULT_TOC_THEMES, MarkdownBlock, markdownField, };
9
+ export type { MarkdownFieldOptions, PayloadMarkdownConfig };
10
+ export type { MarkdownCodeConfig, MarkdownDirectiveTheme, MarkdownDirectiveThemeGroup, MarkdownDirectiveThemes, } from './types/core.js';
package/dist/index.js ADDED
@@ -0,0 +1,91 @@
1
+ import { MarkdownBlock } from './blocks/MarkdownBlock/config.js';
2
+ import { DEFAULT_CODE_LANGS } from './core/codeToHtml.js';
3
+ import { DEFAULT_CALLOUT_THEMES, DEFAULT_CARD_THEMES, DEFAULT_CARDS_THEMES, DEFAULT_CELL_THEMES, DEFAULT_COLUMNS_THEMES, DEFAULT_DETAILS_THEMES, DEFAULT_SECTION_THEMES, DEFAULT_STEPS_THEMES, DEFAULT_TAB_THEMES, DEFAULT_TABS_THEMES, DEFAULT_TOC_THEMES } from './directives/themes.js';
4
+ import { markdownField } from './field/MarkdownField/config.js';
5
+ import { setPayloadMarkdownSettings } from './runtime/index.js';
6
+ function ensureMarkdownBlock(config) {
7
+ if (!config.blocks) config.blocks = [];
8
+ const alreadyExists = config.blocks.some((block)=>block.slug === MarkdownBlock.slug);
9
+ if (alreadyExists) return;
10
+ config.blocks.push(MarkdownBlock);
11
+ }
12
+ function ensureMarkdownField(collection, fieldName, fieldOptions) {
13
+ const alreadyExists = collection.fields.some((field)=>'name' in field && field.name === fieldName);
14
+ if (alreadyExists) return;
15
+ collection.fields.push(markdownField({
16
+ name: fieldName,
17
+ label: 'Markdown',
18
+ ...fieldOptions || {}
19
+ }));
20
+ }
21
+ function ensureBlockInBlocksField(field, block) {
22
+ if (field.type !== 'blocks') return;
23
+ if (!field.blocks) field.blocks = [];
24
+ const alreadyExists = field.blocks.some((entry)=>entry.slug === block.slug);
25
+ if (alreadyExists) return;
26
+ field.blocks.push(block);
27
+ }
28
+ function walkFieldsAndInstallBlock(fields, block) {
29
+ for (const field of fields){
30
+ ensureBlockInBlocksField(field, block);
31
+ if ('fields' in field && Array.isArray(field.fields)) walkFieldsAndInstallBlock(field.fields, block);
32
+ if (field.type === 'tabs' && Array.isArray(field.tabs)) {
33
+ for (const tab of field.tabs)if ('fields' in tab && Array.isArray(tab.fields)) walkFieldsAndInstallBlock(tab.fields, block);
34
+ }
35
+ }
36
+ }
37
+ function ensureMarkdownBlockInCollectionBlocks(collection) {
38
+ walkFieldsAndInstallBlock(collection.fields, MarkdownBlock);
39
+ }
40
+ function collectionHasBlocksField(fields) {
41
+ for (const field of fields){
42
+ if (field.type === 'blocks') return true;
43
+ if ('fields' in field && Array.isArray(field.fields)) {
44
+ if (collectionHasBlocksField(field.fields)) return true;
45
+ }
46
+ if (field.type === 'tabs' && Array.isArray(field.tabs)) {
47
+ for (const tab of field.tabs)if ('fields' in tab && Array.isArray(tab.fields)) {
48
+ if (collectionHasBlocksField(tab.fields)) return true;
49
+ }
50
+ }
51
+ }
52
+ return false;
53
+ }
54
+ function resolveCollectionInstallBehavior(collection, collectionOptions) {
55
+ const hasBlocksField = collectionHasBlocksField(collection.fields);
56
+ if (collectionOptions === true) {
57
+ return {
58
+ fieldName: 'content',
59
+ fieldOptions: undefined,
60
+ installField: !hasBlocksField,
61
+ installIntoBlocks: hasBlocksField
62
+ };
63
+ }
64
+ return {
65
+ fieldName: collectionOptions.fieldName || 'content',
66
+ fieldOptions: collectionOptions.field,
67
+ installField: collectionOptions.installField ?? !hasBlocksField,
68
+ installIntoBlocks: collectionOptions.installIntoBlocks ?? hasBlocksField
69
+ };
70
+ }
71
+ export const payloadMarkdown = (pluginOptions = {})=>(incomingConfig)=>{
72
+ const config = {
73
+ ...incomingConfig
74
+ };
75
+ if (pluginOptions.enabled === false) return config;
76
+ setPayloadMarkdownSettings(pluginOptions);
77
+ ensureMarkdownBlock(config);
78
+ if (!pluginOptions.collections || !config.collections) return config;
79
+ for (const [collectionSlug, collectionOptions] of Object.entries(pluginOptions.collections)){
80
+ if (!collectionOptions) continue;
81
+ const collection = config.collections.find((entry)=>entry.slug === collectionSlug);
82
+ if (!collection) continue;
83
+ const resolved = resolveCollectionInstallBehavior(collection, collectionOptions);
84
+ if (resolved.installIntoBlocks) ensureMarkdownBlockInCollectionBlocks(collection);
85
+ if (resolved.installField) ensureMarkdownField(collection, resolved.fieldName, resolved.fieldOptions);
86
+ }
87
+ return config;
88
+ };
89
+ export { DEFAULT_CALLOUT_THEMES, DEFAULT_CARD_THEMES, DEFAULT_CARDS_THEMES, DEFAULT_CELL_THEMES, DEFAULT_CODE_LANGS, DEFAULT_COLUMNS_THEMES, DEFAULT_DETAILS_THEMES, DEFAULT_SECTION_THEMES, DEFAULT_STEPS_THEMES, DEFAULT_TAB_THEMES, DEFAULT_TABS_THEMES, DEFAULT_TOC_THEMES, MarkdownBlock, markdownField, };
90
+
91
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Block, CollectionConfig, Config, Field, Plugin } from 'payload'\n\nimport type { MarkdownFieldOptions, PayloadMarkdownCollectionConfig, PayloadMarkdownConfig } from './types.js'\n\nimport { MarkdownBlock } from './blocks/MarkdownBlock/config.js'\nimport { DEFAULT_CODE_LANGS } from './core/codeToHtml.js'\nimport {\n DEFAULT_CALLOUT_THEMES,\n DEFAULT_CARD_THEMES,\n DEFAULT_CARDS_THEMES,\n DEFAULT_CELL_THEMES,\n DEFAULT_COLUMNS_THEMES,\n DEFAULT_DETAILS_THEMES,\n DEFAULT_SECTION_THEMES,\n DEFAULT_STEPS_THEMES,\n DEFAULT_TAB_THEMES,\n DEFAULT_TABS_THEMES,\n DEFAULT_TOC_THEMES,\n} from './directives/themes.js'\nimport { markdownField } from './field/MarkdownField/config.js'\nimport { setPayloadMarkdownSettings } from './runtime/index.js'\n\nfunction ensureMarkdownBlock(config: Config) {\n if (!config.blocks) config.blocks = []\n\n const alreadyExists = config.blocks.some((block) => block.slug === MarkdownBlock.slug)\n if (alreadyExists) return\n\n config.blocks.push(MarkdownBlock)\n}\n\nfunction ensureMarkdownField(\n collection: CollectionConfig,\n fieldName: string,\n fieldOptions?: Omit<MarkdownFieldOptions, 'name'>,\n) {\n const alreadyExists = collection.fields.some(\n (field) => 'name' in field && field.name === fieldName,\n )\n\n if (alreadyExists) return\n\n collection.fields.push(\n markdownField({\n name: fieldName,\n label: 'Markdown',\n ...(fieldOptions || {}),\n }),\n )\n}\n\nfunction ensureBlockInBlocksField(field: Field, block: Block) {\n if (field.type !== 'blocks') return\n\n if (!field.blocks) field.blocks = []\n\n const alreadyExists = field.blocks.some((entry) => entry.slug === block.slug)\n if (alreadyExists) return\n\n field.blocks.push(block)\n}\n\nfunction walkFieldsAndInstallBlock(fields: Field[], block: Block) {\n for (const field of fields) {\n ensureBlockInBlocksField(field, block)\n\n if ('fields' in field && Array.isArray(field.fields))\n walkFieldsAndInstallBlock(field.fields, block)\n\n if (field.type === 'tabs' && Array.isArray(field.tabs)) {\n for (const tab of field.tabs)\n if ('fields' in tab && Array.isArray(tab.fields))\n walkFieldsAndInstallBlock(tab.fields, block)\n }\n }\n}\n\nfunction ensureMarkdownBlockInCollectionBlocks(collection: CollectionConfig) {\n walkFieldsAndInstallBlock(collection.fields, MarkdownBlock)\n}\n\nfunction collectionHasBlocksField(fields: Field[]): boolean {\n for (const field of fields) {\n if (field.type === 'blocks') return true\n\n if ('fields' in field && Array.isArray(field.fields))\n if (collectionHasBlocksField(field.fields)) return true\n\n if (field.type === 'tabs' && Array.isArray(field.tabs))\n for (const tab of field.tabs)\n if ('fields' in tab && Array.isArray(tab.fields))\n if (collectionHasBlocksField(tab.fields)) return true\n }\n\n return false\n}\n\nfunction resolveCollectionInstallBehavior(\n collection: CollectionConfig,\n collectionOptions: PayloadMarkdownCollectionConfig | true,\n) {\n const hasBlocksField = collectionHasBlocksField(collection.fields)\n\n if (collectionOptions === true) {\n return {\n fieldName: 'content',\n fieldOptions: undefined,\n installField: !hasBlocksField,\n installIntoBlocks: hasBlocksField,\n }\n }\n\n return {\n fieldName: collectionOptions.fieldName || 'content',\n fieldOptions: collectionOptions.field,\n installField: collectionOptions.installField ?? !hasBlocksField,\n installIntoBlocks: collectionOptions.installIntoBlocks ?? hasBlocksField,\n }\n}\n\nexport const payloadMarkdown =\n (pluginOptions: PayloadMarkdownConfig = {}): Plugin =>\n (incomingConfig: Config): Config => {\n const config = { ...incomingConfig }\n\n if (pluginOptions.enabled === false) return config\n\n setPayloadMarkdownSettings(pluginOptions)\n\n ensureMarkdownBlock(config)\n\n if (!pluginOptions.collections || !config.collections) return config\n\n for (const [collectionSlug, collectionOptions] of Object.entries(pluginOptions.collections)) {\n if (!collectionOptions) continue\n\n const collection = config.collections.find((entry) => entry.slug === collectionSlug)\n if (!collection) continue\n\n const resolved = resolveCollectionInstallBehavior(collection, collectionOptions)\n\n if (resolved.installIntoBlocks) ensureMarkdownBlockInCollectionBlocks(collection)\n\n if (resolved.installField)\n ensureMarkdownField(collection, resolved.fieldName, resolved.fieldOptions)\n }\n\n return config\n }\n\nexport {\n DEFAULT_CALLOUT_THEMES,\n DEFAULT_CARD_THEMES,\n DEFAULT_CARDS_THEMES,\n DEFAULT_CELL_THEMES,\n DEFAULT_CODE_LANGS,\n DEFAULT_COLUMNS_THEMES,\n DEFAULT_DETAILS_THEMES,\n DEFAULT_SECTION_THEMES,\n DEFAULT_STEPS_THEMES,\n DEFAULT_TAB_THEMES,\n DEFAULT_TABS_THEMES,\n DEFAULT_TOC_THEMES,\n MarkdownBlock,\n markdownField,\n}\nexport type { MarkdownFieldOptions, PayloadMarkdownConfig }\nexport type {\n MarkdownCodeConfig,\n MarkdownDirectiveTheme,\n MarkdownDirectiveThemeGroup,\n MarkdownDirectiveThemes,\n} from './types/core.js'\n"],"names":["MarkdownBlock","DEFAULT_CODE_LANGS","DEFAULT_CALLOUT_THEMES","DEFAULT_CARD_THEMES","DEFAULT_CARDS_THEMES","DEFAULT_CELL_THEMES","DEFAULT_COLUMNS_THEMES","DEFAULT_DETAILS_THEMES","DEFAULT_SECTION_THEMES","DEFAULT_STEPS_THEMES","DEFAULT_TAB_THEMES","DEFAULT_TABS_THEMES","DEFAULT_TOC_THEMES","markdownField","setPayloadMarkdownSettings","ensureMarkdownBlock","config","blocks","alreadyExists","some","block","slug","push","ensureMarkdownField","collection","fieldName","fieldOptions","fields","field","name","label","ensureBlockInBlocksField","type","entry","walkFieldsAndInstallBlock","Array","isArray","tabs","tab","ensureMarkdownBlockInCollectionBlocks","collectionHasBlocksField","resolveCollectionInstallBehavior","collectionOptions","hasBlocksField","undefined","installField","installIntoBlocks","payloadMarkdown","pluginOptions","incomingConfig","enabled","collections","collectionSlug","Object","entries","find","resolved"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ConfigOptions, DualMarkdownFieldConfig, PayloadMarkdownCollectionConfig, PayloadMarkdownConfig } from '../types.js';
2
+ import type { MarkdownCodeConfig, MarkdownConfig, MarkdownRenderConfig } from '../types/core.js';
3
+ export type PayloadMarkdownResolvedSettings = {
4
+ code?: MarkdownCodeConfig;
5
+ collections: Partial<Record<string, PayloadMarkdownCollectionConfig | true>>;
6
+ config?: ConfigOptions;
7
+ enabled: boolean;
8
+ themes?: MarkdownRenderConfig['themes'];
9
+ };
10
+ export declare function setPayloadMarkdownSettings(pluginOptions?: PayloadMarkdownConfig): void;
11
+ export declare function getPayloadMarkdownSettings(): PayloadMarkdownResolvedSettings;
12
+ export declare function maybeGetPayloadMarkdownSettings(): null | PayloadMarkdownResolvedSettings;
13
+ export declare function clearPayloadMarkdownSettings(): void;
14
+ export declare function isDualMarkdownFieldConfig(value: ConfigOptions | undefined): value is DualMarkdownFieldConfig;
15
+ export declare function resolveConfigOptions(value?: ConfigOptions): {
16
+ blocks?: MarkdownConfig;
17
+ field?: MarkdownConfig;
18
+ };
19
+ export declare function mergeMarkdownConfigs(...configs: Array<MarkdownConfig | undefined>): MarkdownConfig | undefined;
20
+ export declare function mergeMarkdownRenderConfigs(...configs: Array<MarkdownRenderConfig | undefined>): MarkdownRenderConfig | undefined;
21
+ export declare function resolveGlobalMarkdownConfigs(): {
22
+ blocks?: undefined;
23
+ field?: undefined;
24
+ } | {
25
+ blocks: MarkdownRenderConfig | undefined;
26
+ field: MarkdownRenderConfig | undefined;
27
+ };
28
+ export declare function resolveCollectionMarkdownConfigs(collectionSlug?: string): {
29
+ blocks?: undefined;
30
+ field?: undefined;
31
+ } | {
32
+ blocks: MarkdownRenderConfig | undefined;
33
+ field: MarkdownRenderConfig | undefined;
34
+ };
35
+ export declare function resolveMarkdownBlockDefaults(collectionSlug?: string): MarkdownRenderConfig | undefined;
36
+ export declare function resolveMarkdownFieldDefaults(collectionSlug?: string): MarkdownRenderConfig | undefined;
@@ -0,0 +1,124 @@
1
+ import { mergeCodeConfigFromRenderConfigs } from '../core/codeConfig.js';
2
+ import { mergeMarkdownDirectiveThemes } from '../directives/themes.js';
3
+ let settings = null;
4
+ export function setPayloadMarkdownSettings(pluginOptions = {}) {
5
+ settings = {
6
+ code: pluginOptions.code,
7
+ collections: pluginOptions.collections ?? {},
8
+ config: pluginOptions.config,
9
+ enabled: pluginOptions.enabled !== false,
10
+ themes: pluginOptions.themes
11
+ };
12
+ }
13
+ export function getPayloadMarkdownSettings() {
14
+ if (!settings) {
15
+ throw new Error('[payload-markdown] Settings have not been initialized. ' + 'Make sure payloadMarkdown(...) is included in your Payload plugins array before using runtime helpers.');
16
+ }
17
+ return settings;
18
+ }
19
+ export function maybeGetPayloadMarkdownSettings() {
20
+ return settings;
21
+ }
22
+ export function clearPayloadMarkdownSettings() {
23
+ settings = null;
24
+ }
25
+ export function isDualMarkdownFieldConfig(value) {
26
+ if (!value || typeof value !== 'object') return false;
27
+ return 'blocks' in value || 'field' in value;
28
+ }
29
+ export function resolveConfigOptions(value) {
30
+ if (!value) return {};
31
+ if (isDualMarkdownFieldConfig(value)) {
32
+ return {
33
+ blocks: value.blocks,
34
+ field: value.field
35
+ };
36
+ }
37
+ return {
38
+ blocks: value,
39
+ field: value
40
+ };
41
+ }
42
+ function joinClassNames(...values) {
43
+ return values.filter(Boolean).join(' ');
44
+ }
45
+ export function mergeMarkdownConfigs(...configs) {
46
+ const filtered = configs.filter(Boolean);
47
+ if (filtered.length === 0) return undefined;
48
+ const merged = {};
49
+ for (const config of filtered){
50
+ if (!config) continue;
51
+ if (config.className) merged.className = joinClassNames(merged.className, config.className);
52
+ if (config.wrapperClassName) merged.wrapperClassName = joinClassNames(merged.wrapperClassName, config.wrapperClassName);
53
+ if (config.columnClassName) merged.columnClassName = joinClassNames(merged.columnClassName, config.columnClassName);
54
+ if (config.sectionClassName) merged.sectionClassName = joinClassNames(merged.sectionClassName, config.sectionClassName);
55
+ if (config.variant !== undefined) merged.variant = config.variant;
56
+ if (config.size !== undefined) merged.size = config.size;
57
+ if (config.lead !== undefined) merged.lead = config.lead;
58
+ if (config.fullBleedCode !== undefined) merged.fullBleedCode = config.fullBleedCode;
59
+ if (config.mutedHeadings !== undefined) merged.mutedHeadings = config.mutedHeadings;
60
+ if (config.enableGutter !== undefined) merged.enableGutter = config.enableGutter;
61
+ if (config.options) {
62
+ merged.options = {
63
+ ...merged.options ?? {},
64
+ ...config.options
65
+ };
66
+ }
67
+ }
68
+ return merged;
69
+ }
70
+ export function mergeMarkdownRenderConfigs(...configs) {
71
+ const merged = mergeMarkdownConfigs(...configs);
72
+ const code = mergeCodeConfigFromRenderConfigs(...configs);
73
+ const themes = mergeMarkdownDirectiveThemes(...configs.map((config)=>config?.themes));
74
+ if (!merged && !code && !themes) return undefined;
75
+ return {
76
+ ...merged ?? {},
77
+ ...code ? {
78
+ code
79
+ } : {},
80
+ ...themes ? {
81
+ themes
82
+ } : {}
83
+ };
84
+ }
85
+ export function resolveGlobalMarkdownConfigs() {
86
+ const current = maybeGetPayloadMarkdownSettings();
87
+ if (!current) return {};
88
+ const resolved = resolveConfigOptions(current.config);
89
+ const shared = {
90
+ code: current.code,
91
+ themes: current.themes
92
+ };
93
+ return {
94
+ blocks: mergeMarkdownRenderConfigs(resolved.blocks, shared),
95
+ field: mergeMarkdownRenderConfigs(resolved.field, shared)
96
+ };
97
+ }
98
+ export function resolveCollectionMarkdownConfigs(collectionSlug) {
99
+ const globalResolved = resolveGlobalMarkdownConfigs();
100
+ if (!collectionSlug) return globalResolved;
101
+ const current = maybeGetPayloadMarkdownSettings();
102
+ if (!current) return globalResolved;
103
+ const collectionEntry = current.collections?.[collectionSlug];
104
+ if (!collectionEntry || collectionEntry === true) {
105
+ return globalResolved;
106
+ }
107
+ const collectionResolved = resolveConfigOptions(collectionEntry.config);
108
+ const shared = {
109
+ code: collectionEntry.code,
110
+ themes: collectionEntry.themes
111
+ };
112
+ return {
113
+ blocks: mergeMarkdownRenderConfigs(globalResolved.blocks, collectionResolved.blocks, shared),
114
+ field: mergeMarkdownRenderConfigs(globalResolved.field, collectionResolved.field, shared)
115
+ };
116
+ }
117
+ export function resolveMarkdownBlockDefaults(collectionSlug) {
118
+ return resolveCollectionMarkdownConfigs(collectionSlug).blocks;
119
+ }
120
+ export function resolveMarkdownFieldDefaults(collectionSlug) {
121
+ return resolveCollectionMarkdownConfigs(collectionSlug).field;
122
+ }
123
+
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/runtime/index.ts"],"sourcesContent":["import type {\n ConfigOptions,\n DualMarkdownFieldConfig,\n PayloadMarkdownCollectionConfig,\n PayloadMarkdownConfig,\n} from '../types.js'\nimport type { MarkdownCodeConfig, MarkdownConfig, MarkdownRenderConfig } from '../types/core.js'\n\nimport { mergeCodeConfigFromRenderConfigs } from '../core/codeConfig.js'\nimport { mergeMarkdownDirectiveThemes } from '../directives/themes.js'\n\nexport type PayloadMarkdownResolvedSettings = {\n code?: MarkdownCodeConfig\n collections: Partial<Record<string, PayloadMarkdownCollectionConfig | true>>\n config?: ConfigOptions\n enabled: boolean\n themes?: MarkdownRenderConfig['themes']\n}\n\nlet settings: null | PayloadMarkdownResolvedSettings = null\n\nexport function setPayloadMarkdownSettings(pluginOptions: PayloadMarkdownConfig = {}) {\n settings = {\n code: pluginOptions.code,\n collections: pluginOptions.collections ?? {},\n config: pluginOptions.config,\n enabled: pluginOptions.enabled !== false,\n themes: pluginOptions.themes,\n }\n}\n\nexport function getPayloadMarkdownSettings(): PayloadMarkdownResolvedSettings {\n if (!settings) {\n throw new Error(\n '[payload-markdown] Settings have not been initialized. ' +\n 'Make sure payloadMarkdown(...) is included in your Payload plugins array before using runtime helpers.',\n )\n }\n\n return settings\n}\n\nexport function maybeGetPayloadMarkdownSettings(): null | PayloadMarkdownResolvedSettings {\n return settings\n}\n\nexport function clearPayloadMarkdownSettings() {\n settings = null\n}\n\nexport function isDualMarkdownFieldConfig(\n value: ConfigOptions | undefined,\n): value is DualMarkdownFieldConfig {\n if (!value || typeof value !== 'object') return false\n return 'blocks' in value || 'field' in value\n}\n\nexport function resolveConfigOptions(value?: ConfigOptions): {\n blocks?: MarkdownConfig\n field?: MarkdownConfig\n} {\n if (!value) return {}\n\n if (isDualMarkdownFieldConfig(value)) {\n return {\n blocks: value.blocks,\n field: value.field,\n }\n }\n\n return {\n blocks: value,\n field: value,\n }\n}\n\nfunction joinClassNames(...values: Array<string | undefined>) {\n return values.filter(Boolean).join(' ')\n}\n\nexport function mergeMarkdownConfigs(\n ...configs: Array<MarkdownConfig | undefined>\n): MarkdownConfig | undefined {\n const filtered = configs.filter(Boolean)\n if (filtered.length === 0) return undefined\n\n const merged: MarkdownConfig = {}\n\n for (const config of filtered) {\n if (!config) continue\n\n if (config.className) merged.className = joinClassNames(merged.className, config.className)\n\n if (config.wrapperClassName)\n merged.wrapperClassName = joinClassNames(merged.wrapperClassName, config.wrapperClassName)\n\n if (config.columnClassName)\n merged.columnClassName = joinClassNames(merged.columnClassName, config.columnClassName)\n\n if (config.sectionClassName)\n merged.sectionClassName = joinClassNames(merged.sectionClassName, config.sectionClassName)\n\n if (config.variant !== undefined) merged.variant = config.variant\n if (config.size !== undefined) merged.size = config.size\n if (config.lead !== undefined) merged.lead = config.lead\n if (config.fullBleedCode !== undefined) merged.fullBleedCode = config.fullBleedCode\n if (config.mutedHeadings !== undefined) merged.mutedHeadings = config.mutedHeadings\n if (config.enableGutter !== undefined) merged.enableGutter = config.enableGutter\n\n if (config.options) {\n merged.options = {\n ...(merged.options ?? {}),\n ...config.options,\n }\n }\n }\n\n return merged\n}\n\nexport function mergeMarkdownRenderConfigs(\n ...configs: Array<MarkdownRenderConfig | undefined>\n): MarkdownRenderConfig | undefined {\n const merged = mergeMarkdownConfigs(...configs)\n const code = mergeCodeConfigFromRenderConfigs(...configs)\n const themes = mergeMarkdownDirectiveThemes(...configs.map((config) => config?.themes))\n\n if (!merged && !code && !themes) return undefined\n\n return {\n ...(merged ?? {}),\n ...(code ? { code } : {}),\n ...(themes ? { themes } : {}),\n }\n}\n\nexport function resolveGlobalMarkdownConfigs() {\n const current = maybeGetPayloadMarkdownSettings()\n if (!current) return {}\n\n const resolved = resolveConfigOptions(current.config)\n const shared: MarkdownRenderConfig = {\n code: current.code,\n themes: current.themes,\n }\n\n return {\n blocks: mergeMarkdownRenderConfigs(resolved.blocks, shared),\n field: mergeMarkdownRenderConfigs(resolved.field, shared),\n }\n}\n\nexport function resolveCollectionMarkdownConfigs(collectionSlug?: string) {\n const globalResolved = resolveGlobalMarkdownConfigs()\n\n if (!collectionSlug) return globalResolved\n\n const current = maybeGetPayloadMarkdownSettings()\n if (!current) return globalResolved\n\n const collectionEntry = current.collections?.[collectionSlug]\n\n if (!collectionEntry || collectionEntry === true) {\n return globalResolved\n }\n\n const collectionResolved = resolveConfigOptions(collectionEntry.config)\n const shared: MarkdownRenderConfig = {\n code: collectionEntry.code,\n themes: collectionEntry.themes,\n }\n\n return {\n blocks: mergeMarkdownRenderConfigs(globalResolved.blocks, collectionResolved.blocks, shared),\n field: mergeMarkdownRenderConfigs(globalResolved.field, collectionResolved.field, shared),\n }\n}\n\nexport function resolveMarkdownBlockDefaults(collectionSlug?: string) {\n return resolveCollectionMarkdownConfigs(collectionSlug).blocks\n}\n\nexport function resolveMarkdownFieldDefaults(collectionSlug?: string) {\n return resolveCollectionMarkdownConfigs(collectionSlug).field\n}\n"],"names":["mergeCodeConfigFromRenderConfigs","mergeMarkdownDirectiveThemes","settings","setPayloadMarkdownSettings","pluginOptions","code","collections","config","enabled","themes","getPayloadMarkdownSettings","Error","maybeGetPayloadMarkdownSettings","clearPayloadMarkdownSettings","isDualMarkdownFieldConfig","value","resolveConfigOptions","blocks","field","joinClassNames","values","filter","Boolean","join","mergeMarkdownConfigs","configs","filtered","length","undefined","merged","className","wrapperClassName","columnClassName","sectionClassName","variant","size","lead","fullBleedCode","mutedHeadings","enableGutter","options","mergeMarkdownRenderConfigs","map","resolveGlobalMarkdownConfigs","current","resolved","shared","resolveCollectionMarkdownConfigs","collectionSlug","globalResolved","collectionEntry","collectionResolved","resolveMarkdownBlockDefaults","resolveMarkdownFieldDefaults"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const DIRECTIVE_SURFACE_BORDER_CLASS = "border border-white/[0.06]";
2
+ export declare const DIRECTIVE_SURFACE_DIVIDER_CLASS = "border-white/[0.06]";
3
+ export declare const DIRECTIVE_SURFACE_BACKGROUND_CLASS = "bg-[#18191c]";
4
+ export declare const DIRECTIVE_SURFACE_SHADOW_CLASS = "shadow-[0_2px_12px_rgba(0,0,0,0.35)]";
5
+ export declare const DIRECTIVE_SURFACE_SOFT_SHADOW_CLASS = "shadow-[0_2px_12px_rgba(0,0,0,0.24)]";
6
+ export declare const DIRECTIVE_SURFACE_PANEL_CLASS: string;
7
+ export declare const DIRECTIVE_SURFACE_MUTED_PANEL_CLASS: string;
8
+ export declare const DIRECTIVE_SURFACE_GLASS_PANEL_CLASS: string;
9
+ export declare const DIRECTIVE_SURFACE_SOFT_PANEL_CLASS: string;
10
+ export declare const DIRECTIVE_SURFACE_RENDERER_PRE_CLASS: string;
11
+ export declare const DIRECTIVE_SURFACE_NESTED_CODE_CLASS: string;
@@ -0,0 +1,38 @@
1
+ export const DIRECTIVE_SURFACE_BORDER_CLASS = 'border border-white/[0.06]';
2
+ export const DIRECTIVE_SURFACE_DIVIDER_CLASS = 'border-white/[0.06]';
3
+ export const DIRECTIVE_SURFACE_BACKGROUND_CLASS = 'bg-[#18191c]';
4
+ export const DIRECTIVE_SURFACE_SHADOW_CLASS = 'shadow-[0_2px_12px_rgba(0,0,0,0.35)]';
5
+ export const DIRECTIVE_SURFACE_SOFT_SHADOW_CLASS = 'shadow-[0_2px_12px_rgba(0,0,0,0.24)]';
6
+ export const DIRECTIVE_SURFACE_PANEL_CLASS = [
7
+ DIRECTIVE_SURFACE_BORDER_CLASS,
8
+ DIRECTIVE_SURFACE_BACKGROUND_CLASS,
9
+ DIRECTIVE_SURFACE_SHADOW_CLASS
10
+ ].join(' ');
11
+ export const DIRECTIVE_SURFACE_MUTED_PANEL_CLASS = [
12
+ DIRECTIVE_SURFACE_BORDER_CLASS,
13
+ 'bg-[#18191c]/80',
14
+ 'shadow-[0_2px_12px_rgba(0,0,0,0.28)]'
15
+ ].join(' ');
16
+ export const DIRECTIVE_SURFACE_GLASS_PANEL_CLASS = [
17
+ DIRECTIVE_SURFACE_BORDER_CLASS,
18
+ 'bg-[#18191c]/70',
19
+ 'shadow-[0_2px_12px_rgba(0,0,0,0.32)]',
20
+ 'backdrop-blur-xl'
21
+ ].join(' ');
22
+ export const DIRECTIVE_SURFACE_SOFT_PANEL_CLASS = [
23
+ DIRECTIVE_SURFACE_BORDER_CLASS,
24
+ 'bg-[#18191c]/70',
25
+ DIRECTIVE_SURFACE_SOFT_SHADOW_CLASS
26
+ ].join(' ');
27
+ export const DIRECTIVE_SURFACE_RENDERER_PRE_CLASS = [
28
+ 'prose-pre:border',
29
+ 'prose-pre:border-white/[0.06]',
30
+ 'prose-pre:bg-[#18191c]'
31
+ ].join(' ');
32
+ export const DIRECTIVE_SURFACE_NESTED_CODE_CLASS = [
33
+ '[&_pre]:my-4',
34
+ '[&_pre]:rounded-lg',
35
+ '[&_pre_code]:rounded-lg'
36
+ ].join(' ');
37
+
38
+ //# sourceMappingURL=directiveSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/styles/directiveSurface.ts"],"sourcesContent":["export const DIRECTIVE_SURFACE_BORDER_CLASS = 'border border-white/[0.06]'\nexport const DIRECTIVE_SURFACE_DIVIDER_CLASS = 'border-white/[0.06]'\nexport const DIRECTIVE_SURFACE_BACKGROUND_CLASS = 'bg-[#18191c]'\nexport const DIRECTIVE_SURFACE_SHADOW_CLASS = 'shadow-[0_2px_12px_rgba(0,0,0,0.35)]'\nexport const DIRECTIVE_SURFACE_SOFT_SHADOW_CLASS = 'shadow-[0_2px_12px_rgba(0,0,0,0.24)]'\n\nexport const DIRECTIVE_SURFACE_PANEL_CLASS = [\n DIRECTIVE_SURFACE_BORDER_CLASS,\n DIRECTIVE_SURFACE_BACKGROUND_CLASS,\n DIRECTIVE_SURFACE_SHADOW_CLASS,\n].join(' ')\n\nexport const DIRECTIVE_SURFACE_MUTED_PANEL_CLASS = [\n DIRECTIVE_SURFACE_BORDER_CLASS,\n 'bg-[#18191c]/80',\n 'shadow-[0_2px_12px_rgba(0,0,0,0.28)]',\n].join(' ')\n\nexport const DIRECTIVE_SURFACE_GLASS_PANEL_CLASS = [\n DIRECTIVE_SURFACE_BORDER_CLASS,\n 'bg-[#18191c]/70',\n 'shadow-[0_2px_12px_rgba(0,0,0,0.32)]',\n 'backdrop-blur-xl',\n].join(' ')\n\nexport const DIRECTIVE_SURFACE_SOFT_PANEL_CLASS = [\n DIRECTIVE_SURFACE_BORDER_CLASS,\n 'bg-[#18191c]/70',\n DIRECTIVE_SURFACE_SOFT_SHADOW_CLASS,\n].join(' ')\n\nexport const DIRECTIVE_SURFACE_RENDERER_PRE_CLASS = [\n 'prose-pre:border',\n 'prose-pre:border-white/[0.06]',\n 'prose-pre:bg-[#18191c]',\n].join(' ')\n\nexport const DIRECTIVE_SURFACE_NESTED_CODE_CLASS = [\n '[&_pre]:my-4',\n '[&_pre]:rounded-lg',\n '[&_pre_code]:rounded-lg',\n].join(' ')\n"],"names":["DIRECTIVE_SURFACE_BORDER_CLASS","DIRECTIVE_SURFACE_DIVIDER_CLASS","DIRECTIVE_SURFACE_BACKGROUND_CLASS","DIRECTIVE_SURFACE_SHADOW_CLASS","DIRECTIVE_SURFACE_SOFT_SHADOW_CLASS","DIRECTIVE_SURFACE_PANEL_CLASS","join","DIRECTIVE_SURFACE_MUTED_PANEL_CLASS","DIRECTIVE_SURFACE_GLASS_PANEL_CLASS","DIRECTIVE_SURFACE_SOFT_PANEL_CLASS","DIRECTIVE_SURFACE_RENDERER_PRE_CLASS","DIRECTIVE_SURFACE_NESTED_CODE_CLASS"],"mappings":"AAAA,OAAO,MAAMA,iCAAiC,6BAA4B;AAC1E,OAAO,MAAMC,kCAAkC,sBAAqB;AACpE,OAAO,MAAMC,qCAAqC,eAAc;AAChE,OAAO,MAAMC,iCAAiC,uCAAsC;AACpF,OAAO,MAAMC,sCAAsC,uCAAsC;AAEzF,OAAO,MAAMC,gCAAgC;IAC3CL;IACAE;IACAC;CACD,CAACG,IAAI,CAAC,KAAI;AAEX,OAAO,MAAMC,sCAAsC;IACjDP;IACA;IACA;CACD,CAACM,IAAI,CAAC,KAAI;AAEX,OAAO,MAAME,sCAAsC;IACjDR;IACA;IACA;IACA;CACD,CAACM,IAAI,CAAC,KAAI;AAEX,OAAO,MAAMG,qCAAqC;IAChDT;IACA;IACAI;CACD,CAACE,IAAI,CAAC,KAAI;AAEX,OAAO,MAAMI,uCAAuC;IAClD;IACA;IACA;CACD,CAACJ,IAAI,CAAC,KAAI;AAEX,OAAO,MAAMK,sCAAsC;IACjD;IACA;IACA;CACD,CAACL,IAAI,CAAC,KAAI"}