Skip to content

Feature gap analysis: capabilities missing or incomplete vs. comparable frameworks #167

Description

@jackgranatowski

Context

A systematic comparison of SLASHED against other CSS framework feature sets surfaced a small number of genuine gaps. Many things that appeared missing on first glance are already in the codebase (header height offset, text-wrap balance/pretty, border tokens, icon tokens, clickable parent, logical properties in core layers). The gaps below are what remained after reading the actual source.


Gap 1 — Focus style mode (outline vs. box-shadow)

What exists: :focus-visible uses outline (hardened with !important in accessibility.css). Tokens --sf-focus-ring-width, --sf-focus-ring-offset, --sf-focus-ring-style, --sf-focus-ring-color, and the composite --sf-focus-ring-shadow are all defined.

What's missing: No supported path to switch the focus indicator style from outline to box-shadow without fighting the !important in accessibility.css. Comparable frameworks offer this as a first-class toggle (change one token or add one class).

Options to consider:

  • Document the override pattern clearly (consumers write unlayered CSS with !important)
  • Ship a .sf-focus-shadow modifier that switches :focus-visible to use box-shadow: var(--sf-focus-ring-shadow) at a higher layer or equal specificity
  • Or accept the current design as intentional: outline is the correct a11y default and box-shadow is always opt-in at component level

Gap 2 — .sf-prose missing button and inline link spacing rules

What exists: .sf-prose has context-aware spacing for > * + *, :is(h2,h3,h4) + *, li + li, blockquote, pre, img, video, figure, table.

What's missing: No explicit spacing rules for <a> (inline links) or <button> elements within prose. .sf-flow covers generic elements with the uniform owl, but there's no prose-specific treatment for these inline elements that may appear between paragraphs.

Likely small change — add a rule to sf-prose that handles button-in-prose vertical rhythm.


Already on roadmap (not new, listed for completeness)

  • Logical property audit — physical properties remain in some layout/macros rules. Tracked in roadmap under "Before v1.0".
  • @property for spacing/shadow tokens — only brand colors are currently registered. Tracked in roadmap under "Post-1.0 Enhancements".
  • Components layer — stubs exist, implementations deferred post-1.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions