UNPKG

@mgoodfellow/park-ui-panda-preset

Version:

Panda CSS Preset for Park UI

120 lines (118 loc) 2.9 kB
import { treeViewAnatomy } from '@ark-ui/anatomy' import { defineSlotRecipe } from '@pandacss/dev' export const treeView = defineSlotRecipe({ className: 'treeView', slots: [...treeViewAnatomy.keys(), 'branchIndentGuide'], base: { root: { width: 'full', }, branch: { "&[data-depth='1'] > [data-part='branch-content']": { _before: { bg: 'border.default', content: '""', height: 'full', left: '3', position: 'absolute', width: '1px', zIndex: '1', }, }, }, branchContent: { position: 'relative', }, branchIndentGuide: {}, branchControl: { alignItems: 'center', borderRadius: 'l2', color: 'fg.muted', display: 'flex', fontWeight: 'medium', gap: '1.5', ps: 'calc((var(--depth) - 1) * 22px)', py: '1.5', textStyle: 'sm', transitionDuration: 'normal', transitionProperty: 'background, color', transitionTimingFunction: 'default', "&[data-depth='1']": { ps: '1', }, "&[data-depth='1'] > [data-part='branch-text'] ": { fontWeight: 'semibold', color: 'fg.default', }, _hover: { background: 'gray.a2', color: 'fg.default', }, }, branchIndicator: { color: 'colorPalette.default', transformOrigin: 'center', transitionDuration: 'normal', transitionProperty: 'transform', transitionTimingFunction: 'default', '& svg': { fontSize: 'md', width: '4', height: '4', }, _open: { transform: 'rotate(90deg)', }, }, item: { borderRadius: 'l2', color: 'fg.muted', cursor: 'pointer', fontWeight: 'medium', position: 'relative', ps: 'calc(((var(--depth) - 1) * 22px) + 22px)', py: '1.5', textStyle: 'sm', transitionDuration: 'normal', transitionProperty: 'background, color', transitionTimingFunction: 'default', "&[data-depth='1']": { ps: '6', fontWeight: 'semibold', color: 'fg.default', _selected: { _before: { bg: 'transparent', }, }, }, _hover: { background: 'gray.a2', color: 'fg.default', }, _selected: { background: 'colorPalette.a2', color: 'colorPalette.text', _hover: { background: 'colorPalette.a2', color: 'colorPalette.text', }, _before: { content: '""', position: 'absolute', left: '3', top: '0', width: '2px', height: 'full', bg: 'colorPalette.default', zIndex: '1', }, }, }, tree: { display: 'flex', flexDirection: 'column', gap: '3', }, }, })