@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 9.71 kB
Source Map (JSON)
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Drawer/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n backdrop: css`\n position: fixed;\n z-index: 1200;\n inset: 0;\n\n background: ${cssVar.colorBgMask};\n\n transition: opacity 180ms cubic-bezier(0.32, 0.72, 0, 1);\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n }\n `,\n\n popup: css`\n pointer-events: none;\n\n position: fixed;\n z-index: 1201;\n\n display: flex;\n\n /* clamp here rather than on the panel, so an oversized size prop shrinks the\n box instead of detaching the panel from its anchored edge */\n max-width: 100dvw;\n max-height: 100dvh;\n `,\n\n popupLeft: css`\n inset-block: 0;\n inset-inline-start: 0;\n `,\n\n popupRight: css`\n inset-block: 0;\n inset-inline-end: 0;\n `,\n\n popupTop: css`\n inset-block-start: 0;\n inset-inline: 0;\n `,\n\n popupBottom: css`\n inset-block-end: 0;\n inset-inline: 0;\n `,\n\n panel: css`\n pointer-events: auto;\n\n position: relative;\n\n /* push offset rides on CSS vars so [data-starting-style] can override the whole transform */\n transform: translate(var(--drawer-push-x, 0), var(--drawer-push-y, 0));\n\n overflow: hidden;\n display: flex;\n flex: 1;\n flex-direction: column;\n\n box-sizing: border-box;\n min-width: 0;\n min-height: 0;\n\n /* Container, not elevated: the antd-based Drawer paints its panel on container, and in dark\n themes elevated is a visibly lighter step — the two drawers must read as the same surface. */\n background: ${cssVar.colorBgContainer};\n\n /* Geometry and alphas are antd's boxShadowDrawer{Left,Right,Up,Down} verbatim, so both drawers\n cast identically. antd builds those by scaling colorShadow's *own* alpha by 8/12/5%, and\n colorShadow flips from opaque black to rgba(255,255,255,0.2) in dark — hence the color-mix\n against the raw var rather than a literal black (colorShadow has no AliasToken typing, so\n cssVar cannot reach it). An edge-anchored panel casts along its placement axis rather than\n downward like a centred dialog would: direction classes set the sign, weight classes scale\n the alpha, so the two compose without a class per combination. */\n box-shadow:\n calc(var(--drawer-cast-x, 0) * 6px) calc(var(--drawer-cast-y, 0) * 6px) 16px 0\n color-mix(\n in srgb,\n var(--ant-color-shadow, #000) calc(8% * var(--drawer-cast-alpha, 1)),\n transparent\n ),\n calc(var(--drawer-cast-x, 0) * 3px) calc(var(--drawer-cast-y, 0) * 3px) 6px -4px\n color-mix(\n in srgb,\n var(--ant-color-shadow, #000) calc(12% * var(--drawer-cast-alpha, 1)),\n transparent\n ),\n calc(var(--drawer-cast-x, 0) * 9px) calc(var(--drawer-cast-y, 0) * 9px) 28px 8px\n color-mix(\n in srgb,\n var(--ant-color-shadow, #000) calc(5% * var(--drawer-cast-alpha, 1)),\n transparent\n );\n\n transition: transform 300ms cubic-bezier(0.32, 0.72, 0, 1);\n `,\n\n panelLeft: css`\n --drawer-cast-x: 1;\n\n border-inline-end: var(--drawer-edge-width, 1px) solid ${cssVar.colorBorder};\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateX(-100%);\n }\n `,\n\n panelRight: css`\n --drawer-cast-x: -1;\n\n border-inline-start: var(--drawer-edge-width, 1px) solid ${cssVar.colorBorder};\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateX(100%);\n }\n `,\n\n panelTop: css`\n --drawer-cast-y: 1;\n\n border-block-end: var(--drawer-edge-width, 1px) solid ${cssVar.colorBorder};\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(-100%);\n }\n `,\n\n panelBottom: css`\n --drawer-cast-y: -1;\n\n border-block-start: var(--drawer-edge-width, 1px) solid ${cssVar.colorBorder};\n\n &[data-starting-style],\n &[data-ending-style] {\n transform: translateY(100%);\n }\n `,\n\n /* Only the edges facing content get rounded; the anchored edge stays flush with the viewport.\n Kept apart from the direction classes so a flush panel can drop the radius by omitting the\n class rather than by out-specifying it. */\n panelRoundedLeft: css`\n border-start-end-radius: 12px;\n border-end-end-radius: 12px;\n `,\n\n panelRoundedRight: css`\n border-start-start-radius: 12px;\n border-end-start-radius: 12px;\n `,\n\n panelRoundedTop: css`\n border-end-start-radius: 12px;\n border-end-end-radius: 12px;\n `,\n\n panelRoundedBottom: css`\n border-start-start-radius: 12px;\n border-start-end-radius: 12px;\n `,\n\n /* Filling the viewport leaves nothing to cast onto or to divide from — the shadow and the edge\n rule would only dirty the seam against the viewport. */\n panelFlush: css`\n --drawer-cast-alpha: 0;\n --drawer-edge-width: 0;\n `,\n\n /* Without a backdrop the panel has to earn its separation from live content behind it. */\n panelBoosted: css`\n --drawer-cast-alpha: 1.75;\n `,\n\n /* A pushed ancestor has receded behind its child; stacking full-weight casts would silt up. */\n panelRecessed: css`\n --drawer-cast-alpha: 0.5;\n `,\n\n header: css`\n display: flex;\n flex: none;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n min-height: 56px;\n padding-block: 12px;\n padding-inline: 16px;\n border-block-end: 1px solid ${cssVar.colorSplit};\n `,\n\n containerInner: css`\n display: flex;\n flex: 1;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n width: 100%;\n margin-inline: auto;\n `,\n\n containerInnerFooter: css`\n justify-content: flex-end;\n `,\n\n title: css`\n margin: 0;\n\n font-size: 17px;\n font-weight: 600;\n line-height: 1.4;\n color: ${cssVar.colorText};\n letter-spacing: -0.005em;\n `,\n\n extra: css`\n display: flex;\n flex: none;\n gap: 4px;\n align-items: center;\n\n margin-inline-end: -4px;\n `,\n\n extraFloating: css`\n position: absolute;\n z-index: 1;\n inset-block-start: 12px;\n inset-inline-end: 12px;\n\n margin-inline-end: 0;\n `,\n\n close: css`\n cursor: pointer;\n\n position: relative;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 8px;\n\n color: ${cssVar.colorTextTertiary};\n\n background: transparent;\n\n transition:\n color 160ms cubic-bezier(0.32, 0.72, 0, 1),\n background 160ms cubic-bezier(0.32, 0.72, 0, 1),\n transform 160ms cubic-bezier(0.32, 0.72, 0, 1);\n\n /* Restores the 40px target the 32px visual box gives up, without nudging the header layout. */\n &::after {\n content: '';\n position: absolute;\n inset: -4px;\n }\n\n &:hover {\n transform: scale(1.04);\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ${cssVar.colorPrimaryBorder};\n }\n `,\n\n content: css`\n overflow: hidden auto;\n display: flex;\n flex: 1;\n min-height: 0;\n `,\n\n bodyContent: css`\n display: flex;\n flex-direction: column;\n\n width: 100%;\n min-height: 100%;\n margin-inline: auto;\n padding-block: 12px;\n padding-inline: 16px;\n `,\n\n contentSidebar: css`\n overflow: hidden;\n `,\n\n bodyContentSidebar: css`\n flex-direction: row;\n height: 100%;\n min-height: 0;\n padding: 0;\n `,\n\n sidebar: css`\n overflow: hidden auto;\n flex: none;\n\n padding-block: 12px;\n padding-inline: 16px;\n border-inline-end: 1px solid ${cssVar.colorBorderSecondary};\n\n background: ${cssVar.colorBgLayout};\n `,\n\n sidebarContent: css`\n overflow: hidden auto;\n flex: 1;\n\n min-width: 0;\n padding-block: 12px;\n padding-inline: 16px;\n `,\n\n footer: css`\n display: flex;\n flex: none;\n gap: 8px;\n align-items: center;\n justify-content: flex-end;\n\n padding-block: 12px;\n padding-inline: 16px;\n border-block-start: 1px solid ${cssVar.colorSplit};\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,UAAU,GAAG;;;;;kBAKG,OAAO,YAAY;;;;;;;;;CAUnC,OAAO,GAAG;;;;;;;;;;;;;CAcV,WAAW,GAAG;;;;CAKd,YAAY,GAAG;;;;CAKf,UAAU,GAAG;;;;CAKb,aAAa,GAAG;;;;CAKhB,OAAO,GAAG;;;;;;;;;;;;;;;;;;;kBAmBM,OAAO,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxC,WAAW,GAAG;;;6DAG6C,OAAO,YAAY;;;;;;;CAQ9E,YAAY,GAAG;;;+DAG8C,OAAO,YAAY;;;;;;;CAQhF,UAAU,GAAG;;;4DAG6C,OAAO,YAAY;;;;;;;CAQ7E,aAAa,GAAG;;;8DAG4C,OAAO,YAAY;;;;;;;CAW/E,kBAAkB,GAAG;;;;CAKrB,mBAAmB,GAAG;;;;CAKtB,iBAAiB,GAAG;;;;CAKpB,oBAAoB,GAAG;;;;CAOvB,YAAY,GAAG;;;;CAMf,cAAc,GAAG;;;CAKjB,eAAe,GAAG;;;CAIlB,QAAQ,GAAG;;;;;;;;;;kCAUqB,OAAO,WAAW;;CAGlD,gBAAgB,GAAG;;;;;;;;;;CAWnB,sBAAsB,GAAG;;;CAIzB,OAAO,GAAG;;;;;;aAMC,OAAO,UAAU;;;CAI5B,OAAO,GAAG;;;;;;;;CASV,eAAe,GAAG;;;;;;;;CASlB,OAAO,GAAG;;;;;;;;;;;;;;;aAeC,OAAO,kBAAkB;;;;;;;;;;;;;;;;;;eAkBvB,OAAO,UAAU;oBACZ,OAAO,mBAAmB;;;;;;;;;8BAShB,OAAO,mBAAmB;;;CAItD,SAAS,GAAG;;;;;;CAOZ,aAAa,GAAG;;;;;;;;;;CAWhB,gBAAgB,GAAG;;;CAInB,oBAAoB,GAAG;;;;;;CAOvB,SAAS,GAAG;;;;;;mCAMqB,OAAO,qBAAqB;;kBAE7C,OAAO,cAAc;;CAGrC,gBAAgB,GAAG;;;;;;;;CASnB,QAAQ,GAAG;;;;;;;;;oCASuB,OAAO,WAAW;;AAEtD,EAAE"}