AgentSkillsCN

filter-sphere

将 Filter Sphere 集成至项目中——基于 Schema 的筛选功能,适用于 Zod 类型的数据。适用于构建带筛选功能的 UI、带有筛选器的数据表格,或为任意 TypeScript 应用程序添加排序与筛选逻辑时使用。

SKILL.md
--- frontmatter
name: filter-sphere
description: Integrate Filter Sphere into a project - schema-driven filtering for Zod-typed data. Use when building filtering UIs, data tables with filters, or adding sort/filter logic to any TypeScript application.

Filter Sphere - Schema-driven Filtering

Build advanced filtering interfaces powered by Zod schemas.

Quick Start

bash
# React filter UI
pnpm add @fn-sphere/filter zod

Core Concepts

Basic Setup

tsx
import {
  FilterSphereProvider,
  FilterBuilder,
  useFilterSphere,
} from "@fn-sphere/filter";
import { z } from "zod";

// 1. Define your data schema with Zod
const schema = z.object({
  name: z.string().describe("Name"),
  age: z.number().describe("Age"),
});

export function FilterBuilder() {
  // 2. use the `useFilterSphere` hook to get the context and predicate
  const { filterRule, predicate, context } = useFilterSphere({
    schema,
    onRuleChange: ({ filterRule }) => {
      console.log("Filter rule changed:", filterRule);
    },
  });

  const data = [
    /* ... */
  ];

  // 4. use the `predicate` to filter the data
  const filteredData = data.filter(predicate);

  return (
    // 3. display the `FilterBuilder` inside the `FilterSphereProvider`
    <FilterSphereProvider context={context}>
      <FilterBuilder />
    </FilterSphereProvider>
  );
}

Project Structure (Recommended)

code
filter-sphere/
  index.tsx      # Main component wiring everything together
  schema.ts      # Zod schema, default rules, custom functions
  theme.tsx      # Theme via createFilterTheme
  locale.ts      # (Optional) i18n with getLocaleText

Core References

TopicReference
IntroductionIntroduction
Getting StartedGetting Started
Best PracticesBest Practices
Work with AIWork with AI
Customizing FiltersCustomizing Filters
Customizing ThemeCustomizing Theme
Customizing Data InputData Input
PersistencePersistence
Preset FiltersPreset Filters
ExampleExample

Resources