UNPKG

@lobehub/ui

Version:

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

245 lines (224 loc) 5.21 kB
import { createStaticStyles } from "antd-style"; import { cva } from "class-variance-authority"; //#region src/base-ui/Accordion/style.ts const styles = createStaticStyles(({ css, cssVar }) => ({ action: css` display: flex; flex-shrink: 0; gap: 4px; align-items: center; opacity: 0; transition: opacity 150ms ${cssVar.motionEaseOut}; `, actionAlwaysVisible: css` opacity: 1; `, actionBorderless: css` padding-inline-end: var(--accordion-hover-inset, 8px); `, actionOutlined: css` padding-inline-end: 16px; `, content: css` font-size: 14px; line-height: 1.6; `, contentBorderless: css` padding-block: 0 12px; `, contentIndent: css` padding-inline-start: 24px; `, contentIndentOutlined: css` padding-inline-start: 40px; `, contentOutlined: css` padding-block: 0 14px; padding-inline: 16px; `, header: css` position: relative; display: flex; align-items: center; margin: 0; font-size: inherit; font-weight: inherit; transition: background 150ms ${cssVar.motionEaseOut}; &:hover:not(:has([data-disabled])) { background: ${cssVar.colorFillTertiary}; } &:hover .accordion-action, &:focus-within .accordion-action { opacity: 1; } `, headerBorderless: css` margin-inline: calc(var(--accordion-hover-inset, 8px) * -1); border-radius: ${cssVar.borderRadius}; `, indicator: css` display: flex; flex-shrink: 0; align-items: center; color: ${cssVar.colorTextDescription}; transition: transform 200ms ${cssVar.motionEaseOut}; @media (prefers-reduced-motion: reduce) { transition-duration: 0s; } `, indicatorEnd: css` margin-inline-start: auto; [data-panel-open] & { transform: rotate(180deg); } `, indicatorStart: css` [data-panel-open] & { transform: rotate(90deg); } `, item: css` display: flex; flex-direction: column; `, itemOutlined: css` & + & { border-block-start: 1px solid ${cssVar.colorBorderSecondary}; } `, panel: css` overflow: hidden; height: var(--accordion-panel-height); transition: height 200ms ${cssVar.motionEaseOut}; &[data-starting-style], &[data-ending-style] { height: 0; } @media (prefers-reduced-motion: reduce) { transition-duration: 0s; } `, root: css` display: flex; flex-direction: column; width: 100%; `, rootOutlined: css` overflow: hidden; border: 1px solid ${cssVar.colorBorderSecondary}; border-radius: ${cssVar.borderRadiusLG}; `, trigger: css` cursor: pointer; user-select: none; display: flex; flex: 1; gap: 8px; align-items: center; min-width: 0; border: 0; border-radius: inherit; font: inherit; font-size: 14px; font-weight: 500; color: ${cssVar.colorText}; text-align: start; background: none; outline: none; &:focus-visible { outline: 2px solid ${cssVar.colorPrimaryBorder}; outline-offset: -2px; } &[data-disabled] { cursor: not-allowed; color: ${cssVar.colorTextDisabled}; } `, triggerBorderless: css` padding-block: 8px; padding-inline: var(--accordion-hover-inset, 8px); `, triggerOutlined: css` padding-block: 12px; padding-inline: 16px; ` })); const rootVariants = cva(styles.root, { defaultVariants: { variant: "borderless" }, variants: { variant: { borderless: null, outlined: styles.rootOutlined } } }); const itemVariants = cva(styles.item, { defaultVariants: { variant: "borderless" }, variants: { variant: { borderless: null, outlined: styles.itemOutlined } } }); const headerVariants = cva(styles.header, { defaultVariants: { variant: "borderless" }, variants: { variant: { borderless: styles.headerBorderless, outlined: null } } }); const triggerVariants = cva(styles.trigger, { defaultVariants: { variant: "borderless" }, variants: { variant: { borderless: styles.triggerBorderless, outlined: styles.triggerOutlined } } }); const indicatorVariants = cva(styles.indicator, { defaultVariants: { placement: "start" }, variants: { placement: { end: styles.indicatorEnd, start: styles.indicatorStart } } }); const contentVariants = cva(styles.content, { compoundVariants: [{ class: styles.contentIndent, indent: true, variant: "borderless" }, { class: styles.contentIndentOutlined, indent: true, variant: "outlined" }], defaultVariants: { indent: true, variant: "borderless" }, variants: { indent: { false: null, true: null }, variant: { borderless: styles.contentBorderless, outlined: styles.contentOutlined } } }); const actionVariants = cva(styles.action, { defaultVariants: { alwaysVisible: false, variant: "borderless" }, variants: { alwaysVisible: { false: null, true: styles.actionAlwaysVisible }, variant: { borderless: styles.actionBorderless, outlined: styles.actionOutlined } } }); //#endregion export { actionVariants, contentVariants, headerVariants, indicatorVariants, itemVariants, rootVariants, styles, triggerVariants }; //# sourceMappingURL=style.mjs.map