@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 14.4 kB
Source Map (JSON)
{"version":3,"file":"style.mjs","names":["cssVar"],"sources":["../../src/DraggablePanel/style.ts"],"sourcesContent":["import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\n// Layout constants\nconst LAYOUT = {\n offset: 16,\n toggleLength: 54,\n toggleShort: 16,\n};\n\nconst prefixCls = 'ant';\n\nconst prefix = `${prefixCls}-draggable-panel`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n // Base styles - border styles split by showBorder\n const borderStyles = {\n borderBottom: css`\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderBottomNone: css`\n border-block-end-width: 0;\n `,\n borderLeft: css`\n border-inline-start: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderLeftNone: css`\n border-inline-start-width: 0;\n `,\n borderRight: css`\n border-inline-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderRightNone: css`\n border-inline-end-width: 0;\n `,\n borderTop: css`\n border-block-start: 1px solid ${cssVar.colorBorderSecondary};\n `,\n borderTopNone: css`\n border-block-start-width: 0;\n `,\n };\n\n // Position styles\n const float = css`\n position: absolute;\n z-index: 200;\n `;\n\n const floatPositions = {\n bottomFloat: cx(\n float,\n css`\n inset-block-end: 0;\n inset-inline: 0 0;\n width: 100%;\n `,\n ),\n leftFloat: cx(\n float,\n css`\n inset-block: var(--draggable-panel-header-height, 0) 0;\n inset-inline-start: 0;\n height: calc(100% - var(--draggable-panel-header-height, 0px));\n `,\n ),\n rightFloat: cx(\n float,\n css`\n inset-block: var(--draggable-panel-header-height, 0) 0;\n inset-inline-end: 0;\n height: calc(100% - var(--draggable-panel-header-height, 0px));\n `,\n ),\n topFloat: cx(\n float,\n css`\n inset-block-start: var(--draggable-panel-header-height, 0);\n inset-inline: 0 0;\n width: 100%;\n `,\n ),\n };\n\n // Handle styles\n const handleBaseStyle = css`\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n transition: all 0.2s ${cssVar.motionEaseOut};\n }\n `;\n\n const handleHighlightStyle = css`\n &:hover {\n &::before {\n background: ${cssVar.colorPrimaryBorder};\n box-shadow: 0 0 8px color-mix(in srgb, ${cssVar.colorPrimary} 25%, transparent);\n }\n }\n\n &:active {\n &::before {\n background: ${cssVar.colorPrimary} !important;\n }\n }\n `;\n\n const handleStyles = {\n handleBottom: cx(\n `${prefix}-bottom-handle`,\n css`\n &::before {\n inset-block-end: 50%;\n width: 100%;\n height: 2px;\n }\n `,\n ),\n handleLeft: cx(\n `${prefix}-left-handle`,\n css`\n &::before {\n inset-inline-start: 50%;\n width: 2px;\n height: 100%;\n }\n `,\n ),\n handleRight: cx(\n `${prefix}-right-handle`,\n css`\n &::before {\n inset-inline-end: 50%;\n width: 2px;\n height: 100%;\n }\n `,\n ),\n handleRoot: handleBaseStyle,\n handleTop: cx(\n `${prefix}-top-handle`,\n css`\n &::before {\n inset-block-start: 50%;\n width: 100%;\n height: 2px;\n }\n `,\n ),\n };\n\n // Toggle styles - base class with variant for showHandleWideArea\n const toggleRoot = cx(\n `${prefix}-toggle`,\n css`\n position: absolute;\n z-index: 50;\n opacity: 0;\n transition: all 0.2s ${cssVar.motionEaseOut};\n\n &:hover,\n &:active {\n opacity: 1 !important;\n }\n\n > div {\n pointer-events: all;\n cursor: pointer;\n\n position: absolute;\n\n border: 1px solid ${cssVar.colorBorder};\n\n color: ${cssVar.colorTextTertiary};\n\n background: var(--draggable-panel-bg, ${cssVar.colorBgLayout});\n backdrop-filter: blur(8px);\n\n transition: all 0.2s ${cssVar.motionEaseOut};\n\n &:hover {\n color: ${cssVar.colorTextSecondary};\n }\n\n &:active {\n color: ${cssVar.colorText};\n }\n }\n `,\n );\n\n const toggleRootWithWideArea = css`\n pointer-events: all;\n `;\n\n const toggleRootWithoutWideArea = css`\n pointer-events: none;\n `;\n\n const toggleStyles = {\n toggleBottom: cx(\n `${prefix}-toggle-bottom`,\n css`\n inset-block-end: -${LAYOUT.offset}px;\n width: 100%;\n height: ${LAYOUT.toggleShort}px;\n\n > div {\n inset-inline-start: 50%;\n\n width: ${LAYOUT.toggleLength}px;\n height: ${LAYOUT.toggleShort}px;\n margin-inline-start: -27px;\n border-block-start-width: 0;\n border-radius: 0 0 ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG};\n }\n `,\n ),\n toggleLeft: cx(\n `${prefix}-toggle-left`,\n css`\n inset-inline-start: -${LAYOUT.offset}px;\n width: ${LAYOUT.toggleShort}px;\n height: 100%;\n\n > div {\n inset-block-start: 50%;\n\n width: ${LAYOUT.toggleShort}px;\n height: ${LAYOUT.toggleLength}px;\n margin-block-start: -27px;\n border-inline-end-width: 0;\n border-radius: ${cssVar.borderRadiusLG} 0 0 ${cssVar.borderRadiusLG};\n }\n `,\n ),\n toggleRight: cx(\n `${prefix}-toggle-right`,\n css`\n inset-inline-end: -${LAYOUT.offset}px;\n width: ${LAYOUT.toggleShort}px;\n height: 100%;\n\n > div {\n inset-block-start: 50%;\n\n width: ${LAYOUT.toggleShort}px;\n height: ${LAYOUT.toggleLength}px;\n margin-block-start: -27px;\n border-inline-start-width: 0;\n border-radius: 0 ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG} 0;\n }\n `,\n ),\n toggleRoot,\n toggleRootWithWideArea,\n toggleRootWithoutWideArea,\n toggleTop: cx(\n `${prefix}-toggle-top`,\n css`\n inset-block-start: -${LAYOUT.offset}px;\n width: 100%;\n height: ${LAYOUT.toggleShort}px;\n\n > div {\n inset-inline-start: 50%;\n\n width: ${LAYOUT.toggleLength}px;\n height: ${LAYOUT.toggleShort}px;\n margin-inline-start: -27px;\n border-block-end-width: 0;\n border-radius: ${cssVar.borderRadiusLG} ${cssVar.borderRadiusLG} 0 0;\n }\n `,\n ),\n };\n\n // Additional component styles\n const componentStyles = {\n fixed: css`\n position: relative;\n `,\n fullscreen: css`\n position: absolute;\n inset-block: var(--draggable-panel-header-height, 0) 0;\n inset-inline: 0;\n\n width: 100%;\n height: calc(100% - var(--draggable-panel-header-height, 0px));\n\n background: ${cssVar.colorBgContainer};\n `,\n handlerIcon: css`\n transition: all 0.2s ${cssVar.motionEaseOut};\n `,\n panel: cx(\n `${prefix}-fixed`,\n css`\n overflow: hidden;\n background: var(--draggable-panel-bg, ${cssVar.colorBgLayout});\n transition: all 0.2s ${cssVar.motionEaseOut};\n `,\n ),\n root: cx(\n prefix,\n css`\n flex-shrink: 0;\n\n &:hover {\n > .${prefix}-toggle {\n opacity: 1;\n }\n }\n `,\n ),\n };\n\n return {\n ...borderStyles,\n ...floatPositions,\n ...handleStyles,\n handleHighlight: handleHighlightStyle,\n ...toggleStyles,\n ...componentStyles,\n };\n});\n\nexport const handleVariants = cva(styles.handleRoot, {\n variants: {\n placement: {\n bottom: styles.handleBottom,\n left: styles.handleLeft,\n right: styles.handleRight,\n top: styles.handleTop,\n },\n },\n});\n\nexport const panelVariants = cva(styles.root, {\n compoundVariants: [\n {\n class: styles.bottomFloat,\n mode: 'float',\n placement: 'bottom',\n },\n {\n class: styles.topFloat,\n mode: 'float',\n placement: 'top',\n },\n {\n class: styles.leftFloat,\n mode: 'float',\n placement: 'left',\n },\n {\n class: styles.rightFloat,\n mode: 'float',\n placement: 'right',\n },\n // Border styles based on placement, isExpand, and showBorder\n // Note: border is on the opposite side of placement\n // placement 'top' -> borderBottom, placement 'right' -> borderLeft, etc.\n {\n class: styles.borderBottom,\n isExpand: true,\n placement: 'top',\n showBorder: true,\n },\n {\n class: styles.borderBottomNone,\n isExpand: true,\n placement: 'top',\n showBorder: false,\n },\n {\n class: styles.borderLeft,\n isExpand: true,\n placement: 'right',\n showBorder: true,\n },\n {\n class: styles.borderLeftNone,\n isExpand: true,\n placement: 'right',\n showBorder: false,\n },\n {\n class: styles.borderTop,\n isExpand: true,\n placement: 'bottom',\n showBorder: true,\n },\n {\n class: styles.borderTopNone,\n isExpand: true,\n placement: 'bottom',\n showBorder: false,\n },\n {\n class: styles.borderRight,\n isExpand: true,\n placement: 'left',\n showBorder: true,\n },\n {\n class: styles.borderRightNone,\n isExpand: true,\n placement: 'left',\n showBorder: false,\n },\n ],\n defaultVariants: {\n isExpand: false,\n mode: 'fixed',\n placement: 'right',\n showBorder: true,\n },\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n variants: {\n isExpand: {\n false: null,\n true: null,\n },\n mode: {\n fixed: styles.fixed,\n float: null,\n },\n placement: {\n bottom: null,\n left: null,\n right: null,\n top: null,\n },\n showBorder: {\n false: null,\n true: null,\n },\n },\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n});\n\nexport const toggleVariants = cva(styles.toggleRoot, {\n compoundVariants: [\n {\n class: styles.toggleRootWithWideArea,\n showHandleWideArea: true,\n },\n {\n class: styles.toggleRootWithoutWideArea,\n showHandleWideArea: false,\n },\n ],\n defaultVariants: {\n showHandleWideArea: false,\n },\n variants: {\n placement: {\n bottom: styles.toggleTop,\n left: styles.toggleRight,\n right: styles.toggleLeft,\n top: styles.toggleBottom,\n },\n showHandleWideArea: {\n false: null,\n true: null,\n },\n },\n});\n"],"mappings":"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AAW;GACZ;EACD;GACE,OAAO,OAAO;GACd,MAAM;GACN,WAAW;GACZ;EAID;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACD;GACE,OAAO,OAAO;GACd,UAAU;GACV,WAAW;GACX,YAAY;GACb;EACF;CACD,iBAAiB;EACf,UAAU;EACV,MAAM;EACN,WAAW;EACX,YAAY;EACb;CAED,UAAU;EACR,UAAU;GACR,OAAO;GACP,MAAM;GACP;EACD,MAAM;GACJ,OAAO,OAAO;GACd,OAAO;GACR;EACD,WAAW;GACT,QAAQ;GACR,MAAM;GACN,OAAO;GACP,KAAK;GACN;EACD,YAAY;GACV,OAAO;GACP,MAAM;GACP;EACF;CAEF,CAAC;AAEF,MAAa,iBAAiB,IAAI,OAAO,YAAY;CACnD,kBAAkB,CAChB;EACE,OAAO,OAAO;EACd,oBAAoB;EACrB,EACD;EACE,OAAO,OAAO;EACd,oBAAoB;EACrB,CACF;CACD,iBAAiB,EACf,oBAAoB,OACrB;CACD,UAAU;EACR,WAAW;GACT,QAAQ,OAAO;GACf,MAAM,OAAO;GACb,OAAO,OAAO;GACd,KAAK,OAAO;GACb;EACD,oBAAoB;GAClB,OAAO;GACP,MAAM;GACP;EACF;CACF,CAAC"}