Repository navigation
refactor(dashboard): lote 8 — cache, media-providers, webhooks, log-export, conversations, discovery, runtime, profile, relay, chaos, orchestration, conductor, search-tools on the CI UI Kit (KEA-7886) - #17863
Merged
Conversation
…ring its message (KEA-7886, lote 8)
…kit-lote8 # Conflicts: # src/shared/constants/iconMap.ts
… vi (KEA-7886, lote 8)
…x (card prop typed) (KEA-7886, lote 8)
…ebhook toggle name (KEA-7886, lote 8)
…kit-lote8 # Conflicts: # src/shared/constants/iconMap.ts
… wraps at 390, iconMap imports once (KEA-7886, lote 8)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lote 8 — cache, media-providers, webhooks, log-export, conversations, discovery, runtime, profile, relay, chaos, orchestration, conductor, search-tools on the CI UI Kit (KEA-7886, Task 38)
One commit per screen, plus 4
fix(dashboard)commits:media.serviceKindsAriakey was missing;Checkboxso itscardprop is typed;all_inclusive,military_tech,swords,water,widgets, which were still rendering Material), the Faro chat row wraps at 390, and each Lucide name iniconMap.tsis imported once.Merges
feat/new-uikitup to 74636c4 (lote 3, lote 7, lote 5a and the wave-1 checkpoint). BothiconMap.tsconflicts were resolved as the union, with each Lucide name imported once; where both sides mapped a name, the base's choice was kept.Adapters,
globals.css,layout.tsxandpackages/ui-kit/**are untouched. The only files that change are:src/shared/constants/iconMap.ts(20 names mapped to Lucide);en.json,pt-BR.jsonandvi.json(13 new keys each; vi is included because its parity test pins every en key);_artifacts/)/dashboard/cacheSegmentedControlview switch; 4 tables → kitTable; entries →DataTableShell;Badge,Progress,Skeletoncache/__tests__/CachePage.test.tsx/dashboard/cache/mediaSegmentedControl,Select,Input,Field+Textarea,Alert,Card; endpointcodewraps (break-all)/dashboard/media-providersSelect/Input/Textarea/kitSliderin 9 example cards;ServiceKindTabs→SegmentedControl/embedding(captured as the[kind]row)/dashboard/media-providers/[kind]PageHeader compact(badges ineyebrow),EmptyState,Badge/dashboard/media-providers/[kind]/[id]SectionHeader,EmptyState/dashboard/webhooksPageHeader; labelled iconButtons (toggle: stable name "Enabled" +aria-pressed); deliveries → kitTable; wizardInput/CheckboxGroup/Toggle;Alert/dashboard/log-exportField+Textarea,Select,PageHeader,Alert/dashboard/conversationsModal; list → kitTable;Badge/dashboard/discoveryTable+Badge;PageHeader;Alertdiscovery/__tests__/DiscoveryPageClient.test.tsx/dashboard/runtimeSelect,Button, kitTable,SectionHeader/dashboard/profileModal; tier/rarity → tokensprofile-badge-dialog,profile-hidden-badge-confidentiality/dashboard/relayPageHeader,Input,Button,EmptyState/dashboard/chaosToggle,Input,Textarea, kitRadioGroup,Button/dashboard/orchestrationTabs; history → kitTable; drawer → kitSheet;CheckboxorchestrationDrawer,orchestrationDrawerRepeat,orchestrationHistoryTab/dashboard/conductorPageHeader;Input/Button/Checkbox/dashboard/search-toolsTabs(ids/testids kept);aria-pressedtoggles; raw overlay →Modal; Compare → kitCheckboxGroupsearch-tools-scrape-result,search-tools-compare-tabThe realigned tests keep the same assertion on the new DOM: portal queries, the kit tablist role, a
ResizeObserverstub for kitTable, Lucidedata-icon,aria-pressed/checked, and a 1 ms tick for Radix's focus restore. Nothing is skipped and no assertion is dropped.P6 greps (lote directories, non-test
.tsx)Validation
npm run lint -- --concurrency=6npm run check:dashboard-typechecknpm run typecheck:corenpm run buildtests/e2e/search-tools-studio.spec.ts(spec §6)icon-map-coverage+i18n-vi-completenesscheck:ui-icu/dashboard/media-providersis a server redirect to/embedding); 0 page overflow, 0 code overflow, 0 Material, 0 error boundaries except as noted belowcheck:dashboard-typecheck+typecheck:coretests/e2e/a11y.spec.tsdoes not cover any lote-8 route (it only checks providers and settings), so the smoke runs axe (wcag2a/2aa/21a/21aa) on every lote route instead.Smoke findings:
/dashboard/profilehascolor-contrast(serious) on 36 nodes. These are the locked badge tiles, which useopacity-50 grayscale; that styling is identical in the base (profile/page.tsx) and is a design decision about how locked badges look. It is listed under pendência 11, not changed here.buttons found by the probe: runtime 4 (KPI filter tiles), search-tools 3 (disclosure headers), profile 23 (badge tiles). All of them are among the commented native elements.Declared deviations
ReasoningCacheTabstays on plain kitTable, notDataTableShell. Its tables have no filter, search or pagination, so the shell would add an empty toolbar.GuardedAction+Dialog(cache spec §4). It was a one-click action before and is now a one-click dangerButton(loading state, disabled while busy). Adding a confirmation step changes behaviour, which is outside this restyle, so it is left for a follow-up.RuntimePageClienthas 53var(--color-*)/color-mix(var(--color-*))values. They are JS inline-style values (chart and status tones) with no utility alternative, which is the pattern accepted in lote 1. They are not--ci-*.Pendências
Progresshas no tone and does not passaria-labelthrough. The cache hit-rate bar stays hand-rolled on tokens;LinearMeterwraps the kitProgressinaria-hiddenand shows the value as text.Alertwithpersistentalways renders a dismiss button whose default label is English. Every lote-8 Alert passesdismissLabel+onDismiss. Missing:dismissible={false}.DataTableShellhas an Englisharia-labelon the toolbar and an English default result label; lote 8 avoids both props.Sheetclose button is English. The orchestration drawer usesshowClose={false}and its own translated close button.scrollbarLabel="Conversations"), chaos fallbacks, cache trends and reasoning stats, runtime "Layer N", search-tools provider status, relay "/min" and "/day".DataTableShell(it is a card stack with expandable delivery logs); log-export destinations →Switch; profile →Avatar/SaveChangesBar(the page has no form); runtime →StatRow(no such primitive); relay →Stat.PageHeader, because the shell header already renders the routeh1(lote-1 ruling).warning; the label text still tells them apart.text-primaryonbg-primary/10chips (webhooks step numbers, tutorial numbers) is left as is, per controller ruling 1.color-contrast× 36): theopacity-50 grayscaleon locked tiles comes from the base and needs a design decision.