Chakra UI ve Nuxt.js ile Erişilebilir Bir Ön Uç Uygulaması Nasıl Oluşturulur

Yayınlanan: 2022-03-10
Kısa özet ↬ Bu makalede, erişilebilir ön uç uygulamaları oluştururken Chakra UI ve NuxtJS'nin nasıl kullanılacağına bakacağız. Devam etmek için, ilerici ön uç çerçevesi Vue.js'yi Nuxt ile kullanmaya aşina olmalısınız. Değilse, başlamak için Vue.js ve NuxtJS belgelerine bakın.

Birçok insan için web, günlük hayatlarının önemli bir parçasıdır. Onu işte, evde ve hatta yolda kullanıyorlar. Web erişilebilirliği, engelli kişilerin web'i eşit olarak kullanabileceği anlamına gelir. Bu nedenle, web üzerinde kurulum yapan geliştiriciler ve kuruluşlar için uygulamalarına kapsayıcılık ve erişilebilirlik eklemeleri çok önemlidir.

Web'i daha erişilebilir hale getirmek için, aşağıdakilere bağlı kalmak gibi uygulamalarınızda uygulamanız gereken birkaç en iyi uygulama ve standart vardır:

  • Bölüm 508;
  • Yardımcı Teknoloji Yasası;
  • Engelli Amerikalılar Yasası (ADA);
  • WCAG 2.0 (A ve AA Yönergeleri);
  • BBC Mobil Erişilebilirlik Yönergeleri;
  • WAI - ARIA ( Web Erişilebilirlik Girişimi Erişilebilir Zengin İnternet Uygulamaları ) uygulamaları.

Bu standartları uygulamayı öğrenmek, bir geliştirici olarak çalışmak zorunda olduğunuz proje son tarihlerini ve diğer kısıtlamaları hesaba kattığınızda göz korkutucu bir görev gibi görünebilir. Bu bağlamda, web uygulamalarınızı erişilebilir hale getirmenize yardımcı olmak için oluşturulmuş bir UI tasarım sistemini tanıtmama izin verin.

çakra kullanıcı arayüzü

Chakra UI, Segun Adebayo tarafından oluşturulmuş bir tasarım sistemi ve UI çerçevesidir. Basitlik, modülerlik, birleştirilebilirlik ve erişilebilirlik göz önünde bulundurularak oluşturulmuştur. Chakra UI, erişilebilir ön uç uygulamalar oluşturmak için gereken tüm yapı taşlarını sağlar.

Not : Chakra UI, başlık altında CSS-in-JS'ye bağlı olsa da, kütüphaneyi kullanmak için bilmenize gerek yoktur.

Çerçeve orijinal olarak React için oluşturulmuş olsa da, Jonathan Bakebwa Vue'ya geçişin öncülüğünü yaptı. Böylece Vuejs/NuxtJS geliştiricileri artık erişilebilir web uygulamaları oluşturmak için Chakra UI'yi kullanabilir.

Çakra Kullanıcı Arayüzü Özellikleri

Çakra UI, aşağıdaki ilkeler göz önünde bulundurularak oluşturulmuştur:

  • Stil sahne
    Chakra UI, aksesuarlar kullanarak bileşenlere stil vermeyi veya stillerini geçersiz kılmayı mümkün kılar. Bu, stil sayfası veya satır içi stiller ihtiyacını azaltır. Chakra UI, kaputun altındaki Styled Systems'ı kullanarak bu esneklik düzeyine ulaşır.
  • Kompozisyon
    Chakra UI'daki bileşenler, karmaşıklığı düşük tutmak ve bunları bir araya getirmek için minimum aksesuarlarla daha küçük parçalara bölünmüştür. Bu, stillerin ve işlevselliğin esnek ve genişletilebilir olmasını sağlayacaktır. Örneğin, yeni bileşenler oluşturmak için CBox ve CPseudoBox bileşenlerini kullanabilirsiniz.
  • Erişilebilir
    Chakra UI bileşenleri, WAI-ARIA yönergeleri belirtimlerini takip eder ve doğru aria-* özniteliklerine sahiptir. Ayrıca, her bir yazılan bileşenin erişilebilirlik raporunu accessibility.md adlı bir dosyada bulabilirsiniz. CAccordion bileşeni için erişilebilirlik raporuna bakın.
  • temalı
    Chakra UI, uygulamanızın tamamında, herhangi bir bileşende temanızdaki değerleri kolayca referans alma yeteneği sağlar.
  • Karanlık mod desteği
    Chakra UI'deki çoğu bileşen, kutudan çıkar çıkmaz karanlık mod uyumludur.

