feat: add toggle buttons for boolean features in matrix editor
- Boolean features now show as visual toggle buttons (AN/AUS) - Desktop: compact toggle (✓ AN / ✗ AUS) - Mobile: full-width toggle (✓ Aktiviert / ✗ Deaktiviert) - Prevents invalid values for boolean features - Green when enabled, gray when disabled Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8bb5d85c16
commit
7d6d9dabf2
|
|
@ -331,6 +331,36 @@ export default function AdminTierLimitsPage() {
|
||||||
const currentValue = getCurrentValue(tier.id, feature.id)
|
const currentValue = getCurrentValue(tier.id, feature.id)
|
||||||
const isChanged = `${tier.id}:${feature.id}` in changes && changes[`${tier.id}:${feature.id}`].value !== ''
|
const isChanged = `${tier.id}:${feature.id}` in changes && changes[`${tier.id}:${feature.id}`].value !== ''
|
||||||
|
|
||||||
|
// Boolean features: Toggle button
|
||||||
|
if (feature.limit_type === 'boolean') {
|
||||||
|
const isEnabled = currentValue !== 0 && currentValue !== '0'
|
||||||
|
return (
|
||||||
|
<td key={`${tier.id}-${feature.id}`} style={{
|
||||||
|
textAlign: 'center', padding: 8,
|
||||||
|
background: isChanged ? 'var(--accent-light)' : 'transparent'
|
||||||
|
}}>
|
||||||
|
<button
|
||||||
|
onClick={() => handleChange(tier.id, feature.id, isEnabled ? '0' : '1')}
|
||||||
|
style={{
|
||||||
|
padding: '6px 16px',
|
||||||
|
border: `2px solid ${isEnabled ? 'var(--accent)' : 'var(--border)'}`,
|
||||||
|
borderRadius: 20,
|
||||||
|
background: isEnabled ? 'var(--accent)' : 'var(--surface)',
|
||||||
|
color: isEnabled ? 'white' : 'var(--text3)',
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: 600,
|
||||||
|
cursor: 'pointer',
|
||||||
|
transition: 'all 0.2s',
|
||||||
|
minWidth: 70
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{isEnabled ? '✓ AN' : '✗ AUS'}
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count features: Text input
|
||||||
return (
|
return (
|
||||||
<td key={`${tier.id}-${feature.id}`} style={{
|
<td key={`${tier.id}-${feature.id}`} style={{
|
||||||
textAlign: 'center', padding: 8,
|
textAlign: 'center', padding: 8,
|
||||||
|
|
@ -411,6 +441,34 @@ function FeatureMobileCard({ feature, tiers, getCurrentValue, handleChange, chan
|
||||||
const currentValue = getCurrentValue(tier.id, feature.id)
|
const currentValue = getCurrentValue(tier.id, feature.id)
|
||||||
const isChanged = `${tier.id}:${feature.id}` in changes && changes[`${tier.id}:${feature.id}`].value !== ''
|
const isChanged = `${tier.id}:${feature.id}` in changes && changes[`${tier.id}:${feature.id}`].value !== ''
|
||||||
|
|
||||||
|
// Boolean features: Toggle button
|
||||||
|
if (feature.limit_type === 'boolean') {
|
||||||
|
const isEnabled = currentValue !== 0 && currentValue !== '0'
|
||||||
|
return (
|
||||||
|
<div key={tier.id} className="form-row" style={{ marginBottom: 8, alignItems: 'center' }}>
|
||||||
|
<label className="form-label" style={{ fontSize: 12 }}>{tier.name}</label>
|
||||||
|
<button
|
||||||
|
onClick={() => handleChange(tier.id, feature.id, isEnabled ? '0' : '1')}
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
padding: '8px 16px',
|
||||||
|
border: `2px solid ${isEnabled ? 'var(--accent)' : 'var(--border)'}`,
|
||||||
|
borderRadius: 20,
|
||||||
|
background: isEnabled ? 'var(--accent)' : 'var(--surface)',
|
||||||
|
color: isEnabled ? 'white' : 'var(--text3)',
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: 600,
|
||||||
|
cursor: 'pointer',
|
||||||
|
transition: 'all 0.2s'
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{isEnabled ? '✓ Aktiviert' : '✗ Deaktiviert'}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count features: Text input
|
||||||
return (
|
return (
|
||||||
<div key={tier.id} className="form-row" style={{ marginBottom: 8 }}>
|
<div key={tier.id} className="form-row" style={{ marginBottom: 8 }}>
|
||||||
<label className="form-label" style={{ fontSize: 12 }}>{tier.name}</label>
|
<label className="form-label" style={{ fontSize: 12 }}>{tier.name}</label>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user