Skip to content

Commit 47c170e

Browse files
committed
refactor(dashboard): render unset rate card rows as the feature dropdown
A row with no feature is just the FeatureSelectDropdown plus remove, instead of an accordion header wrapping a second Select feature placeholder. The accordion treatment starts once a feature is chosen.
1 parent 0a302b1 commit 47c170e

1 file changed

Lines changed: 34 additions & 25 deletions

File tree

vite/src/views/products/features/credit-systems/components/CreditRateCardRow.tsx

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,32 @@ export function CreditRateCardRow({
7373
),
7474
);
7575

76+
if (!selectedFeature) {
77+
return (
78+
<div className="flex items-center gap-2">
79+
<div className="min-w-0 flex-1">
80+
<FeatureSelectDropdown
81+
value={item.metered_feature_id}
82+
onValueChange={(metered_feature_id) =>
83+
onChange({ ...item, metered_feature_id })
84+
}
85+
availableFeatures={availableFeatures}
86+
allFeatures={allFeatures}
87+
/>
88+
</div>
89+
<IconButton
90+
aria-label="Remove rate card item"
91+
type="button"
92+
variant="skeleton"
93+
iconOrientation="center"
94+
className="shrink-0 text-tertiary-foreground hover:text-red-500"
95+
icon={<TrashIcon size={12} />}
96+
onClick={onRemove}
97+
/>
98+
</div>
99+
);
100+
}
101+
76102
return (
77103
<div
78104
className={cn(
@@ -87,20 +113,14 @@ export function CreditRateCardRow({
87113
onClick={onToggle}
88114
className="flex h-full min-w-0 flex-1 cursor-pointer select-none items-center gap-2 rounded-lg px-2 text-left"
89115
>
90-
{selectedFeature ? (
91-
<>
92-
<span className="shrink-0">
93-
{getFeatureIcon({ feature: selectedFeature })}
94-
</span>
95-
<span className="truncate text-sm">{selectedFeature.name}</span>
96-
{!isExpanded && (
97-
<span className="ml-auto min-w-0 truncate text-tertiary-foreground text-xs">
98-
{creditRateSummary({ item, unitName, isAiChild })}
99-
</span>
100-
)}
101-
</>
102-
) : (
103-
<span className="text-subtle text-sm">Select feature</span>
116+
<span className="shrink-0">
117+
{getFeatureIcon({ feature: selectedFeature })}
118+
</span>
119+
<span className="truncate text-sm">{selectedFeature.name}</span>
120+
{!isExpanded && (
121+
<span className="ml-auto min-w-0 truncate text-tertiary-foreground text-xs">
122+
{creditRateSummary({ item, unitName, isAiChild })}
123+
</span>
104124
)}
105125
</button>
106126
<IconButton
@@ -120,17 +140,6 @@ export function CreditRateCardRow({
120140

121141
{isExpanded && (
122142
<div className="flex flex-col gap-2 p-2 pt-0">
123-
{!selectedFeature && (
124-
<FeatureSelectDropdown
125-
value={item.metered_feature_id}
126-
onValueChange={(metered_feature_id) =>
127-
onChange({ ...item, metered_feature_id })
128-
}
129-
availableFeatures={availableFeatures}
130-
allFeatures={allFeatures}
131-
/>
132-
)}
133-
134143
{isMultiTier && showRateCardControls ? (
135144
<>
136145
<CreditTierRows item={item} onChange={onChange} />

0 commit comments

Comments
 (0)