Select

Select renders Base UI’s select primitives from one items prop.

Sets the default schedule for generated reports.
import { useState } from "react";
import { Select } from "density-base-ui";

export default function SelectExample() {
  const [value, setValue] = useState("weekly");
  const updateValue = (nextValue: unknown) => {
    if (typeof nextValue === "string") {
      setValue(nextValue);
    }
  };

  return (
    <Select
      value={value}
      onValueChange={updateValue}
      hint="Sets the default schedule for generated reports."
      label="Report cadence"
      items={[
        { value: "daily", label: "Daily" },
        { value: "weekly", label: "Weekly" },
        { value: "monthly", label: "Monthly" },
      ]}
    />
  );
}

Props

Prop Attribute Values Default
items None { value, label, disabled? }[] Required
label None React node None
hint None React node None
fieldOrientation None vertical, horizontal vertical
placeholder None React node None
triggerLabel None React node None
indicator None React node
icon None React node
emphasis data-dn-emphasis primary, secondary, outline, ghost secondary
size data-dn-size 2xs, xs, sm, md, lg, xl, 2xl, 3xl md

Label and hint

Used for reports.
import { Select } from "density-base-ui";
const items = [{ value: "weekly", label: "Weekly" }];
export default function SelectFieldExample() {
  return (
    <Select
      label="Cadence"
      hint="Used for reports."
      items={items}
      value="weekly"
    />
  );
}

Field orientation

import { Select } from "density-base-ui";
const items = [{ value: "weekly", label: "Weekly" }];
export default function SelectFieldOrientationExample() {
  return (
    <div style={{ display: "grid", gap: "1rem" }}>
      <Select
        fieldOrientation="vertical"
        label="Vertical"
        items={items}
        value="weekly"
      />
      <Select
        fieldOrientation="horizontal"
        label="Horizontal"
        items={items}
        value="weekly"
      />
    </div>
  );
}

Placeholder

import { Select } from "density-base-ui";
export default function SelectPlaceholderExample() {
  return (
    <Select
      items={[{ value: "weekly", label: "Weekly" }]}
      placeholder="Choose cadence"
      value={null}
    />
  );
}

Trigger label

import { Select } from "density-base-ui";
export default function SelectTriggerLabelExample() {
  return (
    <Select
      items={[{ value: "weekly", label: "Weekly" }]}
      triggerLabel="Report cadence"
      value="weekly"
    />
  );
}

Indicator

import { Select } from "density-base-ui";
export default function SelectIndicatorExample() {
  return (
    <Select
      indicator="Selected"
      items={[{ value: "weekly", label: "Weekly" }]}
      value="weekly"
    />
  );
}

Icon

import { Select } from "density-base-ui";
export default function SelectIconExample() {
  return (
    <Select
      icon="↓"
      items={[{ value: "weekly", label: "Weekly" }]}
      value="weekly"
    />
  );
}

Emphasis

import { Select } from "density-base-ui";
const items = [{ value: "weekly", label: "Weekly" }];
export default function SelectEmphasisExample() {
  return (
    <div style={{ display: "flex", gap: "0.75rem" }}>
      <Select emphasis="primary" items={items} value="weekly" />
      <Select emphasis="secondary" items={items} value="weekly" />
      <Select emphasis="outline" items={items} value="weekly" />
      <Select emphasis="ghost" items={items} value="weekly" />
    </div>
  );
}

Size

import { Select } from "density-base-ui";
const items = [{ value: "weekly", label: "Weekly" }];
export default function SelectSizeExample() {
  return (
    <div
      style={{
        display: "flex",
        alignItems: "center",
        flexWrap: "wrap",
        gap: "0.75rem",
      }}
    >
      <Select size="2xs" items={items} value="weekly" />
      <Select size="xs" items={items} value="weekly" />
      <Select size="sm" items={items} value="weekly" />
      <Select size="md" items={items} value="weekly" />
      <Select size="lg" items={items} value="weekly" />
      <Select size="xl" items={items} value="weekly" />
      <Select size="2xl" items={items} value="weekly" />
      <Select size="3xl" items={items} value="weekly" />
    </div>
  );
}