aboutsummaryrefslogtreecommitdiff
path: root/packages/components/src/global/globalUtils.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2025-03-10 16:13:04 -0400
committerbobzel <zzzman@gmail.com>2025-03-10 16:13:04 -0400
commitb7989dded8bb001876de6cbca59bf77935f0daf7 (patch)
tree0dba0665674db7bb84770833df0a4100d0520701 /packages/components/src/global/globalUtils.tsx
parent4979415d4604d280e81a162bf9a9d39c731d3738 (diff)
parent5bf944035c0ba94ad15245416f51ca0329a51bde (diff)
Merge branch 'master' into alyssa-starter
Diffstat (limited to 'packages/components/src/global/globalUtils.tsx')
-rw-r--r--packages/components/src/global/globalUtils.tsx93
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
+}