Skip to content

Commit

Permalink
feat(preset-mini): Add support for peer and group variants on aria-*, f…
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnkat-Mj committed Apr 6, 2024
1 parent ea4fc4e commit 822d829
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
27 changes: 26 additions & 1 deletion packages/preset-mini/src/_variants/aria.ts
@@ -1,4 +1,4 @@
import type { VariantContext, VariantObject } from '@unocss/core'
import type { Variant, VariantContext, VariantObject } from '@unocss/core'
import type { Theme } from '../theme'
import { h, variantGetParameter } from '../utils'

Expand All @@ -18,3 +18,28 @@ export const variantAria: VariantObject = {
}
},
}

function taggedAria(tagName: string): Variant {
return {
name: `${tagName}-aria`,
match(matcher, ctx: VariantContext<Theme>) {
const variant = variantGetParameter(`${tagName}-aria-`, matcher, ctx.generator.config.separators)
if (variant) {
const [match, rest] = variant
const ariaAttribute = h.bracket(match) ?? ctx.theme.aria?.[match] ?? ''
if (ariaAttribute) {
return {
matcher: `${tagName}-[[aria-${ariaAttribute}]]:${rest}`,
}
}
}
},
}
}

export const variantTaggedAriaAttributes: Variant[] = [
taggedAria('group'),
taggedAria('peer'),
taggedAria('parent'),
taggedAria('previous'),
]
3 changes: 2 additions & 1 deletion packages/preset-mini/src/_variants/default.ts
Expand Up @@ -11,7 +11,7 @@ import { variantImportant } from './important'
import { variantCustomMedia, variantPrint } from './media'
import { variantSupports } from './supports'
import { variantPartClasses, variantPseudoClassFunctions, variantPseudoClassesAndElements, variantTaggedPseudoClasses } from './pseudo'
import { variantAria } from './aria'
import { variantAria, variantTaggedAriaAttributes } from './aria'
import { variantDataAttribute, variantTaggedDataAttributes } from './data'
import { variantContainerQuery } from './container'

Expand Down Expand Up @@ -43,6 +43,7 @@ export function variants(options: PresetMiniOptions): Variant<Theme>[] {
variantContainerQuery,
variantVariables,
...variantTaggedDataAttributes,
...variantTaggedAriaAttributes,

variantTheme,
]
Expand Down

0 comments on commit 822d829

Please sign in to comment.