diff options
author | bobzel <zzzman@gmail.com> | 2025-03-10 16:13:04 -0400 |
---|---|---|
committer | bobzel <zzzman@gmail.com> | 2025-03-10 16:13:04 -0400 |
commit | b7989dded8bb001876de6cbca59bf77935f0daf7 (patch) | |
tree | 0dba0665674db7bb84770833df0a4100d0520701 /packages/components/src/global/globalUtils.tsx | |
parent | 4979415d4604d280e81a162bf9a9d39c731d3738 (diff) | |
parent | 5bf944035c0ba94ad15245416f51ca0329a51bde (diff) |
Merge branch 'master' into alyssa-starter
Diffstat (limited to 'packages/components/src/global/globalUtils.tsx')
-rw-r--r-- | packages/components/src/global/globalUtils.tsx | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/packages/components/src/global/globalUtils.tsx b/packages/components/src/global/globalUtils.tsx new file mode 100644 index 000000000..0f1e0adbc --- /dev/null +++ b/packages/components/src/global/globalUtils.tsx @@ -0,0 +1,93 @@ +import { Size } from './globalEnums' +import Color from 'color'; + +export interface ILocation { + top: number + left: number + width: number + height: number + override?: 'left' | 'bottom' | 'top' | 'right' +} + +export const getFormLabelSize = ( + size: Size | undefined, +) => { + switch (size) { + case Size.XSMALL: + return '7px' + case Size.SMALL: + return '10px' + case Size.MEDIUM: + return '13px' + case Size.LARGE: + return '14px' + default: + return '10px' + } +} + +export const getFontSize = ( + size: Size | undefined, + icon?: boolean +) => { + switch (size) { + case Size.XSMALL: + if (icon) return '11px' + return '9px' + case Size.SMALL: + if (icon) return '15px' + return '11px' + case Size.MEDIUM: + if (icon) return '17px' + return '14px' + case Size.LARGE: + if (icon) return '22px' + return '17px' + default: + if (icon) return '15px' + return '12px' + } +} + +export const getHeight = ( + height: number | undefined, + size: Size | undefined +) => { + if (height) return height + switch (size) { + case Size.XSMALL: + return 20 + case Size.SMALL: + return 30 + case Size.MEDIUM: + return 40 + case Size.LARGE: + return 50 + default: + return 30 + } +} + +export const colorConvert = (color: any) => { + try { + return color ? Color(color.toLowerCase()) : Color('transparent') + } catch (e) { + console.log('COLOR error:', e) + return Color('red') + } +} + +export const isDark = (color: any): boolean => { + if (color === undefined) return false + if (color === 'transparent') return false + if (color.startsWith?.('linear')) return false + const nonAlphaColor = color.startsWith('#') + ? (color as string).substring(0, 7) + : color.startsWith('rgba') + ? color.replace(/,.[^,]*\)/, ')').replace('rgba', 'rgb') + : color + const col = colorConvert(nonAlphaColor).rgb() + const colsum = col.red() + col.green() + col.blue() + if (colsum / col.alpha() > 400 || col.alpha() < 0.25) return false + else return true +} |