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 | ||
|  |  */ |