精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

React Spectrum,Adobe的組件庫和工具入門

開發(fā) 開發(fā)工具
React Spectrum是一個由Adobe開發(fā)的組件庫和工具,可幫助你構(gòu)建自適應(yīng),可訪問且健壯的用戶體驗(yàn)。幫助開發(fā)者使用React構(gòu)建功能豐富的應(yīng)用程序。

React Spectrum是一個由Adobe開發(fā)的組件庫和工具,可幫助你構(gòu)建自適應(yīng),可訪問且健壯的用戶體驗(yàn)。幫助開發(fā)者使用React構(gòu)建功能豐富的應(yīng)用程序。

[[339306]]

https://react-spectrum.adobe.com/index.html

它具有三個主要庫,你可以根據(jù)需要將它們一起使用或分別使用:

  • React Spectrum是Adobe設(shè)計(jì)系統(tǒng)Spectrum的一個實(shí)現(xiàn)。
  • React Aria是一個鉤子的集合,用于提供可訪問的UI基元,如國際化和在所有設(shè)備上的一致交互。
  • React Stately是鉤子的另一個集合,但專注于啟用跨平臺狀態(tài)管理

結(jié)合在一起,React Spectrum讓你在開發(fā)Web應(yīng)用時有了一個良好的開端,超越了最低限度的要求,提供了卓越的用戶體驗(yàn)。

這篇文章將幫助你了解React Spectrum想要解決什么問題,以及如何開始使用它。

設(shè)計(jì)系統(tǒng)的問題

即使有React、Vue和Angular等現(xiàn)代前端庫的幫助,要創(chuàng)建一個符合UI一致性、可訪問性、國際化和可用性等高標(biāo)準(zhǔn)的Web應(yīng)用仍然相當(dāng)困難。這也是為什么如今設(shè)計(jì)系統(tǒng)如此流行的原因。

但是創(chuàng)建符合UI標(biāo)準(zhǔn)的設(shè)計(jì)系統(tǒng)既費(fèi)時又費(fèi)錢。從我的經(jīng)驗(yàn)來看,我總能看到開發(fā)人員和設(shè)計(jì)人員把過多的精力放在組件風(fēng)格上,而把可訪問性和國際化排除在基礎(chǔ)之外。當(dāng)公司剛起步時,沒人會考慮這些!

考慮到本地化工作的難度,這一點(diǎn)是可以理解的。你需要考慮字符串翻譯,本地化日期和數(shù)字格式,啟用從右到左的交互等等。

這就是為什么React Spectrum如此有價值的原因。它利用Adobe在設(shè)計(jì)和開發(fā)功能豐富的用戶界面方面的經(jīng)驗(yàn),讓你在實(shí)現(xiàn)所有這些瑣碎的細(xì)節(jié)方面有一個好的開端,這些細(xì)節(jié)使得所有設(shè)備的用戶體驗(yàn)都很好。

[[339307]]

React Spectrum如何幫助你

React Spectrum為你提供了適合交互和不同屏幕尺寸的組件。它包括全屏閱讀器和鍵盤導(dǎo)航支持,可訪問性。

該庫提供的組件應(yīng)遵循Spectrum的設(shè)計(jì)指南作為道具,因此你將不會使用常規(guī)的HTML屬性,例如“class”和“aria-label”。它還實(shí)現(xiàn)了主題設(shè)置,因此你可以輕松切換應(yīng)用程序的主題。

要使用React Spectrum,你需要安裝庫軟件包:

  1. npm install @adobe/react-spectrum 

