|
|
|
|
@@ -69,7 +69,7 @@ function MessagesTab() {
|
|
|
|
|
|
|
|
|
|
const rows = [
|
|
|
|
|
{ key: 'msgPublic', label: 'Public Messages', desc: 'Public group channels visible to all members.' },
|
|
|
|
|
{ key: 'msgGroup', label: 'Group Messages', desc: 'Private group messages managed by User Groups.' },
|
|
|
|
|
{ key: 'msgGroup', label: 'User Group Messages', desc: 'Private group messages managed by User Groups.' },
|
|
|
|
|
{ key: 'msgPrivateGroup', label: 'Private Group Messages', desc: 'Private multi-member group conversations.' },
|
|
|
|
|
{ key: 'msgU2U', label: 'Private Messages (U2U)', desc: 'One-on-one direct messages between users.' },
|
|
|
|
|
];
|
|
|
|
|
@@ -162,18 +162,18 @@ function TeamManagementTab() {
|
|
|
|
|
const LOGIN_TYPE_OPTIONS = [
|
|
|
|
|
{
|
|
|
|
|
id: 'all_ages',
|
|
|
|
|
label: 'Unrestricted',
|
|
|
|
|
desc: 'No age restrictions. All users interact normally. Default behaviour.',
|
|
|
|
|
label: 'Unrestricted (default)',
|
|
|
|
|
desc: 'No age restrictions. All users interact normally.',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'guardian_only',
|
|
|
|
|
label: 'Guardian Only',
|
|
|
|
|
desc: "Parents are required to add their child's details in their profile. They respond on behalf of the child for events with availability tracking for the players group.",
|
|
|
|
|
desc: "Parents/Guardians login one. Parents/Guardians are required to add their child's details in the \"Family Manager\". They will also respond on behalf of the child for events with availability tracking.",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'mixed_age',
|
|
|
|
|
label: 'Restricted',
|
|
|
|
|
desc: "Parents, or user managers, add the minor's user account to their guardian profile. Minor aged users cannot login until a manager approves the guardian link.",
|
|
|
|
|
desc: "No age restriction for login. Date of Birth is a required field. Parents/Guardians must select their child in the Family Manager to allow them to login. Any private message initiated by any adult to a minor aged user will include the child's designated guardian.",
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
@@ -247,7 +247,7 @@ function LoginTypeTab() {
|
|
|
|
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 12, marginBottom: 16 }}>
|
|
|
|
|
<div>
|
|
|
|
|
<label className="text-sm font-medium" style={{ color: 'var(--text-secondary)', display: 'block', marginBottom: 4 }}>Players Group</label>
|
|
|
|
|
<p style={{ fontSize: 12, color: 'var(--text-tertiary)', marginBottom: 6 }}>The user group that children / aliases are added to.</p>
|
|
|
|
|
<p style={{ fontSize: 12, color: 'var(--text-tertiary)', marginBottom: 6 }}>Select a group that minor aged users will be put in by default. *</p>
|
|
|
|
|
<select className="input" value={playersGroupId} disabled={!canChange}
|
|
|
|
|
onChange={e => setPlayersGroupId(e.target.value)}>
|
|
|
|
|
<option value="">— Select group —</option>
|
|
|
|
|
@@ -256,13 +256,16 @@ function LoginTypeTab() {
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<label className="text-sm font-medium" style={{ color: 'var(--text-secondary)', display: 'block', marginBottom: 4 }}>Guardians Group</label>
|
|
|
|
|
<p style={{ fontSize: 12, color: 'var(--text-tertiary)', marginBottom: 6 }}>Members of this group see the "Add Child" option in their profile.</p>
|
|
|
|
|
<p style={{ fontSize: 12, color: 'var(--text-tertiary)', marginBottom: 6 }}>Members of the selected group will have access to Family Manager. *</p>
|
|
|
|
|
<select className="input" value={guardiansGroupId} disabled={!canChange}
|
|
|
|
|
onChange={e => setGuardiansGroupId(e.target.value)}>
|
|
|
|
|
<option value="">— Select group —</option>
|
|
|
|
|
{userGroups.map(g => <option key={g.id} value={g.id}>{g.name}</option>)}
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
<p style={{ fontSize: 12, color: 'var(--text-tertiary)', marginTop: 4 }}>
|
|
|
|
|
* Open Group Manager to create a different group, if none are suitable in these lists.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
@@ -396,7 +399,7 @@ function RegistrationTab({ onFeaturesChanged }) {
|
|
|
|
|
|
|
|
|
|
// ── Main modal ────────────────────────────────────────────────────────────────
|
|
|
|
|
export default function SettingsModal({ onClose, onFeaturesChanged }) {
|
|
|
|
|
const [tab, setTab] = useState('messages');
|
|
|
|
|
const [tab, setTab] = useState('login-type');
|
|
|
|
|
const [appType, setAppType] = useState('RosterChirp-Chat');
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
@@ -424,9 +427,9 @@ export default function SettingsModal({ onClose, onFeaturesChanged }) {
|
|
|
|
|
<div style={{ marginBottom: 24 }}>
|
|
|
|
|
<label className="text-sm" style={{ color: 'var(--text-tertiary)', display: 'block', marginBottom: 4 }}>SELECT OPTION:</label>
|
|
|
|
|
<select className="input" value={tab} onChange={e => setTab(e.target.value)}>
|
|
|
|
|
<option value="login-type">Login Type</option>
|
|
|
|
|
<option value="messages">Messages</option>
|
|
|
|
|
{isTeam && <option value="team">Tools</option>}
|
|
|
|
|
<option value="login-type">Login Type</option>
|
|
|
|
|
<option value="registration">Registration</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
|