# `ItemBase`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Interface · `import type { ItemBase } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 7. Collections and shapes

The fields every collection item has.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="key"></a>[`key`](ItemBase.key.md) | property | Unique in the collection; the reconcile key. |
| <a id="parent"></a>[`parent?`](ItemBase.parent.md) | property | The key of another item in this collection. |
| <a id="name"></a>[`name?`](ItemBase.name.md) | property | The part's name, matched by [`Query.name`](Part.name.md). |
| <a id="at"></a>[`at?`](ItemBase.at.md) | property | Local to `parent`. |
| <a id="tags"></a>[`tags?`](ItemBase.tags.md) | property | Tags, matched by [`Query.tag`](Query.md). |
| <a id="meta"></a>[`meta?`](ItemBase.meta.md) | property | Your labels, matched by [`Query.meta`](Part.meta.md); changed only by a later `set()`. |
| <a id="visible"></a>[`visible?`](ItemBase.visible.md) | property | Whether the item draws. |
| <a id="shadows"></a>[`shadows?`](ItemBase.shadows.md) | property | Whether the item casts shadows on the others and the ground, and receives theirs. |
| <a id="pickable"></a>[`pickable?`](ItemBase.pickable.md) | property | Whether a pick ([`input.pick`](Input.pick.md), a tap or a drag) can hit the item. |

## Declaration

```ts
export interface ItemBase {
  key: string;
  parent?: string;
  name?: string;
  at?: PoseInput;
  tags?: readonly string[];
  meta?: Readonly<Record<string, JsonPrimitive>>;
  visible?: boolean;
  shadows?: {
    cast?: boolean;
    receive?: boolean;
  };
  pickable?: boolean;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `ItemBase` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
