You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
54 lines
1.7 KiB
3 years ago
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.themeGet = exports.default = void 0;
|
||
|
const polished_1 = require("polished");
|
||
|
function themeGet(kind, value, offset) {
|
||
|
return ({ theme }) => {
|
||
|
const themeVal = value ? theme[kind][value] : theme[kind];
|
||
|
if (themeVal && offset) {
|
||
|
let offsetValue;
|
||
|
if (typeof offset === 'string') {
|
||
|
([offsetValue] = polished_1.getValueAndUnit(offset));
|
||
|
}
|
||
|
else {
|
||
|
offsetValue = offset;
|
||
|
}
|
||
|
const [pxValue, unit] = polished_1.getValueAndUnit(themeVal);
|
||
|
return `${pxValue + offsetValue}${unit}`;
|
||
|
}
|
||
|
return themeVal;
|
||
|
};
|
||
|
}
|
||
|
exports.default = themeGet;
|
||
|
exports.themeGet = themeGet;
|
||
|
/**
|
||
|
*
|
||
|
* Handy utility function which simplifies taking values from the {@link Theme}.
|
||
|
*
|
||
|
* ### Example
|
||
|
*
|
||
|
* ```javascript
|
||
|
* import { Box, themeGet } from '@adminjs/design-system'
|
||
|
*
|
||
|
* const myComponent = styled(Box)`
|
||
|
* padding: ${themeGet('space', 'xl')};
|
||
|
* font: ${themeGet('font')};
|
||
|
* margin-top: ${themeGet('space', 'xl', -2)};
|
||
|
*
|
||
|
* margin-bottom: ${(props) => themeGet('space', props.disabled ? 'xl' : 'xxl')(props)};
|
||
|
* `
|
||
|
*
|
||
|
* ```
|
||
|
*
|
||
|
* @param {string} kind One of the keys in the {@link Theme} interface. For example:
|
||
|
* `fontWeights`
|
||
|
* @param {string} [value] Value for the key
|
||
|
* @param {string | number} [offset] optional offset. When you want to take xxl + 2pixels
|
||
|
* you can do this by passing +2 as the offset.
|
||
|
* @return {ThemeFunction} function taking props as an argument
|
||
|
*
|
||
|
* @new in version 3.3
|
||
|
* @function themeGet
|
||
|
* @memberof Theme
|
||
|
*/
|