@prosefly/astro-components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +108 -0
  3. package/dist/astro-shim.d.ts +4 -0
  4. package/dist/client/accordions.d.ts +7 -0
  5. package/dist/client/accordions.d.ts.map +1 -0
  6. package/dist/client/accordions.js +70 -0
  7. package/dist/client/accordions.js.map +1 -0
  8. package/dist/client/image-gallery.d.ts +7 -0
  9. package/dist/client/image-gallery.d.ts.map +1 -0
  10. package/dist/client/image-gallery.js +103 -0
  11. package/dist/client/image-gallery.js.map +1 -0
  12. package/dist/client/tabs.d.ts +7 -0
  13. package/dist/client/tabs.d.ts.map +1 -0
  14. package/dist/client/tabs.js +160 -0
  15. package/dist/client/tabs.js.map +1 -0
  16. package/dist/icon/index.d.ts +8 -0
  17. package/dist/icon/index.d.ts.map +1 -0
  18. package/dist/icon/index.js +131 -0
  19. package/dist/icon/index.js.map +1 -0
  20. package/dist/icon/middleware.d.ts +3 -0
  21. package/dist/icon/middleware.d.ts.map +1 -0
  22. package/dist/icon/middleware.js +28 -0
  23. package/dist/icon/middleware.js.map +1 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +12 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/markdown/image-gallery-plugin.d.ts +3 -0
  29. package/dist/markdown/image-gallery-plugin.d.ts.map +1 -0
  30. package/dist/markdown/image-gallery-plugin.js +125 -0
  31. package/dist/markdown/image-gallery-plugin.js.map +1 -0
  32. package/dist/markdown/image-gallery.css +119 -0
  33. package/dist/markdown/image-gallery.js +1 -0
  34. package/dist/markdown/index.d.ts +3 -0
  35. package/dist/markdown/index.d.ts.map +1 -0
  36. package/dist/markdown/index.js +3 -0
  37. package/dist/markdown/index.js.map +1 -0
  38. package/dist/markdown/package-manager-tabs.d.ts +3 -0
  39. package/dist/markdown/package-manager-tabs.d.ts.map +1 -0
  40. package/dist/markdown/package-manager-tabs.js +329 -0
  41. package/dist/markdown/package-manager-tabs.js.map +1 -0
  42. package/dist/mdx/AccordionItem.astro +54 -0
  43. package/dist/mdx/Accordions.astro +126 -0
  44. package/dist/mdx/Badge.astro +140 -0
  45. package/dist/mdx/Callout.astro +124 -0
  46. package/dist/mdx/Card.astro +138 -0
  47. package/dist/mdx/CardGrid.astro +18 -0
  48. package/dist/mdx/FileTree.astro +231 -0
  49. package/dist/mdx/FileTreeItem.astro +97 -0
  50. package/dist/mdx/Icon.astro +132 -0
  51. package/dist/mdx/Steps.astro +88 -0
  52. package/dist/mdx/TabItem.astro +21 -0
  53. package/dist/mdx/Tabs.astro +272 -0
  54. package/dist/mdx/rehype-file-tree.d.ts +14 -0
  55. package/dist/mdx/rehype-file-tree.d.ts.map +1 -0
  56. package/dist/mdx/rehype-file-tree.js +205 -0
  57. package/dist/mdx/rehype-file-tree.js.map +1 -0
  58. package/dist/mdx/rehype-steps.d.ts +4 -0
  59. package/dist/mdx/rehype-steps.d.ts.map +1 -0
  60. package/dist/mdx/rehype-steps.js +74 -0
  61. package/dist/mdx/rehype-steps.js.map +1 -0
  62. package/dist/mdx/rehype-tabs.d.ts +19 -0
  63. package/dist/mdx/rehype-tabs.d.ts.map +1 -0
  64. package/dist/mdx/rehype-tabs.js +127 -0
  65. package/dist/mdx/rehype-tabs.js.map +1 -0
  66. package/dist/virtual.d.ts +8 -0
  67. package/package.json +57 -0