Çakra Kullanıcı Arayüzü Erişilebilirliği Nasıl Destekler?

Çakra kullanıcı arayüzünün oluşturulmasının arkasındaki temel ilkelerden biri erişilebilirliktir . Bunu akılda tutarak, Chakra UI'deki tüm bileşenler, aşağıdakileri sağlayarak erişilebilirlik desteği ile kutudan çıkar:

  • Klavyede Gezinme — motor becerileri engeli olan kullanıcılar için kullanışlıdır,
  • Odak Yönetimi,
  • ekran okuyucuların ihtiyaç duyduğu aria-* özellikleri,
  • Kalıcı iletişim kutuları için odak yakalama ve geri yükleme.
Atlamadan sonra daha fazlası! Aşağıdan okumaya devam edin ↓

Chakra UI ve Nuxt'a Başlarken

Not : Chakra UI'yi Vue.js ile kullanmak için Başlarken kılavuzuna bakın.

Demo projemiz için, Chakra UI bileşenlerini aramak için erişilebilir tek sayfalık bir web uygulaması olan Chakra-ui gezgini oluşturacağız.

  • Netlify'da canlı projeye bakın →

Chakra-ui Explorer'a Başlarken

NPM'nin zaten kurulu olduğunu varsayarak, aşağıdakileri çalıştırarak yeni bir Nuxt uygulaması oluşturun:

 $ npx create-nuxt-app chakra-ui-explorer

Veya ipliği tercih ederseniz, çalıştırın:

 $ yarn create nuxt-app chakra-ui-explorer

Nuxt uygulamanızı oluşturmayı tamamlamak için kurulum istemini izleyin.

Çakra Kullanıcı Arayüzü Ayarlama

Chakra UI, bileşen stillerini işlemek için Emotion kullanır. Bu nedenle, Chakra UI'yi kullanmaya başlamak için, Emotion'ın yanı sıra bir akran bağımlılığı olarak Chakra UI'yi yüklemeniz gerekecek. Bu proje için, hem Chakra UI hem de Emotion için Chakra UI ile başlarken sürtünmeyi azaltacak resmi Nuxt modüllerini kullanacağız. Aşağıdaki komutu çalıştırarak projemize ekleyelim:

 npm i @chakra-ui/nuxt @nuxtjs/emotion

Not : @nuxtjs/emotion , bileşen stillerinizin sunucu yapısında oluşturulmasına ve eklenmesine olanak tanır.

Her iki modülü de kurduktan sonra, bunları modül dizisi seçeneği altındaki nuxt.config.js dosyasına kaydetmeniz gerekecektir:

 // nuxt.config.js modules: ['@chakra-ui/nuxt', '@nuxtjs/emotion'],

Chakra UI kurulum işlemimizi tamamlamak için layoutlarda layouts/ varsayılan düzen bileşenimize dokunmamız ve Chakra UI'dan CThemeProvider , CColorModeProvider ve CReset bileşenlerini eklememiz gerekiyor.

Chakra UI tarafından sağlanan tüm bileşenlerin doğru çalışmasını sağlamak için CReset bileşenini kullanmanız önerilir.

CThemeProvider bileşeni, temanızı uygulamanızın her parçası için kullanılabilir hale getirirken, CColorModeProvider bileşeni, uygulamamızın iki durumdan birinde olabilen renk modunu yönetmekten sorumludur: açık veya koyu. Son olarak, CReset bileşeni tüm tarayıcı varsayılan stillerini kaldıracaktır.

Yukarıda belirtilen bileşenleri layouts/default.vue içine ekleyelim. Şablon bölümümüzde şunu ekleyelim:

 <!-- layouts/default.vue --> <template> <div class="container"> <c-theme-provider> <c-color-mode-provider> <c-box as="section"> <c-reset /> <nuxt /> </c-box> </c-color-mode-provider> </c-theme-provider> </div> </template>

Ardından script bölümümüzde, bileşenleri şu şekilde içe aktarıp kaydedeceğiz:

 <script> import { CThemeProvider, CColorModeProvider, CReset, CBox } from '@chakra-ui/vue' export default { name: 'DefaultLayout', components: { CThemeProvider, CColorModeProvider, CReset, CBox } } </script>