然后使用其提供程序容器定義其主題,區(qū)域設(shè)置和其他應(yīng)用程序設(shè)置:

  1. import {Provider, defaultTheme, Button} from '@adobe/react-spectrum'; 
  2. function App() { 
  3.   return ( 
  4.     <Provider theme={defaultTheme}> 
  5.       <Button variant="cta">Hello React Spectrum!</Button> 
  6.     </Provider> 
  7.   ); 

React Spectrum還為你提供了Flex和Grid兩種布局系統(tǒng),所以你可以選擇你的團(tuán)隊(duì)要用哪種布局。

  1. import {Flex} from '@adobe/react-spectrum' 
  2. // the component 
  3. <Flex direction="column" width="size-2000" gap="size-100"> 
  4.   <View backgroundColor="celery-600" height="size-800" /> 
  5.   <View backgroundColor="blue-600" height="size-800" /> 
  6.   <View backgroundColor="magenta-600" height="size-800" /> 
  7. </Flex> 

將渲染為:

React Spectrum,Adobe的組件庫和工具入門

而Grid組件:

  1. import {Grid} from '@adobe/react-spectrum' 
  2. // the component 
  3. <Grid 
  4.   areas={['header  header', 'sidebar content', 'footer  footer']} 
  5.   columns={['1fr', '3fr']} 
  6.   rows={['size-1000', 'auto', 'size-1000']} 
  7.   height="size-6000" 
  8.   gap="size-100"> 
  9.   <View backgroundColor="celery-600" gridArea="header" /> 
  10.   <View backgroundColor="blue-600" gridArea="sidebar" /> 
  11.   <View backgroundColor="purple-600" gridArea="content" /> 
  12.   <View backgroundColor="magenta-600" gridArea="footer" /> 
  13. </Grid> 

這將渲染為:

React Spectrum,Adobe的組件庫和工具入門

除了所有好的基于組件的UI之外,React Spectrum還包括如何測試你用它構(gòu)建的應(yīng)用程序的指南,所以如果你有興趣按照Adobe對其UI元素的設(shè)計(jì)來構(gòu)建你的React應(yīng)用程序,你不會后悔使用它。

React Aria如何工作

React Aria的主要目的是幫助你實(shí)現(xiàn)所有人在所有設(shè)備上的可訪問性。這包括各種類型的殘疾人:視覺,聽覺,運(yùn)動和認(rèn)知障礙。

React Aria的偉大之處在于,每個鉤子都被歸納在一個特定的包下,你可以單獨(dú)安裝。這將使你可以將鉤子逐步地逐步引入到組件中。

React Aria有組件鉤子,允許你在不同的設(shè)備上構(gòu)建一致的非風(fēng)格化組件,當(dāng)然如果你想的話,你可以將其風(fēng)格化。

例如,有一個useButton鉤子,可以渲染一個具有以下功能的按鈕:

  • 原生HTML<button>支持
  • <a>和通過ARIA支持的自定義元素類型
  • 鼠標(biāo)和觸摸事件處理以及按狀態(tài)管理
  • 鍵盤焦點(diǎn)管理和跨瀏覽器標(biāo)準(zhǔn)化
  • 鍵盤事件支持空格鍵和Enter鍵

這是實(shí)現(xiàn)鉤子的方法:

  1. function Button(props) { 
  2.   let ref = useRef(); 
  3.   let {buttonProps} = useButton(props, ref); 
  4.   let {children} = props; 
  5.   return ( 
  6.     <button {...buttonProps} ref={ref}> 
  7.         {children} 
  8.         </button> 
  9.     ); 
  10. <Button onPress={() => alert('Button pressed!')}>Test</Button> 

 

React Aria的另一個獨(dú)特功能是其焦點(diǎn)鉤子。FocusRing通過給元素賦予特定的樣式,通常是一個藍(lán)色的邊框,幫助鍵盤用戶確定頁面上哪個元素具有鍵盤焦點(diǎn)。

  1. // style 
  2. .button { 
  3.   -webkit-appearance: none; 
  4.   appearance: none; 
  5.   background: green; 
  6.   border: none; 
  7.   color: white; 
  8.   font-size: 14px; 
  9.   padding: 4px 8px; 
  10. .button.focus-ring { 
  11.   outline: 2px solid dodgerblue; 
  12.   outline-offset: 2px; 
  13.  
  14. // component 
  15. <FocusRing focusRingClass="focus-ring"> 
  16.   <button className="button">Test</button> 
  17. </FocusRing> 

 

當(dāng)你不使用CSS類(例如樣式組件)進(jìn)行樣式設(shè)置時,可以使用useFocusRing鉤子:

  1. function Example() { 
  2.   let {isFocusVisible, focusProps} = useFocusRing(); 
  3.   return ( 
  4.       <button 
  5.         {...focusProps} 
  6.         style={{ 
  7.           WebkitAppearance: 'none', 
  8.           appearance: 'none', 
  9.           background: 'green', 
  10.           border: 'none', 
  11.           color: 'white', 
  12.           fontSize: 14, 
  13.           padding: '4px 8px', 
  14.           outline: isFocusVisible ? '2px solid dodgerblue' : 'none', 
  15.           outlineOffset: 2 
  16.         }}> 
  17.         Test 
  18.       </button> 
  19.     ); 

最后,React Aria還提供了對國際化的支持,以幫助你的應(yīng)用程序適應(yīng)特定的語言或地區(qū)。i18nProvider組件允許你使用應(yīng)用程序定義的語言環(huán)境覆蓋瀏覽器中的默認(rèn)語言環(huán)境:

  1. import {I18nProvider} from '@react-aria/i18n'; 
  2.  
  3. <I18nProvider locale="fr-FR"> 
  4.   <YourApp /> 
  5. </I18nProvider> 

React Stately如何工作

React Stately是一個鉤子庫,可為你的設(shè)計(jì)系統(tǒng)提供跨平臺狀態(tài)管理。它可以在Web,react-native或任何其他平臺上運(yùn)行。

例如,你可以實(shí)現(xiàn)useRadioGroupState來幫助存儲一個Radio按鈕組的狀態(tài),而不需要定義自己的onChange函數(shù)。

  1. import {useRadioGroupState} from '@react-stately/radio'; 
  2. function RadioGroup(props) { 
  3.   let state = useRadioGroupState(props); 
  4.    
  5. return ( 
  6.     <> 
  7.       <label> 
  8.         <input 
  9.           type="radio" 
  10.           name={state.name} 
  11.           checked={state.selectedValue === 'dogs'} 
  12.           onChange={() => state.setSelectedValue('dogs')} 
  13.         /> 
  14.         Dogs 
  15.       </label> 
  16.       <label> 
  17.         <input 
  18.           type="radio" 
  19.           name={state.name} 
  20.           checked={state.selectedValue === 'cats'} 
  21.           onChange={() => state.setSelectedValue('cats')} 
  22.         /> 
  23.         Cats 
  24.       </label> 
  25.     </> 
  26.   ); 
  27.  
  28. <RadioGroup 
  29.   defaultValue="dogs" 
  30.   onChange={(value) => alert(`Selected ${value}`)} 
  31. /> 

React Stately的大多數(shù)鉤子就像帶有不可變性的常規(guī)useState鉤子一樣。將其用于Web時,可以將其與React Aria配對以提供組件的可訪問性和用戶交互。就像React Aria一樣,React Stately可以逐步實(shí)現(xiàn)。

總結(jié)

許多公司和團(tuán)隊(duì)只是沒有資源來優(yōu)先考慮諸如可訪問性、國際化、全鍵盤導(dǎo)航和觸摸交互等功能。我們中的大多數(shù)人都在忙于發(fā)布核心應(yīng)用功能。

這就是為什么React Spectrum對許多團(tuán)隊(duì)如此有價值。這些庫的設(shè)計(jì)讓你可以在不同的設(shè)備上逐步將你的應(yīng)用邏輯分享給許多組件。有了React Spectrum,你不必再投入時間和金錢去創(chuàng)建一個支持無障礙和國際化的設(shè)計(jì)系統(tǒng)。

 

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2015-07-03 10:41:47

ReactWebpack

2019-03-13 10:10:26

React組件前端

2022-05-11 07:50:15

React UI組件庫前端

2023-06-14 08:01:13

ReactUI 組件庫

2009-02-26 15:01:57

2025-07-09 07:05:00

2021-09-02 18:46:40

React CSS 組件

2017-02-28 21:57:05

React組件

2019-07-20 23:30:48

開發(fā)技能代碼

2013-06-26 11:09:34

編碼工具

2019-07-22 10:42:11

React組件前端

2022-07-06 08:29:12

antdInput 組件

2025-04-09 08:08:56

2012-07-06 13:50:44

跨平臺工具Adobe Phone

2024-05-23 08:05:04

2021-09-01 18:42:57

React Props組件

2021-07-09 08:33:35

React組件受控

2011-08-01 15:45:26

HTML 5

2022-05-13 08:48:50

React組件TypeScrip

2016-11-25 13:50:15

React組件SFC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

成年人一级黄色片| 一区二区三区韩国| 欧美熟妇另类久久久久久不卡 | 久久久久成人片免费观看蜜芽 | 久久精品二区| 无码人妻精品一区二区| 久久综合成人| 亚洲国产一区自拍| 国产又黄又猛视频| 菠萝蜜视频国产在线播放| 成人精品鲁一区一区二区| 国产成人免费91av在线| a在线视频播放观看免费观看| 狼人精品一区二区三区在线 | 美女精品一区最新中文字幕一区二区三区 | 日韩大陆毛片av| 在线观看亚洲色图| ****av在线网毛片| 中文字幕一区二区三区四区| 精品久久久久久乱码天堂| 国产又黄又粗又长| 免费亚洲网站| 久久久久久久国产| 自拍偷拍第9页| 欧美亚洲国产日韩| 日韩欧美久久久| 午夜在线观看av| 成人直播视频| 五月婷婷另类国产| 青青视频免费在线观看| 高清毛片在线看| 99久久er热在这里只有精品15| 成人写真视频福利网| 区一区二在线观看| 亚洲激情女人| 久久久久成人网| 懂色av懂色av粉嫩av| 日韩精品中文字幕第1页| 日韩国产中文字幕| 白嫩情侣偷拍呻吟刺激| 精品999日本久久久影院| 欧美三级日韩三级| 日日摸天天爽天天爽视频| 7777kkk亚洲综合欧美网站| 一区二区三区在线播| 一区二区精品国产| 国产精品一级伦理| 久久天堂av综合合色蜜桃网| 国产亚洲欧美另类一区二区三区| 国产白浆在线观看| 精品一区精品二区高清| 国产精品专区一| 久久国产香蕉视频| 日韩不卡在线观看日韩不卡视频| 庆余年2免费日韩剧观看大牛| 日本五十路女优| 在线欧美一区| 91精品国产色综合久久不卡98口 | 在线免费看av| 中文字幕日本不卡| 91香蕉视频网址| 国产在线更新| 有坂深雪av一区二区精品| a级网站在线观看| sm国产在线调教视频| 亚洲精选视频在线| 日本免费成人网| aa级大片免费在线观看| 精品久久在线播放| 欧美日韩亚洲第一| 五月激情丁香网| 美日韩精品视频| 国产成人精品在线观看| 国产精品尤物视频| 精品一区二区日韩| 亚洲一区二区三区久久| 亚洲国产精品成人久久蜜臀| 东方欧美亚洲色图在线| 久久久久久九九九九| 国产精品四虎| 亚洲精品水蜜桃| 人人妻人人澡人人爽欧美一区双 | 亚洲日本三级| 夜夜嗨av色综合久久久综合网| 女人黄色一级片| 亚洲国产不卡| 国内精品模特av私拍在线观看| 人人干人人干人人干| 日韩av中文在线观看| 成人免费网站在线看| 亚洲av无码乱码国产精品| fc2成人免费人成在线观看播放| 久久青青草综合| 999在线视频| 亚洲一区二区美女| 久久无码高潮喷水| 粉嫩av国产一区二区三区| 精品久久久久久综合日本欧美| 亚洲一区二区乱码| 97国产成人高清在线观看| 欧美黄色片视频| 涩涩视频在线观看| 国产91精品在线观看| 欧美日韩最好看的视频| jizz性欧美10| 欧洲视频一区二区| 亚洲欧美日韩偷拍| 91麻豆国产自产在线观看亚洲| 久久久久久久久久久亚洲| 成人免费一级片| 成人在线一区二区三区| 亚洲高清视频在线观看| 大菠萝精品导航| 欧美日韩国产精品自在自线| 一女三黑人理论片在线| 91成人观看| 国产精品久久久亚洲| 肥臀熟女一区二区三区| 国产精品久久久久久久久图文区| 少妇人妻无码专区视频| 日韩免费精品| xxxxxxxxx欧美| 国产精品va无码一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 色一情一乱一伦一区二区三区丨| tube8在线hd| 日韩区在线观看| 国产精品免费在线视频| 视频一区二区三区在线| 国产精品我不卡| 久热av在线| 亚洲.国产.中文慕字在线| 91高清国产视频| 欧美亚洲国产一区| 欧美有码在线观看| 性欧美8khd高清极品| 国产精品久久久久桃色tv| 青青草原av在线播放| 黄色免费大全亚洲| 欧美精品一区二区三区国产精品| 国产精品成人久久久| www.欧美色图| 国产成人亚洲综合无码| 欧美成人福利| 亚洲欧美日韩在线高清直播| 日本免费在线播放| 激情综合一区二区三区| 日韩免费av电影| 日韩国产网站| 亚洲精品中文字幕av| 激情四射综合网| 精品亚洲成a人在线观看| 亚洲精品中文字幕在线| 新片速递亚洲合集欧美合集| 日韩av在线网页| 久久综合久久鬼| 国产精品 日产精品 欧美精品| 神马午夜伦理影院| **精品中文字幕一区二区三区| 在线播放国产一区二区三区| 中文字幕高清在线免费播放| 91蝌蚪国产九色| www.com毛片| 偷窥自拍亚洲色图精选| 57pao成人国产永久免费| 人妻一区二区三区四区| 亚洲高清中文字幕| 可以看的av网址| 欧美日韩午夜| 国产福利不卡| 俄罗斯一级**毛片在线播放| 日韩精品一区二区三区在线播放 | 久久久久久毛片免费看 | 久久久一本精品99久久精品| 欧美另类老肥妇| 日韩精品在线第一页| 337p粉嫩色噜噜噜大肥臀| 99这里只有精品| 日韩欧美一区三区| 亚洲区小说区图片区qvod| 2019中文字幕全在线观看| 神马久久精品| 一区福利视频| 5g国产欧美日韩视频| 欧洲在线视频| 亚洲国产精彩中文乱码av在线播放| 国产一级片久久| 26uuu久久综合| 黄色片在线免费| 欧美日韩水蜜桃| 91久久久久久久久久久久久| a在线免费观看| 亚洲丁香久久久| 日本在线播放视频| 欧美激情在线一区二区三区| 天天干天天色天天干| 欧美人成在线| 免费在线一区二区| 成人亚洲综合| 欧美精品久久久久| 国产日本在线观看| 日韩一区二区精品在线观看| 日本三级2019| 国产精品久久久久天堂| 久久久国产精品久久久| 午夜在线视频一区二区区别| 日韩av一级大片| 国产精品毛片无码| 91精品国产91久久久久福利| av每日在线更新| 亚洲国产97在线精品一区| 欧美成人精品网站| 一片黄亚洲嫩模| 亚洲无人区码一码二码三码| 久久一区二区三区四区五区| 成人手机视频在线| xvideos.蜜桃一区二区| 国产第一区电影| 国内高清免费在线视频| 伊人精品在线观看| 成人爽a毛片一区二区| 亚洲午夜私人影院| av激情在线观看| 国产欧美1区2区3区| 亚洲一区和二区| 久久蜜桃精品| 狠狠干视频网站| 成人网18免费网站| 久久精品99| 伊人www22综合色| 国产精品视频公开费视频| 免费高潮视频95在线观看网站| 久久手机精品视频| 国产日韩精品在线看| 日韩电影中文字幕在线| 亚洲免费视频网| 欧美午夜免费电影| 久草手机在线观看| 亚洲资源中文字幕| 手机在线免费看毛片| 欧美国产视频在线| 极品人妻一区二区三区| 成人美女视频在线看| 在线观看日本www| 卡一卡二国产精品| 嫩草av久久伊人妇女超级a| 亚洲免费精品| 女人帮男人橹视频播放| 亚洲情侣在线| 91xxx视频| 欧美hd在线| 亚洲最大色综合成人av| 欧美色蜜桃97| 亚洲精品国产精品国自产观看| 欧美日韩播放| 欧美日本韩国国产| 亚洲精品中文字幕99999| 精品久久精品久久| 色狼人综合干| 久久资源av| 亚洲综合小说图片| 欧洲精品久久| 精品中文一区| 色婷婷精品国产一区二区三区| 欧美一区二区三区久久| 欧美lavv| 清纯唯美亚洲经典中文字幕| 国产精品一区二区欧美黑人喷潮水 | 国产剧情在线观看一区| 久久精品午夜一区二区福利| 麻豆精品99| 欧美日本韩国一区二区三区| 国产一区二区三区探花| 五月天亚洲综合| 色综合狠狠操| 亚洲成人自拍| 在线亚洲a色| 日韩精品大片| 99久久.com| 超碰人人爱人人| 激情婷婷久久| 2022亚洲天堂| 久久精品免费观看| 日日干夜夜操s8| 国产精品99精品久久免费| 91视频在线免费| 成人免费av在线| 久久精品国产亚洲AV熟女| 国产亚洲女人久久久久毛片| 欧美性生交大片| 亚洲一区二区不卡免费| 国产在线观看99| 色狠狠色噜噜噜综合网| 中文字幕一区2区3区| 欧美一区二区三区色| 天堂在线资源库| 精品在线观看国产| 一本一道波多野毛片中文在线 | 欧美xxxx14xxxxx性爽| 超免费在线视频| 国产97在线播放| 久久亚洲精精品中文字幕| 久久精品日韩精品| 国产91精品对白在线播放| 一级日韩一区在线观看| 韩国av一区| 婷婷丁香激情网| 波多野结衣亚洲一区| 成人在线手机视频| 亚洲一区二区三区三| 蜜臀99久久精品久久久久小说 | 国产欧美视频一区| 国产喷白浆一区二区三区| 欧美国产日韩综合| 欧美日本韩国一区二区三区视频| 成人午夜免费福利| 日韩在线视频网| 俺来也官网欧美久久精品| 国产精品福利在线观看网址| 在线综合色站| 欧美日韩高清免费| 在线播放一区| 亚洲美女性囗交| 91啦中文在线观看| 久久久精品人妻一区二区三区四| 欧美私模裸体表演在线观看| 欧美一级特黄aaaaaa| 色青青草原桃花久久综合| 欧美aa免费在线| 国产精品v欧美精品∨日韩| japanese国产精品| 日本在线xxx| 国产精品一区二区在线看| 人妻熟女aⅴ一区二区三区汇编| 一区二区免费视频| 亚洲专区第一页| 亚洲人午夜色婷婷| 成人免费一区二区三区牛牛| 成人精品视频在线| 国产乱码精品一区二区亚洲| 5月婷婷6月丁香| 福利电影一区二区三区| 国产黄a三级三级| 日本久久一区二区三区| 色欲av伊人久久大香线蕉影院| 欧美精品午夜视频| 精品123区| 日日骚一区二区网站| 久久午夜精品一区二区| 五十路六十路七十路熟婆| 一区二区三区免费看视频| 国产精品久久久久毛片| 国产一区二区三区视频| 国模精品视频| 成人黄视频免费| 日韩欧美一区二区三区在线视频 | 中文亚洲欧美| 亚洲天堂美女视频| 亚洲成人午夜电影| 欧美视频一二区| 97免费视频在线播放| 成人直播在线观看| 又大又硬又爽免费视频| 成人免费视频一区| 永久免费看片在线播放| 日韩欧美www| 菠萝蜜视频在线观看www入口| 国产精品一区二区三区久久久| 成人影院天天5g天天爽无毒影院| 国产免费999| 国产精品美女www爽爽爽| 久久精品久久久久久久| 国产亚洲欧洲高清| 国产一区一一区高清不卡| 五月天色一区| 国内精品伊人久久久久影院对白| 欧美风情第一页| 欧美成人一区二区| 影音先锋中文在线视频| 国产精品12| 亚洲尤物精选| 久久亚洲无码视频| 欧美日韩精品专区| 免费黄色在线看| 亚洲自拍中文字幕| 亚洲国产精品一区| a毛片毛片av永久免费| 欧美午夜电影一区| 国产激情在线视频| 国产女人水真多18毛片18精品 | 国产欧美日韩另类视频免费观看| www.av88| 午夜精品一区二区三区av| 九色精品国产蝌蚪| 91亚洲精品久久久蜜桃借种| 精品久久香蕉国产线看观看亚洲| 国产在线黄色| 国产狼人综合免费视频| 一区二区三区四区五区精品视频| 日本乱子伦xxxx|