Bottom

Sidebar bottom region: InfoCard + cells + user.

Installation

$npx @309-thingspire/ui@latest add bottom

Usage

import { Bottom } from "@/components/bottom/bottom"
<Bottom />

Examples

Live preview rendered from Bottom.preview.tsx. Switch to the Code tab to view the underlying component source.

Loading preview…
import React from 'react';

import { spacing } from '../../style-tokens';
import { Additional } from '../Additional/Additional';
import { CellItem } from '../CellItem/CellItem';
import { InfoCard } from '../InfoCard/InfoCard';
import { User } from '../User/User';

import type { BottomProps } from './Bottom.types';

const SIDEBAR_WIDTH = spacing.primitive['256'] + spacing.scale['24'];

const DEFAULT_CELLS = {
  heading: 'Teamspaces',
  items: Array.from({ length: 3 }, (_, index) => ({
    id: `bottom-item-${index + 1}`,
    label: 'Label',
  })),
};

export function Bottom({
  showCard = true,
  showCells = true,
  showUser = true,
  card,
  cells = DEFAULT_CELLS,
  user,
  className,
  style,
}: BottomProps) {
  return (
    <div
      className={className}
      style={{
        width: SIDEBAR_WIDTH,
        boxSizing: 'border-box',
        display: 'flex',
        flexDirection: 'column',
        alignItems: 'flex-start',
        gap: spacing.scale['16'],
        ...style,
      }}
    >
      {showCard ? <InfoCard type="lg" {...card} /> : null}

      {showCells ? (
        <div
          style={{
            width: '100%',
            display: 'flex',
            flexDirection: 'column',
            alignItems: 'flex-start',
          }}
        >
          <Additional type="caption" text={cells.heading} />
          {cells.items.map((item, index) => (
            <CellItem
              key={item.id ?? `${cells.heading}-${index}`}
              type="default"
              target="default"
              label={item.label}
              leadIcon={item.leadIcon}
              active={item.active ?? false}
              disabled={item.disabled ?? false}
              badge={false}
              tailIcon1={false}
              tailIcon2={false}
            />
          ))}
        </div>
      ) : null}

      {showUser ? <User {...user} /> : null}
    </div>
  );
}

export default Bottom;

API Reference

Props 문서 준비 중입니다. (component-spec.json 추가 시 표시됩니다.)