UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines • 3.69 kB
{"version":3,"file":"Burger.mjs","names":["burgerMessages"],"sources":["../../../src/base-ui/Burger/Burger.tsx"],"sourcesContent":["'use client';\n\nimport { Menu, X } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/base-ui/ActionIcon';\nimport { Drawer } from '@/base-ui/Drawer';\nimport List, { type ListItem } from '@/base-ui/List';\nimport burgerMessages from '@/i18n/resources/en/burger';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { styles } from './style';\nimport type { BurgerProps } from './type';\n\nconst withoutIcons = (items: ListItem[]): ListItem[] =>\n items.flatMap((item) => (item.type === 'divider' ? [] : [{ ...item, icon: undefined }]));\n\nconst Burger = memo<BurgerProps>(\n ({\n activeKey,\n className,\n footer,\n fullscreen = false,\n headerHeight = 64,\n items,\n onOpenChange,\n onSelect,\n opened,\n size,\n style,\n variant,\n }) => {\n const { t } = useTranslation(burgerMessages);\n const close = () => onOpenChange(false);\n\n const toggle = (\n <ActionIcon\n aria-expanded={opened}\n aria-label={opened ? t('burger.close') : t('burger.open')}\n className={className}\n icon={opened ? X : Menu}\n size={size}\n style={style}\n variant={variant}\n onClick={() => onOpenChange(!opened)}\n />\n );\n\n return (\n <>\n {toggle}\n <Drawer\n noHeader\n classNames={{ bodyContent: styles.body }}\n height={fullscreen ? '100dvh' : `calc(100dvh - ${headerHeight}px)`}\n open={opened}\n placement=\"top\"\n styles={fullscreen ? undefined : { popup: { insetBlockStart: headerHeight } }}\n onClose={close}\n >\n {fullscreen && (\n <div className={styles.fullHeader} style={{ height: headerHeight }}>\n <ActionIcon aria-label={t('burger.close')} icon={X} size={size} onClick={close} />\n </div>\n )}\n <List\n selectable\n activeKey={activeKey ?? null}\n classNames={{ item: fullscreen ? styles.largeRow : styles.row }}\n items={fullscreen ? withoutIcons(items) : items}\n onClick={({ key }) => {\n onSelect?.(key);\n close();\n }}\n />\n {fullscreen && footer && <div className={styles.footer}>{footer}</div>}\n </Drawer>\n </>\n );\n },\n);\n\nBurger.displayName = 'Burger';\n\nexport default Burger;\n"],"mappings":";;;;;;;;;;;AAcA,MAAM,gBAAgB,UACpB,MAAM,SAAS,SAAU,KAAK,SAAS,YAAY,CAAC,IAAI,CAAC;CAAE,GAAG;CAAM,MAAM,KAAA;AAAU,CAAC,CAAE;AAEzF,MAAM,SAAS,MACZ,EACC,WACA,WACA,QACA,aAAa,OACb,eAAe,IACf,OACA,cACA,UACA,QACA,MACA,OACA,cACI;CACJ,MAAM,EAAE,MAAM,eAAeA,cAAc;CAC3C,MAAM,cAAc,aAAa,KAAK;CAEtC,MAAM,SACJ,oBAAC,YAAD;EACE,iBAAe;EACf,cAAY,SAAS,EAAE,cAAc,IAAI,EAAE,aAAa;EAC7C;EACX,MAAM,SAAS,IAAI;EACb;EACC;EACE;EACT,eAAe,aAAa,CAAC,MAAM;CACpC,CAAA;CAGH,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,QACD,qBAAC,QAAD;EACE,UAAA;EACA,YAAY,EAAE,aAAa,OAAO,KAAK;EACvC,QAAQ,aAAa,WAAW,iBAAiB,aAAa;EAC9D,MAAM;EACN,WAAU;EACV,QAAQ,aAAa,KAAA,IAAY,EAAE,OAAO,EAAE,iBAAiB,aAAa,EAAE;EAC5E,SAAS;EAPX,UAAA;GASG,cACC,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAY,OAAO,EAAE,QAAQ,aAAa;IAC/D,UAAA,oBAAC,YAAD;KAAY,cAAY,EAAE,cAAc;KAAG,MAAM;KAAS;KAAM,SAAS;IAAQ,CAAA;GAC9E,CAAA;GAEP,oBAAC,MAAD;IACE,YAAA;IACA,WAAW,aAAa;IACxB,YAAY,EAAE,MAAM,aAAa,OAAO,WAAW,OAAO,IAAI;IAC9D,OAAO,aAAa,aAAa,KAAK,IAAI;IAC1C,UAAU,EAAE,UAAU;KACpB,WAAW,GAAG;KACd,MAAM;IACR;GACD,CAAA;GACA,cAAc,UAAU,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAS,UAAA;GAAY,CAAA;EAC/D;CACR,CAAA,CAAA,EAAA,CAAA;AAEN,CACF;AAEA,OAAO,cAAc"}