Skip to content

Anchors Config Module

The Anchors Config Module holds your application's default/prototypal Tailwind CSS classes for Anchor elements in your application, excluding color and color palette classes (see Palette Config Modules for more info about palette modules).

app.vv.ts Use

You'll usually work with the Anchors Config Module after it's already been merged into VueVentus VvConfig data.

Here's what that generally looks like in practice in a real world app context:

javascript
// ./src/app.vv.ts

import { VvConfig } from '@obewds/vueventus'
import type { ConfigVv } from '@obewds/vueventus'

let appVv: ConfigVv = VvConfig

appVv.anchors.someProperty = 'some-value'

// ...

export default appVv

Import

However, if you need to import the compiled library version of the Anchors Config Module, you can use:

javascript
import { Anchors } from '@obewds/vueventus'

Anchors.cursor

Type: String
Default: "cursor-pointer"

The Anchors.cursor parameter is meant to isolate the CSS cursor focused characteristics and requirements for an application's anchor elements.

AVOID: COLOR & SIZE

Atomic classes for this property should avoid using classes related to characteristics like color and size, which are already abstracted in VueVentus.

Example

javascript
// ./src/app.vv.ts
appVv.anchors.cursor = '...'

Anchors.display

Type: String
Default: ""

The Anchors.display parameter is meant to isolate the CSS display/block level characteristics and requirements for an application's anchor elements.

AVOID: COLOR & SIZE

Atomic classes for this property should avoid using classes related to characteristics like color and size, which are already abstracted in VueVentus.

Example

javascript
// ./src/app.vv.ts
appVv.anchors.display = '...'

Anchors.focus

Type: String
Default: ""

The Anchors.focus parameter is meant to isolate the CSS focus orientated characteristics and requirements for an application's anchor elements.

AVOID: COLOR & SIZE

Atomic classes for this property should avoid using classes related to characteristics like color and size, which are already abstracted in VueVentus.

Example

javascript
// ./src/app.vv.ts
appVv.anchors.focus = '...'

Anchors.sizes

The Anchors.sizes parameter object for the Anchors Config Module is inherited directly from the Text Config Module.

Anchors.text

Type: String
Default: "underline underline-offset-2"

The Anchors.text parameter is meant to isolate the text specific atomic classes that don't pertain to already represented characteristics in VueVentus like color, size, etc. Instead, the Anchors.text parameter is meant for classes that would make anchor text unique from other text for more design/accessibility reasons.

AVOID: COLOR & SIZE

Atomic classes for this property should avoid using classes related to characteristics like color and size, which are already abstracted in VueVentus.

Example

javascript
// ./src/app.vv.ts
appVv.anchors.text = '...'

Anchors.transition

Type: String
Default: "transition-colors ease-in-out duration-300"

The Anchors.transition parameter is meant to isolate the transition/animation specific atomic classes an application's anchor elements.

Example

javascript
// ./src/app.vv.ts
appVv.anchors.transition = '...'

Anchors.base()

Returns: String
Default: "cursor-pointer underline underline-offset-2 transition-colors ease-in-out duration-300"

The Anchors.base() method returns a joined String of the atomic classes within the various base properties of the Anchors Config Module object.

Example

html
<!-- ./src/components/SomeComponent.vue -->

<script setup lang="ts">

    import appVv from '../app.vv'
    
</script>

<template>

    <a href="#" :class="[appVv.anchors.base(), String(appVv.anchors.palettes.default.success)]">
        Base anchor + default success color classes
    </a>

</template>

Anchors.classes()

Returns: String
Default: "cursor-pointer underline underline-offset-2 transition-colors ease-in-out duration-300 text-base"

The Anchors.classes() method returns a joined String of the atomic classes within the various base properties of the Anchors Config Module object using the Anchors.base() method under the hood.

However, the Anchors.classes() method also returns Anchors.getSizeClasses() method classes in addition to the base property classes/values, which augments the returned value based on the optional argument value passed into the method.

Arguments

ArgsTypeStatusDescription
sizesKeyStringOptionalProperty name/key of an Anchors.sizes object

The applicable values for the sizesKey argument are set via the Text Config Module Text.sizes property names/keys and atomic class values.

Example

html
<!-- ./src/components/SomeComponent.vue -->

<script setup lang="ts">

    import appVv from '../app.vv'

    const appLinkColor = appVv.anchors.palettes.default.success
    
</script>

<template>

    <a href="#" :class="[appVv.anchors.classes(), appLinkColor]">
        Regular Success Anchor
    </a>

    <a href="#" :class="[appVv.anchors.classes('lg'), appLinkColor]">
        Large Success Anchor
    </a>

</template>

Anchors.getSizeClasses()

Returns: String
Default: "text-base"

The Anchors.getSizeClasses() method returns text size related classes based on the optional argument value passed into the method. These size related classes come from the Anchors.sizes object property names/keys and values (of atomic classes).

Arguments

ArgsTypeStatusDescription
sizesKeyStringOptionalProperty name/key of an Anchors.sizes object

The applicable values for the sizesKey argument are set via the Text Config Module Text.sizes property names/keys and atomic class values.

Example

html
<!-- ./src/components/SomeComponent.vue -->

<script setup lang="ts">

    import appVv from '../app.vv'

    const color = appVv.anchors.palettes.default.success
    const transition = appVv.anchors.transition
    
</script>

<template>

    <a href="#" :class="[appVv.anchors.getSizeClasses(), color, transition]">
        Regular Success Anchor
    </a>

    <a href="#" :class="[appVv.anchors.getSizeClasses('lg'), color, transition]">
        Large Success Anchor
    </a>

</template>

Module Code

ts
// ./src/configs/Anchors.ts

import type { ConfigAnchors } from '../types/ConfigAnchors'
import Text from './Text.js'
import Transitions from './Transitions.js'

export default <ConfigAnchors>{
    cursor: 'cursor-pointer',
    display: '',
    focus: '',
    text: 'underline underline-offset-2',
    transition: Transitions.classes('colors', 'inOut', '300'),
    base: function () {
        return [
            this.cursor,
            this.display,
            this.focus,
            this.text,
            this.transition,
        ].join(' ').replace(/\s+/g,' ').trim()
    },
    sizes: Text.sizes,
    getSizeClasses: function (sizesKey) {
        const key = sizesKey && this.sizes[sizesKey] ? sizesKey : 'md'
        return this.sizes[key]
    },
    classes: function (sizesKey) {
        const sizes = sizesKey ? sizesKey : ''
        return [
            this.base(),
            this.getSizeClasses(sizes),
        ].join(' ').replace(/\s+/g,' ').trim()
    },
}

Released under the MIT License