@@ -0,0 +1,205 @@
1
+ import { AstroError } from 'astro/errors';
2
+ import { rehype } from 'rehype';
3
+ import rehypeFormat from 'rehype-format';
4
+ const prettyPrintProcessor = rehype()
5
+ .data('settings', { fragment: true })
6
+ .use(rehypeFormat);
7
+ export function parseFileTree(html) {
8
+ let entries = [];
9
+ const parseFileTreePlugin = () => (tree, vfile) => {
10
+ entries = parseFileTreeRoot(tree, vfile);
11
+ };
12
+ const processor = rehype()
13
+ .data('settings', { fragment: true })
14
+ .use(parseFileTreePlugin);
15
+ processor.processSync({ value: html ?? '' });
16
+ return entries;
17
+ }
18
+ function parseFileTreeRoot(tree, vfile) {
19
+ const rootElements = tree.children.filter(isElementNode);
20
+ const [rootElement] = rootElements;
21
+ if (!rootElement) {
22
+ throwFileTreeError('The `<FileTree>` component expects its content to be a single unordered list (`<ul>`) but found no child elements.');
23
+ }
24
+ if (rootElements.length > 1) {
25
+ throwFileTreeError(`The \`<FileTree>\` component expects its content to be a single unordered list (\`<ul>\`) but found multiple child elements: ${rootElements
26
+ .map((element) => `\`<${element.tagName}>\``)
27
+ .join(', ')}.`, vfile.value.toString());
28
+ }
29
+ if (rootElement.tagName !== 'ul') {
30
+ throwFileTreeError(`The \`<FileTree>\` component expects its content to be an unordered list (\`<ul>\`) but found the following element: \`<${rootElement.tagName}>\`.`, vfile.value.toString());
31
+ }
32
+ if (!rootElement.children.some((child) => isElementNode(child) && child.tagName === 'li')) {
33
+ throwFileTreeError('The `<FileTree>` component expects its content to be an unordered list with at least one list item.', vfile.value.toString());
34
+ }
35
+ return parseList(rootElement);
36
+ }
37
+ function parseList(list) {
38
+ return list.children
39
+ .filter((child) => isElementNode(child) && child.tagName === 'li')
40
+ .map(parseListItem);
41
+ }
42
+ function parseListItem(item) {
43
+ const children = item.children.filter((child) => !isBlankTextNode(child));
44
+ const nestedListIndex = children.findIndex((child) => isElementNode(child) && child.tagName === 'ul');
45
+ const entryChildren = nestedListIndex === -1 ? children : children.slice(0, nestedListIndex);
46
+ const nestedLists = nestedListIndex === -1
47
+ ? []
48
+ : children
49
+ .slice(nestedListIndex)
50
+ .filter((child) => isElementNode(child) && child.tagName === 'ul');
51
+ const entry = extractEntry(entryChildren);
52
+ const nameText = getTextContent(entry.nameNode).trim();
53
+ const isPlaceholder = /^(\.{3}|…)$/.test(nameText);
54
+ const isDirectory = /\/\s*$/.test(nameText) || nestedLists.length > 0;
55
+ const kind = isDirectory ? 'directory' : getFileKind(nameText);
56
+ return {
57
+ children: nestedLists.flatMap(parseList),
58
+ commentHtml: toHtml(entry.commentNodes),
59
+ highlighted: entry.highlighted,
60
+ isDirectory,
61
+ isPlaceholder,
62
+ kind,
63
+ nameHtml: toHtml([entry.nameNode]),
64
+ nameText,
65
+ };
66
+ }
67
+ function extractEntry(nodes) {
68
+ const normalizedNodes = unwrapParagraph(nodes);
69
+ const [firstChild, ...restChildren] = normalizedNodes;
70
+ let highlighted = false;
71
+ let nameNode = text('');
72
+ let commentNodes = [];
73
+ if (isTextNode(firstChild)) {
74
+ const match = firstChild.value.match(/^\s*(\S+)([\s\S]*)$/);
75
+ if (match) {
76
+ nameNode = text(match[1] ?? '');
77
+ const textComment = (match[2] ?? '').trim();
78
+ const firstCommentNode = textComment && restChildren.length > 0 ? text(`${textComment} `) : text(textComment);
79
+ commentNodes = [firstCommentNode, ...restChildren].filter((node) => !isBlankTextNode(node));
80
+ }
81
+ }
82
+ else if (isElementNode(firstChild)) {
83
+ highlighted = firstChild.tagName === 'strong';
84
+ nameNode = firstChild;
85
+ commentNodes = restChildren.filter((node) => !isBlankTextNode(node));
86
+ }
87
+ return {
88
+ commentNodes,
89
+ highlighted,
90
+ nameNode,
91
+ };
92
+ }
93
+ function unwrapParagraph(nodes) {
94
+ if (nodes.length !== 1) {
95
+ return nodes;
96
+ }
97
+ const [node] = nodes;
98
+ if (!isElementNode(node) || node.tagName !== 'p') {
99
+ return nodes;
100
+ }
101
+ return node.children;
102
+ }
103
+ function getFileKind(name) {
104
+ const normalizedName = name.trim().toLowerCase();
105
+ if (/\.(astro|tsx?|jsx?|vue|svelte)$/.test(normalizedName))
106
+ return 'code';
107
+ if (/\.(mdx?|txt|rst)$/.test(normalizedName))
108
+ return 'text';
109
+ if (/\.(json|ya?ml|toml|config\.[cm]?js)$/.test(normalizedName))
110
+ return 'config';
111
+ if (/\.(css|scss|sass|less)$/.test(normalizedName))
112
+ return 'style';
113
+ if (/\.(png|jpe?g|gif|webp|svg|ico)$/.test(normalizedName))
114
+ return 'image';
115
+ return 'file';
116
+ }
117
+ function toHtml(nodes) {
118
+ return nodes.map(nodeToHtml).join('');
119
+ }
120
+ function nodeToHtml(node) {
121
+ if (isTextNode(node))
122
+ return escapeHtml(node.value);
123
+ if (isCommentNode(node))
124
+ return '';
125
+ const attributes = propertiesToHtml(node.properties);
126
+ const children = node.children.map(nodeToHtml).join('');
127
+ return `<${node.tagName}${attributes}>${children}</${node.tagName}>`;
128
+ }
129
+ function propertiesToHtml(properties) {
130
+ return Object.entries(properties)
131
+ .flatMap(([key, value]) => {
132
+ if (value === undefined || value === null || value === false)
133
+ return [];
134
+ const attributeName = propertyNameToAttributeName(key);
135
+ if (value === true)
136
+ return [attributeName];
137
+ if (Array.isArray(value))
138
+ return [`${attributeName}="${escapeAttribute(value.join(' '))}"`];
139
+ return [`${attributeName}="${escapeAttribute(String(value))}"`];
140
+ })
141
+ .map((attribute) => ` ${attribute}`)
142
+ .join('');
143
+ }
144
+ function propertyNameToAttributeName(name) {
145
+ if (name === 'className')
146
+ return 'class';
147
+ return name.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
148
+ }
149
+ function escapeHtml(value) {
150
+ return value
151
+ .replaceAll('&', '&amp;')
152
+ .replaceAll('<', '&lt;')
153
+ .replaceAll('>', '&gt;');
154
+ }
155
+ function escapeAttribute(value) {
156
+ return escapeHtml(value).replaceAll('"', '&quot;');
157
+ }
158
+ function getTextContent(node) {
159
+ if (isTextNode(node) || isCommentNode(node))
160
+ return node.value;
161
+ if (isElementNode(node))
162
+ return node.children.map(getTextContent).join('');
163
+ return '';
164
+ }
165
+ function isBlankTextNode(node) {
166
+ return isTextNode(node) && /^\s*$/.test(node.value);
167
+ }
168
+ function isTextNode(node) {
169
+ return (typeof node === 'object' &&
170
+ node !== null &&
171
+ 'type' in node &&
172
+ node.type === 'text' &&
173
+ 'value' in node);
174
+ }
175
+ function isCommentNode(node) {
176
+ return (typeof node === 'object' &&
177
+ node !== null &&
178
+ 'type' in node &&
179
+ node.type === 'comment' &&
180
+ 'value' in node);
181
+ }
182
+ function isElementNode(node) {
183
+ return (typeof node === 'object' &&
184
+ node !== null &&
185
+ 'type' in node &&
186
+ node.type === 'element' &&
187
+ 'tagName' in node &&
188
+ 'properties' in node &&
189
+ 'children' in node);
190
+ }
191
+ function text(value) {
192
+ return {
193
+ type: 'text',
194
+ value,
195
+ };
196
+ }
197
+ function throwFileTreeError(message, html) {
198
+ throw new AstroError(message, 'Use the same syntax as Starlight: wrap a single Markdown unordered list in `<FileTree>...</FileTree>`.' +
199
+ (html
200
+ ? `\n\nFull rendered content:\n\n${prettyPrintProcessor
201
+ .processSync({ value: html })
202
+ .toString()}`
203
+ : ''));
204
+ }
205
+ //# sourceMappingURL=rehype-file-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-file-tree.js","sourceRoot":"","sources":["../../src/mdx/rehype-file-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function processSteps(html: string | undefined): {
2
+ html: string;
3
+ };
4
+ //# sourceMappingURL=rehype-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-steps.d.ts","sourceRoot":"","sources":["../../src/mdx/rehype-steps.ts"],"names":[],"mappings":"AA+BA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;;EAMpD"}
@@ -0,0 +1,74 @@
1
+ import { AstroError } from 'astro/errors';
2
+ import { rehype } from 'rehype';
3
+ import rehypeFormat from 'rehype-format';
4
+ const prettyPrintProcessor = rehype()
5
+ .data('settings', { fragment: true })
6
+ .use(rehypeFormat);
7
+ const prettyPrintHtml = (html) => prettyPrintProcessor.processSync({ value: html }).toString();
8
+ const stepsProcessor = rehype()
9
+ .data('settings', { fragment: true })
10
+ .use(processStepsTree);
11
+ export function processSteps(html) {
12
+ const file = stepsProcessor.processSync({ value: html ?? '' });
13
+ return {
14
+ html: file.toString(),
15
+ };
16
+ }
17
+ function processStepsTree() {
18
+ return (tree, vfile) => {
19
+ const rootElements = tree.children.filter(isRootElement);
20
+ const [rootElement] = rootElements;
21
+ if (!rootElement) {
22
+ throw new StepsError('The `<Steps>` component expects its content to be a single ordered list (`<ol>`) but found no child elements.');
23
+ }
24
+ if (rootElements.length > 1) {
25
+ throw new StepsError(`The \`<Steps>\` component expects its content to be a single ordered list (\`<ol>\`) but found multiple child elements: ${rootElements
26
+ .map((element) => `\`<${element.tagName}>\``)
27
+ .join(', ')}.`, vfile.value.toString());
28
+ }
29
+ if (rootElement.tagName !== 'ol') {
30
+ throw new StepsError(`The \`<Steps>\` component expects its content to be a single ordered list (\`<ol>\`) but found the following element: \`<${rootElement.tagName}>\`.`, vfile.value.toString());
31
+ }
32
+ rootElement.properties.role = 'list';
33
+ rootElement.properties.className = appendClassName(rootElement.properties.className, 'pl-steps');
34
+ const start = getNumericStart(rootElement.properties.start);
35
+ if (Number.isFinite(start)) {
36
+ const styles = [`--pl-steps-start: ${start - 1}`];
37
+ if (rootElement.properties.style) {
38
+ styles.push(String(rootElement.properties.style));
39
+ }
40
+ rootElement.properties.style = styles.join(';');
41
+ }
42
+ };
43
+ }
44
+ function isRootElement(node) {
45
+ return (typeof node === 'object' &&
46
+ node !== null &&
47
+ 'type' in node &&
48
+ node.type === 'element' &&
49
+ 'tagName' in node &&
50
+ node.tagName !== 'script' &&
51
+ 'properties' in node);
52
+ }
53
+ function appendClassName(className, name) {
54
+ if (Array.isArray(className))
55
+ return [...className, name];
56
+ if (typeof className === 'string')
57
+ return [className, name];
58
+ return [name];
59
+ }
60
+ function getNumericStart(start) {
61
+ if (typeof start === 'number')
62
+ return start;
63
+ if (typeof start === 'string')
64
+ return Number.parseInt(start, 10);
65
+ return Number.NaN;
66
+ }
67
+ class StepsError extends AstroError {
68
+ constructor(message, html) {
69
+ super(message, 'Use the same syntax as Starlight: wrap a single Markdown ordered list in `<Steps>...</Steps>`.' +
70
+ (html ? `\n\nFull rendered content:\n\n${prettyPrintHtml(html)}` : ''));
71
+ this.name = 'StepsError';
72
+ }
73
+ }
74
+ //# sourceMappingURL=rehype-steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-steps.js","sourceRoot":"","sources":["../../src/mdx/rehype-steps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const TabItemTagName = "prosefly-tab-item";
2
+ export interface TabPanel {
3
+ icon?: string;
4
+ label: string;
5
+ panelId: string;
6
+ tabId: string;
7
+ value: string;
8
+ }
9
+ interface ProcessPanelsOptions {
10
+ defaultValue?: string;
11
+ idPrefix: string;
12
+ }
13
+ export declare function processPanels(html: string | undefined, options: ProcessPanelsOptions): {
14
+ activeIndex: number;
15
+ html: string;
16
+ panels: TabPanel[];
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=rehype-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-tabs.d.ts","sourceRoot":"","sources":["../../src/mdx/rehype-tabs.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAElD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,oBAAoB;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,oBAAoB;;;;EA6FpF"}
@@ -0,0 +1,127 @@
1
+ import { AstroError } from 'astro/errors';
2
+ import { rehype } from 'rehype';
3
+ import rehypeFormat from 'rehype-format';
4
+ export const TabItemTagName = 'prosefly-tab-item';
5
+ const prettyPrintProcessor = rehype()
6
+ .data('settings', { fragment: true })
7
+ .use(rehypeFormat);
8
+ const prettyPrintHtml = (html) => prettyPrintProcessor.processSync({ value: html }).toString();
9
+ export function processPanels(html, options) {
10
+ const panels = [];
11
+ let activeIndex = 0;
12
+ const processTabsTree = () => {
13
+ return (tree, vfile) => {
14
+ const rootElements = tree.children.filter(isRootElement);
15
+ const invalidRootElements = rootElements.filter((element) => element.tagName !== TabItemTagName);
16
+ if (invalidRootElements.length > 0) {
17
+ throw new TabsError(`The \`<Tabs>\` component expects only \`<TabItem>\` children but found: ${invalidRootElements
18
+ .map((element) => `\`<${element.tagName}>\``)
19
+ .join(', ')}.`, vfile.value.toString());
20
+ }
21
+ if (rootElements.length === 0) {
22
+ throw new TabsError('The `<Tabs>` component expects at least one `<TabItem>` child.');
23
+ }
24
+ const panelElements = rootElements.map((tabElement, index) => {
25
+ const label = getPropertyString(tabElement.properties.dataLabel);
26
+ if (!label) {
27
+ throw new TabsError('Missing prop `label` on `<TabItem>`.', vfile.value.toString());
28
+ }
29
+ const value = getPropertyString(tabElement.properties.dataValue) ?? label;
30
+ const panelId = `${options.idPrefix}-panel-${index}`;
31
+ const tabId = `${options.idPrefix}-tab-${index}`;
32
+ const icon = getPropertyString(tabElement.properties.dataIcon);
33
+ const isActive = options.defaultValue !== undefined
34
+ ? options.defaultValue === label || options.defaultValue === value
35
+ : index === 0;
36
+ if (isActive) {
37
+ activeIndex = index;
38
+ }
39
+ panels.push({
40
+ icon,
41
+ label,
42
+ panelId,
43
+ tabId,
44
+ value,
45
+ });
46
+ return {
47
+ type: 'element',
48
+ tagName: 'div',
49
+ properties: {
50
+ 'aria-labelledby': tabId,
51
+ className: ['pl-tabs__panel'],
52
+ hidden: isActive ? undefined : true,
53
+ id: panelId,
54
+ role: 'tabpanel',
55
+ tabIndex: hasFocusableElement(tabElement.children ?? []) ? undefined : 0,
56
+ },
57
+ children: tabElement.children ?? [],
58
+ };
59
+ });
60
+ if (options.defaultValue !== undefined && panels[activeIndex]?.value !== options.defaultValue) {
61
+ panelElements.forEach((panel, index) => {
62
+ panel.properties.hidden = index === 0 ? undefined : true;
63
+ });
64
+ }
65
+ tree.children = panelElements;
66
+ };
67
+ };
68
+ const processor = rehype()
69
+ .data('settings', { fragment: true })
70
+ .use(processTabsTree);
71
+ const file = processor.processSync({ value: html ?? '' });
72
+ return {
73
+ activeIndex,
74
+ html: file.toString(),
75
+ panels,
76
+ };
77
+ }
78
+ function isRootElement(node) {
79
+ return (typeof node === 'object' &&
80
+ node !== null &&
81
+ 'type' in node &&
82
+ node.type === 'element' &&
83
+ 'tagName' in node &&
84
+ node.tagName !== 'script' &&
85
+ 'properties' in node);
86
+ }
87
+ function getPropertyString(value) {
88
+ if (typeof value === 'string' && value.length > 0)
89
+ return value;
90
+ if (typeof value === 'number')
91
+ return String(value);
92
+ return undefined;
93
+ }
94
+ function hasFocusableElement(nodes) {
95
+ for (const node of nodes) {
96
+ if (!isRootElement(node))
97
+ continue;
98
+ if (isFocusableElement(node))
99
+ return true;
100
+ if (hasFocusableElement(node.children ?? []))
101
+ return true;
102
+ }
103
+ return false;
104
+ }
105
+ function isFocusableElement(element) {
106
+ if (element.properties.hidden)
107
+ return false;
108
+ if (element.properties.disabled)
109
+ return false;
110
+ if (element.properties.tabIndex !== undefined)
111
+ return Number(element.properties.tabIndex) >= 0;
112
+ if (element.tagName === 'a')
113
+ return Boolean(element.properties.href);
114
+ if (['button', 'input', 'select', 'textarea'].includes(element.tagName))
115
+ return true;
116
+ if (['audio', 'video'].includes(element.tagName))
117
+ return Boolean(element.properties.controls);
118
+ return false;
119
+ }
120
+ class TabsError extends AstroError {
121
+ constructor(message, html) {
122
+ super(message, 'Use the same syntax as Starlight: wrap one or more `<TabItem label="...">...</TabItem>` children in `<Tabs>...</Tabs>`.' +
123
+ (html ? `\n\nFull rendered content:\n\n${prettyPrintHtml(html)}` : ''));
124
+ this.name = 'TabsError';
125
+ }
126
+ }
127
+ //# sourceMappingURL=rehype-tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-tabs.js","sourceRoot":"","sources":["../../src/mdx/rehype-tabs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ declare module 'virtual:prosefly/astro-components/icon/config' {
2
+ const config: {
3
+ apiBase: string;
4
+ iconsByPrefix: Record<string, string[]>;
5
+ };
6
+
7
+ export default config;
8
+ }
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@prosefly/astro-components",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "license": "BSD-3-Clause",
6
+ "types": "./dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "node ./scripts/build.mjs",
9
+ "check": "tsc -p ./tsconfig.build.json --noEmit",
10
+ "prepack": "npm run build",
11
+ "prepublishOnly": "npm run check && npm run build"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/prosefly/astro-components.git",
16
+ "directory": "packages/astro-components"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "default": "./dist/index.js"
25
+ },
26
+ "./icon": {
27
+ "types": "./dist/icon/index.d.ts",
28
+ "default": "./dist/icon/index.js"
29
+ },
30
+ "./markdown": {
31
+ "types": "./dist/markdown/index.d.ts",
32
+ "default": "./dist/markdown/index.js"
33
+ },
34
+ "./markdown/image-gallery.css": "./dist/markdown/image-gallery.css",
35
+ "./markdown/image-gallery.js": "./dist/markdown/image-gallery.js"
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "peerDependencies": {
43
+ "astro": "^7.0.0"
44
+ },
45
+ "dependencies": {
46
+ "@astrojs/markdown-remark": "^7.2.1",
47
+ "@iconify/utils": "^3.1.4",
48
+ "rehype": "^13.0.2",
49
+ "rehype-format": "^5.0.1"
50
+ },
51
+ "devDependencies": {
52
+ "astro": "^7.0.0",
53
+ "@types/node": "latest",
54
+ "typescript": "^6.0.3",
55
+ "vite": "latest"
56
+ }
57
+ }