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.