mirror of
https://github.com/we-promise/sure.git
synced 2026-07-24 10:45:23 +00:00
fix(settings/providers): drop colour palette + filter polish + drawer warnings
Round of design-feedback fixes. Provider chips - Drop the per-provider raw Tailwind palette (bg-blue-600 etc.) from Provider::Metadata. All cards + drawer logo lock-up now use bg-surface-inset + text-primary, matching the design's §04 "drop colour entirely" recommendation. Solves the long-standing §01 BLOCKER without externalising brand assets. Re-introducing logos later just means an optional logo_svg: field on metadata. - ProviderCard component drops the `logo_bg:` parameter; the chip is now styled in the template. Filter / search - "Available · N" count and the empty-filter state now update client-side as the chip filter and free-text search narrow the grid (new `count` Stimulus target + dedicated update path). - Empty-filter state now offers a Clear filters button that resets both the search input and the active chip in one click. - Search placeholder drops the drifting "Search 9 providers" count for plain "Search providers" — the section heading carries the number. - Chip labels normalised to plural where natural: "Banks · Crypto · Investments" (Crypto stays as the mass noun). Drawer copy / treatment - "IP Whitelisting Required" → "IP whitelisting required" (DS sentence-case). - Binance "do NOT enable withdrawal permissions" lifted out of inline red-text into a proper bg-warning-50 border-warning-200 alert block with an alert-triangle icon. Matches the api_keys / hosting alert pattern. - SnapTrade free-tier inline alert-triangle now uses `size: "sm"` so the icon stops rendering at 20px next to 14px body text. Spacing - Group-heading margin top bumped 5 → 6 (20→24px) so the eyebrow has more breathing room above the search bar.
This commit is contained in:
committed by
Guillem Arias
parent
8c961958b4
commit
6abceb07ff
@@ -2,8 +2,10 @@ import { Controller } from "@hotwired/stimulus";
|
||||
|
||||
// Connects to data-controller="providers-filter"
|
||||
// Filters provider cards by free-text query and a chip-selected kind.
|
||||
// Updates the visible-count target on the section heading and toggles
|
||||
// an empty-state target when no card matches.
|
||||
export default class extends Controller {
|
||||
static targets = ["input", "chip", "card", "empty"];
|
||||
static targets = ["input", "chip", "card", "empty", "count"];
|
||||
static values = { kind: { type: String, default: "all" } };
|
||||
|
||||
connect() {
|
||||
@@ -29,6 +31,10 @@ export default class extends Controller {
|
||||
if (visible) visibleCount++;
|
||||
});
|
||||
|
||||
if (this.hasCountTarget) {
|
||||
this.countTarget.textContent = visibleCount;
|
||||
}
|
||||
|
||||
if (this.hasEmptyTarget) {
|
||||
this.emptyTarget.classList.toggle("hidden", visibleCount > 0);
|
||||
}
|
||||
@@ -40,6 +46,14 @@ export default class extends Controller {
|
||||
this.filter();
|
||||
}
|
||||
|
||||
clear() {
|
||||
if (this.hasInputTarget) this.inputTarget.value = "";
|
||||
this.kindValue = "all";
|
||||
this.syncChipState();
|
||||
this.filter();
|
||||
if (this.hasInputTarget) this.inputTarget.focus();
|
||||
}
|
||||
|
||||
syncChipState() {
|
||||
if (!this.hasChipTarget) return;
|
||||
this.chipTargets.forEach((chip) => {
|
||||
|
||||
Reference in New Issue
Block a user