shadimage
amplo
uifill-pickersource: ok · hit

Amplo Fill Picker

Color + gradient + the solid/gradient mode switcher (FillPicker.Root/Tabs/Tab/Pane) — the "give me everything" entry point, Base UI variant. Pulls the Base UI color and gradient pickers plus the shared fill switcher parts as registry dependencies.

npx shadcn add "https://amplo.ale.design/r/fill-picker.json"
free

Visual style

gradient

Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.

Dependencies

Bundle weight · light
ui-primitives@base-ui/react
iconslucide-react

Registry dependencies

utilshttps://amplo.ale.design/r/gradient-picker.jsonhttps://amplo.ale.design/r/fill-picker-engine.json

Files1 · source cached 10/9/2026, 3:01:41 AM

registry/new-york/ui/fill-picker-base/fill.tsx
"use client";

// Re-export the Base UI gradient-picker public surface (which itself
// re-exports the Base UI color-picker), so a single import point covers
// the whole Base UI fill-picker public surface: color + gradient + the
// fill switcher below.
export * from "./gradient";
export { ColorPickerBase, GradientPickerBase } from "./gradient";

// Root/Tabs/Tab/Pane are plain markup (role="tablist"/"tab", no Radix
// primitive underneath) — reused unmodified from the original.
import * as React from "react";
import { Root as FillRoot } from "@/registry/new-york/ui/fill-picker/parts/fill/root";
import { Tabs as FillTabs, Tab as FillTab } from "@/registry/new-york/ui/fill-picker/parts/fill/tabs";
import {
  Pane as EngineFillPane,
  type PaneProps,
} from "@/registry/new-york/ui/fill-picker/parts/fill/pane";
import { GradientStopEditorContext } from "@/registry/new-york/ui/fill-picker/contexts/gradient";
import { stopEditorSlot } from "./parts/gradient/stop-editor";

export type { Fill, ColorFill, GradientFill } from "@/registry/new-york/ui/fill-picker/lib/gradient";
export { formatFill, parseFill } from "@/registry/new-york/ui/fill-picker/lib/gradient";
export { useFillPicker } from "@/registry/new-york/ui/fill-picker/hooks/use-fill-picker";
export type {
  UseFillPickerProps,
  FillPickerState,
  FillMode,
} from "@/registry/new-york/ui/fill-picker/hooks/use-fill-picker";

/**
 * The engine `Pane` plus this variant's stop editor: the gradient pane owns
 * its gradient state directly (never via `<GradientPickerBase.Root>`), so a
 * `<Bar editOnClick>` nested inside it gets its editor from here.
 */
const FillPane = React.forwardRef<HTMLDivElement, PaneProps>(function Pane(
  props,
  ref,
) {
  return (
    <GradientStopEditorContext.Provider value={stopEditorSlot}>
      <EngineFillPane ref={ref} {...props} />
    </GradientStopEditorContext.Provider>
  );
});

export const FillPickerBase = {
  Root: FillRoot,
  Tabs: FillTabs,
  Tab: FillTab,
  Pane: FillPane,
};

// Plain-name alias — see `GradientPicker` / `ColorPicker` in gradient.tsx.
export const FillPicker = FillPickerBase;

More from amplo

Browse all components in this library →