📝 Docs: 更新到 nonepress 3.8.0 (#4126)

This commit is contained in:
StarHeart
2026-08-01 16:57:44 +08:00
committed by GitHub
parent b38b1e5261
commit 1b88a6e77d
198 changed files with 2042 additions and 1641 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
export function pickTextColor(
bgColor: string,
lightColor: string,
darkColor: string
darkColor: string,
) {
const color = bgColor.charAt(0) === "#" ? bgColor.substring(1, 7) : bgColor;
const r = parseInt(color.substring(0, 2), 16); // hexToR
+15 -15
View File
@@ -39,7 +39,7 @@ const validStatusDisplayName = {
};
export const validStatusFilter = <T extends Resource = Resource>(
validStatus: ValidStatus
validStatus: ValidStatus,
): Filter<T> => ({
type: "validStatus",
id: `validStatus-${validStatus}`,
@@ -51,7 +51,7 @@ export const validStatusFilter = <T extends Resource = Resource>(
});
export const tagFilter = <T extends Resource = Resource>(
tag: string
tag: string,
): Filter<T> => ({
type: "tag",
id: `tag-${tag}`,
@@ -61,14 +61,14 @@ export const tagFilter = <T extends Resource = Resource>(
description: "The display name of tag filter",
message: "标签: {tag}",
},
{ tag }
{ tag },
),
filter: (resource: Resource): boolean =>
resource.tags.map((tag) => tag.label).includes(tag),
});
export const officialFilter = <T extends Resource = Resource>(
official: boolean = true
official: boolean = true,
): Filter<T> => ({
type: "official",
id: `official-${official}`,
@@ -81,7 +81,7 @@ export const officialFilter = <T extends Resource = Resource>(
});
export const authorFilter = <T extends Resource = Resource>(
author: string
author: string,
): Filter<T> => ({
type: "author",
id: `author-${author}`,
@@ -91,13 +91,13 @@ export const authorFilter = <T extends Resource = Resource>(
description: "The display name of author filter",
message: "作者: {author}",
},
{ author }
{ author },
),
filter: (resource: Resource): boolean => resource.author === author,
});
export const queryFilter = <T extends Resource = Resource>(
query: string
query: string,
): Filter<T> => ({
type: "query",
id: `query-${query}`,
@@ -123,10 +123,10 @@ export const queryFilter = <T extends Resource = Resource>(
export function filterResources<T extends Resource>(
resources: T[],
filters: Filter<T>[]
filters: Filter<T>[],
): T[] {
return resources.filter((resource) =>
filters.every((filter) => filter.filter(resource))
filters.every((filter) => filter.filter(resource)),
);
}
@@ -138,7 +138,7 @@ type useFilteredResourcesReturn<T extends Resource> = {
};
export function useFilteredResources<T extends Resource>(
resources: T[]
resources: T[],
): useFilteredResourcesReturn<T> {
const [filters, setFilters] = useState<Filter<T>[]>([]);
@@ -149,22 +149,22 @@ export function useFilteredResources<T extends Resource>(
}
setFilters((filters) => [...filters, filter]);
},
[filters, setFilters]
[filters, setFilters],
);
const removeFilter = useCallback(
(filter: Filter<T> | string) => {
setFilters((filters) =>
filters.filter((f) =>
typeof filter === "string" ? f.id !== filter : f !== filter
)
typeof filter === "string" ? f.id !== filter : f !== filter,
),
);
},
[setFilters]
[setFilters],
);
const filteredResources = useCallback(
() => filterResources(resources, filters),
[resources, filters]
[resources, filters],
);
return {
+4 -4
View File
@@ -16,7 +16,7 @@ type useSearchControlReturn<T extends Resource> = {
};
export function useSearchControl<T extends Resource>(
resources: T[]
resources: T[],
): useSearchControlReturn<T> {
const [currentFilter, setCurrentFilter] = useState<Filter<T> | null>(null);
@@ -28,7 +28,7 @@ export function useSearchControl<T extends Resource>(
useEffect(() => {
setSearcherFilters(
filters.filter((f) => !(currentFilter && f === currentFilter))
filters.filter((f) => !(currentFilter && f === currentFilter)),
);
}, [filters, currentFilter]);
@@ -53,7 +53,7 @@ export function useSearchControl<T extends Resource>(
setCurrentFilter(newFilter);
addFilter(newFilter);
},
[currentFilter, setCurrentFilter, addFilter, removeFilter]
[currentFilter, setCurrentFilter, addFilter, removeFilter],
);
const onSearchQuerySubmit = useCallback(() => {
@@ -75,7 +75,7 @@ export function useSearchControl<T extends Resource>(
(index: number) => {
removeFilter(searcherFilters[index]);
},
[removeFilter, searcherFilters]
[removeFilter, searcherFilters],
);
return {
+4 -4
View File
@@ -23,21 +23,21 @@ type ResourceTypes = {
export type Resource = Adapter | Bot | Driver | Plugin;
export async function fetchRegistryData<T extends RegistryDataType>(
dataType: T
dataType: T,
): Promise<ResourceTypes[T][]> {
const resp = await fetch(
`https://registry.nonebot.dev/${dataType}s.json`
`https://registry.nonebot.dev/${dataType}s.json`,
).catch((e) => {
throw new Error(`Failed to fetch ${dataType}s: ${e}`);
});
if (!resp.ok) {
throw new Error(
`Failed to fetch ${dataType}s: ${resp.status} ${resp.statusText}`
`Failed to fetch ${dataType}s: ${resp.status} ${resp.statusText}`,
);
}
const data = (await resp.json()) as RegistryDataResponseTypes[T];
return data.map(
(resource) => ({ ...resource, resourceType: dataType }) as ResourceTypes[T]
(resource) => ({ ...resource, resourceType: dataType }) as ResourceTypes[T],
);
}
+2 -2
View File
@@ -39,8 +39,8 @@ export function useToolbar<T extends Resource = Resource>({
icon: ["fas", "tag"],
choices: Array.from(
new Set(
resources.flatMap((resource) => resource.tags.map((tag) => tag.label))
)
resources.flatMap((resource) => resource.tags.map((tag) => tag.label)),
),
),
onSubmit: (tag: string) => {
addFilter(tagFilter(tag));