default.vue düzeni bileşeniniz şöyle görünmelidir:

 <template> <div class="container"> <c-theme-provider> <c-color-mode-provider> <c-box as="section"> <c-reset /> <nuxt /> </c-box> </c-color-mode-provider> </c-theme-provider> </div> </template> <script> import { CThemeProvider, CColorModeProvider, CReset, CBox } from '@chakra-ui/vue' export default { name: 'DefaultLayout', components: { CThemeProvider, CColorModeProvider, CReset, CBox } } </script>

Not : Dikkat edin, hem <c-reset /> hem de <nuxt /> bileşenlerini bir c-box bileşenine yerleştiriyorum.

Uygulama Temanızı Ayarlama

Çakra UI, uygulamanız için bir tema belirlemenize olanak tanır. 'Tema' ile, uygulamanızın renk paleti, tür ölçeği, yazı tipi yığınları, kesme noktaları, kenarlık yarıçapı değerleri vb. ayarlarını kastediyorum. Renkler ve kontrast, erişilebilirliğin hayati bileşenleri olduğundan, kolayca algılanabilen renkleri kullanmak önemlidir.

Kutudan çıktığı gibi Chakra UI, uygulama gereksinimlerinizin çoğunu renkler, yazı tipleri vb. açısından karşılayan varsayılan bir tema nesnesiyle birlikte gelir. Varsayılan tema, renk modlarının kolayca değiştirilmesine izin veren kontrast göz önünde bulundurularak ayarlanmıştır (bundan sonra daha fazlası).

Ancak Chakra UI, varsayılan temayı genişletmenize veya tamamen değiştirmenize olanak tanır. Bu, Styled System Theme Spesifikasyonuna dayalı bir tema nesnesini kabul ederek mümkündür.

Tema nesnesindeki değerler, uygulamanızda kullanım için otomatik olarak mevcuttur. Örneğin, theme.colors içinde belirtilen renklere, bileşenlerinizdeki color , borderColor , backgroundColor , fill , stroke ve style props tarafından başvurulabilir.

Uygulamanızı kişiselleştirmek için Chakra UI tarafından sağlanan varsayılan temayı geçersiz kılabilir veya içinde yeni değerler ayarlayabilirsiniz. Bunu yapmak için, Chakra UI Nuxt modülü, bir nesne alan bir extendTheme özelliğini alacak bir chakra nesnesini ortaya çıkarır. extendTheme verilen nesne, Chakra UI varsayılan tema nesnesiyle yinelemeli olarak birleştirilecektir. Marka renk paletimizi Çakra'ya ekleyelim ki uygulamamızda kullanabilelim.

Not : Chakra UI, temanızın renk nesnesine 50 - 900 arasındaki tuşları kullanarak renk paleti eklemenizi önerir. Bu paletleri oluşturmak için coolors ve palx gibi web araçlarını kullanabilirsiniz.

Demo ana sayfamız için bir marka rengi kireç kullanacağım. Chakra UI'nin bu renkten haberdar olmasını sağlamak için, projemin dizininin kökünde chakra adlı bir klasörde (ne istersen diyebilirsin) bir customeTheme nesnesi oluşturacağım. Bu objede marka renk paletimizi tanımlayacağım.

Oluşturduğunuz klasörde theme.js adlı bir dosya oluşturun ve ardından aşağıdaki parçacığı ekleyin:

 // ./chakra/theme.js const customTheme = { colors: { brand: { 50: '#f6fcee', 100: '#e2f4c8', 200: '#cbec9e', 300: '#b2e26e', 400: '#94d736', 500: '#75c800', 600: '#68b300', 700: '#599900', 800: '#477900', 900: '#294700' } } } module.exports = customTheme

Şimdi özel temamızı Chakra UI ile birleştirelim. Bunu nuxt.config.js içinde yapıyoruz. İlk olarak, özel tema nesnemize ihtiyacımız var:

 import customTheme from './chakra/theme'

Ardından, Chakra UI Nuxt modülü tarafından sağlanan chakra anahtarını belirlemeli ve customTheme extendTheme özelliğine geçirmeliyiz:

 chakra: { extendTheme: customTheme },

