fix: clarify mobile slot card hierarchy
Prioritize store identity over booking controls and make card boundaries and booking states easier to scan on mobile.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
fix: compact mobile session header
|
fix: clarify mobile slot card hierarchy
|
||||||
|
|
||||||
Reduce the mobile profile header to a compact identity row and concise actions.
|
Prioritize store identity over booking controls and make card boundaries and
|
||||||
|
booking states easier to scan on mobile.
|
||||||
|
|||||||
@@ -160,16 +160,25 @@
|
|||||||
|
|
||||||
.mobile-config-list__cards {
|
.mobile-config-list__cards {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.75rem;
|
gap: 0.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mobile-config-card {
|
.mobile-config-card {
|
||||||
border: 1px solid #d1d5db;
|
border: 1px solid #94a3b8;
|
||||||
|
border-left-width: 4px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
padding: 0.9rem;
|
padding: 0.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-config-card--active {
|
||||||
|
border-left-color: #15803d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-config-card--inactive {
|
||||||
|
border-left-color: #64748b;
|
||||||
|
}
|
||||||
|
|
||||||
.mobile-config-card__header,
|
.mobile-config-card__header,
|
||||||
.mobile-config-card__switch-row,
|
.mobile-config-card__switch-row,
|
||||||
.mobile-config-card__check-row {
|
.mobile-config-card__check-row {
|
||||||
@@ -179,6 +188,23 @@
|
|||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__header {
|
||||||
|
padding-bottom: 0.8rem;
|
||||||
|
border-bottom: 1px solid #dbe4ee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__title {
|
||||||
|
font-size: 1.0625rem;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__id,
|
||||||
|
.mobile-config-card__slots {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
.mobile-config-card__slots {
|
.mobile-config-card__slots {
|
||||||
margin-top: 0.45rem !important;
|
margin-top: 0.45rem !important;
|
||||||
}
|
}
|
||||||
@@ -200,12 +226,31 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mobile-config-card__switch-row {
|
.mobile-config-card__switch-row {
|
||||||
margin-top: 0.9rem;
|
margin-top: 0;
|
||||||
padding: 0.75rem 0;
|
padding: 0.75rem 0;
|
||||||
border-top: 1px solid #e5e7eb;
|
|
||||||
border-bottom: 1px solid #e5e7eb;
|
border-bottom: 1px solid #e5e7eb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__booking-label,
|
||||||
|
.mobile-config-card__notify-label {
|
||||||
|
color: #374151;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__booking-status {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-config-card--active .mobile-config-card__booking-status {
|
||||||
|
color: #15803d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-config-card--inactive .mobile-config-card__booking-status {
|
||||||
|
color: #64748b;
|
||||||
|
}
|
||||||
|
|
||||||
.mobile-config-card input[type='checkbox'] {
|
.mobile-config-card input[type='checkbox'] {
|
||||||
width: 1.2rem;
|
width: 1.2rem;
|
||||||
height: 1.2rem;
|
height: 1.2rem;
|
||||||
@@ -230,6 +275,13 @@
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__field > span,
|
||||||
|
.mobile-config-card__range > span {
|
||||||
|
color: #64748b;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
.mobile-config-card__core-fields select,
|
.mobile-config-card__core-fields select,
|
||||||
.mobile-config-card__range {
|
.mobile-config-card__range {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
@@ -240,6 +292,12 @@
|
|||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__field-value {
|
||||||
|
color: #1f2937;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
.mobile-config-card__range {
|
.mobile-config-card__range {
|
||||||
align-content: center;
|
align-content: center;
|
||||||
padding: 0.4rem 0.55rem;
|
padding: 0.4rem 0.55rem;
|
||||||
@@ -248,7 +306,8 @@
|
|||||||
.mobile-config-card__range strong {
|
.mobile-config-card__range strong {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
color: #1f2937;
|
color: #1f2937;
|
||||||
font-size: 0.8rem;
|
font-size: 0.875rem;
|
||||||
|
font-weight: 600;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
@@ -265,6 +324,11 @@
|
|||||||
gap: 0.1rem;
|
gap: 0.1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-config-card__check-row small {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
.mobile-config-card__details {
|
.mobile-config-card__details {
|
||||||
margin-top: 0.8rem;
|
margin-top: 0.8rem;
|
||||||
border-top: 1px solid #e5e7eb;
|
border-top: 1px solid #e5e7eb;
|
||||||
|
|||||||
@@ -85,11 +85,15 @@ const MobileConfigList = ({
|
|||||||
const range = entry.desiredDateRange || (entry.desiredDate ? { start: entry.desiredDate, end: entry.desiredDate } : null);
|
const range = entry.desiredDateRange || (entry.desiredDate ? { start: entry.desiredDate, end: entry.desiredDate } : null);
|
||||||
const slots = formatRegularPickup(regularPickupMap?.[entry.id]);
|
const slots = formatRegularPickup(regularPickupMap?.[entry.id]);
|
||||||
return (
|
return (
|
||||||
<article key={entry.id} className="mobile-config-card" data-store-row={entry.id}>
|
<article
|
||||||
|
key={entry.id}
|
||||||
|
className={`mobile-config-card ${entry.active ? 'mobile-config-card--active' : 'mobile-config-card--inactive'}`}
|
||||||
|
data-store-row={entry.id}
|
||||||
|
>
|
||||||
<header className="mobile-config-card__header">
|
<header className="mobile-config-card__header">
|
||||||
<div>
|
<div>
|
||||||
<h3>{entry.label || `Store ${entry.id}`}</h3>
|
<h3 className="mobile-config-card__title">{entry.label || `Store ${entry.id}`}</h3>
|
||||||
<p>#{entry.id}</p>
|
<p className="mobile-config-card__id">#{entry.id}</p>
|
||||||
{slots && <p className="mobile-config-card__slots">Slots: {slots}</p>}
|
{slots && <p className="mobile-config-card__slots">Slots: {slots}</p>}
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a
|
||||||
@@ -109,8 +113,8 @@ const MobileConfigList = ({
|
|||||||
|
|
||||||
<label className="mobile-config-card__switch-row">
|
<label className="mobile-config-card__switch-row">
|
||||||
<span>
|
<span>
|
||||||
<strong>Automatisch buchen</strong>
|
<strong className="mobile-config-card__booking-label">Automatisch buchen</strong>
|
||||||
<small>{entry.active ? 'Aktiv' : 'Inaktiv'}</small>
|
<small className="mobile-config-card__booking-status">{entry.active ? 'Aktiv' : 'Inaktiv'}</small>
|
||||||
</span>
|
</span>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
@@ -121,9 +125,9 @@ const MobileConfigList = ({
|
|||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div className="mobile-config-card__core-fields">
|
<div className="mobile-config-card__core-fields">
|
||||||
<label>
|
<label className="mobile-config-card__field">
|
||||||
<span>Wochentag</span>
|
<span>Wochentag</span>
|
||||||
<select value={entry.desiredWeekday || ''} onChange={(event) => onWeekdayChange(entry.id, event.target.value)}>
|
<select className="mobile-config-card__field-value" value={entry.desiredWeekday || ''} onChange={(event) => onWeekdayChange(entry.id, event.target.value)}>
|
||||||
<option value="">Kein Wochentag</option>
|
<option value="">Kein Wochentag</option>
|
||||||
{weekdays.map((day) => <option key={day} value={day}>{day}</option>)}
|
{weekdays.map((day) => <option key={day} value={day}>{day}</option>)}
|
||||||
</select>
|
</select>
|
||||||
@@ -137,7 +141,7 @@ const MobileConfigList = ({
|
|||||||
<label className="mobile-config-card__check-row">
|
<label className="mobile-config-card__check-row">
|
||||||
<input type="checkbox" checked={!!entry.onlyNotify} onChange={() => onToggleOnlyNotify(entry.id)} />
|
<input type="checkbox" checked={!!entry.onlyNotify} onChange={() => onToggleOnlyNotify(entry.id)} />
|
||||||
<span>
|
<span>
|
||||||
<strong>Nur benachrichtigen</strong>
|
<strong className="mobile-config-card__notify-label">Nur benachrichtigen</strong>
|
||||||
<small>Keinen Slot automatisch buchen</small>
|
<small>Keinen Slot automatisch buchen</small>
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
Reference in New Issue
Block a user