@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.
- package/LICENSE +29 -0
- package/README.md +108 -0
- package/dist/astro-shim.d.ts +4 -0
- package/dist/client/accordions.d.ts +7 -0
- package/dist/client/accordions.d.ts.map +1 -0
- package/dist/client/accordions.js +70 -0
- package/dist/client/accordions.js.map +1 -0
- package/dist/client/image-gallery.d.ts +7 -0
- package/dist/client/image-gallery.d.ts.map +1 -0
- package/dist/client/image-gallery.js +103 -0
- package/dist/client/image-gallery.js.map +1 -0
- package/dist/client/tabs.d.ts +7 -0
- package/dist/client/tabs.d.ts.map +1 -0
- package/dist/client/tabs.js +160 -0
- package/dist/client/tabs.js.map +1 -0
- package/dist/icon/index.d.ts +8 -0
- package/dist/icon/index.d.ts.map +1 -0
- package/dist/icon/index.js +131 -0
- package/dist/icon/index.js.map +1 -0
- package/dist/icon/middleware.d.ts +3 -0
- package/dist/icon/middleware.d.ts.map +1 -0
- package/dist/icon/middleware.js +28 -0
- package/dist/icon/middleware.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/image-gallery-plugin.d.ts +3 -0
- package/dist/markdown/image-gallery-plugin.d.ts.map +1 -0
- package/dist/markdown/image-gallery-plugin.js +125 -0
- package/dist/markdown/image-gallery-plugin.js.map +1 -0
- package/dist/markdown/image-gallery.css +119 -0
- package/dist/markdown/image-gallery.js +1 -0
- package/dist/markdown/index.d.ts +3 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +3 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/package-manager-tabs.d.ts +3 -0
- package/dist/markdown/package-manager-tabs.d.ts.map +1 -0
- package/dist/markdown/package-manager-tabs.js +329 -0
- package/dist/markdown/package-manager-tabs.js.map +1 -0
- package/dist/mdx/AccordionItem.astro +54 -0
- package/dist/mdx/Accordions.astro +126 -0
- package/dist/mdx/Badge.astro +140 -0
- package/dist/mdx/Callout.astro +124 -0
- package/dist/mdx/Card.astro +138 -0
- package/dist/mdx/CardGrid.astro +18 -0
- package/dist/mdx/FileTree.astro +231 -0
- package/dist/mdx/FileTreeItem.astro +97 -0
- package/dist/mdx/Icon.astro +132 -0
- package/dist/mdx/Steps.astro +88 -0
- package/dist/mdx/TabItem.astro +21 -0
- package/dist/mdx/Tabs.astro +272 -0
- package/dist/mdx/rehype-file-tree.d.ts +14 -0
- package/dist/mdx/rehype-file-tree.d.ts.map +1 -0
- package/dist/mdx/rehype-file-tree.js +205 -0
- package/dist/mdx/rehype-file-tree.js.map +1 -0
- package/dist/mdx/rehype-steps.d.ts +4 -0
- package/dist/mdx/rehype-steps.d.ts.map +1 -0
- package/dist/mdx/rehype-steps.js +74 -0
- package/dist/mdx/rehype-steps.js.map +1 -0
- package/dist/mdx/rehype-tabs.d.ts +19 -0
- package/dist/mdx/rehype-tabs.d.ts.map +1 -0
- package/dist/mdx/rehype-tabs.js +127 -0
- package/dist/mdx/rehype-tabs.js.map +1 -0
- package/dist/virtual.d.ts +8 -0
- package/package.json +57 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Prosefly
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# @prosefly/astro-components
|
|
2
|
+
|
|
3
|
+
Reusable Astro components for MDX content.
|
|
4
|
+
|
|
5
|
+
```astro
|
|
6
|
+
---
|
|
7
|
+
import { Callout } from '@prosefly/astro-components';
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<Callout type="tip" title="Reusable">
|
|
11
|
+
Package components use Prosefly CSS custom properties with built-in fallbacks.
|
|
12
|
+
</Callout>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Exports
|
|
16
|
+
|
|
17
|
+
The main entry exports:
|
|
18
|
+
|
|
19
|
+
- `AccordionItem` and `Accordions`
|
|
20
|
+
- `Badge`
|
|
21
|
+
- `Callout`
|
|
22
|
+
- `Card` and `CardGrid`
|
|
23
|
+
- `FileTree`
|
|
24
|
+
- `Icon`
|
|
25
|
+
- `Steps`
|
|
26
|
+
- `TabItem` and `Tabs`
|
|
27
|
+
|
|
28
|
+
The markdown entry exports:
|
|
29
|
+
|
|
30
|
+
- `rehypeImageGallery`
|
|
31
|
+
- `remarkPackageManagerTabs`
|
|
32
|
+
|
|
33
|
+
## Icon Integration
|
|
34
|
+
|
|
35
|
+
Use the `@prosefly/astro-components/icon` integration when a project wants
|
|
36
|
+
Iconify preloading without the full Lotus theme:
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { defineConfig } from 'astro/config';
|
|
40
|
+
import proseflyIcon from '@prosefly/astro-components/icon';
|
|
41
|
+
|
|
42
|
+
export default defineConfig({
|
|
43
|
+
integrations: [
|
|
44
|
+
proseflyIcon({
|
|
45
|
+
preload: ['lucide:star', 'simple-icons:github'],
|
|
46
|
+
}),
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The integration can scan `src/**/*.astro`, `src/**/*.md`, and `src/**/*.mdx`
|
|
52
|
+
for static icon usage. Set `scan: false` to disable that behavior or `apiBase`
|
|
53
|
+
to point at an internal Iconify-compatible endpoint.
|
|
54
|
+
|
|
55
|
+
## Markdown Transforms
|
|
56
|
+
|
|
57
|
+
Use `@prosefly/astro-components/markdown` for optional markdown transforms:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
import { defineConfig } from 'astro/config';
|
|
61
|
+
import { rehypeImageGallery, remarkPackageManagerTabs } from '@prosefly/astro-components/markdown';
|
|
62
|
+
|
|
63
|
+
export default defineConfig({
|
|
64
|
+
markdown: {
|
|
65
|
+
remarkPlugins: [remarkPackageManagerTabs],
|
|
66
|
+
rehypePlugins: [rehypeImageGallery],
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`remarkPackageManagerTabs` recognizes common `npm` commands and can generate
|
|
72
|
+
tabs for Node and Python package managers. `rehypeImageGallery` turns paragraphs
|
|
73
|
+
that contain only images into gallery figures. Lotus enables both transforms by
|
|
74
|
+
default.
|
|
75
|
+
|
|
76
|
+
Import the image gallery runtime once in the page shell to load styles and
|
|
77
|
+
enable previous and next controls for galleries produced by
|
|
78
|
+
`rehypeImageGallery`:
|
|
79
|
+
|
|
80
|
+
```astro
|
|
81
|
+
---
|
|
82
|
+
import '@prosefly/astro-components/markdown/image-gallery.css';
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
<script>
|
|
86
|
+
import '@prosefly/astro-components/markdown/image-gallery.js';
|
|
87
|
+
</script>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Styling
|
|
91
|
+
|
|
92
|
+
Consumers can theme the components with `--pl-*` custom properties:
|
|
93
|
+
|
|
94
|
+
- `--pl-text-strong`
|
|
95
|
+
- `--pl-text`
|
|
96
|
+
- `--pl-text-muted`
|
|
97
|
+
- `--pl-background`
|
|
98
|
+
- `--pl-surface`
|
|
99
|
+
- `--pl-accent`
|
|
100
|
+
- `--pl-accent-soft`
|
|
101
|
+
- `--pl-accent-contrast`
|
|
102
|
+
- `--pl-border-subtle`
|
|
103
|
+
- `--pl-font-sans`
|
|
104
|
+
- `--pl-font-mono`
|
|
105
|
+
- `--pl-radius-sm`
|
|
106
|
+
- `--pl-radius-md`
|
|
107
|
+
- `--pl-radius-lg`
|
|
108
|
+
- `--pl-radius-full`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordions.d.ts","sourceRoot":"","sources":["../../src/client/accordions.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;KACvC;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
function getItems(root) {
|
|
3
|
+
return [...root.querySelectorAll(':scope > [data-pl-accordion]')].filter((item) => item instanceof HTMLDetailsElement);
|
|
4
|
+
}
|
|
5
|
+
function closeSiblings(root, activeItem) {
|
|
6
|
+
if (root.hasAttribute('data-multiple'))
|
|
7
|
+
return;
|
|
8
|
+
for (const item of getItems(root)) {
|
|
9
|
+
if (item !== activeItem)
|
|
10
|
+
item.open = false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function openItem(item) {
|
|
14
|
+
const root = item.closest('[data-pl-accordions]');
|
|
15
|
+
item.open = true;
|
|
16
|
+
if (root)
|
|
17
|
+
closeSiblings(root, item);
|
|
18
|
+
}
|
|
19
|
+
function openHashTarget() {
|
|
20
|
+
if (!location.hash)
|
|
21
|
+
return;
|
|
22
|
+
const id = decodeURIComponent(location.hash.slice(1));
|
|
23
|
+
const item = document.getElementById(id);
|
|
24
|
+
if (item instanceof HTMLDetailsElement && item.matches('[data-pl-accordion]')) {
|
|
25
|
+
openItem(item);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (!window.__proseflyAccordionsInit) {
|
|
29
|
+
window.__proseflyAccordionsInit = () => {
|
|
30
|
+
document.querySelectorAll('[data-pl-accordions]').forEach((root) => {
|
|
31
|
+
if (!(root instanceof HTMLElement) || root.dataset.plAccordionsReady === 'true') {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
root.dataset.plAccordionsReady = 'true';
|
|
35
|
+
let defaultValues = [];
|
|
36
|
+
try {
|
|
37
|
+
defaultValues = JSON.parse(root.getAttribute('data-default-values') || '[]');
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
defaultValues = [];
|
|
41
|
+
}
|
|
42
|
+
for (const item of getItems(root)) {
|
|
43
|
+
if (defaultValues.includes(item.getAttribute('data-value') ?? '')) {
|
|
44
|
+
openItem(item);
|
|
45
|
+
}
|
|
46
|
+
item.addEventListener('click', (event) => {
|
|
47
|
+
if (!(event.target instanceof Element) || !event.target.closest('[data-pl-accordion-trigger]')) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (item.getAttribute('data-disabled') === 'true') {
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (!item.open) {
|
|
55
|
+
closeSiblings(root, item);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
item.addEventListener('toggle', () => {
|
|
59
|
+
if (item.open)
|
|
60
|
+
closeSiblings(root, item);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
openHashTarget();
|
|
65
|
+
};
|
|
66
|
+
window.addEventListener('hashchange', openHashTarget);
|
|
67
|
+
document.addEventListener('astro:page-load', window.__proseflyAccordionsInit);
|
|
68
|
+
}
|
|
69
|
+
window.__proseflyAccordionsInit();
|
|
70
|
+
//# sourceMappingURL=accordions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordions.js","sourceRoot":"","sources":["../../src/client/accordions.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC;AAEV,SAAS,QAAQ,CAAC,IAAa;IAC7B,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC,MAAM,CACtE,CAAC,IAAI,EAA8B,EAAE,CAAC,IAAI,YAAY,kBAAkB,CACzE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,UAA8B;IAClE,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;QAAE,OAAO;IAE/C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,IAAI,KAAK,UAAU;YAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAwB;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAElD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,IAAI;QAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO;IAE3B,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAEzC,IAAI,IAAI,YAAY,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9E,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;IACrC,MAAM,CAAC,wBAAwB,GAAG,GAAG,EAAE;QACrC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjE,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;gBAChF,OAAO;YACT,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC;YAExC,IAAI,aAAa,GAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,CAAC;YAC/E,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa,GAAG,EAAE,CAAC;YACrB,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBAClE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAAE,CAAC;wBAC/F,OAAO;oBACT,CAAC;oBAED,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE,CAAC;wBAClD,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,OAAO;oBACT,CAAC;oBAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACf,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACnC,IAAI,IAAI,CAAC,IAAI;wBAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACtD,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-gallery.d.ts","sourceRoot":"","sources":["../../src/client/image-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;KACzC;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
function imageReady(image) {
|
|
3
|
+
if (image.complete && image.naturalWidth > 0 && image.naturalHeight > 0) {
|
|
4
|
+
return Promise.resolve();
|
|
5
|
+
}
|
|
6
|
+
return new Promise((resolve) => {
|
|
7
|
+
image.addEventListener('load', () => resolve(), { once: true });
|
|
8
|
+
image.addEventListener('error', () => resolve(), { once: true });
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function resolveCssLength(value, context) {
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
if (!trimmed) {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
const probe = document.createElement('div');
|
|
17
|
+
probe.style.contain = 'strict';
|
|
18
|
+
probe.style.height = '0';
|
|
19
|
+
probe.style.overflow = 'hidden';
|
|
20
|
+
probe.style.position = 'absolute';
|
|
21
|
+
probe.style.visibility = 'hidden';
|
|
22
|
+
probe.style.width = trimmed;
|
|
23
|
+
context.append(probe);
|
|
24
|
+
const width = probe.getBoundingClientRect().width;
|
|
25
|
+
probe.remove();
|
|
26
|
+
return width;
|
|
27
|
+
}
|
|
28
|
+
function getItemLeft(track, item) {
|
|
29
|
+
return item.getBoundingClientRect().left - track.getBoundingClientRect().left + track.scrollLeft;
|
|
30
|
+
}
|
|
31
|
+
function scrollToAdjacentItem(track, direction) {
|
|
32
|
+
const items = [...track.querySelectorAll('.pl-image-gallery__item')].filter((item) => item instanceof HTMLElement);
|
|
33
|
+
const currentLeft = track.scrollLeft;
|
|
34
|
+
const positions = items.map((item) => getItemLeft(track, item));
|
|
35
|
+
const target = direction === 'previous'
|
|
36
|
+
? positions.findLast((left) => left < currentLeft - 2)
|
|
37
|
+
: positions.find((left) => left > currentLeft + 2);
|
|
38
|
+
track.scrollTo({
|
|
39
|
+
behavior: 'smooth',
|
|
40
|
+
left: target ?? (direction === 'previous' ? 0 : track.scrollWidth - track.clientWidth),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function measureGallery(gallery, track) {
|
|
44
|
+
const items = [...track.querySelectorAll('.pl-image-gallery__item')].filter((item) => item instanceof HTMLElement);
|
|
45
|
+
const images = items
|
|
46
|
+
.map((item) => item.querySelector('img'))
|
|
47
|
+
.filter((image) => image instanceof HTMLImageElement);
|
|
48
|
+
if (items.length === 0 || items.length !== images.length || track.clientWidth <= 0) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const ratios = images.map((image) => image.naturalWidth > 0 && image.naturalHeight > 0
|
|
52
|
+
? image.naturalWidth / image.naturalHeight
|
|
53
|
+
: undefined);
|
|
54
|
+
if (ratios.some((ratio) => !ratio)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const resolvedRatios = ratios;
|
|
58
|
+
const styles = getComputedStyle(track);
|
|
59
|
+
const gap = Number.parseFloat(styles.columnGap || styles.gap || '0') || 0;
|
|
60
|
+
const previewWidth = resolveCssLength(getComputedStyle(gallery).getPropertyValue('--pl-image-gallery-preview-width'), gallery);
|
|
61
|
+
const firstRatio = resolvedRatios[0];
|
|
62
|
+
const targetHeight = Math.max((track.clientWidth - previewWidth - gap) / firstRatio, 1);
|
|
63
|
+
gallery.style.setProperty('--pl-image-gallery-height', `${targetHeight.toFixed(2)}px`);
|
|
64
|
+
gallery.dataset.plImageGalleryMeasured = 'true';
|
|
65
|
+
items.forEach((item, index) => {
|
|
66
|
+
const ratio = resolvedRatios[index];
|
|
67
|
+
item.style.setProperty('--pl-image-gallery-ratio', ratio.toFixed(5));
|
|
68
|
+
item.style.height = `${targetHeight.toFixed(2)}px`;
|
|
69
|
+
item.style.width = `${Math.max(targetHeight * ratio, 1).toFixed(2)}px`;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (typeof window !== 'undefined') {
|
|
73
|
+
if (!window.__proseflyImageGalleryInit) {
|
|
74
|
+
window.__proseflyImageGalleryInit = () => {
|
|
75
|
+
document.querySelectorAll('[data-pl-image-gallery]').forEach((gallery) => {
|
|
76
|
+
if (!(gallery instanceof HTMLElement) || gallery.dataset.plImageGalleryReady) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const track = gallery.querySelector('[data-pl-image-gallery-track]');
|
|
80
|
+
if (!(track instanceof HTMLElement)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
gallery.dataset.plImageGalleryReady = 'true';
|
|
84
|
+
const measure = () => measureGallery(gallery, track);
|
|
85
|
+
const images = [...track.querySelectorAll('img')].filter((image) => image instanceof HTMLImageElement);
|
|
86
|
+
Promise.all(images.map(imageReady)).then(measure);
|
|
87
|
+
new ResizeObserver(measure).observe(track);
|
|
88
|
+
gallery.querySelectorAll('[data-pl-image-gallery-button]').forEach((button) => {
|
|
89
|
+
if (!(button instanceof HTMLButtonElement)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
button.addEventListener('click', () => {
|
|
93
|
+
const direction = button.getAttribute('data-pl-image-gallery-button');
|
|
94
|
+
scrollToAdjacentItem(track, direction === 'previous' ? 'previous' : 'next');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
document.addEventListener('astro:page-load', window.__proseflyImageGalleryInit);
|
|
100
|
+
}
|
|
101
|
+
window.__proseflyImageGalleryInit();
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=image-gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-gallery.js","sourceRoot":"","sources":["../../src/client/image-gallery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/client/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;KACjC;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
function getStoredLabel(syncKey) {
|
|
3
|
+
if (!syncKey)
|
|
4
|
+
return undefined;
|
|
5
|
+
try {
|
|
6
|
+
return localStorage.getItem(`pl-tabs:${syncKey}`) ?? undefined;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function storeLabel(syncKey, label) {
|
|
13
|
+
if (!syncKey || !label)
|
|
14
|
+
return;
|
|
15
|
+
try {
|
|
16
|
+
localStorage.setItem(`pl-tabs:${syncKey}`, label);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Ignore storage failures in restricted browsing contexts.
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function writeClipboard(text) {
|
|
23
|
+
if (navigator.clipboard?.writeText) {
|
|
24
|
+
await navigator.clipboard.writeText(text);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
throw new Error('Clipboard API is not available.');
|
|
28
|
+
}
|
|
29
|
+
function setCopyState(button, copied) {
|
|
30
|
+
const copyIcon = button.querySelector('[data-pl-tabs-copy-icon="copy"]');
|
|
31
|
+
const checkIcon = button.querySelector('[data-pl-tabs-copy-icon="check"]');
|
|
32
|
+
copyIcon?.toggleAttribute('hidden', copied);
|
|
33
|
+
checkIcon?.toggleAttribute('hidden', !copied);
|
|
34
|
+
button.setAttribute('aria-label', copied ? 'Copied' : 'Copy code');
|
|
35
|
+
button.setAttribute('title', copied ? 'Copied' : 'Copy code');
|
|
36
|
+
}
|
|
37
|
+
function getActiveCode(root) {
|
|
38
|
+
const activePanel = root.querySelector('.pl-tabs__panel:not([hidden])');
|
|
39
|
+
const code = activePanel?.querySelector('pre code');
|
|
40
|
+
return code?.textContent ?? '';
|
|
41
|
+
}
|
|
42
|
+
function setActiveIcon(root, panelId) {
|
|
43
|
+
const iconContainer = root.querySelector('.pl-tabs__active-icons');
|
|
44
|
+
const icons = [...root.querySelectorAll('[data-pl-tabs-icon-for]')];
|
|
45
|
+
if (!(iconContainer instanceof HTMLElement))
|
|
46
|
+
return;
|
|
47
|
+
let hasActiveIcon = false;
|
|
48
|
+
icons.forEach((icon) => {
|
|
49
|
+
const isActive = icon.getAttribute('data-pl-tabs-icon-for') === panelId;
|
|
50
|
+
icon.toggleAttribute('hidden', !isActive);
|
|
51
|
+
hasActiveIcon ||= isActive;
|
|
52
|
+
});
|
|
53
|
+
iconContainer.toggleAttribute('hidden', !hasActiveIcon);
|
|
54
|
+
}
|
|
55
|
+
function activate(root, trigger, options = {}) {
|
|
56
|
+
const panelId = trigger.getAttribute('data-tab-panel');
|
|
57
|
+
const label = trigger.getAttribute('data-tab-label');
|
|
58
|
+
const syncKey = root.getAttribute('data-sync-key');
|
|
59
|
+
const triggers = [...root.querySelectorAll('[data-pl-tabs-trigger]')];
|
|
60
|
+
const panels = [...root.querySelectorAll('.pl-tabs__panel')];
|
|
61
|
+
triggers.forEach((button) => {
|
|
62
|
+
const isActive = button === trigger;
|
|
63
|
+
button.setAttribute('aria-selected', isActive ? 'true' : 'false');
|
|
64
|
+
button.setAttribute('tabindex', isActive ? '0' : '-1');
|
|
65
|
+
});
|
|
66
|
+
panels.forEach((panel) => {
|
|
67
|
+
panel.toggleAttribute('hidden', panel.id !== panelId);
|
|
68
|
+
});
|
|
69
|
+
setActiveIcon(root, panelId);
|
|
70
|
+
if (options.focus && trigger instanceof HTMLElement) {
|
|
71
|
+
trigger.focus();
|
|
72
|
+
}
|
|
73
|
+
if (options.persist === false) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
storeLabel(syncKey, label);
|
|
77
|
+
if (!syncKey || !label) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
document.querySelectorAll('[data-pl-tabs]').forEach((otherRoot) => {
|
|
81
|
+
if (otherRoot === root || otherRoot.getAttribute('data-sync-key') !== syncKey) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const matchingTrigger = [
|
|
85
|
+
...otherRoot.querySelectorAll('[data-pl-tabs-trigger]'),
|
|
86
|
+
].find((button) => button.getAttribute('data-tab-label') === label);
|
|
87
|
+
if (matchingTrigger) {
|
|
88
|
+
activate(otherRoot, matchingTrigger, { persist: false });
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (!window.__proseflyTabsInit) {
|
|
93
|
+
window.__proseflyTabsInit = () => {
|
|
94
|
+
document.querySelectorAll('[data-pl-tabs]').forEach((root) => {
|
|
95
|
+
if (root instanceof HTMLElement && root.dataset.plTabsReady === 'true') {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const triggers = [...root.querySelectorAll('[data-pl-tabs-trigger]')];
|
|
99
|
+
const syncKey = root.getAttribute('data-sync-key');
|
|
100
|
+
const storedLabel = getStoredLabel(syncKey);
|
|
101
|
+
const storedTrigger = storedLabel
|
|
102
|
+
? triggers.find((button) => button.getAttribute('data-tab-label') === storedLabel)
|
|
103
|
+
: undefined;
|
|
104
|
+
const selectedTrigger = storedTrigger ??
|
|
105
|
+
triggers.find((button) => button.getAttribute('aria-selected') === 'true') ??
|
|
106
|
+
triggers[0];
|
|
107
|
+
if (root instanceof HTMLElement) {
|
|
108
|
+
root.dataset.plTabsReady = 'true';
|
|
109
|
+
}
|
|
110
|
+
if (selectedTrigger) {
|
|
111
|
+
activate(root, selectedTrigger, { persist: false });
|
|
112
|
+
}
|
|
113
|
+
triggers.forEach((trigger) => {
|
|
114
|
+
trigger.addEventListener('click', () => activate(root, trigger));
|
|
115
|
+
trigger.addEventListener('keydown', (event) => {
|
|
116
|
+
if (!(event instanceof KeyboardEvent)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const currentIndex = triggers.indexOf(trigger);
|
|
120
|
+
let nextIndex = currentIndex;
|
|
121
|
+
if (event.key === 'ArrowRight')
|
|
122
|
+
nextIndex = currentIndex + 1;
|
|
123
|
+
else if (event.key === 'ArrowLeft')
|
|
124
|
+
nextIndex = currentIndex - 1;
|
|
125
|
+
else if (event.key === 'Home')
|
|
126
|
+
nextIndex = 0;
|
|
127
|
+
else if (event.key === 'End')
|
|
128
|
+
nextIndex = triggers.length - 1;
|
|
129
|
+
else
|
|
130
|
+
return;
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
const nextTrigger = triggers[(nextIndex + triggers.length) % triggers.length];
|
|
133
|
+
activate(root, nextTrigger, { focus: true });
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
root.querySelectorAll('[data-pl-tabs-copy]').forEach((button) => {
|
|
137
|
+
if (!(button instanceof HTMLButtonElement)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
button.addEventListener('click', async () => {
|
|
141
|
+
const text = getActiveCode(root);
|
|
142
|
+
if (!text) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
await writeClipboard(text);
|
|
147
|
+
setCopyState(button, true);
|
|
148
|
+
window.setTimeout(() => setCopyState(button, false), 1600);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
setCopyState(button, false);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
document.addEventListener('astro:page-load', window.__proseflyTabsInit);
|
|
158
|
+
}
|
|
159
|
+
window.__proseflyTabsInit();
|
|
160
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/client/tabs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AstroIntegration } from 'astro';
|
|
2
|
+
export interface IconIntegrationOptions {
|
|
3
|
+
apiBase?: string;
|
|
4
|
+
preload?: string[];
|
|
5
|
+
scan?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export default function icon(options?: IconIntegrationOptions): AstroIntegration;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icon/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAG9C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsHD,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,GAAE,sBAA2B,GAAG,gBAAgB,CA6CnF"}
|