Skip to content

feat(filters): add themed empty state for FiltersSidebar #109

feat(filters): add themed empty state for FiltersSidebar

feat(filters): add themed empty state for FiltersSidebar #109

Status Success
Total duration 5m 3s
Artifacts –

ci.yml

on: pull_request
TypeScript check & production build
19s
TypeScript check & production build
Unit tests (Vitest)
1m 3s
Unit tests (Vitest)
Test coverage
1m 21s
Test coverage
Fit to window
Zoom out
Zoom in

Annotations

30 errors and 4 warnings
src/components/ApiCard.test.tsx > ApiCard status badges and color-blind patterns > renders the degraded status badge with opposite-stripes pattern: src/components/ApiCard.tsx#L589
TypeError: Cannot read properties of undefined (reading 'matches') ❯ src/components/ApiCard.tsx:589:20 ❯ commitHookEffectListMount node_modules/react-dom/cjs/react-dom.development.js:23189:26 ❯ commitPassiveMountOnFiber node_modules/react-dom/cjs/react-dom.development.js:24970:11 ❯ commitPassiveMountEffects_complete node_modules/react-dom/cjs/react-dom.development.js:24930:9 ❯ commitPassiveMountEffects_begin node_modules/react-dom/cjs/react-dom.development.js:24917:7 ❯ commitPassiveMountEffects node_modules/react-dom/cjs/react-dom.development.js:24905:3 ❯ flushPassiveEffectsImpl node_modules/react-dom/cjs/react-dom.development.js:27078:3 ❯ flushPassiveEffects node_modules/react-dom/cjs/react-dom.development.js:27023:14 ❯ node_modules/react-dom/cjs/react-dom.development.js:26808:9 ❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
src/components/ApiCard.test.tsx > ApiCard status badges and color-blind patterns > renders the operational status badge with solid baseline pattern: src/components/ApiCard.tsx#L589
TypeError: Cannot read properties of undefined (reading 'matches') ❯ src/components/ApiCard.tsx:589:20 ❯ commitHookEffectListMount node_modules/react-dom/cjs/react-dom.development.js:23189:26 ❯ commitPassiveMountOnFiber node_modules/react-dom/cjs/react-dom.development.js:24970:11 ❯ commitPassiveMountEffects_complete node_modules/react-dom/cjs/react-dom.development.js:24930:9 ❯ commitPassiveMountEffects_begin node_modules/react-dom/cjs/react-dom.development.js:24917:7 ❯ commitPassiveMountEffects node_modules/react-dom/cjs/react-dom.development.js:24905:3 ❯ flushPassiveEffectsImpl node_modules/react-dom/cjs/react-dom.development.js:27078:3 ❯ flushPassiveEffects node_modules/react-dom/cjs/react-dom.development.js:27023:14 ❯ node_modules/react-dom/cjs/react-dom.development.js:26808:9 ❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
src/components/ApiCard.test.tsx > ApiCard skeleton > applies compact class when density is compact: src/components/ApiCard.test.tsx#L416
AssertionError: expected 'preview-card api-marketplace-card api…' to contain 'api-card--compact' - Expected + Received - api-card--compact + preview-card api-marketplace-card api-card-skeleton ❯ src/components/ApiCard.test.tsx:416:29
src/components/ApiCard.test.tsx > ApiCard skeleton > hides WhyApi placeholder in compact mode: src/components/ApiCard.test.tsx#L410
AssertionError: expected 26 to be less than 24 ❯ src/components/ApiCard.test.tsx:410:30
src/components/ApiCard.test.tsx > ApiCard reduced motion > uses none transition on action buttons when prefers-reduced-motion is set: src/components/ApiCard.test.tsx#L322
AssertionError: expected 0 to be greater than or equal to 2 ❯ src/components/ApiCard.test.tsx:322:35
src/components/ApiCard.test.tsx > ApiCard Reduced Motion Accessibility > respects prefers-reduced-motion and provides a static outline/color fallback on hover: src/utils/format.ts#L33
TypeError: Cannot read properties of undefined (reading 'toFixed') ❯ Module.formatPrice src/utils/format.ts:33:16 ❯ ApiCard src/components/ApiCard.tsx:907:19 ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18 ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13 ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16 ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14 ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12 ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5 ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7 ❯ recoverFromConcurrentError node_modules/react-dom/cjs/react-dom.development.js:25889:20
src/components/ApiCard.test.tsx > ApiCard Reduced Motion Accessibility > renders standard layout without reduced motion: src/utils/format.ts#L33
TypeError: Cannot read properties of undefined (reading 'toFixed') ❯ Module.formatPrice src/utils/format.ts:33:16 ❯ ApiCard src/components/ApiCard.tsx:907:19 ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18 ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13 ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16 ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14 ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12 ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5 ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7 ❯ recoverFromConcurrentError node_modules/react-dom/cjs/react-dom.development.js:25889:20
src/ApiUsage.test.tsx > ApiUsage - Tabular Numerals > applies tabular-nums to all stat-value elements: src/ApiUsage.test.tsx#L92
AssertionError: expected +0 to be 5 // Object.is equality - Expected + Received - 5 + 0 ❯ src/ApiUsage.test.tsx:92:31
src/ApiUsage.test.tsx > ApiUsage - Filter Reset > renders an accessible breadcrumb with the current page announced: src/ApiUsage.test.tsx#L62
TestingLibraryElementError: Unable to find an accessible element with the role "navigation" and name `/breadcrumb/i` There are no accessible roles. But there might be some inaccessible roles. If you wish to access them, then set the `hidden` option to `true`. Learn more about this here: https://testing-library.com/docs/dom-testing-library/api-queries#byrole Ignored nodes: comments, script, style <body> <div> <div aria-busy="true" aria-label="API usage loading shell" class="api-usage-page" > <div aria-hidden="true" style="display: flex; gap: 8px; margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 16px;" /> <span style="color: var(--text-secondary);" > / </span> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 160px; height: 16px;" /> </div> <div aria-hidden="true" class="api-header" style="margin-bottom: 24px;" > <div class="api-header-info" style="display: flex; gap: 16px; align-items: center;" > <div class="api-logo" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 56px; height: 56px; border-radius: 12px;" /> </div> <div style="display: grid; gap: 8px; flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 40%; height: 28px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 60%; height: 16px;" /> </div> </div> <div class="api-header-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 150px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 90px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 110px; height: 36px; border-radius: 8px;" /> </div> </div> <div aria-hidden="true" class="surface api-key-section" style="margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100px; height: 20px; margin-bottom: 16px;" /> <div class="api-key-card" style="padding: 20px;" > <div class="api-key-display" style="display: flex; gap: 12px; align-items: center;" > <div class="key-input-group" style="flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100%; height: 38px; border-radius: 8px;" /> </div> <div class="key-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 38px; border-radius: 8px;"
src/ApiUsage.test.tsx > ApiUsage - Filter Reset > should enable reset button when filters are active and announce reset to screen readers: src/ApiUsage.test.tsx#L49
TestingLibraryElementError: Unable to find an accessible element with the role "button" and name `/Reset Filters/i` There are no accessible roles. But there might be some inaccessible roles. If you wish to access them, then set the `hidden` option to `true`. Learn more about this here: https://testing-library.com/docs/dom-testing-library/api-queries#byrole Ignored nodes: comments, script, style <body> <div> <div aria-busy="true" aria-label="API usage loading shell" class="api-usage-page" > <div aria-hidden="true" style="display: flex; gap: 8px; margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 16px;" /> <span style="color: var(--text-secondary);" > / </span> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 160px; height: 16px;" /> </div> <div aria-hidden="true" class="api-header" style="margin-bottom: 24px;" > <div class="api-header-info" style="display: flex; gap: 16px; align-items: center;" > <div class="api-logo" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 56px; height: 56px; border-radius: 12px;" /> </div> <div style="display: grid; gap: 8px; flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 40%; height: 28px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 60%; height: 16px;" /> </div> </div> <div class="api-header-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 150px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 90px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 110px; height: 36px; border-radius: 8px;" /> </div> </div> <div aria-hidden="true" class="surface api-key-section" style="margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100px; height: 20px; margin-bottom: 16px;" /> <div class="api-key-card" style="padding: 20px;" > <div class="api-key-display" style="display: flex; gap: 12px; align-items: center;" > <div class="key-input-group" style="flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100%; height: 38px; border-radius: 8px;" /> </div> <div class="key-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 38px; border-radius: 8px;"
TypeScript check & production build: src/components/ApiCard.tsx#L631
Type '"api-card"' is not assignable to type 'EmptyStateVariant | undefined'.
TypeScript check & production build: src/components/ApiCard.tsx#L604
'onBrowse' is declared but its value is never read.
TypeScript check & production build: src/components/ApiCard.tsx#L350
'colName' is declared but its value is never read.
TypeScript check & production build: src/components/ApiCard.tsx#L27
'StatusBadge' is declared but its value is never read.
TypeScript check & production build: src/components/ActiveFilterChips.tsx#L1
'React' is declared but its value is never read.
TypeScript check & production build: src/App.tsx#L598
Type '(presetAmount?: number) => void' is not assignable to type 'MouseEventHandler<HTMLButtonElement>'.
TypeScript check & production build: src/App.tsx#L303
'isTouchDevice' is declared but its value is never read.
TypeScript check & production build: src/App.tsx#L290
Property 'endpointSummary' does not exist on type '{ readonly landing: "/"; readonly dashboard: "/dashboard"; readonly marketplace: "/marketplace"; readonly publish: "/publish"; readonly myApis: "/apis/my-apis"; readonly planBadge: "/apis/plan-badge"; ... 7 more ...; readonly rateLimitCard: "/rate-limit"; }'.
TypeScript check & production build: src/App.tsx#L282
Property 'endpointSummary' does not exist on type '{ readonly landing: "/"; readonly dashboard: "/dashboard"; readonly marketplace: "/marketplace"; readonly publish: "/publish"; readonly myApis: "/apis/my-apis"; readonly planBadge: "/apis/plan-badge"; ... 7 more ...; readonly rateLimitCard: "/rate-limit"; }'.
TypeScript check & production build: src/App.tsx#L15
'DepositPreview' is declared but its value is never read.
src/components/ApiCard.test.tsx > ApiCard status badges and color-blind patterns > renders the degraded status badge with opposite-stripes pattern: src/components/ApiCard.tsx#L589
TypeError: Cannot read properties of undefined (reading 'matches') ❯ src/components/ApiCard.tsx:589:20 ❯ commitHookEffectListMount node_modules/react-dom/cjs/react-dom.development.js:23189:26 ❯ commitPassiveMountOnFiber node_modules/react-dom/cjs/react-dom.development.js:24970:11 ❯ commitPassiveMountEffects_complete node_modules/react-dom/cjs/react-dom.development.js:24930:9 ❯ commitPassiveMountEffects_begin node_modules/react-dom/cjs/react-dom.development.js:24917:7 ❯ commitPassiveMountEffects node_modules/react-dom/cjs/react-dom.development.js:24905:3 ❯ flushPassiveEffectsImpl node_modules/react-dom/cjs/react-dom.development.js:27078:3 ❯ flushPassiveEffects node_modules/react-dom/cjs/react-dom.development.js:27023:14 ❯ node_modules/react-dom/cjs/react-dom.development.js:26808:9 ❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
src/components/ApiCard.test.tsx > ApiCard status badges and color-blind patterns > renders the operational status badge with solid baseline pattern: src/components/ApiCard.tsx#L589
TypeError: Cannot read properties of undefined (reading 'matches') ❯ src/components/ApiCard.tsx:589:20 ❯ commitHookEffectListMount node_modules/react-dom/cjs/react-dom.development.js:23189:26 ❯ commitPassiveMountOnFiber node_modules/react-dom/cjs/react-dom.development.js:24970:11 ❯ commitPassiveMountEffects_complete node_modules/react-dom/cjs/react-dom.development.js:24930:9 ❯ commitPassiveMountEffects_begin node_modules/react-dom/cjs/react-dom.development.js:24917:7 ❯ commitPassiveMountEffects node_modules/react-dom/cjs/react-dom.development.js:24905:3 ❯ flushPassiveEffectsImpl node_modules/react-dom/cjs/react-dom.development.js:27078:3 ❯ flushPassiveEffects node_modules/react-dom/cjs/react-dom.development.js:27023:14 ❯ node_modules/react-dom/cjs/react-dom.development.js:26808:9 ❯ flushActQueue node_modules/react/cjs/react.development.js:2667:24
src/components/ApiCard.test.tsx > ApiCard skeleton > applies compact class when density is compact: src/components/ApiCard.test.tsx#L416
AssertionError: expected 'preview-card api-marketplace-card api…' to contain 'api-card--compact' - Expected + Received - api-card--compact + preview-card api-marketplace-card api-card-skeleton ❯ src/components/ApiCard.test.tsx:416:29
src/components/ApiCard.test.tsx > ApiCard skeleton > hides WhyApi placeholder in compact mode: src/components/ApiCard.test.tsx#L410
AssertionError: expected 26 to be less than 24 ❯ src/components/ApiCard.test.tsx:410:30
src/components/ApiCard.test.tsx > ApiCard reduced motion > uses none transition on action buttons when prefers-reduced-motion is set: src/components/ApiCard.test.tsx#L322
AssertionError: expected 0 to be greater than or equal to 2 ❯ src/components/ApiCard.test.tsx:322:35
src/components/ApiCard.test.tsx > ApiCard Reduced Motion Accessibility > respects prefers-reduced-motion and provides a static outline/color fallback on hover: src/utils/format.ts#L33
TypeError: Cannot read properties of undefined (reading 'toFixed') ❯ Module.formatPrice src/utils/format.ts:33:16 ❯ ApiCard src/components/ApiCard.tsx:907:19 ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18 ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13 ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16 ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14 ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12 ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5 ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7 ❯ recoverFromConcurrentError node_modules/react-dom/cjs/react-dom.development.js:25889:20
src/components/ApiCard.test.tsx > ApiCard Reduced Motion Accessibility > renders standard layout without reduced motion: src/utils/format.ts#L33
TypeError: Cannot read properties of undefined (reading 'toFixed') ❯ Module.formatPrice src/utils/format.ts:33:16 ❯ ApiCard src/components/ApiCard.tsx:907:19 ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18 ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13 ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16 ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14 ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12 ❯ workLoopSync node_modules/react-dom/cjs/react-dom.development.js:26505:5 ❯ renderRootSync node_modules/react-dom/cjs/react-dom.development.js:26473:7 ❯ recoverFromConcurrentError node_modules/react-dom/cjs/react-dom.development.js:25889:20
src/ApiUsage.test.tsx > ApiUsage - Tabular Numerals > applies tabular-nums to all stat-value elements: src/ApiUsage.test.tsx#L92
AssertionError: expected +0 to be 5 // Object.is equality - Expected + Received - 5 + 0 ❯ src/ApiUsage.test.tsx:92:31
src/ApiUsage.test.tsx > ApiUsage - Filter Reset > renders an accessible breadcrumb with the current page announced: src/ApiUsage.test.tsx#L62
TestingLibraryElementError: Unable to find an accessible element with the role "navigation" and name `/breadcrumb/i` There are no accessible roles. But there might be some inaccessible roles. If you wish to access them, then set the `hidden` option to `true`. Learn more about this here: https://testing-library.com/docs/dom-testing-library/api-queries#byrole Ignored nodes: comments, script, style <body> <div> <div aria-busy="true" aria-label="API usage loading shell" class="api-usage-page" > <div aria-hidden="true" style="display: flex; gap: 8px; margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 16px;" /> <span style="color: var(--text-secondary);" > / </span> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 160px; height: 16px;" /> </div> <div aria-hidden="true" class="api-header" style="margin-bottom: 24px;" > <div class="api-header-info" style="display: flex; gap: 16px; align-items: center;" > <div class="api-logo" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 56px; height: 56px; border-radius: 12px;" /> </div> <div style="display: grid; gap: 8px; flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 40%; height: 28px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 60%; height: 16px;" /> </div> </div> <div class="api-header-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 150px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 90px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 110px; height: 36px; border-radius: 8px;" /> </div> </div> <div aria-hidden="true" class="surface api-key-section" style="margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100px; height: 20px; margin-bottom: 16px;" /> <div class="api-key-card" style="padding: 20px;" > <div class="api-key-display" style="display: flex; gap: 12px; align-items: center;" > <div class="key-input-group" style="flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100%; height: 38px; border-radius: 8px;" /> </div> <div class="key-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 38px; border-radius: 8px;"
src/ApiUsage.test.tsx > ApiUsage - Filter Reset > should enable reset button when filters are active and announce reset to screen readers: src/ApiUsage.test.tsx#L49
TestingLibraryElementError: Unable to find an accessible element with the role "button" and name `/Reset Filters/i` There are no accessible roles. But there might be some inaccessible roles. If you wish to access them, then set the `hidden` option to `true`. Learn more about this here: https://testing-library.com/docs/dom-testing-library/api-queries#byrole Ignored nodes: comments, script, style <body> <div> <div aria-busy="true" aria-label="API usage loading shell" class="api-usage-page" > <div aria-hidden="true" style="display: flex; gap: 8px; margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 16px;" /> <span style="color: var(--text-secondary);" > / </span> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 160px; height: 16px;" /> </div> <div aria-hidden="true" class="api-header" style="margin-bottom: 24px;" > <div class="api-header-info" style="display: flex; gap: 16px; align-items: center;" > <div class="api-logo" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 56px; height: 56px; border-radius: 12px;" /> </div> <div style="display: grid; gap: 8px; flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 40%; height: 28px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 60%; height: 16px;" /> </div> </div> <div class="api-header-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 150px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 90px; height: 36px; border-radius: 8px;" /> <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 110px; height: 36px; border-radius: 8px;" /> </div> </div> <div aria-hidden="true" class="surface api-key-section" style="margin-bottom: 24px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100px; height: 20px; margin-bottom: 16px;" /> <div class="api-key-card" style="padding: 20px;" > <div class="api-key-display" style="display: flex; gap: 12px; align-items: center;" > <div class="key-input-group" style="flex: 1 1 0%;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 100%; height: 38px; border-radius: 8px;" /> </div> <div class="key-actions" style="display: flex; gap: 12px;" > <div aria-hidden="true" class="skeleton skeleton--stellar" role="presentation" style="width: 80px; height: 38px; border-radius: 8px;"
Unit tests (Vitest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
TypeScript check & production build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Test coverage
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Test coverage
No files were found with the provided path: coverage/. No artifacts will be uploaded.