{"slug": "miso-css-0-0-3-gets-type-safe-aria", "title": "Miso-css-0.0.3 gets type safe ARIA", "summary": "Developer yaitskov released miso-css v0.0.3, adding type-safe ARIA attributes to the Haskell library for generating HTML, including aria-describedby references, global tab indexes and access keys. The release follows two miso releases that introduced breaking API changes, and the author states the library was developed without help from AI agents, though he says using it without them would be hard because of its many type parameters.", "body_md": "Hi,\n\nI 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*).\n\nI 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 \n\nPlus miso has been been released twice since then with breaking changes in its API.\n\nSo I released a new version of [miso-css](https://github.com/yaitskov/miso-css/tree/v0.0.3).\n\nfor\n\n```\n\"\"\"<div><label for=\"a\">l</label><input id=\"a\"/></div>\"\"\" \n  `go`\n      div_ </ (label_ `for` A <@ \"l\") </ input_ =# A\n```\n\nARIA\n\n```\n\"\"\"<div>\n     <span id=\"aa\">hi</span>\n     <span id=\"bb\">bye</span>\n     <input aria-describedby=\"aa bb\"/>\n   </div>\"\"\"\n`go` div_ </ (span_ =# Aa <@ \"hi\") </ (span_ =# Bb <@ \"bye\")\n          </ input_ `ariaDescribedBy` Aa `ariaDescribedBy` Bb\n```\n\ntab indexes are global and should be unique as tag ids. Except values **-1** and **0**.\n\n```\n\"\"\"<div tabindex=\"-1\">x</div>\"\"\" `go` tabIndexMinus1 (div_ <@ \"x\")\n\n\"\"\"<div tabindex=\"1\">x</div>\"\"\" `go` div_ `tabIndex` 1 <@ \"x\"\n```\n\nAccess keys are global too.\n\n```\n\"\"\"<div accesskey=\"a\">x</div>\"\"\" `go` div_ `accessKey` 'a' <@ \"x\"\n```\n\nThe library has been developed without help from agents, but using the library without them would be hard because of many type parameters.", "url": "https://wpnews.pro/news/miso-css-0-0-3-gets-type-safe-aria", "canonical_source": "https://discourse.haskell.org/t/miso-css-0-0-3-gets-type-safe-aria/14857#post_1", "published_at": "2026-10-17 18:05:52+00:00", "updated_at": "2026-10-17 18:39:03.191737+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["miso-css", "yaitskov", "Haskell", "ARIA", "miso"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/miso-css-0-0-3-gets-type-safe-aria", "markdown": "https://wpnews.pro/news/miso-css-0-0-3-gets-type-safe-aria.md", "text": "https://wpnews.pro/news/miso-css-0-0-3-gets-type-safe-aria.txt", "jsonld": "https://wpnews.pro/news/miso-css-0-0-3-gets-type-safe-aria.jsonld"}}