nuxt.config.js dosyanız şöyle görünmelidir:

 // nuxt.config.js import customTheme from './chakra/theme' export default { mode: 'spa', /* * Headers of the page */ head: { title: process.env.npm_package_name || '', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { hid: 'description', name: 'description', content: process.env.npm_package_description || '' } ], link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }] }, /* * Customize the progress-bar color */ loading: { color: '#fff' }, /* * Global CSS */ css: [], /* * Plugins to load before mounting the App */ plugins: [], /* * Nuxt.js dev-modules */ buildModules: [ // Doc: https://github.com/nuxt-community/eslint-module '@nuxtjs/eslint-module' ], /* * Nuxt.js modules */ modules: [ '@chakra-ui/nuxt', '@nuxtjs/emotion' ], chakra: { extendTheme: customTheme }, /* * Build configuration */ build: { /* * You can extend webpack config here */ extend (config, ctx) {} } }

Uygulamanızı npm run dev ile çalıştırdığınızda, ana sayfanız şöyle görünmelidir:

Chakra UI ve NuxtJS'yi gösteren bir demo uygulaması
(Büyük önizleme)

Chakra UI'yi başarıyla yüklediğimize ve uygulamamızın özel temasını eklediğimize göre, şimdi Chakra-ui gezgini oluşturmaya başlayalım.

Ana Navigasyonumuzun Oluşturulması

Navigasyonumuzun marka ismimiz olmasını istiyoruz, bu durumda Chakra-ui gezgini , 2 navigasyon bağlantısı: Documentation ve Repo ve renk modumuzu değiştirmekten sorumlu bir düğme olacak. Chakra UI kullanarak uygulamamızın ana navigasyonunu oluşturacağımız NavBar adlı components dizini altında yeni bir component oluşturalım.

Bunu yapalım. NavBar.vue aşağıdaki parçacığı ekleyin:

 <template> <c-box as="nav" h="60px" px="4" d="flex" align-items="center" shadow="sm" > <c-link as="nuxt-link" to="/" color="brand.700" font-weight="bold" :_hover="{ color: 'brand.900' }" > Chakra-ui Explorer </c-link> <c-box as="ul" color="gray.500" d="flex" align-items="center" list-style-type="none" ml="auto" > <c-box as="li" mr="8"> <c-link color="gray.500" :_hover="{ color: 'brand.400' }" is-external href="https://vue.chakra-ui.com" > Documentation </c-link> </c-box> <c-box as="li" mr="8"> <c-link color="gray.500" :_hover="{ color: 'brand.400' }" is-external href="https://github.com/chakra-ui/chakra-ui-vue" > Repo </c-link> </c-box> <c-box as="li"> <c-icon-button variant="ghost" variant-color="gray[900]" aria-label="Switch to dark mode" icon="moon" /> </c-box> </c-box> </c-box> </template> <script> import { CBox, CLink, CIconButton } from '@chakra-ui/vue' export default { name: 'NavBar', components: { CBox, CLink, CIconButton } } </script>

Ardından, bu bileşeni varsayılan düzen bileşenimiz olan default.vue ve şablonumuza eklememiz gerekiyor, böylece genel olarak varsayılan düzenimiz şöyle görünmelidir:

 <template> <div class="container"> <c-theme-provider> <c-color-mode-provider> <c-box as="section"> <c-reset /> <nav-bar /> <nuxt /> </c-box> </c-color-mode-provider> </c-theme-provider> </div> </template> <script> import { CThemeProvider, CColorModeProvider, CReset, CBox } from '@chakra-ui/vue' import NavBar from '@/components/NavBar' export default { name: 'DefaultLayout', components: { CThemeProvider, CColorModeProvider, CReset, CBox, NavBar } } </script>

Şimdi uygulamanızı çalıştırdığınızda şunu göreceksiniz:

Navigasyonun, belirtmeden bile erişilebilir olduğunu görebilirsiniz. Bu, yalnızca klavyenizdeki Sekme tuşuna bastığınızda görülebilir; Chakra UI, odak yönetimini gerçekleştirirken, gezinme menüsündeki her bağlantıya odaklanabilirsiniz.

Prop as

Yukarıdaki NavBar.vue snippet'inden, as prop'u fark edeceksiniz. Bu, bir HTML etiketini veya bileşenin temel etiketi olarak oluşturulacak başka bir bileşeni, tüm stilleri ve özellikleriyle birlikte iletmenize izin veren, Çakra UI bileşenlerinde bulunan bir özelliktir. Yani yaptığımız zaman:

 <c-box as="li"> <c-icon-button variant="ghost" variant-color="gray[900]" aria-label="Switch to dark mode" icon="moon" /> </c-box>

