# UX Audit — wb-listora

_Generated 2026-05-16T09:07:12Z_ — prefix: `listora`

| Severity | Rule | Location | Snippet |
|---|---|---|---|
| block | F1 inline-style | includes/workflow/class-email-verification.php:445 | `	<style> ` |
| block | F2 inline-script | includes/workflow/class-email-verification.php:510 | `			<script src="<?php echo esc_url( WB_LISTORA_PLUGIN_URL . 'assets/js/frontend/` |
| block | F8 native-alert-confirm | assets/js/shared/confirm.js:4 | ` * Promise-based replacement for window.confirm(). ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:323 | `			'dashicons-building'           => 'building-2', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:324 | `			'dashicons-food'               => 'utensils', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:325 | `			'dashicons-admin-home'         => 'home', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:326 | `			'dashicons-store'              => 'bed', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:327 | `			'dashicons-calendar-alt'       => 'calendar', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:328 | `			'dashicons-businessman'        => 'briefcase', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:329 | `			'dashicons-heart'              => 'heart-pulse', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:330 | `			'dashicons-welcome-learn-more' => 'graduation-cap', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:331 | `			'dashicons-location'           => 'map-pin', ` |
| advisory | Rule 5 use-lucide | includes/core/class-listing-type-registry.php:332 | `			'dashicons-tag'                => 'tag', ` |
| advisory | Rule 14 outline-none-no-replacement | blocks/listing-submission/style-rtl.css:505 | `	outline: 0; ` |
| advisory | Rule 14 outline-none-no-replacement | blocks/listing-submission/style.css:657 | `	outline: 0; ` |
| advisory | Rule 14 outline-none-no-replacement | assets/css/shared/confirm-rtl.css:38 | `	outline: none; ` |
| advisory | Rule 14 outline-none-no-replacement | assets/css/shared/confirm.css:38 | `	outline: none; ` |
| advisory | Rule responsive #1 breakpoints>3 | (global):0 | `7 distinct breakpoint values — should be ≤3` |
| advisory | RTL raw-margin-left-right | src/shared/base.css:51 | `	margin-left: auto; ` |
| advisory | RTL raw-margin-left-right | src/shared/base.css:52 | `	margin-right: auto; ` |
| advisory | RTL raw-margin-left-right | src/primitives/tabs.css:158 | `	padding-right: var(--listora-space-6); ` |
| advisory | Token budget warning | (global):0 | `131 unique tokens — warn threshold is 100, target 75. Audit for prunable single-use tokens.` |
| advisory | Token sprawl | (global):0 | `11 tokens used 0 or 1 times — these are named constants in disguise. Inline them back into their consumer or find more reuse.` |

---
**Tokens defined: 131** (target 75, warn 100, block 150) | **Single-use tokens: 11**
**Block-severity violations: 3** | **Advisory: 20**

❌ Fix every `block` row before merging. `advisory` rows can ship with next PR.
