Skip to main content
Clever Ops

Module Tree Features

Product surface mapped as a module tree, hairline branch elbows and nested lists give React and Tailwind sites a file-tree of capabilities with real one-liners.

Preview & code

Loading Module Tree Features preview

Installation

pnpm dlx shadcn@latest add @cleverui/feature-module-tree

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { FeatureModuleTree } from '@/components/blocks/feature-module-tree'
Exampletsx
import { FeatureModuleTree } from '@/components/blocks/feature-module-tree'

export default function FeatureModuleTreeDemo() {
  return (
    <FeatureModuleTree
      eyebrow="Module map"
      heading="The surface area, nested as shipped."
      description="Every leaf is a public capability with a typed export. Branches group ownership, not marketing buckets, so the tree matches how teams actually navigate the monorepo."
      root={{
        label: 'fieldnote/',
        sublabel: 'core platform',
      }}
      branches={[
        {
          icon: 'Workflow',
          label: 'runtime/',
          leaves: [
            {
              label: 'scheduler',
              line: 'Cron and event-driven jobs with backlog caps',
              state: 'stable',
            },
            {
              label: 'worker-pool',
              line: 'Autoscaled process pools with per-tenant isolation',
              state: 'stable',
              featured: true,
            },
            {
              label: 'replay',
              line: 'Re-run any workflow from a committed snapshot',
              state: 'stable',
            },
          ],
        },
        {
          icon: 'Shield',
          label: 'policy/',
          leaves: [
            {
              label: 'packs',
              line: 'Versioned rule sets published like packages',
              state: 'stable',
            },
            {
              label: 'eval',
              line: 'Synchronous gates on every mutation path',
              state: 'stable',
            },
            {
              label: 'audit-hooks',
              line: 'Immutable decision log with export pipelines',
              state: 'beta',
            },
          ],
        },
        {
          icon: 'Boxes',
          label: 'sdk/',
          leaves: [
            {
              label: 'typescript',
              line: 'Generated clients from the schema registry',
              state: 'stable',
            },
            {
              label: 'python',
              line: 'Async client with streaming tool results',
              state: 'stable',
            },
            {
              label: 'webhooks',
              line: 'Signed outbound delivery with retry budgets',
              state: 'stable',
            },
            {
              label: 'cli',
              line: 'Local run and secret injection for agents',
              state: 'beta',
            },
          ],
        },
        {
          icon: 'Radio',
          label: 'observability/',
          leaves: [
            {
              label: 'traces',
              line: 'OpenTelemetry spans across tool boundaries',
              state: 'stable',
            },
            {
              label: 'signals',
              line: 'Threshold alerts that stay quiet until they matter',
              state: 'beta',
            },
          ],
        },
      ]}
      footnote="Every module ships typed, nothing bolted on"
    />
  )
}

API reference

FeatureModuleTree accepts the following props.

PropTypeDefaultDescription
eyebrowstring
heading*string
descriptionstring
root*FeatureModuleTreeRoottrunk node, e.g. mono label 'fieldnote/'
branches*FeatureModuleTreeBranch[]3–4 branches of 2–5 leaves each
footnotestringmono closing line

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface FeatureModuleTreeRoot {
  label: string
  sublabel?: string
}

export interface FeatureModuleTreeBranch {
  /** lucide-react icon name, e.g. 'GitBranch' */
  icon?: string
  label: string
  leaves: FeatureModuleTreeLeaf[]
}

export interface FeatureModuleTreeLeaf {
  label: string
  line: string
  state?: 'stable' | 'beta'
  /** at most one featured leaf across the whole tree */
  featured?: boolean
}

Frequently asked questions

How do I install the Module Tree Features component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/feature-module-tree`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Module Tree Features require?

Module Tree Features uses motion and lucide-react on top of React and Tailwind CSS. You don't need to install them manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme Module Tree Features to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services