aboutsummaryrefslogtreecommitdiff
path: root/packages/components/src/global/globalUtils.tsx
diff options
context:
space:
mode:
authoreleanor-park <eleanor_park@brown.edu>2025-01-08 11:15:25 -0500
committereleanor-park <eleanor_park@brown.edu>2025-01-08 11:15:25 -0500
commit8283499ca247da4f283f220d368e5e178c4d79a1 (patch)
treefbf39aa81c7d8e82dd9844d6e14392e6ad78e22d /packages/components/src/global/globalUtils.tsx
parent45e22be891331e2d6a381e988c7abd29af3e1399 (diff)
parent2f7d1f0073943e1eb9e0f34c4459bc0176377697 (diff)
Merge branch 'eleanor-gptdraw' of https://github.com/brown-dash/Dash-Web into eleanor-gptdraw
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..05648a863
--- /dev/null
+++ b/packages/components/src/global/globalUtils.tsx
@@ -0,0 +1,93 @@
+import { Colors, Size } from './globalEnums'
+const Color = require('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
+}