astro-better-cards 0.2.2 → 0.2.3
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/Card.astro +9 -0
- package/ChildCards.astro +17 -3
- package/package.json +1 -1
package/Card.astro
CHANGED
|
@@ -10,6 +10,8 @@ const {
|
|
|
10
10
|
comingSoon = false,
|
|
11
11
|
label,
|
|
12
12
|
labelFirst = false,
|
|
13
|
+
version,
|
|
14
|
+
badges,
|
|
13
15
|
} = Astro.props;
|
|
14
16
|
---
|
|
15
17
|
{variant === 'full' && (
|
|
@@ -20,6 +22,13 @@ const {
|
|
|
20
22
|
{darkIcon && <img class="hidden dark:block w-14 h-14 object-contain shrink-0" src={darkIcon} alt="" aria-hidden="true" />}
|
|
21
23
|
<div>
|
|
22
24
|
<p class="font-bold group-hover:text-indigo-500 pb-1 text-xl sm:leading-tight sm:pb-2 sm:text-lg md:text-xl lg:text-2xl 2xl:leading-tight" set:html={title}></p>
|
|
25
|
+
{(version || (badges && badges.length > 0)) && (
|
|
26
|
+
<p class="flex items-center gap-1.5 text-xs text-slate-400 dark:text-slate-500 mb-1.5">
|
|
27
|
+
{version && <span>v{version}</span>}
|
|
28
|
+
{version && badges && badges.length > 0 && <span>—</span>}
|
|
29
|
+
{badges && badges.map((b: string) => <span class={`badge badge-${b}`}>{b}</span>)}
|
|
30
|
+
</p>
|
|
31
|
+
)}
|
|
23
32
|
{description && <p class="font-normal lg:leading-4 sm:leading-4 text-sm">{description}</p>}
|
|
24
33
|
</div>
|
|
25
34
|
</div>
|
package/ChildCards.astro
CHANGED
|
@@ -52,6 +52,10 @@ function isDirectChild(id: string): boolean {
|
|
|
52
52
|
|
|
53
53
|
function isGrandchildPage(id: string): boolean {
|
|
54
54
|
const cid = stripExt(id);
|
|
55
|
+
if (!prefix) {
|
|
56
|
+
const parts = cid.split('/');
|
|
57
|
+
return parts.length === 2 && parts[1] !== 'index';
|
|
58
|
+
}
|
|
55
59
|
if (!cid.startsWith(`${prefix}/`)) return false;
|
|
56
60
|
const rem = cid.slice(prefix.length + 1);
|
|
57
61
|
const parts = rem.split('/');
|
|
@@ -59,6 +63,7 @@ function isGrandchildPage(id: string): boolean {
|
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
function getSubfolder(id: string): string {
|
|
66
|
+
if (!prefix) return stripExt(id).split('/')[0];
|
|
62
67
|
return stripExt(id).slice(prefix.length + 1).split('/')[0];
|
|
63
68
|
}
|
|
64
69
|
|
|
@@ -74,6 +79,8 @@ type NavItem = {
|
|
|
74
79
|
icon?: string | null;
|
|
75
80
|
darkIcon?: string;
|
|
76
81
|
cardImage?: string;
|
|
82
|
+
version?: string;
|
|
83
|
+
badges?: string[];
|
|
77
84
|
};
|
|
78
85
|
|
|
79
86
|
type NavGroup = { title: string; order: number; items: NavItem[] };
|
|
@@ -91,13 +98,16 @@ if (depth === 1) {
|
|
|
91
98
|
icon: p.data.icon ?? null,
|
|
92
99
|
darkIcon: p.data.darkIcon,
|
|
93
100
|
cardImage: p.data.cardImage,
|
|
101
|
+
version: p.data.version,
|
|
102
|
+
badges: p.data.badges,
|
|
94
103
|
})));
|
|
95
104
|
} else {
|
|
96
105
|
const grandchildren = valid.filter(p => isGrandchildPage(p.id));
|
|
97
106
|
const subfolderNames = [...new Set(grandchildren.map(p => getSubfolder(p.id)))];
|
|
98
107
|
|
|
99
108
|
groups = await Promise.all(subfolderNames.map(async sf => {
|
|
100
|
-
const
|
|
109
|
+
const indexPath = prefix ? `${prefix}/${sf}/index` : `${sf}/index`;
|
|
110
|
+
const indexEntry = (pages as any[]).find(p => stripExt(p.id) === indexPath);
|
|
101
111
|
const sectionTitle: string = indexEntry
|
|
102
112
|
? await md(indexEntry.data.title)
|
|
103
113
|
: sf.replace(/-/g, ' ').replace(/\b\w/g, (c: string) => c.toUpperCase());
|
|
@@ -116,6 +126,8 @@ if (depth === 1) {
|
|
|
116
126
|
icon: p.data.icon ?? null,
|
|
117
127
|
darkIcon: p.data.darkIcon,
|
|
118
128
|
cardImage: p.data.cardImage,
|
|
129
|
+
version: p.data.version,
|
|
130
|
+
badges: p.data.badges,
|
|
119
131
|
}))),
|
|
120
132
|
};
|
|
121
133
|
}));
|
|
@@ -128,7 +140,8 @@ if (depth === 1) {
|
|
|
128
140
|
<div class="gap-6 mt-6 mb-6 grid grid-cols-1 not-prose lg:grid-cols-2" xmlns="http://www.w3.org/1999/xhtml">
|
|
129
141
|
{items.map(item => (
|
|
130
142
|
<Card href={item.href} title={item.title} description={item.description}
|
|
131
|
-
icon={item.icon} darkIcon={item.darkIcon} cardImage={item.cardImage}
|
|
143
|
+
icon={item.icon} darkIcon={item.darkIcon} cardImage={item.cardImage}
|
|
144
|
+
version={item.version} badges={item.badges} variant="full" />
|
|
132
145
|
))}
|
|
133
146
|
</div>
|
|
134
147
|
) : (
|
|
@@ -139,7 +152,8 @@ if (depth === 1) {
|
|
|
139
152
|
<div class="gap-6 grid grid-cols-1 not-prose lg:grid-cols-2" xmlns="http://www.w3.org/1999/xhtml">
|
|
140
153
|
{group.items.map(item => (
|
|
141
154
|
<Card href={item.href} title={item.title} description={item.description}
|
|
142
|
-
icon={item.icon} darkIcon={item.darkIcon} cardImage={item.cardImage}
|
|
155
|
+
icon={item.icon} darkIcon={item.darkIcon} cardImage={item.cardImage}
|
|
156
|
+
version={item.version} badges={item.badges} variant="full" />
|
|
143
157
|
))}
|
|
144
158
|
</div>
|
|
145
159
|
</Fragment>
|