Çakra Kullanıcı Arabiriminden bir <li> öğesi oluşturmasını ve içine bir düğme bileşeni yerleştirmesini istiyoruz. Bu kalıbı burada kullandığımızı da görebilirsiniz:

 <c-link as="nuxt-link" to="/" color="brand.700" font-weight="bold" :_hover="{ color : 'brand.900' }"> ChakraMart </c-link>

Yukarıdaki durumda, Chakra UI'dan Nuxt'un <nuxt-link /> bileşenini oluşturmasını istiyoruz.

as prop, işaretlemenizin bağlamı için doğru (veya yanlış) öğeyi kullanma gücü verir. Bunun anlamı, uygulamanızı ekran okuyucular için daha anlamlı kılacak semantik işaretlemeler kullanarak uygulama şablonunuzu oluşturmak için ondan yararlanabilmenizdir. Bu nedenle, uygulamanızın ana içeriği için genel bir div öğesi kullanmak yerine, as prop ile, ekran okuyucularına bunun uygulamanızın ana içeriği olduğunu söyleyen bir main öğe oluşturabilirsiniz.

Not : Chakra UI bileşenleri tarafından açığa çıkarılan tüm aksesuarlar için belgelere bakın. Ayrıca chakra/theme.js marka renginin nasıl belirtildiğine daha yakından bakın. Yukarıdaki snippet'ten, onu Chakra UI'nin sağladığı renklerden herhangi biri olarak kullandığımızı görebilirsiniz. Dikkat edilmesi gereken bir diğer şey de, CIconButton için kullandığımız moon simgesidir. moon simgesi, Chakra UI'nin kutudan çıkardığı varsayılan simgelerden biridir.

Renk Modu

Chakra UI'nin özelliklerinden biri de renk modu desteğidir. Ve Chakra-ui gezgininin navigasyonunda moon simgesinin kullanımından anlayabilirsiniz, karanlık modu entegre etmeyi planlıyoruz. O yüzden en sona bırakmak yerine, hemen şimdi bitirelim ve bağlayalım. Bunu yapmak için, Vue'nin sağlama/inject işlevini kullanan CColorModeProvider , $chakraColorMode ve $toggleColorMode işlevlerini sağlar. $chakraColorMode , uygulamanızın geçerli renk modunu döndürürken, $ light renk modunu $toggleColorMode dark veya tam tersi şekilde değiştirir. Bu iki işlevi kullanmak için bunları NavBar.vue bileşenine enjekte etmemiz gerekecek. Bunu aşağıdaki <script /> bölümünde yapalım:

 <script> <script> import { CBox, CLink, CIconButton } from '@chakra-ui/vue' export default { name: 'NavBar', inject: ['$chakraColorMode', '$toggleColorMode'], components: { CBox, CLink, CIconButton }, } </script>

Renk modunu döndürmek için hesaplanmış bir özellik oluşturalım:

 ... computed: { colorMode () { return this.$chakraColorMode() } }

Şimdi NavBar.vue her iki işlevi de enjekte ettiğimize göre, renk değiştirme modu düğmesini değiştirelim. Renk moduna bağlı olarak farklı bir simge göstermesi için simgeyle başlayacağız. CIconButton bileşenimiz şimdi bu durumda şöyle görünür:

 <c-icon-button variant="ghost" variant-color="gray[900]" aria-label="Switch to dark mode" :icon="colorMode == 'light' ? 'moon' : 'sun'" />

Şu anda, ekran okuyuculara karanlık moda geçmelerini söylemek için bir aria-label özniteliği kullanıyoruz. Bunu hem açık hem de karanlık modu destekleyecek şekilde değiştirelim:

 <c-icon-button variant="ghost" variant-color="gray[900]" :aria-label="`Switch to ${colorMode == 'light' ? 'dark : 'light'} mode`" :icon="colorMode == 'light' ? 'moon' : 'sun'" />

Son olarak, $toggleColorMode işlevini kullanarak uygulamamızın renk modunu değiştirmek için düğmeye bir tıklama olay işleyicisi ekleyeceğiz. Şöyle:

 <c-icon-button variant="ghost" variant-color="gray[900]" :aria-label="`Switch to ${colorMode == 'light' ? 'dark' : 'light'} mode`" :icon="colorMode == 'light' ? 'moon' : 'sun'" @click="$toggleColorMode" />

