`, hidden on first load. The `Open` button in the preview is iframe demo chrome (plus an open-on-init script), not part of the block.
- Header is `py-3 px-6` titled `Filter` with a white close button; the body is `bg-surface` scrollable with `p-2 space-y-2` holding exactly 7 `p-4 bg-layer rounded-lg shadow-2xs` cards in this order: `Applied filters`, `Category`, `Size`, `Color`, `Price`, `Fit`, `Sleeve Length`.
- `Applied filters` holds 2 removable chips, `Women` and `Clothing`, each with an X button wired via `data-hs-remove-element`. `Category` shows 7 rows with counts - `Shirts (47)`, `T-shirts (89)`, `Polos (35)`, `Trousers (30)`, `Jeans (21)`, `Shorts (5)`, `Jackets (15)` - then a collapsed `hs-collapse` region containing `Sweaters (44)` and `Blazers (1)`, toggled by a `Show more` / `Show less` link with a rotating chevron.
- `Size` is a `grid grid-cols-3 gap-2` of 27 checkbox size chips in order: `One size`, `2XS`, `XS`, `S`, `M`, `L`, `XL`, `2XL`, `3XL`, `4XL`, then numeric `36`, `38`, `39`, `40`, `41`, `42`, `43`, `44`, `45`, `46`, `48`, `50`, `52`, `54`, `56`, `58`, `60`.
- `Color` lists 8 rows whose `size-4.5` swatch checkboxes carry the literal color - `Black (70)`, `White (127)`, `Gray (63)`, `Red (32)`, `Orange (25)`, `Yellow (15)`, `Green (12)`, `Blue (86)`; the white swatch overlays a black check SVG revealed by `group-has-checked:opacity-100`. These literal color utilities are content, not the primary token.
- `Price` stacks 5 bracket checkboxes `$0-$25 (53)`, `$25-$50 (92)`, `$50-$100 (135)`, `$100-$150 (27)`, `$150+ (3)` above a range slider whose readout shows `250` - `750`. `Fit` has 7 rows `Classic (38)`, `Modern (1)`, `Regular (135)`, `Relaxed (26)`, `Skinny (3)`, `Slim (30)`, `Straight (9)`; `Sleeve Length` has 3 rows `Long Sleeve (56)`, `Short Sleeve (78)`, `Sleeveless (2)`.
- The slider is a Preline range slider over noUiSlider: `data-hs-range-slider` with `"start": [250, 750]`, `"range": {"min": 0, "max": 1000}`, `"connect": true`, and `"formatter": {"type": "integer", "prefix": "$"}`, writing into `#hs-pass-values-to-html-elements-min-target` / `-max-target`. Load `nouislider` before the Preline runtime.
- First load: no checkbox in any card is checked, the `Category` extra rows are collapsed (`aria-expanded="false"`), and the footer `p-6 border-t border-overlay-footer` holds two equal `w-full` buttons - neutral `Clear filters` with an X icon and primary `Show items` - both carrying `data-hs-overlay="#hs-pro-shflo"`.
Token and Tailwind rules:
- Treat source token classes as semantic roles, not fixed class names to blindly copy.
- Map every source `primary` role to the destination project's current primary token/config/CSS variable. Active links, checked states, progress lines, focus rings, primary gradients, logo primary fills/strokes, and primary buttons must share that destination primary color.
- Do not hardcode Preline blue or emit `text-blue-*`, `bg-blue-*`, `border-blue-*`, `fill-blue-*`, `stroke-blue-*`, `from-blue-*`, `via-blue-*`, `to-blue-*`, or fixed blue hex/rgb values for primary roles unless the destination primary is explicitly blue.
- Before using source-only token classes such as `text-foreground-inverse`, `bg-layer`, `border-layer-line`, `bg-navbar`, `border-line-2`, `bg-dropdown`, or similar Preline tokens, inspect the destination Tailwind config, global CSS/theme variables, and existing components for an equivalent utility/token.
- Prefer existing destination utilities such as `text-white`, `text-primary-foreground`, `text-foreground`, `text-muted-foreground`, `bg-background`, `bg-card`, `bg-popover`, `border-border`, `bg-muted`, `bg-accent`, `ring-ring`, or app-specific tokens when they match the source role.
- If no equivalent exists, add the smallest project-appropriate token or utility before using it. Do not leave undefined source classes in the generated markup.
Asset and icon rules:
- Use exact source images, avatars, product media, branded SVGs, payment marks, channel logos, and app icons when the source provides them.
- Do not replace source assets with initials, emojis, generic icons, generated placeholders, or different stock media.
- Ordinary interface icons should match the destination icon system. If the project uses Lucide-style outline icons, keep the 24 viewBox, `fill="none"`, `stroke="currentColor"`, rounded caps/joins, and source stroke widths.
- Brand/source SVG shape is fixed content. Only map semantic colors such as primary fill/stroke to the destination token.
Behavior and accessibility:
- Preserve source interactions: links, buttons, dropdowns, tooltips, tabs, menus, drawers, modals, toggles, search, filters, form controls, validation states, loading/empty states, and open/closed defaults.
- For source behavior powered by Preline JS or a third-party package, inspect installed dependencies and existing primitives first. Reuse a destination primitive only when it can preserve the source geometry, states, accessibility, and behavior.
- Treat new dependencies as allowed by default unless the user, repository instructions, or package policy explicitly prohibit them. When no faithful equivalent exists, install/use the Preline UI runtime/plugin or the exact source third-party package; do not silently substitute ad hoc JavaScript or custom React state.
- Only under an explicit dependency prohibition may you implement a scoped framework-native equivalent. It must preserve keyboard and focus management, placement and layering, responsive behavior, and accessibility; static or simplified approximations are not acceptable.
- Use semantic HTML and accessible names. Keep `aria-current`, `aria-expanded`, `aria-haspopup`, `role`, labels, focus states, and keyboard behavior when the source exposes them or the destination primitive requires them.
- Desktop and mobile states must not overlap text, clip controls, or shift layout unexpectedly. Controls with icons, counters, badges, and labels should keep stable dimensions across hover/focus/active states.
Final QA:
- Compare the result against the source preview and HTML tab.
- Verify primary color follows the destination project, not Preline's default blue.
- Verify all emitted classes exist in the destination or are added deliberately.
- Verify responsive layout, focus states, dropdown/popover layering, long-text truncation, and source asset paths.
- Keep the final implementation scoped to this block and avoid unrelated refactors.