about summary refs log tree commit diff
path: root/src/view/com/composer/char-progress/CharProgress.tsx
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-01-27 00:16:07 -0600
committerPaul Frazee <pfrazee@gmail.com>2023-01-27 00:16:07 -0600
commit99360f7bd90480b0c382014fa7d889aef8c433a4 (patch)
tree0e6d5f734097fcbc3a2c88e3ce43eed1f26eed69 /src/view/com/composer/char-progress/CharProgress.tsx
parent5961c268005eda9c37b26d48fe9f5ae2def9106e (diff)
downloadvoidsky-99360f7bd90480b0c382014fa7d889aef8c433a4.tar.zst
Implement basic web composer
Diffstat (limited to 'src/view/com/composer/char-progress/CharProgress.tsx')
-rw-r--r--src/view/com/composer/char-progress/CharProgress.tsx41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/view/com/composer/char-progress/CharProgress.tsx b/src/view/com/composer/char-progress/CharProgress.tsx
new file mode 100644
index 000000000..d4093064b
--- /dev/null
+++ b/src/view/com/composer/char-progress/CharProgress.tsx
@@ -0,0 +1,41 @@
+import React from 'react'
+import {View} from 'react-native'
+import {Text} from '../../util/text/Text'
+// @ts-ignore no type definition -prf
+import ProgressCircle from 'react-native-progress/Circle'
+// @ts-ignore no type definition -prf
+import ProgressPie from 'react-native-progress/Pie'
+import {s, colors} from '../../../lib/styles'
+
+const MAX_TEXT_LENGTH = 256
+const DANGER_TEXT_LENGTH = MAX_TEXT_LENGTH
+
+export function CharProgress({count}: {count: number}) {
+  const progressColor = count > DANGER_TEXT_LENGTH ? '#e60000' : undefined
+  return (
+    <>
+      <Text style={[s.mr10, {color: progressColor}]}>
+        {MAX_TEXT_LENGTH - count}
+      </Text>
+      <View>
+        {count > DANGER_TEXT_LENGTH ? (
+          <ProgressPie
+            size={30}
+            borderWidth={4}
+            borderColor={progressColor}
+            color={progressColor}
+            progress={Math.min((count - MAX_TEXT_LENGTH) / MAX_TEXT_LENGTH, 1)}
+          />
+        ) : (
+          <ProgressCircle
+            size={30}
+            borderWidth={1}
+            borderColor={colors.gray2}
+            color={progressColor}
+            progress={count / MAX_TEXT_LENGTH}
+          />
+        )}
+      </View>
+    </>
+  )
+}