Renk modu kurulumumuzun çalışıp çalışmadığını test etmek için, renk modunun bir enterpolasyonunu ve renk modumuzu değiştiren CIconButton yanına bir metin ekleyeceğim. Şöyle:

 <c-box as="li"> <c-icon-button variant="ghost" variant-color="gray[900]" :aria-label="`Switch to ${colorMode == 'light' ? 'dark' : 'light'} mode`" :icon="colorMode == 'light' ? 'moon' : 'sun'" @click="$toggleColorMode" /> Current mode: {{ colorMode }} </c-box>

Uygulamamız şu anda şöyle görünüyor:

Bu yüzden, Çakra UI'de renk modunu ayarlamada ağır kaldırmayı yaptık. Artık uygulamamızı renk moduna göre şekillendirebiliriz. Varsayılan.vue'ya gidelim ve uygulamamızı CColorModeProvider default.vue sağlanan renk modu slot desteğini kullanalım. İlk önce şablonumuzu default.vue içinde değiştirelim.

 <template> <div class="container"> <c-theme-provider> <c-color-mode-provider #default="{ colorMode }"> <c-box v-bind="mainStyles[colorMode]" w="100vw" h="100vh" as="section" > <c-reset /> <nav-bar /> <nuxt /> </c-box> </c-color-mode-provider> </c-theme-provider> </div> </template>

colorMode tarafından sağlanan slot props özelliğinden CColorModeProvider yok ediyoruz ve ardından birazdan oluşturacağımız mainStyle nesnesine dinamik anahtar olarak geçiriyoruz. Buradaki fikir, colorMode değerine dayalı olarak farklı bir stil kümesi kullanmaktır. Ayrıca, CBox bileşenimizin genişliğini ve yüksekliğini ayarlamak için sırasıyla w ve h kısayollarıyla genişlik ve yüksekliği kullanıyorum. Bu mainStyles nesnesini betik bölümümüzde tanımlayalım:

 <script> import { CThemeProvider, CColorModeProvider, CReset, CBox } from '@chakra-ui/vue' import NavBar from '@/components/NavBar' export default { name: 'DefaultLayout', components: { CThemeProvider, CColorModeProvider, CReset, CBox, NavBar }, data () { return { mainStyles: { dark: { bg: 'gray.900', color: 'whiteAlpha.900' }, light: { bg: 'whiteAlpha.900', color: 'gray.900' } } } } } </script>

Chakra-ui gezgini artık karanlık mod desteğine sahip!

Artık navigasyon çubuğumuza sahibiz ve uygulamamız için karanlık mod desteğini başarıyla kurduk, şimdi uygulamamızın etinin bulunabileceği pages/ dizinlerimizde index.vue odaklanalım. Bunun gibi bir CBox bileşeni ekleyerek başlayacağız:

 <c-box as="main" d="flex" direction="column" align-items="center" p="10" > </c-box>

Sonra içine CInput bileşenini ekleyeceğiz. index.vue sayfa bileşenimiz şu şekilde görünecektir:

 <template> <c-box as="main" d="flex" align-items="center" direction="column" w="auto" p="16" > <c-input placeholder="Search components..." size="lg" mb="5" is-full-width /> </c-box> </template> <script> import { CBox, CInput } from '@chakra-ui/vue' export default { components: { CBox, CInput } } </script>

Uygulamamız şimdi nasıl görünüyor:

Yukarıdaki ekran görüntüsünden, CInput öğesinin karanlık modda olduğunu otomatik olarak nasıl bildiğini görebilir ve bunu açıkça ayarlamamış olsak bile buna göre ayarlayabilirsiniz. Ayrıca, kullanıcı o CInput bileşenine odaklanmak için sekme tuşuna basabilir.

Bileşenler Listesini Ekleme

