Docs Components Primitives

Item

React example follows below.
ts
const itemFixture = {
id: "item",
href: "/services/ledger-api",
leading: "LA",
title: "ledger-api",
description: "Platform · prod",
trailing: "Healthy",
bare: false,
active: true,
} satisfies {
id: string;
href: string;
leading: string;
title: string;
description: string;
trailing: string;
bare: boolean;
active: boolean;
};
import { Item } from "@grassroot/ui-react";
export default function ItemDemo() {
return (
<div>
<Item
href={itemFixture.href}
leading={<span aria-hidden="true">{itemFixture.leading}</span>}
title={itemFixture.title}
description={itemFixture.description}
trailing={<span>{itemFixture.trailing}</span>}
bare={itemFixture.bare}
active={itemFixture.active}
/>
</div>
);
}
ts
<script setup lang="ts">
const itemFixture = {
id: "item",
href: "/services/ledger-api",
leading: "LA",
title: "ledger-api",
description: "Platform · prod",
trailing: "Healthy",
bare: false,
active: true,
} satisfies {
id: string;
href: string;
leading: string;
title: string;
description: string;
trailing: string;
bare: boolean;
active: boolean;
};
import { Item } from "@grassroot/ui-vue";
</script>
<template>
<div>
<Item :href="itemFixture.href" :bare="itemFixture.bare" :active="itemFixture.active">
<template #leading
><span aria-hidden="true">{{ itemFixture.leading }}</span></template
>
<template #title>{{ itemFixture.title }}</template>
<template #description>{{ itemFixture.description }}</template>
<template #trailing
><span>{{ itemFixture.trailing }}</span></template
>
</Item>
</div>
</template>
ts
import { Component } from "@angular/core";
const itemFixture = {
id: "item",
href: "/services/ledger-api",
leading: "LA",
title: "ledger-api",
description: "Platform · prod",
trailing: "Healthy",
bare: false,
active: true,
} satisfies {
id: string;
href: string;
leading: string;
title: string;
description: string;
trailing: string;
bare: boolean;
active: boolean;
};
import { GrassrootItem } from "@grassroot/ui-angular";
@Component({
selector: "app-item-demo",
standalone: true,
imports: [GrassrootItem],
template: `
<div>
<a grassrootItem [href]="fixture.href" [bare]="fixture.bare" [active]="fixture.active">
<span leading aria-hidden="true">{{ fixture.leading }}</span>
<ng-container ngProjectAs="[title]">{{ fixture.title }}</ng-container>
<ng-container ngProjectAs="[description]">{{ fixture.description }}</ng-container>
<span trailing>{{ fixture.trailing }}</span>
</a>
</div>
`,
})
export class ItemDemoComponent {
protected readonly fixture = itemFixture;
}
export default ItemDemoComponent;
ts
<script lang="ts">
const itemFixture = {
id: "item",
href: "/services/ledger-api",
leading: "LA",
title: "ledger-api",
description: "Platform · prod",
trailing: "Healthy",
bare: false,
active: true,
} satisfies {
id: string;
href: string;
leading: string;
title: string;
description: string;
trailing: string;
bare: boolean;
active: boolean;
};
import { Item } from "@grassroot/ui-svelte";
</script>
{#snippet leading()}<span aria-hidden="true">{itemFixture.leading}</span>{/snippet}
{#snippet title()}{itemFixture.title}{/snippet}
{#snippet description()}{itemFixture.description}{/snippet}
{#snippet trailing()}<span>{itemFixture.trailing}</span>{/snippet}
<div>
<Item
href={itemFixture.href}
bare={itemFixture.bare}
active={itemFixture.active}
{leading}
{title}
{description}
{trailing}
/>
</div>
ts
/** @jsxImportSource solid-js */
const itemFixture = {
id: "item",
href: "/services/ledger-api",
leading: "LA",
title: "ledger-api",
description: "Platform · prod",
trailing: "Healthy",
bare: false,
active: true,
} satisfies {
id: string;
href: string;
leading: string;
title: string;
description: string;
trailing: string;
bare: boolean;
active: boolean;
};
import { Item } from "@grassroot/ui-solid";
import type { JSX } from "solid-js";
export default function ItemDemo(): JSX.Element {
return (
<div>
<Item
href={itemFixture.href}
leading={<span aria-hidden="true">{itemFixture.leading}</span>}
title={itemFixture.title}
description={itemFixture.description}
trailing={<span>{itemFixture.trailing}</span>}
bare={itemFixture.bare}
active={itemFixture.active}
/>
</div>
);
}

Installation

API Reference

Import

import { Item } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
Description
href
string | undefined
—
optional
Render as an anchor instead of a div/button.
bare
boolean | undefined
—
optional
Drop the card border + background — for rows inside a list/scroll container.
active
boolean | undefined
—
optional
Marks the row as active (sunken tint, crimson inset rule).
Prop
href
Type
string | undefined
Default
—
Requirement
optional
Description
Render as an anchor instead of a div/button.
Prop
bare
Type
boolean | undefined
Default
—
Requirement
optional
Description
Drop the card border + background — for rows inside a list/scroll container.
Prop
active
Type
boolean | undefined
Default
—
Requirement
optional
Description
Marks the row as active (sunken tint, crimson inset rule).

Content regions

  • description
  • leading
  • title
  • trailing

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { Item } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
href
string | undefined
—
optional
bare
boolean | undefined
false
optional
active
boolean | undefined
false
optional
Prop
href
Type
string | undefined
Default
—
Requirement
optional
Prop
bare
Type
boolean | undefined
Default
false
Requirement
optional
Prop
active
Type
boolean | undefined
Default
false
Requirement
optional

Content regions

  • description
  • leading
  • title
  • trailing

Import

import { Component } from "@angular/core";
import { GrassrootItem } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
href
string
—
optional
bare
boolean
false
optional
active
boolean
false
optional
Prop
href
Type
string
Default
—
Requirement
optional
Prop
bare
Type
boolean
Default
false
Requirement
optional
Prop
active
Type
boolean
Default
false
Requirement
optional

Content regions

  • description
  • leading
  • title
  • trailing

Import

import { Item } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
href
string
—
optional
bare
boolean
false
optional
active
boolean
false
optional
Prop
href
Type
string
Default
—
Requirement
optional
Prop
bare
Type
boolean
Default
false
Requirement
optional
Prop
active
Type
boolean
Default
false
Requirement
optional

Content regions

  • description
  • leading
  • title
  • trailing

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { Item } from "@grassroot/ui-solid";
import type { JSX } from "solid-js";

Props

Prop
Type
Default
Requirement
href
string
—
optional
bare
boolean
—
optional
active
boolean
—
optional
Prop
href
Type
string
Default
—
Requirement
optional
Prop
bare
Type
boolean
Default
—
Requirement
optional
Prop
active
Type
boolean
Default
—
Requirement
optional

Content regions

  • description
  • leading
  • title
  • trailing

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.