diff --git a/components/bounty-form.js b/components/bounty-form.js
index 7d0696e3..41c8da17 100644
--- a/components/bounty-form.js
+++ b/components/bounty-form.js
@@ -10,6 +10,7 @@ import { SubSelectInitial } from './sub-select-form'
import CancelButton from './cancel-button'
import { useCallback } from 'react'
import { normalizeForwards } from '../lib/form'
+import { MAX_TITLE_LENGTH } from '../lib/constants'
export function BountyForm ({
item,
@@ -98,7 +99,14 @@ export function BountyForm ({
storageKeyPrefix={item ? undefined : 'bounty'}
>
{children}
-
+
sats}
diff --git a/components/discussion-form.js b/components/discussion-form.js
index 08b15575..00b5ec79 100644
--- a/components/discussion-form.js
+++ b/components/discussion-form.js
@@ -14,6 +14,7 @@ import { SubSelectInitial } from './sub-select-form'
import CancelButton from './cancel-button'
import { useCallback } from 'react'
import { normalizeForwards } from '../lib/form'
+import { MAX_TITLE_LENGTH } from '../lib/constants'
export function DiscussionForm ({
item, sub, editThreshold, titleLabel = 'title',
@@ -101,6 +102,7 @@ export function DiscussionForm ({
})
}
}}
+ maxLength={MAX_TITLE_LENGTH}
/>
)}
+ {props.maxLength && (
+
+ {`${numWithUnits(props.maxLength - (field.value || '').length, { abbreviate: false, unitSingular: 'character', unitPlural: 'characters' })} remaining`}
+
+ )}
>
)
}
diff --git a/components/job-form.js b/components/job-form.js
index a710fb3b..938c515b 100644
--- a/components/job-form.js
+++ b/components/job-form.js
@@ -17,6 +17,7 @@ import Avatar from './avatar'
import ActionTooltip from './action-tooltip'
import { jobSchema } from '../lib/validate'
import CancelButton from './cancel-button'
+import { MAX_TITLE_LENGTH } from '../lib/constants'
function satsMin2Mo (minute) {
return minute * 30 * 24 * 60
@@ -116,6 +117,7 @@ export default function JobForm ({ item, sub }) {
required
autoFocus
clear
+ maxLength={MAX_TITLE_LENGTH}
/>
: null}
+ maxLength={MAX_POLL_CHOICE_LENGTH}
/>