Yani Chakra-ui gezgininin fikri (daha önce belirtildiği gibi) kullanıcıya Çakra UI'deki mevcut tüm bileşenleri göstermektir, böylece bu bileşenlerin bir listesini ve kullanıcıyı belgelere götürecek bağlantılara sahip olabiliriz. bileşenin. Bunu yapmak için projemizin dizininin kökünde data adında bir klasör oluşturacağım ve ardından index.js adında bir dosya oluşturacağım. index.js bileşenlerin adlarını içeren bir dizi nesneyi dışa aktaracağım. Dosyanın nasıl görünmesi gerektiği aşağıda açıklanmıştır:

 // ./data/index.js export const components = [ { name: 'Accordion' }, { name: 'Alert' }, { name: 'AlertDialog' }, { name: 'AspectRatioBox' }, { name: 'AspectRatioBox' }, { name: 'Avatar' }, { name: 'Badge' }, { name: 'Box' }, { name: 'Breadcrumb' }, { name: 'Button' }, { name: 'Checkbox' }, { name: 'CircularProgress' }, { name: 'CloseButton' }, { name: 'Code' }, { name: 'Collapse' }, { name: 'ControlBox' }, { name: 'Divider' }, { name: 'Drawer' }, { name: 'Editable' }, { name: 'Flex' }, { name: 'Grid' }, { name: 'Heading' }, { name: 'Icon' }, { name: 'IconButton' }, { name: 'IconButton' }, { name: 'Input' }, { name: 'Link' }, { name: 'List' }, { name: 'Menu' }, { name: 'Modal' }, { name: 'NumberInput' }, { name: 'Popover' }, { name: 'Progress' }, { name: 'PseudoBox' }, { name: 'Radio' }, { name: 'SimpleGrid' }, { name: 'Select' }, { name: 'Slider' }, { name: 'Spinner' }, { name: 'Stat' }, { name: 'Stack' }, { name: 'Switch' }, { name: 'Tabs' }, { name: 'Tag' }, { name: 'Text' }, { name: 'Textarea' }, { name: 'Toast' }, { name: 'Tooltip' } ]

Uygulamamızın tamamlanması için, yukarıdaki diziyi pages/index.vue ve tüm bileşenleri görüntülemek için üzerinde yineleyeceğim. Ayrıca, kullanıcıya arama kutusunu kullanarak bileşenleri filtreleme yeteneği vereceğiz. İşte tam uygulama:

 // pages/index.vue <template> <c-box as="main" d="flex" align-items="space-between" flex-direction="column" w="auto" p="16" > <c-input v-model="search" placeholder="Search components..." size="lg" mb="10" is-full-width /> <c-grid template-columns="repeat(4, 1fr)" gap="3" p="5"> <c-box v-for="(chakraComponent, index) of filteredComponents" :key="index" h="10"> {{ chakraComponent.name }} <c-badge> <c-link is-external :href="lowercase(`https://vue.chakra-ui.com/${chakraComponent.name}`)" > <c-icon name="info" size="18px" /> </c-link> </c-badge> </c-box> </c-grid> </c-box> </template> <script> import { CBox, CInput, CGrid, CLink, CBadge, CIcon } from '@chakra-ui/vue' import { components as chakraComponents } from '../data' export default { components: { CBox, CInput, CGrid, CBadge, CIcon, CLink }, data () { return { search: '' } }, computed: { filteredComponents () { return chakraComponents.filter((component) => { return this.lowercase(component.name).includes(this.lowercase(this.search)) }) } }, methods: { lowercase (value) { return value.toLowerCase() } } } </script>

Ve şimdi uygulamamız şuna benziyor:

Artık bileşen listesi için karanlık modun ne kadar otomatik olduğunu ve erişilebilirliğe yardımcı olmak için bağlantılar için (varsayılan olarak) odak yönetiminin nasıl eklendiğini görebilirsiniz.

Çakra Kullanıcı Arayüzünü Test Etme

Son olarak, üzerinde Lighthouse erişilebilirlik testini çalıştırarak uygulamamızın nasıl puan aldığını görelim. Dikkat edin, bu test Axe kullanıcı etki değerlendirmesine dayanmaktadır. Aşağıda testin bir ekran görüntüsü bulunmaktadır. Bu adımları izleyerek testi kendiniz de çalıştırabilirsiniz.

Yukarıdaki ekran görüntüsünden Chakra UI uygulamamızın deniz feneri erişilebilirlik testinde 85 puan aldığını görebilirsiniz.

Çözüm

Bu makalede, erişilebilir arayüzler oluşturma ihtiyacına değindik ve ayrıca Chakra UI bileşenleri için bir kaşif (Chakra-ui gezgini) oluşturarak, sıfırdan erişilebilir uygulamalar oluşturmak için Chakra UI'nin nasıl kullanılacağını gördük.

  • Netlify'daki canlı uygulamayı görün →
  • Depoya bağlantı →