# Miso-css-0.0.3 gets type safe ARIA

**URL:** <https://discourse.haskell.org/t/miso-css-0-0-3-gets-type-safe-aria/14857>\
**Category:** Announcements\
**Created:** [October 17, 2026, 6:05pm UTC](https://discourse.haskell.org/t/miso-css-0-0-3-gets-type-safe-aria/14857 "2026-10-17T18:05:52Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![dyaitskov](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/dyaitskov/32/5142_2.png) [@dyaitskov](https://discourse.haskell.org/u/dyaitskov)\
**Post date:** [October 17, 2026, 6:05pm UTC](https://discourse.haskell.org/t/miso-css-0-0-3-gets-type-safe-aria/14857/1 "2026-10-17T18:05:52Z")

</div>

Hi,

I was getting a certificate about a responsive web design and discovered HTML ARIA rules. They help annotate web pages for screen readers. Besides simple in-place HTML attributes with descriptions the ARIA standard permits usage of attributes for referencing content in other tags (e.g. _aria-describedby_).

I think recent and upcoming advances in AI will soon make the whole ARIA stuff obsolete, but it’s a good use case for dependent type rattling 😉  
Plus miso has been been released twice since then with breaking changes in its API.  
So I released a new version of [miso-css](https://github.com/yaitskov/miso-css/tree/v0.0.3).

* * *

for

```haskell
"""<div><label for="a">l</label><input id="a"/></div>""" 
  `go`
      div_ </ (label_ `for` A <@ "l") </ input_ =# A

```

ARIA

```haskell
"""<div>
     <span id="aa">hi</span>
     <span id="bb">bye</span>
     <input aria-describedby="aa bb"/>
   </div>"""
`go` div_ </ (span_ =# Aa <@ "hi") </ (span_ =# Bb <@ "bye")
          </ input_ `ariaDescribedBy` Aa `ariaDescribedBy` Bb

```

tab indexes are global and should be unique as tag ids. Except values **-1** and **0**.

```haskell
"""<div tabindex="-1">x</div>""" `go` tabIndexMinus1 (div_ <@ "x")

"""<div tabindex="1">x</div>""" `go` div_ `tabIndex` 1 <@ "x"

```

Access keys are global too.

```haskell
"""<div accesskey="a">x</div>""" `go` div_ `accessKey` 'a' <@ "x"

```

The library has been developed without help from agents, but using the library without them would be hard because of many type parameters.
