From 9706d4aab9b71761732c4a45777601055d724e10 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Fri, 17 Jan 2025 18:51:06 +0800 Subject: [PATCH 01/40] feat: save my migrate progress --- src/sites/assets/styles/reset.scss | 14 +- src/sites/config/baseConfig.ts | 911 ++++++++++++++++++++ src/sites/config/env.ts | 32 +- src/sites/config/index.ts | 334 +++++++ src/sites/doc/components/header/header.scss | 660 ++++++++++++-- src/sites/doc/components/header/header.tsx | 210 ++++- src/sites/doc/components/nav/nav.scss | 42 +- src/sites/doc/components/nav/nav.tsx | 20 +- 8 files changed, 2104 insertions(+), 119 deletions(-) create mode 100644 src/sites/config/baseConfig.ts create mode 100644 src/sites/config/index.ts diff --git a/src/sites/assets/styles/reset.scss b/src/sites/assets/styles/reset.scss index 27725be407..ab756a77e4 100644 --- a/src/sites/assets/styles/reset.scss +++ b/src/sites/assets/styles/reset.scss @@ -54,7 +54,12 @@ video { margin: 0; padding: 0; border: 0; - font-family: PingFang SC, Microsoft YaHei, Helvetica, Hiragino Sans GB, SimSun, + font-family: + PingFang SC, + Microsoft YaHei, + Helvetica, + Hiragino Sans GB, + SimSun, sans-serif; -webkit-overflow-scrolling: touch; } @@ -94,6 +99,9 @@ table { -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; + &::-webkit-scrollbar { + display: none; + } } html, @@ -118,5 +126,7 @@ html, body { height: 100%; width: 100%; - background: #fff; +} +#doc { + overflow-x: hidden; } diff --git a/src/sites/config/baseConfig.ts b/src/sites/config/baseConfig.ts new file mode 100644 index 0000000000..049d954e10 --- /dev/null +++ b/src/sites/config/baseConfig.ts @@ -0,0 +1,911 @@ +// 抽象配置中心 + +import homefeatures1 from '../assets/images/img-home-features1.png'; +import homefeatures2 from '../assets/images/img-home-features2.png'; +import homefeatures3 from '../assets/images/img-home-features3.png'; +import homefeatures4 from '../assets/images/img-home-features4.png'; +import homefeatures5 from '../assets/images/img-home-features5.png'; + +// React 官网配置 +export const SiteReact = { + repository: { + git: 'https://github.com/jdf2e/nutui-react', + gitee: 'https://gitee.com/jd-platform-opensource/nutui-react', + releases: 'https://github.com/jdf2e/nutui-react/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui-react/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/' + }, + { + name: 'nutui-vue', + link: 'https://nutui.jd.com/' + } + ], + newHeader: [], + header: [ + { + name: 'intro-react,theme-react,start-react,international-react,contributing-react', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro-react', + pathName: 'intro-react' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: '/zh-CN/component/button' + } + // { + // name: 'example', + // cName: '示例', + // path: 'demo.html' + // }, + // { + // name: '/zh-CN/case', + // cName: '案例', + // eName: 'Cases', + // path: '/zh-CN/case', + // pathName: 'case' + // }, + // { + // name: 'resource', + // cName: '资源', + // path: '/zh-CN/resource', + // pathName: '/zh-CN/resource' + // }, + // { + // name: 'notice', + // cName: '通知', + // path: '/zh-CN/notice', + // pathName: '/zh-CN/notice' + // }, + // { + // name: 'joinus', + // cName: '加入我们', + // path: '/zh-CN/guide/joinus', + // pathName: '/zh-CN/guide/joinus' + // } + ], + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react&type=star&count=true&size=large', + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'React Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '60+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + // { + // title: '贴心通道', + // desc: '社区维护 高效服务
技术支持 经验沉淀', + // url: homefeatures4 + // } + ], + // 是否展示taro楼层 + taroShow: true, + bizComponent: [], + cases: { + show: false + }, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'react' +}; +// React Taro 官网配置 +export const SiteReactTaro = { + repository: { + git: 'https://github.com/jdf2e/nutui-react', + gitee: '', + releases: 'https://github.com/jdf2e/nutui-react/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui-react/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/' + }, + { + name: 'nutui-vue', + link: 'https://nutui.jd.com/' + } + ], + newHeader: [], + header: [ + { + name: 'intro-react,theme-react,starttaro-react,international-react,contributing-react', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro-react', + pathName: 'intro-react' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: '/zh-CN/component/button' + } + // { + // name: 'example', + // cName: '示例', + // path: 'demo.html' + // }, + // { + // name: '/zh-CN/case', + // cName: '案例', + // eName: 'Cases', + // path: '/zh-CN/case', + // pathName: 'case' + // }, + // { + // name: 'resource', + // cName: '资源', + // path: '/zh-CN/resource', + // pathName: '/zh-CN/resource' + // }, + // { + // name: 'notice', + // cName: '通知', + // path: '/zh-CN/notice', + // pathName: '/zh-CN/notice' + // }, + // { + // name: 'joinus', + // cName: '加入我们', + // path: '/zh-CN/guide/joinus', + // pathName: '/zh-CN/guide/joinus' + // } + ], + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react&type=star&count=true&size=large', + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'React Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '60+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + // { + // title: '贴心通道', + // desc: '社区维护 高效服务
技术支持 经验沉淀', + // url: homefeatures4 + // } + ], + // 是否展示taro楼层 + taroShow: true, + bizComponent: [], + cases: { + show: false + }, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'react' +}; +// React 官网配置 +export const SiteReactNative = { + repository: { + git: 'https://github.com/jdf2e/nutui-react-native', + gitee: 'https://gitee.com/jd-platform-opensource/nutui-react-native', + releases: 'https://github.com/jdf2e/nutui-react-native/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react-native&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui-react-native/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: 'nutui-react-native', + link: '/' + } + ], + newHeader: [], + header: [ + { + name: 'intro,theme,start,international,contributing', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro', + pathName: 'intro' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: '/zh-CN/component/button' + } + ], + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react-native&type=star&count=true&size=large', + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'React Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '60+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + ], + // 是否展示taro楼层 + taroShow: true, + bizComponent: [], + cases: { + show: false + }, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'react' +}; + +// Vue 官网配置 +export const SiteVue = { + repository: { + git: 'https://github.com/jdf2e/nutui', + gitee: 'https://gitee.com/jd-platform-opensource/nutui', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + // 本地跑 dev:jdt 报错了,我先注释掉了,😂 + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/1x/' + }, + { + name: '2.x', + link: '/2x/' + }, + { + name: '3.x', + link: '/' + }, + { + name: 'nutui-jdl', + link: '/jdl/' + }, + { + name: 'nutui-react', + link: 'https://nutui.jd.com/react' + }, + { + name: 'nutui-jdt', + link: 'https://nutui.jd.com/jdt/' + } + ], + header: [ + { + name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing,official-theme,migrate-from-v3', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro', + pathName: 'intro' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: 'zh-CN/component/button' + } + // { + // name: 'example', + // cName: '示例', + // path: 'demo.html' + // }, + // { + // name: '/zh-CN/case', + // cName: '案例', + // eName: 'Cases', + // path: '/zh-CN/case', + // pathName: 'case' + // }, + // { + // name: 'resource', + // cName: '资源', + // eName: 'Resource', + // path: '/zh-CN/resource', + // pathName: '/zh-CN/resource' + // }, + // { + // name: 'notice', + // cName: '通知', + // eName: 'Notice', + // path: '/zh-CN/notice', + // pathName: '/zh-CN/notice' + // }, + // { + // name: 'joinus', + // cName: '加入我们', + // eName: 'Join us', + // path: '/zh-CN/guide/joinus', + // pathName: '/zh-CN/guide/joinus' + // } + ], + + newHeader: [ + { + name: 'component', + cName: '基础组件', + eName: 'Components', + key: '1', + path: '/zh-CN/component/button', + pathName: 'zh-CN/component/button' + }, + { + name: 'component', + cName: '高级组件', + eName: 'Components', + key: '2', + path: '/zh-CN/component/button', + pathName: 'zh-CN/component/button' + }, + { + name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing', + cName: '资源', + eName: 'Guide', + key: '3', + path: '/zh-CN/resource', + pathName: '/zh-CN/resource', + url: '#/resource' + }, + // { + // name: 'joinus', + // cName: '贡献指南', + // eName: 'Contribution Guidelines', + // key: '4', + // path: '/zh-CN/joinus', + // pathName: '/zh-CN/joinus', + // url: 'https://nutui.jd.com/#/zh-CN/guide/contributing' + // }, + { + name: 'joinus', + cName: '加入我们', + eName: 'Join us', + key: '5', + path: '/zh-CN/joinus', + pathName: '/zh-CN/joinus', + url: '#/joinus' + } + ], + // 官网 首页 + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui&type=star&count=true&size=large', + // 平台资源楼层 + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'Vue3 Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '70+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + // { + // title: '贴心通道', + // desc: '社区维护 高效服务
技术支持 经验沉淀', + // url: homefeatures4, + // }, + ], + // 是否展示taro楼层 + taroShow: true, + // 是否展示 业务组件 + bizComponent: [ + { + title: 'cat', + desc: '基于 NutUI 的大促组件', + release: true + }, + { + title: 'bingo', + desc: '基于 NutUI 的抽奖组件', + release: false + } + ], + // 应用案例 + cases: { + show: true, + moreRouter: '#/zh-CN/case' + }, + //是否展示二维码 + qrcodeShow: true, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'vue' +}; +export const SiteVueTaro = { + repository: { + git: 'https://github.com/jdf2e/nutui', + gitee: 'https://gitee.com/jd-platform-opensource/nutui', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + // 本地跑 dev:jdt 报错了,我先注释掉了,😂 + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/1x/' + }, + { + name: '2.x', + link: '/2x/' + }, + { + name: '3.x', + link: '/' + }, + { + name: 'nutui-jdl', + link: '/jdl/' + }, + { + name: 'nutui-react', + link: 'https://nutui.jd.com/react' + }, + { + name: 'nutui-jdt', + link: 'https://nutui.jd.com/jdt/' + } + ], + header: [ + { + name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing,,official-theme,migrate-from-v3', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro', + pathName: 'intro' + }, + { + name: 'component', + cName: '组件', + eName: 'Component', + path: '/zh-CN/component/button', + pathName: 'zh-CN/component/button' + } + // { + // name: 'example', + // cName: '示例', + // path: 'demo.html' + // }, + // { + // name: '/zh-CN/case', + // cName: '案例', + // eName: 'Cases', + // path: '/zh-CN/case', + // pathName: 'case' + // }, + // { + // name: 'resource', + // cName: '资源', + // eName: 'Resource', + // path: '/zh-CN/resource', + // pathName: '/zh-CN/resource' + // }, + // { + // name: 'notice', + // cName: '通知', + // eName: 'Notice', + // path: '/zh-CN/notice', + // pathName: '/zh-CN/notice' + // }, + // { + // name: 'joinus', + // cName: '加入我们', + // eName: 'Join us', + // path: '/zh-CN/guide/joinus', + // pathName: '/zh-CN/guide/joinus' + // } + ], + + newHeader: [ + { + name: 'component', + cName: '生态产品', + eName: 'Components', + key: '1', + path: '/zh-CN/component/button', + pathName: 'zh-CN/component/button' + }, + { + name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing', + cName: '资源', + eName: 'Guide', + key: '2', + path: '/zh-CN/guide/intro', + pathName: 'intro', + url: 'https://nutui.jd.com/#/zh-CN/resource' + }, + { + name: '/zh-CN/case', + cName: '案例', + eName: 'Cases', + path: '/zh-CN/case', + pathName: 'case', + key: '3', + url: '/h5/vue/4x/#/zh-CN/case' + }, + { + name: 'joinus', + cName: '加入我们', + eName: 'Join us', + key: '4', + path: '/zh-CN/guide/joinus', + pathName: '/zh-CN/guide/joinus', + url: 'https://nutui.jd.com/#/zh-CN/guide/joinus' + } + ], + // 官网 首页 + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui&type=star&count=true&size=large', + // 平台资源楼层 + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'Vue3 Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '70+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + // { + // title: '贴心通道', + // desc: '社区维护 高效服务
技术支持 经验沉淀', + // url: homefeatures4, + // }, + ], + // 是否展示taro楼层 + taroShow: true, + // 是否展示 业务组件 + bizComponent: [ + { + title: 'cat', + desc: '基于 NutUI 的大促组件', + release: true + }, + { + title: 'bingo', + desc: '基于 NutUI 的抽奖组件', + release: false + } + ], + // 应用案例 + cases: { + show: true, + moreRouter: '#/zh-CN/case' + }, + //是否展示二维码 + qrcodeShow: true, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'vue' +}; + +// Vue JDT 官网配置 +export const SiteJDT = { + repository: { + git: 'https://github.com/jdf2e/nutui', + gitee: 'https://gitee.com/jd-platform-opensource/nutui', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/1x/' + }, + { + name: '2.x', + link: '/2x/' + }, + { + name: '3.x', + link: '/' + }, + { + name: 'nutui-jdl', + link: '/jdl/' + }, + { + name: 'nutui-react', + link: 'https://nutui.jd.com/react' + }, + { + name: 'nutui-jdt', + link: 'https://nutui.jd.com/jdt/' + } + ], + + docs: { + name: '指南', + packages: [ + { + name: 'intro-jdt', + cName: '介绍', + eName: 'Introduction', + show: true + }, + { + name: 'start-jdt', + cName: '快速上手', + eName: 'Quickstart', + show: true + }, + { + name: 'starttaro-jdt', + cName: '小程序开发', + eName: 'WeChat', + show: true + }, + { + name: 'theme', + cName: '主题定制', + eName: 'Customize Theme', + show: true + }, + { + name: 'international', + cName: '国际化', + eName: 'Internationalization', + show: true + }, + { + name: 'ide', + cName: '开发工具支持', + eName: 'IDE tool support', + show: true + }, + { + name: 'contributing', + cName: '贡献指南', + eName: 'Contributing', + path: '#/contributing', + show: true + }, + { + name: 'https://github.com/jdf2e/nutui/releases', + cName: '更新日志', + eName: 'Changelog', + show: true, + isLink: true + } + ] + }, + newHeader: [], + header: [ + { + name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro-jdt', + pathName: 'intro-jdt' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: 'zh-CN/component/button' + }, + { + name: '/zh-CN/case', + cName: '案例', + eName: 'Cases', + path: '/zh-CN/case', + pathName: 'case' + }, + { + name: 'resource', + cName: '资源', + eName: 'Resource', + path: '/zh-CN/resource', + pathName: '/zh-CN/resource' + } + ], + // 官网 首页 + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui&type=star&count=true&size=large', + // 平台资源楼层 + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'Vue3 Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '70+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + ], + // 是否展示taro楼层 + taroShow: true, + // 是否展示 业务组件 + bizComponent: [ + { + title: 'cat', + desc: '基于 NutUI 的大促组件', + release: true + }, + { + title: 'bingo', + desc: '基于 NutUI 的抽奖组件', + release: false + } + ], + // 应用案例 + cases: { + show: true, + moreRouter: '#/zh-CN/case' + }, + //是否展示二维码 + qrcodeShow: true, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'vue', + demoUrl: 'https://nutui.jd.com/jdt/demo.html#' +}; + +// Vue JDB 官网配置 +export const SiteJDB = SiteVue; +// Vue JDDKH 官网配置 +export const SiteJDDKH = SiteVue; diff --git a/src/sites/config/env.ts b/src/sites/config/env.ts index e2d86f54d4..930aa30c2c 100644 --- a/src/sites/config/env.ts +++ b/src/sites/config/env.ts @@ -1,9 +1,7 @@ type EnvConfig = { - baseUrl: string - themeUrl: string - isPrd: boolean - locales: string[] -} + baseUrl: string; + isPrd: boolean; +}; /** * 配置编译环境和线上环境之间的切换 @@ -14,26 +12,22 @@ type EnvConfig = { const config: EnvConfig = { baseUrl: '', - themeUrl: '', - isPrd: true, // 是否为线上 - locales: ['zh-CN', 'zh-TW', 'en-US', 'th'], -} -switch (import.meta.env.MODE) { + isPrd: true // 是否为线上 +}; +switch ((import.meta as any).env.MODE) { case 'development': /* * 开发环境 => npm run dev */ - config.isPrd = false - config.baseUrl = '/devServer' - config.themeUrl = '/theme-react/dist/theme-react/source' - break + config.isPrd = false; + config.baseUrl = '/devServer'; + break; case 'production': /* * 线上环境 => npm run build */ - config.isPrd = true - config.baseUrl = 'https://nutui.jd.com' - config.themeUrl = './source' - break + config.isPrd = true; + config.baseUrl = 'https://nutui.jd.com'; + break; } -export default config +export default config; diff --git a/src/sites/config/index.ts b/src/sites/config/index.ts new file mode 100644 index 0000000000..081515718c --- /dev/null +++ b/src/sites/config/index.ts @@ -0,0 +1,334 @@ +import reactConfig from '../../config.json'; +import { + SiteReact, + SiteReactTaro, + SiteVue, + SiteVueTaro, + SiteJDB, + SiteJDT, + SiteJDDKH, + SiteReactNative +} from './baseConfig'; +import ReactConfig from '../../config.json'; + +let config: any = {}; + +const guide = [ + { + type: 'Vue', + icon: 'https://img11.360buyimg.com/imagetools/jfs/t1/221256/40/8490/1929/61d64810Ec6a88d27/99270cce560545d5.png', + data: [ + { + link: '/h5/vue/4x/', + language: ['Vue3'], + app: 'App 10.0' + }, + { + name: '3.x', + link: '/3x/', + language: ['Vue3'], + app: 'App 10.0' + } + ] + } + + // { + // type: 'React', + // icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + // data: [ + // { + // name: '1.x', + // link: 'https://nutui.jd.com/react', + // language: ['React18'], + // app: 'App 10.0' + // } + // ] + // } +]; + + +const moreGuide = [ + { + type: { + cName: '基础组件', + eName: 'Basic Component' + }, + icon: '', + datas: [ + { + plat: { + cName: 'H5', + eName: 'H5' + }, + data: [ + { + name: 'NutUI-Vue', + link: '/h5/vue/4x/#/zh-CN/guide/intro', + language: ['Vue3'], + app: 'App 10.0' + }, + { + name: 'NutUI-React', + link: '/h5/react/2x/#/zh-CN/guide/intro-react', + language: ['React18'], + app: 'App 10.0' + } + ] + }, + { + plat: { + cName: '小程序', + eName: 'Applets' + }, + data: [ + { + name: 'NutUI-Vue', + link: '/taro/vue/4x/#/zh-CN/guide/intro', + language: ['Vue3', 'Taro'], + app: 'App 10.0' + }, + { + name: 'NutUI-React', + link: '/taro/react/2x/#/zh-CN/guide/intro-react', + language: ['React18', 'Taro'], + app: 'App 10.0' + }, + { + name: 'NutUI-Uni', + link: 'https://ext.dcloud.net.cn/search?q=nutui', + language: ['Vue3', 'uni-app'], + app: 'App 10.0' + } + ] + } + ] + }, + { + type: { + cName: '高级组件', + eName: 'Advanced Component' + }, + icon: '', + datas: [ + { + data: [ + { + name: 'NutUI-Biz', + link: '/biz/h5/react/1x/#/zh-CN/guide/intro', + language: ['React'], + app: 'App 10.0' + }, + { + name: 'NutUI-Bingo', + link: '/bingo/index.html#/', + language: ['Vue3', 'Taro'], + app: 'App 10.0' + }, + { + name: 'NutUI-Cat', + link: '/cat/index.html#/', + language: ['Vue2'], + app: 'App 10.0' + } + ] + } + ] + } +]; + +const reactGuide = [ + { + type: 'React', + icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + data: [ + { + name: '3x', + link: '/h5/react/3x/', + language: ['React18'], + app: 'App 10.0' + }, + { + name: '2x', + link: '/h5/react/2x/', + language: ['React18'], + app: 'App 10.0' + }, + { + name: '1.x', + link: '/h5/react/1x/', + language: ['React18'], + app: 'App 10.0' + } + ] + } +]; + +const reactTaroGuide = [ + { + type: 'React', + icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + data: [ + { + name: ReactConfig.version, + link: '/taro/react/3x/', + language: ['React18', 'Taro'], + app: 'App 10.0' + }, + { + name: '2x', + link: '/taro/react/2x/', + language: ['React18', 'Taro'], + app: 'App 10.0' + }, + { + name: '1.x', + link: '/taro/react/1x/', + language: ['React18', 'Taro'], + app: 'App 10.0' + } + ] + } +]; + +const reactNativeGuide = [ + { + type: 'React Native', + icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + data: [ + { + name: '0.x', + link: '/react-native/', + language: ['React18'], + app: 'App 10.0' + } + ] + } +]; + +const businessGuide = [ + { + data: [ + { + name: 'NutUI-Biz', + link: '/biz/h5/react/1x/#/zh-CN/guide/intro', + language: ['React'] + }, + { + name: 'NutUI-Bingo', + link: '/bingo/index.html#/', + language: ['Vue3', 'Taro'] + }, + { + name: 'NutUI-Cat', + link: '/cat/index.html#/', + language: ['Vue2'] + } + ] + } + + // { + // type: 'React', + // icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + // data: [ + // { + // name: '1.x', + // link: 'https://nutui.jd.com/react', + // language: ['React18'], + // app: 'App 10.0' + // } + // ] + // } +]; + +const products = [ + { + type: 'React', + data: [ + { + name: 'NutUI React', + icon: + 'https://img12.360buyimg.com/imagetools/jfs/t1/192500/27/37524/4524/649d5065F7e5fbef6/afe567692acba3b0.png', + status: 1, + link: '/h5/react/3x/#/zh-CN/guide/intro-react' + }, + { + name: 'NutUI React Taro', + icon: + 'https://img13.360buyimg.com/imagetools/jfs/t1/169186/5/33010/1762/639703a1E898bcb96/6c372c661c6dddfe.png', + status: 1, + link: '/taro/react/3x/#/zh-CN/guide/intro-react' + }, + { + name: 'NutUI React Native', + icon: + 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + status: 1, + link: 'https://nutui.jd.com/react-native/#/zh-CN/guide/intro' + } + ] + }, + { + type: 'Vue', + data: [ + { + name: 'NutUI Vue', + icon: + 'https://img12.360buyimg.com/imagetools/jfs/t1/192500/27/37524/4524/649d5065F7e5fbef6/afe567692acba3b0.png', + status: 1, + link: '/h5/vue/4x/#/zh-CN/guide/intro' + }, + { + name: 'NutUI Vue Taro', + icon: + 'https://img13.360buyimg.com/imagetools/jfs/t1/169186/5/33010/1762/639703a1E898bcb96/6c372c661c6dddfe.png', + status: 1, + link: '/taro/vue/4x/#/zh-CN/guide/intro' + }, + { + name: 'NutUI uniapp', + icon: 'https://img13.360buyimg.com/imagetools/jfs/t1/113716/40/39920/321/64c3764dF986d8400/f4474acb3a73c055.png', + status: 1, + link: 'https://ext.dcloud.net.cn/search?q=nutui' + } + ] + } +]; +if ((import.meta as any).env.BASE_URL.includes('react')) { + config = { + ...reactConfig, + ...SiteReact + }; +} else { + let siteconfig = SiteVue; + + + config = { + ...siteconfig + }; +} + +export const { + nav, + docs, + version, + demoUrl, + homePage, + versions, + newHeader, + header, + language, + repository, + newRepository +} = config; +export { + guide, + moreGuide, + reactGuide, + reactTaroGuide, + reactNativeGuide, + businessGuide, + products, + SiteVueTaro, + SiteReactTaro, + SiteReactNative, +}; diff --git a/src/sites/doc/components/header/header.scss b/src/sites/doc/components/header/header.scss index b0cb6f2c24..03e7d7624f 100644 --- a/src/sites/doc/components/header/header.scss +++ b/src/sites/doc/components/header/header.scss @@ -1,7 +1,29 @@ +.v3-banner { + position: fixed; + top: 0; + transition: all 0.3s; + > a { + color: #fff; + font-weight: bold; + } + font-size: 14px; + width: 100%; + z-index: 999; + text-align: center; + padding: 10px 60px; + color: #fff; + background: linear-gradient( + 135deg, + rgba(242, 20, 12, 1) 0%, + rgba(232, 34, 14, 1) 69.83950099728881%, + rgba(242, 77, 12, 1) 100% + ); +} .doc { &-header { - z-index: 2; - top: 0; + // position: fixed; + z-index: 9999; + top: 0px; left: 0; right: 0; min-width: 1300px; @@ -21,26 +43,49 @@ display: inline-block; width: 240px; height: 64px; + margin-left: -30px; .logo-link { - width: 120px; + width: 110px !important; height: 46px; vertical-align: middle; position: absolute; top: 50%; margin-top: -23px; + cursor: pointer; + + &.react { + width: 160px !important; + } + &.jdb, + &.jddkh { + width: 180px; + } } .logo-border { width: 1px; height: 26px; position: absolute; - right: 0; + right: -30px !important; top: 50%; margin-top: -13px; } .version { position: absolute; - right: 70px; - font-size: 14px; + right: 40px; + font-size: 16px !important; + color: #fa2c19; + + &.taro { + right: 30px; + } + + &.react { + right: 20px; + + &.taro { + right: 5px; + } + } } } &-nav { @@ -50,18 +95,15 @@ float: right; width: calc(100% - 240px); min-width: 900px; - padding: 0 40px; - > a { - color: #fff; - } + padding-left: 40px; .nav-box { - margin-right: 140px; .nav-list { + position: relative; min-width: 490px; display: flex; list-style: none; align-items: center; - justify-content: space-around; + justify-content: flex-end; } .nav-item { position: relative; @@ -76,6 +118,7 @@ display: inline-block; line-height: 64px; } + // overflow: hidden; &.active { font-weight: bold; &:after { @@ -87,7 +130,7 @@ bottom: 3px; left: 50%; margin-left: -17.5px; - background: url('../../assets/images/item-active.png'); + background: url('@/assets/images/item-active.png'); } } &:last-of-type { @@ -100,12 +143,12 @@ height: 26px; vertical-align: middle; background-repeat: no-repeat; - background-image: url('../../assets/images/icon-user.png'); + background-image: url('../../../assets/images/icon-user.png'); background-size: 26px; &.gitee { margin-left: 8px; - background-image: url('../../assets/images/icon-gitee.png'); + background-image: url('../../../assets/images/icon-gitee.png'); } } } @@ -154,14 +197,32 @@ } // 颜色 .doc-header { + .link-title:hover { + cursor: pointer; + } + // 红色 &-red { background-image: $theme-red-header-bg; color: $theme-red-word; .header { &-logo { .logo-link { - background: url('../../../assets/images/logo-header-white.png') - no-repeat center/100%; + background: url('@/assets/images/logo-header-white.png') no-repeat + center/100%; + &.react { + background: url('@/assets/images/logo-header-white-react.png') + no-repeat center/100%; + } + &.jdb { + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/23011/31/12900/11114/64257a3cF018c7f3b/3574c5a9ae4d1040.png') + no-repeat center/100%; + width: 180px !important; + } + &.jddkh { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/132257/25/35572/4472/64257a3cFff3e161d/7010593eb1334f46.png') + no-repeat center/100%; + width: 180px !important; + } } .logo-border { background: $theme-red-border; @@ -195,20 +256,133 @@ } .user-link { background-position: 0 0; + // &:hover { + // background-position: -26px 0; + // } } } } } .header-select { &-box { + position: relative; &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); + background-image: url('@/assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); + background-image: url('@/assets/images/icon-select-white-up.png'); + } + } + .guild-line { + position: absolute; + height: 20px; + width: 77px; + right: 0%; + background: transparent; + } + .guid-data { + position: absolute; + top: 40px; + right: 0%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + padding-left: 29px; + padding-right: 29px; + width: 336px; + background: #2c2c2c; + border: 1px solid #5e5e5e; + border-radius: 12px; + z-index: 3; + .info { + padding-top: 16px; + padding-bottom: 22px; + &:first-child { + border-bottom: 1px solid #5e5e5e; + padding-bottom: 10px; + } + .header { + display: flex; + align-items: center; + justify-content: flex-start; + line-height: 24px; + .icon { + width: 22px; + height: 19px; + margin-right: 9px; + } + } + .content { + padding-top: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + justify-content: space-between; + line-height: 24px; + margin-top: 2px; + margin-bottom: 2px; + border-radius: 4px; + &.active { + background-color: rgba(255, 255, 255, 0.2); + } + &:hover { + background-color: rgba(255, 255, 255, 0.06); + } + .version { + width: 91px; + text-align: center; + } + .list { + width: 95px; + height: 24px; + align-items: center; + justify-content: flex-start; + display: flex; + .lang { + height: 24px; + background: rgba(65, 184, 131, 0.16); + border-radius: 4px; + margin-right: 4px; + &:nth-child(2) { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + .name { + padding-left: 6px; + padding-right: 6px; + font-size: 14px; + font-family: PingFangSC; + font-weight: normal; + color: #41b883; + } + } + } + .app { + display: flex; + justify-content: flex-start; + width: 64px; + margin-left: 18px; + margin-right: 19px; + } + } + } + .contentKey { + @extend .info; + .content { + .list { + .lang { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + } + } } } } @@ -228,6 +402,7 @@ } } } + // 白色 &-white { background: $white; color: $theme-white-word; @@ -235,8 +410,22 @@ .header { &-logo { .logo-link { - background: url('../../assets/images/logo-header-red.png') no-repeat + background: url('@/assets/images/logo-header-red.png') no-repeat center/100%; + &.react { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/124864/1/33144/4732/63a97786F51517a97/a9ca3c1e043ceeb4.png') + no-repeat center/100%; + } + &.jdb { + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/23011/31/12900/11114/64257a3cF018c7f3b/3574c5a9ae4d1040.png') + no-repeat center/100%; + width: 180px !important; + } + &.jddkh { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/132257/25/35572/4472/64257a3cFff3e161d/7010593eb1334f46.png') + no-repeat center/100%; + width: 180px !important; + } } .logo-border { background: $theme-white-border; @@ -270,20 +459,133 @@ } .user-link { background-position: 0 -25px; + // &:hover { + // background-position: -26px -25px; + // } } } } } .header-select { &-box { + position: relative; &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-gray-down.png'); + background-image: url('@/assets/images/icon-select-gray-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-gray-up.png'); + background-image: url('@/assets/images/icon-select-gray-up.png'); + } + } + .guild-line { + position: absolute; + right: 0%; + height: 20px; + width: 77px; + background: transparent; + } + .guid-data { + position: absolute; + top: 40px; + right: 0%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + padding-left: 29px; + padding-right: 29px; + width: 336px; + background: $theme-white; + border: 1px solid $theme-white-select-border; + border-radius: 12px; + z-index: 3; + .info { + padding-top: 16px; + padding-bottom: 22px; + &:first-child { + border-bottom: 1px solid #5e5e5e; + padding-bottom: 10px; + } + .header { + display: flex; + align-items: center; + justify-content: flex-start; + line-height: 24px; + .icon { + width: 22px; + height: 19px; + margin-right: 9px; + } + } + .content { + padding-top: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + justify-content: space-between; + line-height: 24px; + margin-top: 2px; + margin-bottom: 2px; + border-radius: 4px; + &.active { + background-color: rgba(0, 0, 0, 0.06); + } + &:hover { + background-color: rgba(0, 0, 0, 0.02); + } + .version { + width: 91px; + text-align: center; + } + .list { + width: 95px; + height: 24px; + align-items: center; + justify-content: flex-start; + display: flex; + .lang { + height: 24px; + background: rgba(65, 184, 131, 0.16); + border-radius: 4px; + margin-right: 4px; + &:nth-child(2) { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + .name { + padding-left: 6px; + padding-right: 6px; + font-size: 14px; + font-family: PingFangSC; + font-weight: normal; + color: #41b883; + } + } + } + .app { + display: flex; + justify-content: flex-start; + width: 64px; + margin-left: 18px; + margin-right: 19px; + } + } + } + .contentKey { + @extend .info; + .content { + .list { + .lang { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + } + } } } } @@ -303,6 +605,7 @@ } } } + // 黑色 &-black { background: $black; color: $theme-black-word; @@ -310,8 +613,22 @@ .header { &-logo { .logo-link { - background: url('../../assets/images/logo-header-red.png') no-repeat + background: url('@/assets/images/logo-header-red.png') no-repeat center/100%; + &.react { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/124864/1/33144/4732/63a97786F51517a97/a9ca3c1e043ceeb4.png') + no-repeat center/100%; + } + &.jdb { + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/23011/31/12900/11114/64257a3cF018c7f3b/3574c5a9ae4d1040.png') + no-repeat center/100%; + width: 180px !important; + } + &.jddkh { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/132257/25/35572/4472/64257a3cFff3e161d/7010593eb1334f46.png') + no-repeat center/100%; + width: 180px !important; + } } .logo-border { background: $theme-black-border; @@ -345,6 +662,9 @@ } .user-link { background-position: 0 -51px; + // &:hover { + // background-position: -26px -51px; + // } } } } @@ -353,12 +673,121 @@ &-box { &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); + background-image: url('@/assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); + background-image: url('@/assets/images/icon-select-white-up.png'); + } + } + .guild-line { + position: absolute; + height: 20px; + right: 0%; + width: 77px; + background: transparent; + } + .guid-data { + position: absolute; + top: 40px; + right: 0%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + padding-left: 29px; + padding-right: 29px; + width: 336px; + background: #2c2c2c; + border: 1px solid #5e5e5e; + border-radius: 12px; + z-index: 3; + .info { + padding-top: 16px; + padding-bottom: 22px; + &:first-child { + border-bottom: 1px solid #5e5e5e; + padding-bottom: 10px; + } + .header { + display: flex; + align-items: center; + justify-content: flex-start; + line-height: 24px; + .icon { + width: 22px; + height: 19px; + margin-right: 9px; + } + } + .content { + padding-top: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + justify-content: space-between; + line-height: 24px; + margin-top: 2px; + margin-bottom: 2px; + border-radius: 4px; + &.active { + background-color: rgba(255, 255, 255, 0.2); + } + &:hover { + background-color: rgba(255, 255, 255, 0.06); + } + .version { + width: 91px; + text-align: center; + } + .list { + width: 95px; + height: 24px; + align-items: center; + justify-content: flex-start; + display: flex; + .lang { + height: 24px; + background: rgba(65, 184, 131, 0.16); + border-radius: 4px; + margin-right: 4px; + &:nth-child(2) { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + .name { + padding-left: 6px; + padding-right: 6px; + font-size: 14px; + font-family: PingFangSC; + font-weight: normal; + color: #41b883; + } + } + } + .app { + display: flex; + justify-content: flex-start; + width: 64px; + margin-left: 18px; + margin-right: 19px; + } + } + } + .contentKey { + @extend .info; + .content { + .list { + .lang { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + } + } } } } @@ -381,40 +810,167 @@ } } } -.nut-popover { - height: 100%; - position: relative; +// 下拉列表选择动画效果 +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.5s; } -.curr-lang { - display: block; - font-size: 12px; +.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { + opacity: 0; } -.switch { - position: absolute; - right: 60px; - top: 0; - height: 100%; - width: 150px; - cursor: pointer; - .nut-popover--dark { +.site-guid-data { + // display: block !important; + line-height: normal; + position: absolute; + z-index: 10; + top: 60px; + left: -180px; + padding: 20px; + width: 450px; + background: #2c2c2c; + border: 1px solid #5e5e5e; + border-radius: 12px; + font-size: 14px; + color: #fff; + .site-guid-data-arrow { + position: absolute; + width: 100px; + height: 30px; + top: -26px; + left: 37%; + cursor: pointer; + } + .info { + // &:first-child { + // border-bottom: 1px solid #5e5e5e; + // } + .header { + line-height: 24px; + border-bottom: 1px solid #514c4c; + .type { + padding: 10px; + } + } + } + .product-type { + overflow: hidden; width: 100%; - margin-right: 0; - background: transparent; - text-align: center; + display: flex; + justify-content: flex-start; + flex-wrap: wrap; } - .title-item { - height: 30px; + .content-disabled { + &:hover { + cursor: not-allowed !important; + } + } + .content { + width: 200px; + display: flex; + align-items: center; + padding: 15px 10px; + transition: all linear 0.2s; + &:hover { + background-color: rgba(88, 88, 88, 0.8); + cursor: pointer; + } + .item-logo { + width: 30px; + height: 30px; + margin-right: 10px; + img { + width: 100%; + height: 100%; + } + } + .name { + color: #fff; + } + .status { + display: inline-block; + font-size: 12px; + padding: 3px 6px; + color: #fff; + background: linear-gradient(119deg, #00b2bd 11%, #2ceb85 55%); + transform: scale(0.8); + border-radius: 10px; + } + .infor-disabled { + background: gray; + cursor: not-allowed; + } + .infor-goline { + background: linear-gradient(315deg, #6772ff 0, #00f9e5 100%); + } + .infor-child-name { + display: inline-block; + padding: 3px 6px; + margin-left: 2px; + font-size: 12px; + color: #00b2bd; + border: 1px solid #00b2bd; + border-radius: 10px; + transform: scale(0.8); + + &:hover { + color: #2ceb85; + border-color: #2ceb85; + background-color: rgba(0, 178, 189, 0.5); + cursor: pointer; + } + } + .version { + margin-top: 6px; + font-size: 12px; + } } + // .child-content { + // width: 100%; + // } } -.switch-content { - position: relative; +.guid-data-business { + top: 60px !important; + left: -80px !important; + + .content.disabled { + opacity: 0.5; + cursor: not-allowed; + } } -// 下拉列表选择动画效果 -.fade-enter-active, -.fade-leave-active { - transition: opacity 0.5s; +.nav-item-title { + display: flex !important; + align-items: center; + .hover-arrow { + width: 10px; + height: 8px; + transition: all linear 0.2s; + margin-left: 5px; + } } -.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { - opacity: 0; +.header { + font-weight: bold; + font-size: 16px; +} +.plat { + text-align: left; + line-height: normal; + font-weight: bold; + margin-top: 5px; + margin-left: 10px; +} +.list { + width: 120px; + + .lang .name { + font-size: 12px !important; + } +} +.content { + font-size: 12px; + + .version { + margin-left: 20px; + text-align: left !important; + } } diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index 38aaf7af8b..10ae97f43c 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -1,15 +1,28 @@ import React, { useEffect, useState } from 'react' -import { nav } from '@/config.json' // @ts-ignore import { version } from '/package.json' -import config from '@/sites/config/env' +import config from '../../../config/env' import './header.scss' import { useNavigate, useLocation } from 'react-router-dom' - +import { + SiteVueTaro, + SiteReactTaro, + header, + versions, + nav, + repository, + language, + guide as vueGuide, + reactGuide, + reactTaroGuide, + moreGuide, + businessGuide, + products, +} from '../../../config/index' const Header = () => { const navigate = useNavigate() const location = useLocation() - const [currLang, setCurrLang] = useState({}) + const [currLang, setCurrLang] = useState({}) const toHome = () => { navigate('/') @@ -27,15 +40,15 @@ const Header = () => { (l) => location.pathname.indexOf(l.locale) > -1 )[0] setCurrLang(lang) + console.log(lang) }, [location]) const langs = [ { name: '中文', locale: 'zh-CN' }, - { name: '中文(繁体)', locale: 'zh-TW' }, { name: 'English', locale: 'en-US' }, - { name: 'Thai', locale: 'th' }, ] - + const isZh = currLang.locale == 'zh-CN' + const toLink = (item: any) => {} const [visible, setVisible] = useState(false) const handleSwitchLocale = (e: any) => { const classList: string[] = [].slice.call(e.target.classList) @@ -54,19 +67,188 @@ const Header = () => { } window.location.href = link } + const isReactTaro = location.pathname.includes('taro/react') + const headerBck = SiteReactTaro.header + const [isShowGuid, setIsShowGuid] = useState(false) + const [selectedVersion, setSelectedVersion] = useState('3x') + const [selectedLanguage, setSelectedLanguage] = useState('') + const handleMouseHover = (isHovered) => { + setIsShowGuid(isHovered) + } + + const handleClick = () => { + setIsShowGuid(!isShowGuid) + } + const handleVersionSelect = (version) => { + setSelectedVersion(version) + } + + const handleLanguageSelect = (language) => { + setSelectedLanguage(language) + } + const onMouseHover4 = (isHovered) => { + // setIsShowGuid(isHovered) + } + console.log(headerBck) return ( -
+
- + - {version} + + + {isReactTaro ? '小程序' : 'H5'} + +
- - 当前环境:development ,代码 PR 合并后,文档会自动同步至 - https://github.com/jdf2e/nutui-docs - + {/* // Search */} +
+
    + {headerBck.map((item) => ( +
  • + toLink(item)}> + {isZh ? item.cName : item.eName} + +
  • + ))} +
  • +
    handleMouseHover(true)} + onMouseLeave={() => handleMouseHover(false)} + // tabIndex="0" + className="header-select-box" + // className={isShowGuid ? 'select-up' : 'select-down'} + onClick={handleClick} + > +
    + {selectedVersion} + +
    +
    +
    + {reactGuide.map((item, indexKey) => ( +
    +
    + +
    {item.type}
    +
    +
    + {item.data.map((info, index) => ( +
    +
    {info.name}
    +
    + {info.language.map((lang, index) => ( +
    +
    {lang}
    +
    + ))} +
    +
    {info.app}
    +
    + ))} +
    +
    + ))} +
    +
    +
  • +
  • +
    onMouseHover4(true)} + onMouseLeave={() => onMouseHover4(false)} + className="header-select-box" + > +
    + {isZh ? '更多' : 'More'} + +
    +
    +
    + {moreGuide.map((item, indexKey) => ( +
    +
    + {item.icon && } +
    + {' '} + {isZh ? item.type.cName : item.type.eName} +
    +
    + {item.datas.map((info, index) => ( +
    + {info.plat && ( +
    + {isZh ? info.plat.cName : info.plat.eName} +
    + )} + {info.data.map((info2, index2) => ( +
    handleVersionSelect(info2.name)} + > +
    {info2.name}
    +
    + {info2.language.map((lang, index2) => ( +
    +
    handleLanguageSelect(lang)} + > + {lang} +
    +
    + ))} +
    + {/*
    {info2.app}
    */} +
    + ))} +
    + ))} +
    + ))} +
    +
    +
  • + {!isReactTaro && ( +
  • {}}> + En/中 +
  • + )} +
  • + {repository.git && ( + + )} + {repository.gitee && ( + + )} +
  • +
+
) diff --git a/src/sites/doc/components/nav/nav.scss b/src/sites/doc/components/nav/nav.scss index 0779dac2a5..7d4ce25755 100644 --- a/src/sites/doc/components/nav/nav.scss +++ b/src/sites/doc/components/nav/nav.scss @@ -11,10 +11,12 @@ border-right: 1px solid #eee; overflow: auto; padding-left: 35px; + padding-top: 35px; &.fixed { position: fixed; top: 0; + padding-top: 15px; } ol { @@ -35,10 +37,13 @@ line-height: 48px; font-size: 14px; color: $doc-default-nav-color; - font-weight: bold; position: relative; + font-weight: bold; &.active { + font-weight: bold; + color: $doc-default-color; + &::before { position: absolute; content: ''; @@ -48,8 +53,7 @@ margin-top: -5px; height: 10px; transform: rotate(90deg); - background: url(https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png) - no-repeat; + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png'); background-size: 100% 100%; } } @@ -59,15 +63,19 @@ li { padding-left: 29px; cursor: pointer; + height: 100%; + font-weight: bold; &:hover { - a { + &:visited { color: $doc-default-color; } } a { - height: 100%; + &:hover { + color: $doc-default-color !important; + } &.router-link-active, &.active { @@ -76,15 +84,7 @@ &:link, &:visited { - color: $color-title; - } - - &:hover { - color: $doc-default-color; - - &:visited { - color: $doc-default-color; - } + color: #1a1a1a; } b { @@ -92,15 +92,13 @@ font-size: 12px; } } - } - } - } - - .selected { - color: #ff0f23 !important; - li { - color: #ff0f23 !important; + div { + &:hover { + color: $doc-default-color !important; + } + } + } } } } diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index 297e6b73c6..4b2554a4df 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -32,14 +32,14 @@ const Nav = () => { {cn.packages.map((cp: any) => { if (!cp.show) return null return ( - - isPending ? '' : isActive ? 'selected' : '' - } - to={`${lang ? `/${lang}` : ''}/component/${cp.name}`} - > -
  • +
  • + + isPending ? '' : isActive ? 'active' : '' + } + to={`${lang ? `/${lang}` : ''}/component/${cp.name}`} + > {cp.name}   {lang === 'zh-CN' && cp.cName} {cp.version !== '2.0.0' ? ( @@ -58,8 +58,8 @@ const Nav = () => { 🛠 ) : null} -
  • -
    + + ) })} From 6a70c8a433940d67dec256fb1dc8d8c4a62187c4 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Mon, 20 Jan 2025 11:22:56 +0800 Subject: [PATCH 02/40] feat: css transition add list --- src/sites/doc/components/header/header.scss | 48 +++++--- src/sites/doc/components/header/header.tsx | 128 ++++++++++++-------- 2 files changed, 110 insertions(+), 66 deletions(-) diff --git a/src/sites/doc/components/header/header.scss b/src/sites/doc/components/header/header.scss index 03e7d7624f..e118ab2796 100644 --- a/src/sites/doc/components/header/header.scss +++ b/src/sites/doc/components/header/header.scss @@ -130,7 +130,7 @@ bottom: 3px; left: 50%; margin-left: -17.5px; - background: url('@/assets/images/item-active.png'); + background: url('../../../assets/images/item-active.png'); } } &:last-of-type { @@ -207,10 +207,10 @@ .header { &-logo { .logo-link { - background: url('@/assets/images/logo-header-white.png') no-repeat - center/100%; + background: url('../../../assets/images/logo-header-white.png') + no-repeat center/100%; &.react { - background: url('@/assets/images/logo-header-white-react.png') + background: url('../../../assets/images/logo-header-white-react.png') no-repeat center/100%; } &.jdb { @@ -268,12 +268,12 @@ position: relative; &.select-down { .header-select-hd { - background-image: url('@/assets/images/icon-select-white-down.png'); + background-image: url('../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('@/assets/images/icon-select-white-up.png'); + background-image: url('../../../assets/images/icon-select-white-up.png'); } } .guild-line { @@ -410,8 +410,8 @@ .header { &-logo { .logo-link { - background: url('@/assets/images/logo-header-red.png') no-repeat - center/100%; + background: url('../../../assets/images/logo-header-red.png') + no-repeat center/100%; &.react { background: url('https://img14.360buyimg.com/imagetools/jfs/t1/124864/1/33144/4732/63a97786F51517a97/a9ca3c1e043ceeb4.png') no-repeat center/100%; @@ -471,12 +471,12 @@ position: relative; &.select-down { .header-select-hd { - background-image: url('@/assets/images/icon-select-gray-down.png'); + background-image: url('../../../assets/images/icon-select-gray-down.png'); } } &.select-up { .header-select-hd { - background-image: url('@/assets/images/icon-select-gray-up.png'); + background-image: url('../../../assets/images/icon-select-gray-up.png'); } } .guild-line { @@ -613,8 +613,8 @@ .header { &-logo { .logo-link { - background: url('@/assets/images/logo-header-red.png') no-repeat - center/100%; + background: url('../../../assets/images/logo-header-red.png') + no-repeat center/100%; &.react { background: url('https://img14.360buyimg.com/imagetools/jfs/t1/124864/1/33144/4732/63a97786F51517a97/a9ca3c1e043ceeb4.png') no-repeat center/100%; @@ -673,12 +673,12 @@ &-box { &.select-down { .header-select-hd { - background-image: url('@/assets/images/icon-select-white-down.png'); + background-image: url('../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('@/assets/images/icon-select-white-up.png'); + background-image: url('../../../assets/images/icon-select-white-up.png'); } } .guild-line { @@ -818,7 +818,27 @@ .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { opacity: 0; } +.fade-enter { + opacity: 0; +} +.fade-enter-active { + opacity: 1; + transition: opacity 0.3s; +} +.fade-exit { + opacity: 1; +} +.fade-exit-active { + opacity: 0; + transition: opacity 0.3s; +} +.fade-content { + background-color: #f9f9f9; + padding: 20px; + border: 1px solid #ddd; + margin-top: 10px; +} .site-guid-data { // display: block !important; line-height: normal; diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index 10ae97f43c..3893d9d409 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -4,6 +4,7 @@ import { version } from '/package.json' import config from '../../../config/env' import './header.scss' import { useNavigate, useLocation } from 'react-router-dom' +import { CSSTransition } from 'react-transition-group' import { SiteVueTaro, SiteReactTaro, @@ -22,7 +23,7 @@ import { const Header = () => { const navigate = useNavigate() const location = useLocation() - const [currLang, setCurrLang] = useState({}) + const [currLang, setCurrLang] = useState({ locale: '' }) const toHome = () => { navigate('/') @@ -47,29 +48,29 @@ const Header = () => { { name: '中文', locale: 'zh-CN' }, { name: 'English', locale: 'en-US' }, ] - const isZh = currLang.locale == 'zh-CN' + const isZh = true const toLink = (item: any) => {} const [visible, setVisible] = useState(false) const handleSwitchLocale = (e: any) => { - const classList: string[] = [].slice.call(e.target.classList) - if (classList.indexOf('curr-lang') > -1) { - return setVisible(!visible) - } - const name = e.target.innerText - setVisible(!visible) - const [{ locale }] = langs.filter((l) => name == l.name) - - let link = '' - if (config.locales.some((l) => window.location.href.indexOf(l) > -1)) { - link = window.location.href.replace(/\#\/([a-z-]+)/gi, `#/${locale}`) - } else { - link = window.location.href.replace(/\#\//gi, `#/${locale}/`) - } - window.location.href = link + // const classList: string[] = [].slice.call(e.target.classList) + // if (classList.indexOf('curr-lang') > -1) { + // return setVisible(!visible) + // } + // const name = e.target.innerText + // setVisible(!visible) + // const [{ locale }] = langs.filter((l) => name == l.name) + // let link = '' + // if (config.locales.some((l) => window.location.href.indexOf(l) > -1)) { + // link = window.location.href.replace(/\#\/([a-z-]+)/gi, `#/${locale}`) + // } else { + // link = window.location.href.replace(/\#\//gi, `#/${locale}/`) + // } + // window.location.href = link } const isReactTaro = location.pathname.includes('taro/react') const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) + const [isShowGuid4, setIsShowGuid4] = useState(false) const [selectedVersion, setSelectedVersion] = useState('3x') const [selectedLanguage, setSelectedLanguage] = useState('') const handleMouseHover = (isHovered) => { @@ -88,7 +89,7 @@ const Header = () => { setSelectedLanguage(language) } const onMouseHover4 = (isHovered) => { - // setIsShowGuid(isHovered) + setIsShowGuid4(isHovered) } console.log(headerBck) return ( @@ -122,8 +123,11 @@ const Header = () => { onMouseEnter={() => handleMouseHover(true)} onMouseLeave={() => handleMouseHover(false)} // tabIndex="0" - className="header-select-box" - // className={isShowGuid ? 'select-up' : 'select-down'} + className={ + isShowGuid + ? 'header-select-box select-up' + : 'header-select-box select-down' + } onClick={handleClick} >
    @@ -131,51 +135,64 @@ const Header = () => {
    -
    - {reactGuide.map((item, indexKey) => ( + +
    -
    - -
    {item.type}
    -
    -
    - {item.data.map((info, index) => ( -
    -
    {info.name}
    -
    - {info.language.map((lang, index) => ( -
    -
    {lang}
    + {reactGuide.map((item, indexKey) => ( +
    +
    + +
    {item.type}
    +
    +
    + {item.data.map((info, index) => ( +
    +
    {info.name}
    +
    + {info.language.map((lang, index) => ( +
    +
    {lang}
    +
    + ))}
    - ))} -
    -
    {info.app}
    +
    {info.app}
    +
    + ))}
    - ))} -
    +
    + ))}
    - ))} -
    +
  • onMouseHover4(true)} onMouseLeave={() => onMouseHover4(false)} - className="header-select-box" + // className="header-select-box" + className={ + isShowGuid4 + ? 'header-select-box select-up' + : 'header-select-box select-down' + } + onClick={() => { + setIsShowGuid4(!isShowGuid4) + }} >
    {isZh ? '更多' : 'More'}
    -
    {moreGuide.map((item, indexKey) => ( @@ -184,7 +201,9 @@ const Header = () => { key={indexKey} >
    - {item.icon && } + {item.icon && ( + + )}
    {' '} {isZh ? item.type.cName : item.type.eName} @@ -204,12 +223,17 @@ const Header = () => { onClick={() => handleVersionSelect(info2.name)} >
    {info2.name}
    -
    +
    {info2.language.map((lang, index2) => (
    handleLanguageSelect(lang)} + onClick={() => + handleLanguageSelect(lang) + } > {lang}
    @@ -223,7 +247,7 @@ const Header = () => { ))}
    ))} -
    +
  • {!isReactTaro && ( From a5eb55b7f5df351287dcf93518dbbb035c7b7ee5 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Mon, 20 Jan 2025 15:39:43 +0800 Subject: [PATCH 03/40] feat: save search component progress --- src/sites/doc/components/header/header.tsx | 190 +++++++++++--------- src/sites/doc/components/search/search.scss | 69 +++++++ src/sites/doc/components/search/search.tsx | 96 ++++++++++ 3 files changed, 270 insertions(+), 85 deletions(-) create mode 100644 src/sites/doc/components/search/search.scss create mode 100644 src/sites/doc/components/search/search.tsx diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index 3893d9d409..bc68705041 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -5,6 +5,7 @@ import config from '../../../config/env' import './header.scss' import { useNavigate, useLocation } from 'react-router-dom' import { CSSTransition } from 'react-transition-group' +import Search from '../search/search' import { SiteVueTaro, SiteReactTaro, @@ -51,6 +52,7 @@ const Header = () => { const isZh = true const toLink = (item: any) => {} const [visible, setVisible] = useState(false) + const [activeLink, setActiveLink] = useState('指南') const handleSwitchLocale = (e: any) => { // const classList: string[] = [].slice.call(e.target.classList) // if (classList.indexOf('curr-lang') > -1) { @@ -71,7 +73,7 @@ const Header = () => { const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) const [isShowGuid4, setIsShowGuid4] = useState(false) - const [selectedVersion, setSelectedVersion] = useState('3x') + const [selectedVersion, setSelectedVersion] = useState('3.0.0-beta.11') const [selectedLanguage, setSelectedLanguage] = useState('') const handleMouseHover = (isHovered) => { setIsShowGuid(isHovered) @@ -107,12 +109,20 @@ const Header = () => {
    +
    - {/* // Search */} + +
    - -
    - {reactGuide.map((item, indexKey) => ( -
    -
    - -
    {item.type}
    -
    -
    - {item.data.map((info, index) => ( -
    -
    {info.name}
    -
    - {info.language.map((lang, index) => ( -
    -
    {lang}
    -
    - ))} -
    -
    {info.app}
    + +
    + {reactGuide.map((item, indexKey) => ( +
    +
    + +
    {item.type}
    +
    +
    + {item.data.map((info, index) => ( +
    +
    {info.name}
    +
    + {info.language.map((lang, index) => ( +
    +
    {lang}
    +
    + ))}
    - ))} -
    +
    {info.app}
    +
    + ))}
    - ))} -
    -
    +
    + ))} +
    +
  • @@ -191,63 +205,69 @@ const Header = () => {
  • - {moreGuide.map((item, indexKey) => ( -
    -
    - {item.icon && ( - - )} -
    - {' '} - {isZh ? item.type.cName : item.type.eName} -
    -
    - {item.datas.map((info, index) => ( -
    - {info.plat && ( -
    - {isZh ? info.plat.cName : info.plat.eName} -
    +
    + {moreGuide.map((item, indexKey) => ( +
    +
    + {item.icon && ( + )} - {info.data.map((info2, index2) => ( -
    handleVersionSelect(info2.name)} - > -
    {info2.name}
    +
    + {' '} + {isZh ? item.type.cName : item.type.eName} +
    +
    + {item.datas.map((info, index) => ( +
    + {info.plat && ( +
    + {isZh ? info.plat.cName : info.plat.eName} +
    + )} + {info.data.map((info2, index2) => (
    handleVersionSelect(info2.name)} > - {info2.language.map((lang, index2) => ( -
    -
    - handleLanguageSelect(lang) - } - > - {lang} +
    {info2.name}
    +
    + {info2.language.map((lang, index2) => ( +
    +
    + handleLanguageSelect(lang) + } + > + {lang} +
    -
    - ))} + ))} +
    + {/*
    {info2.app}
    */}
    - {/*
    {info2.app}
    */} -
    - ))} -
    - ))} -
    - ))} -
    + ))} +
    + ))} +
    + ))} +
    +
    {!isReactTaro && ( diff --git a/src/sites/doc/components/search/search.scss b/src/sites/doc/components/search/search.scss new file mode 100644 index 0000000000..dc27b2f741 --- /dev/null +++ b/src/sites/doc/components/search/search.scss @@ -0,0 +1,69 @@ +.search-box { + position: relative; + min-width: 300px; + height: 22px; + line-height: 22px; + .search-input { + height: 22px; + padding-left: 42px; + font-size: 14px; + vertical-align: middle; + background-color: transparent; + background-image: url('../../../assets/images/input-search.png'); + background-repeat: no-repeat; + font-size: 14px; + color: #fff; + &:focus { + outline: none; + } + } + .search-input::placeholder { + color: #888 !important; + // font-style: italic; + // opacity: 1; /* 确保不被透明度影响 */ + } +} +.search-list { + background: #fff; + position: absolute; + width: 300px; + list-style: none; + border: 1px solid #f2f2f2; + z-index: 99999; + top: 27px; + padding: 0; + li { + height: 40px; + line-height: 40px; + font-size: 12px; + a { + display: inline-block; + box-sizing: border-box; + width: 100%; + padding-left: 40px; + text-decoration: none; + color: #666; + } + &:hover { + // background: #6096ff; + color: $doc-default-color; + a { + color: $doc-default-color; + } + } + } + .cur { + background: $doc-default-color; + color: #fff; + &:hover { + color: #fff; + font-weight: bold; + a { + color: #fff; + } + } + a { + color: #fff; + } + } +} diff --git a/src/sites/doc/components/search/search.tsx b/src/sites/doc/components/search/search.tsx new file mode 100644 index 0000000000..4291bac671 --- /dev/null +++ b/src/sites/doc/components/search/search.tsx @@ -0,0 +1,96 @@ +import React, { useEffect, useState } from 'react' +import './search.scss' +import { Link, useNavigate } from 'react-router-dom' +import { nav } from '../../../config' +export default function Search() { + const navList = nav.flatMap((item) => item.packages).filter((i) => i.show) + const [searchVal, setSearchVal] = useState('') + const [searchList, setSearchList] = useState([]) + const [searchCurName, setSearchCurName] = useState('') + const [searchIndex, setSearchIndex] = useState(0) + const navigate = useNavigate() + const onfocus = () => { + // 处理聚焦事件 + } + + const onblur = () => { + // 处理失焦事件 + } + + const choseList = (e) => { + let index = searchIndex; + if (e.keyCode == 40) { + index++; + } + if (e.keyCode == 38) { + index--; + } + if (searchIndex < 0) { + index = 0; + } + if (searchList.length > 0) { + const cName = searchList[index] && searchList[index].name; + if (cName) { + setSearchCurName(cName); + setSearchIndex(index); + if (e.keyCode == 13) { + navigate(`/zh-CN/component/${(searchList[index].name || '').toLowerCase()}`); + setSearchCurName('') + setSearchIndex(0) + setSearchVal('') + } + } + } + }; + + const checklist = () => { + setSearchCurName('') + setSearchIndex(0) + setSearchVal('') + }; + const onChange = (e) => { + const val = e.target.value + setSearchVal(val) + const list = navList.filter( + (i) => + i.cName.includes(val) || + i.name.toLowerCase().includes(val.toLowerCase()) + ) + setSearchList(list) + } + useEffect(() => { + if (searchVal === '') { + setSearchList([]) + } + }, [searchVal]) + return ( +
    + +
      0 ? 'block' : 'none' }} + > + {searchList.map((item: any, index) => { + console.log(item) + return ( +
    • checklist()}> + + {item.name} + {item.cName} + +
    • + ) + })} +
    +
    + ) +} From 004249edd4582997c7b6d47b8208dc9b73b20dc1 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Mon, 20 Jan 2025 17:39:54 +0800 Subject: [PATCH 04/40] feat: save search component progress --- src/sites/assets/styles/highlight.scss | 6 +- src/sites/assets/styles/md-style.scss | 98 ++++++- src/sites/doc/App.scss | 247 ++++++++++++++---- src/sites/doc/App.tsx | 74 ++++-- .../doc/components/demoblock/demoblock.tsx | 2 +- src/sites/doc/components/issue/issue.scss | 25 +- src/sites/doc/components/issue/issue.tsx | 4 +- 7 files changed, 356 insertions(+), 100 deletions(-) diff --git a/src/sites/assets/styles/highlight.scss b/src/sites/assets/styles/highlight.scss index 3a8f61f0e4..5e0f85c795 100644 --- a/src/sites/assets/styles/highlight.scss +++ b/src/sites/assets/styles/highlight.scss @@ -13,10 +13,10 @@ code { -webkit-font-smoothing: auto; background-color: #fafafa; border-radius: 16px; -} -code span { - font-family: $nutui-doc-code-font-family; + span { + font-family: $nutui-doc-code-font-family; + } } pre { diff --git a/src/sites/assets/styles/md-style.scss b/src/sites/assets/styles/md-style.scss index e60139037a..2578487490 100644 --- a/src/sites/assets/styles/md-style.scss +++ b/src/sites/assets/styles/md-style.scss @@ -1,12 +1,19 @@ @import 'highlight.scss'; +$doc-smile-curve: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png') !default; .doc-content-document { position: relative; + min-width: 1000px; background: #fff; padding-top: 40px; padding-bottom: 40px; padding-left: 40px; padding-right: 445px; + + &.full { + padding-right: 100px; + } + .card { margin-bottom: 24px; padding: 24px; @@ -21,11 +28,11 @@ -webkit-font-smoothing: auto; &:hover { - color: mix(black, $nutui-doc-blue, 10%); + color: darken($nutui-doc-blue, 10%); } &:active { - color: mix(black, $nutui-doc-blue, 20%); + color: darken($nutui-doc-blue, 20%); } } @@ -38,13 +45,11 @@ color: $nutui-doc-black; font-weight: bold; line-height: 1.5; - - &[id] { - cursor: pointer; - } } &.isComponent { + padding-top: 0; + h1 { display: none; } @@ -65,20 +70,20 @@ left: 16px; width: 44px; height: 17px; - background: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png'); + background: $doc-smile-curve; background-size: 100% 100%; } } h2 { - margin: 45px 0 20px; - font-size: 24px; + margin: 16px 0; + font-size: 20px; } h3 { margin: 16px 0px; - font-weight: 600; - font-size: 20px; + font-weight: 400; + font-size: 18px; } h4 { @@ -98,12 +103,14 @@ font-size: 14px; line-height: 22px; } + strong { margin: 24px 0 12px; font-weight: bold; font-size: 14px; color: #333; } + table { width: 100%; margin-top: 12px; @@ -112,12 +119,16 @@ line-height: 1.5; border-collapse: collapse; border: 1px solid #eee; + th { padding: 8px 20px; font-weight: 600; text-align: left; border-left: 1px solid #e9e9e9; background-color: #f7f8fa; + // &:first-child { + // padding-left: 0; + // } &:last-child { padding-right: 0; @@ -128,6 +139,7 @@ padding: 8px 20px; border-top: 1px solid $nutui-doc-code-background-color; border-left: 1px solid #e9e9e9; + &:first-child { // padding-left: 0; border-left: 0px; @@ -157,6 +169,11 @@ } } + ul, + ol { + margin: 16px 0; + } + ul li, ol li { position: relative; @@ -212,14 +229,21 @@ blockquote { margin: 16px 0px; padding: 16px; - background-color: #fff4f0; - border-left: 6px solid #fa192c; + background-color: rgba($doc-default-color, 0.06); + border-left: 6px solid $doc-default-color; border-radius: 3px; + p { color: #1a1a1a; } } + img { + max-width: 100%; + // margin: 16px 0; + // border-radius: $nutui-doc-border-radius; + } + &--changelog, &--changelog-v3 { strong { @@ -240,21 +264,69 @@ } } } + .handle-part { height: 50px; display: flex; justify-content: flex-end; align-items: center; + .online-btn { display: block; color: #5555e2; background-color: #fff; font-size: 14px; cursor: pointer; + &:hover { color: blue; text-decoration: underline; } } } + + .contributor { + display: table; + width: 1120px; + margin-top: 12px; + color: #666; + font-size: 14px; + line-height: 1.5; + border-collapse: collapse; + border: 0; + table-layout: fixed; + + .contributor-head { + display: table-row; + + .contributor-head-item { + display: table-cell; + padding: 10px 15px; + font-weight: 600; + text-align: center; + background-color: transparent; + border: 0; + + a { + img { + width: 60px; + height: 60px; + } + } + } + } + + .contributor-body { + display: table-row; + border-top: 1px solid #eee; + padding-top: 15px; + + .contributor-body-item { + display: table-cell; + padding: 10px 15px; + border: 0; + text-align: center; + } + } + } } diff --git a/src/sites/doc/App.scss b/src/sites/doc/App.scss index 13ed9d9c69..18bec29eb8 100644 --- a/src/sites/doc/App.scss +++ b/src/sites/doc/App.scss @@ -1,62 +1,19 @@ -::selection { - background: $doc-default-color; - color: #fff; -} - $doc-title-height: 137px; -#doc { - background: #fff; - height: 100%; - width: 100%; - display: flex; - flex-direction: column; -} - .doc { - &-title { - width: 100%; - height: $doc-title-height; - z-index: 2; - &-position { - top: 0px; - display: flex; - align-items: center; - justify-content: space-between; - padding: 40px; - border-bottom: 1px solid #eee; - background: #fff; - visibility: visible; - opacity: 1; - transition: opacity 0.8s; - &.fixed { - width: calc(100% - 290px); - position: fixed; - padding: 24px 48px; - .title { - font-size: 24px; - font-weight: bold; - } - } - &.hidden { - visibility: hidden; - opacity: 0; - } - .title { - font-size: 40px; - font-weight: bold; - } - } - } &-content { margin-left: 290px; display: flex; flex-direction: column; - + background: #fff; &-document { min-height: 800px; - min-width: 1000px; + + .markdown-body { + min-height: 600px; + } } + &-tabs { position: absolute; right: 475px; @@ -72,6 +29,7 @@ $doc-title-height: 137px; border-radius: 2px; background: #eee; box-shadow: rgb(0 0 0 / 15%) 0px 2px 4px; + &.single { padding: 0; @@ -80,6 +38,7 @@ $doc-title-height: 137px; cursor: auto; } } + .tab-item { position: relative; padding: 0 10px; @@ -90,21 +49,201 @@ $doc-title-height: 137px; text-align: center; border-radius: 2px; background: #eee; + &.cur { font-weight: bold; color: #323232; background: #fff; } } + + &.hidden { + visibility: hidden; + opacity: 0; + } + } + + &-contributors { + margin: 40px 0; + + a { + position: relative; + } + + img { + height: 26px; + height: 26px; + border-radius: 50%; + margin-left: 8px; + } + + .contributors-hover { + display: none; + padding: 5px 10px; + color: #fff; + font-size: 12px; + background-color: #000; + border-radius: 5px; + position: absolute; + /* min-width:150px; */ + white-space: nowrap; + top: -200%; + transform: translateX(-55%); + } + + a:hover { + .contributors-hover { + display: inline-block; + } + } + } + + &-contributors-gap { + padding-top: 20px; + border-top: 1px solid #eeeaea; + } + + &-faq { + &-title { + margin: 38px 0 20px; + font-size: 24px; + font-weight: bold; + } + + &-item { + margin: 0 8px 28px; + } + + &-que { + font-size: 18px; + line-height: 30px; + color: #323232; + font-weight: 600; + } + + &-aws { + margin-top: 8px; + color: #34495e; + font-size: 14px; + line-height: 26px; + } + } + } + + &-title { + width: 100%; + height: $doc-title-height; + z-index: 2; + + &-content { + display: flex; + justify-content: space-between; + flex-direction: column; + align-items: flex-start; + width: calc(100% - 408px); + + .npm-package { + img { + margin-right: 5px; + } + } + } + + &-position { + top: 0px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 24px 40px; + // line-height: 56px; + border-bottom: 1px solid #eee; + background: #fff; + visibility: visible; + opacity: 1; + // transition: opacity 0.8s linear, visibility 0.8s linear; + transition: opacity 0.8s; + + &.fixed { + width: calc(100% - 290px); + position: fixed; + padding: 24px 48px; + z-index: 999; + .title { + font-size: 24px; + font-weight: bold; + } + + .doc-content-tabs { + position: revert; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + + .title { + font-size: 32px; + font-weight: bold; + } } } } -.nutui-react--demo-button { - display: none; -} -.nutui-react--demo-wrapper { - .nutui-react--demo-button { +::v-deep(.contributors-banner) { + display: flex; + width: 800px; + + .banner-link { + position: relative; + flex: 1; + margin-right: 20px; + + .shadow { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + opacity: 0; + transition: all linear 0.2s; + } + + &:hover { + .shadow { + opacity: 1; + } + + .img-icon { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + } + + img { display: block; + width: 100%; + height: 200px; + } + + .img-icon { + position: absolute; + z-index: 999; + bottom: -10px; + right: 0; + width: 80px; + height: 70px; + transition: all linear 0.2s; + } + + .img-icon-book { + width: 50px; + height: 50px; + bottom: 0; + right: 10px; } } diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index dbce12d5ae..7a44b5cb55 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -11,7 +11,7 @@ import { getComponentName } from '@/sites/assets/util' import routers from './router' import loadable from '@loadable/component' import CodeBlock from './components/demoblock/codeblock' - +import { BackTop } from '../../packages/backtop/backtop' const Title = () => { let location = useLocation() const s = window.location.hash.split('/') @@ -21,8 +21,23 @@ const Title = () => { }, [location]) const [componentName, setComponentName] = useState({ name: '', cName: '' }) return ( -
    - {componentName.name} {s[1] === 'zh-CN' && componentName.cName} +
    +
    + {componentName.name} {s[1] === 'zh-CN' && componentName.cName} +
    +
    + + @nutui/nutui-react + + +
    ) } @@ -68,33 +83,42 @@ const App = () => {
    +
    - - {routers.map((ru, k) => { - const path = ru.component.name?.substring( - 0, - ru.component.name.lastIndexOf('/') - ) - const C = useMemo(() => loadable(ru.component), [ru.component]) - return ( - - - - - - } - > - ) - })} - +
    +
    + + {routers.map((ru, k) => { + const path = ru.component.name?.substring( + 0, + ru.component.name.lastIndexOf('/') + ) + const C = useMemo( + () => loadable(ru.component), + [ru.component] + ) + return ( + + + + + + } + > + ) + })} + +
    +
    + ) } diff --git a/src/sites/doc/components/demoblock/demoblock.tsx b/src/sites/doc/components/demoblock/demoblock.tsx index b8ba1bd841..45bb6fef23 100644 --- a/src/sites/doc/components/demoblock/demoblock.tsx +++ b/src/sites/doc/components/demoblock/demoblock.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react' import { compressText, copyCodeHtml } from './basedUtil' - +import './demoblock.scss' interface A { text: string scss: string diff --git a/src/sites/doc/components/issue/issue.scss b/src/sites/doc/components/issue/issue.scss index 39180f47d5..010495e73f 100644 --- a/src/sites/doc/components/issue/issue.scss +++ b/src/sites/doc/components/issue/issue.scss @@ -1,9 +1,13 @@ .doc-content-issue { + // position: absolute; + // right: 605px; + // top: 51px; display: flex; align-items: center; z-index: 1; padding: 4px; height: 40px; + // background: var(--bg-color-component-transparent); border-radius: 6px; align-items: center; background: #fff; @@ -15,13 +19,30 @@ transition: all 0.2s ease 0s; display: flex; align-items: center; - padding: 5px 8px; + padding: 5px 9px; line-height: 22px; - font-size: 16px; + font-size: 14px; color: #333; cursor: pointer; text-decoration: none; border-radius: 2px; + .icon { + display: inline-block; + width: 16px; + height: 16px; + margin-right: 5px; + background-size: 100% 100%; + background-repeat: no-repeat; + &.issue { + background-image: url('../assets/images/icon-add.svg'); + } + &.open { + background-image: url('../assets/images/icon-open.svg'); + } + &.closed { + background-image: url('../assets/images/icon-closed.svg'); + } + } .nut-icon { font-size: 12px; margin-right: 5px; diff --git a/src/sites/doc/components/issue/issue.tsx b/src/sites/doc/components/issue/issue.tsx index da86cbe063..8ea3022583 100644 --- a/src/sites/doc/components/issue/issue.tsx +++ b/src/sites/doc/components/issue/issue.tsx @@ -1,6 +1,6 @@ import './issue.scss' import React, { useEffect, useState } from 'react' -import { Tips, Check, Add } from '@nutui/icons-react' +import { Tips, Check, Add, Plus } from '@nutui/icons-react' import { useLocation } from 'react-router-dom' import { getComponentName } from '@/sites/assets/util' @@ -20,7 +20,7 @@ export function Issue() { href="https://github.com/jdf2e/nutui-react/issues" target="_blank" > - + Issue Date: Mon, 20 Jan 2025 20:13:37 +0800 Subject: [PATCH 05/40] feat: save taro some logics --- src/sites/assets/util/index.ts | 2 +- src/sites/doc/App.tsx | 40 ++++++++++++++----- .../doc/components/demoblock/codeblock.tsx | 2 +- src/sites/doc/components/header/header.tsx | 15 ++++--- src/sites/doc/components/nav/nav.tsx | 6 ++- 5 files changed, 45 insertions(+), 20 deletions(-) diff --git a/src/sites/assets/util/index.ts b/src/sites/assets/util/index.ts index 7a5ac8e292..1872f4a2c9 100644 --- a/src/sites/assets/util/index.ts +++ b/src/sites/assets/util/index.ts @@ -5,7 +5,7 @@ const isMobile = /ios|iphone|ipod|ipad|android/.test(ua) const getComponentName = () => { const s = window.location.hash.split('/') - const cname = s[s.length - 1].toLowerCase() + const cname = s[s.length - 1].toLowerCase().replace('-taro', '') const component: any = {} nav.forEach((item: any) => { item.packages.forEach((sItem: any) => { diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index 7a44b5cb55..dd5ebde359 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -14,9 +14,11 @@ import CodeBlock from './components/demoblock/codeblock' import { BackTop } from '../../packages/backtop/backtop' const Title = () => { let location = useLocation() + const isTaro = location.pathname.includes('-taro') const s = window.location.hash.split('/') useEffect(() => { const componentName = getComponentName() + console.log(componentName) setComponentName(componentName) }, [location]) const [componentName, setComponentName] = useState({ name: '', cName: '' }) @@ -25,19 +27,35 @@ const Title = () => {
    {componentName.name} {s[1] === 'zh-CN' && componentName.cName}
    -
    - + {isTaro ? ( + +
    + ) : ( +
    + + @nutui/nutui-react + + +
    + )} ) } diff --git a/src/sites/doc/components/demoblock/codeblock.tsx b/src/sites/doc/components/demoblock/codeblock.tsx index 541813b962..6623682941 100644 --- a/src/sites/doc/components/demoblock/codeblock.tsx +++ b/src/sites/doc/components/demoblock/codeblock.tsx @@ -4,7 +4,7 @@ import APPContext from '../../context' import DemoBlock from './demoblock' import './demoblock.scss' -const modules = import.meta.glob(`@/packages/**/demos/h5/*.tsx`, { +const modules = import.meta.glob(`@/packages/**/demos/**/*.tsx`, { query: '?raw', import: 'default', eager: true, diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index bc68705041..4b577b3bf9 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -42,7 +42,6 @@ const Header = () => { (l) => location.pathname.indexOf(l.locale) > -1 )[0] setCurrLang(lang) - console.log(lang) }, [location]) const langs = [ @@ -69,7 +68,7 @@ const Header = () => { // } // window.location.href = link } - const isReactTaro = location.pathname.includes('taro/react') + const isReactTaro = location.pathname.includes('-taro') const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) const [isShowGuid4, setIsShowGuid4] = useState(false) @@ -78,6 +77,13 @@ const Header = () => { const handleMouseHover = (isHovered) => { setIsShowGuid(isHovered) } + const toAnother = () => { + if (!location.pathname.includes('taro')) { + navigate(location.pathname + '-taro'); + } else{ + navigate(location.pathname.replace('-taro', '')); + } + }; const handleClick = () => { setIsShowGuid(!isShowGuid) @@ -93,7 +99,6 @@ const Header = () => { const onMouseHover4 = (isHovered) => { setIsShowGuid4(isHovered) } - console.log(headerBck) return (
    @@ -101,8 +106,8 @@ const Header = () => { {isReactTaro ? '小程序' : 'H5'} diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index 4b2554a4df..77091deeda 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -1,6 +1,6 @@ import React, { Fragment, useEffect, useState } from 'react' import { nav } from '@/config.json' -import { NavLink } from 'react-router-dom' +import { NavLink, useLocation } from 'react-router-dom' import './nav.scss' import useLocale from '@/sites/assets/locale/uselocale' @@ -19,6 +19,8 @@ const Nav = () => { useEffect(() => { document.addEventListener('scroll', scrollNav) }, []) + const location = useLocation() + const isTaro = location.pathname.includes('-taro') return (
      @@ -38,7 +40,7 @@ const Nav = () => { className={({ isActive, isPending }) => isPending ? '' : isActive ? 'active' : '' } - to={`${lang ? `/${lang}` : ''}/component/${cp.name}`} + to={`${lang ? `/${lang}` : ''}/component/${cp.name}${isTaro? '-taro' : ''}`} > {cp.name}   {lang === 'zh-CN' && cp.cName} From a8455b52d4fd51ca964ca4dd8db35fe7ca57eca7 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Tue, 21 Jan 2025 11:19:46 +0800 Subject: [PATCH 06/40] feat: save lang switch --- src/sites/assets/images/icon-add.svg | 3 + src/sites/doc/components/header/header.tsx | 120 +++++++++++++++------ src/sites/doc/components/issue/issue.scss | 6 +- src/sites/doc/components/nav/nav.tsx | 2 +- src/sites/doc/main.tsx | 2 +- src/sites/doc/router.ts | 6 ++ 6 files changed, 100 insertions(+), 39 deletions(-) create mode 100644 src/sites/assets/images/icon-add.svg diff --git a/src/sites/assets/images/icon-add.svg b/src/sites/assets/images/icon-add.svg new file mode 100644 index 0000000000..313565f560 --- /dev/null +++ b/src/sites/assets/images/icon-add.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index 4b577b3bf9..6f81b823f5 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -24,7 +24,7 @@ import { const Header = () => { const navigate = useNavigate() const location = useLocation() - const [currLang, setCurrLang] = useState({ locale: '' }) + const [currLang, setCurrLang] = useState({}) const toHome = () => { navigate('/') @@ -48,26 +48,44 @@ const Header = () => { { name: '中文', locale: 'zh-CN' }, { name: 'English', locale: 'en-US' }, ] - const isZh = true - const toLink = (item: any) => {} + const isZh = currLang?.locale === 'zh-CN' + const toLink = (item: any) => { + if (item) { + if (isZh) { + item.path = item.path.replace('en-US', 'zh-CN') + } else { + item.path = item.path.replace('zh-CN', 'en-US') + } + navigate(item.path) + } else { + navigate('/') + } + } + useEffect(() => { + const lang = langs.filter( + (l) => location.pathname.indexOf(l.locale) > -1 + )[0] + setCurrLang(lang) + console.log(lang) + }, [location]) const [visible, setVisible] = useState(false) const [activeLink, setActiveLink] = useState('指南') - const handleSwitchLocale = (e: any) => { - // const classList: string[] = [].slice.call(e.target.classList) - // if (classList.indexOf('curr-lang') > -1) { - // return setVisible(!visible) - // } - // const name = e.target.innerText - // setVisible(!visible) - // const [{ locale }] = langs.filter((l) => name == l.name) - // let link = '' - // if (config.locales.some((l) => window.location.href.indexOf(l) > -1)) { - // link = window.location.href.replace(/\#\/([a-z-]+)/gi, `#/${locale}`) - // } else { - // link = window.location.href.replace(/\#\//gi, `#/${locale}/`) - // } - // window.location.href = link - } + // const handleSwitchLocale = (e: any) => { + // const classList: string[] = [].slice.call(e.target.classList) + // if (classList.indexOf('curr-lang') > -1) { + // return setVisible(!visible) + // } + // const name = e.target.innerText + // setVisible(!visible) + // const [{ locale }] = langs.filter((l) => name == l.name) + // let link = '' + // if (config.locales.some((l) => window.location.href.indexOf(l) > -1)) { + // link = window.location.href.replace(/\#\/([a-z-]+)/gi, `#/${locale}`) + // } else { + // link = window.location.href.replace(/\#\//gi, `#/${locale}/`) + // } + // window.location.href = link + // } const isReactTaro = location.pathname.includes('-taro') const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) @@ -79,20 +97,25 @@ const Header = () => { } const toAnother = () => { if (!location.pathname.includes('taro')) { - navigate(location.pathname + '-taro'); - } else{ - navigate(location.pathname.replace('-taro', '')); + navigate(location.pathname + '-taro') + } else { + navigate(location.pathname.replace('-taro', '')) } - }; - + } + const checkGuidTheme = (item: any, type: string) => { + setIsShowGuid(false) + window.open(item.link) + } + const checkGuidTheme2 = (item: any, type: string) => { + if (item.link) { + setIsShowGuid(false) + window.open(item.link) + } + } const handleClick = () => { setIsShowGuid(!isShowGuid) } - const handleVersionSelect = (version) => { - setSelectedVersion(version) - } - const handleLanguageSelect = (language) => { setSelectedLanguage(language) } @@ -107,7 +130,7 @@ const Header = () => { {isReactTaro ? '小程序' : 'H5'} @@ -128,7 +151,12 @@ const Header = () => { setActiveLink(item.cName) }} > - toLink(item)}> + { + console.log(item) + toLink(item) + }} + > {isZh ? item.cName : item.eName} @@ -171,11 +199,15 @@ const Header = () => {
    {item.data.map((info, index) => ( -
    +
    checkGuidTheme(info, 'Basis')} + key={info.link} + >
    {info.name}
    {info.language.map((lang, index) => ( -
    +
    {lang}
    ))} @@ -244,7 +276,9 @@ const Header = () => {
    handleVersionSelect(info2.name)} + onClick={() => + checkGuidTheme(info2, 'Advanced') + } >
    {info2.name}
    {
    {!isReactTaro && ( -
  • {}}> +
  • { + let location = window.location + if (currLang.locale == 'zh-CN') { + location.href = location.href.replace('zh-CN', 'en-US') + setCurrLang({ + name: 'English', + locale: 'en-US', + }) + } else { + location.href = location.href.replace('en-US', 'zh-CN') + setCurrLang({ + name: '中文', + locale: 'zh-CN', + }) + } + }} + > En/中
  • )} diff --git a/src/sites/doc/components/issue/issue.scss b/src/sites/doc/components/issue/issue.scss index 010495e73f..1379b84a65 100644 --- a/src/sites/doc/components/issue/issue.scss +++ b/src/sites/doc/components/issue/issue.scss @@ -34,13 +34,13 @@ background-size: 100% 100%; background-repeat: no-repeat; &.issue { - background-image: url('../assets/images/icon-add.svg'); + background-image: url('../../../assets/images/icon-add.svg'); } &.open { - background-image: url('../assets/images/icon-open.svg'); + background-image: url('../../../assets/images/icon-open.svg'); } &.closed { - background-image: url('../assets/images/icon-closed.svg'); + background-image: url('../../../assets/images/icon-closed.svg'); } } .nut-icon { diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index 77091deeda..d6d0003761 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -34,7 +34,7 @@ const Nav = () => { {cn.packages.map((cp: any) => { if (!cp.show) return null return ( -
  • +
  • diff --git a/src/sites/doc/main.tsx b/src/sites/doc/main.tsx index 2345d6fed1..611a579cef 100644 --- a/src/sites/doc/main.tsx +++ b/src/sites/doc/main.tsx @@ -7,7 +7,7 @@ import App from './App' if (isMobile) { location.replace('demo.html') -} +} const rootElement = document.querySelector('#doc') diff --git a/src/sites/doc/router.ts b/src/sites/doc/router.ts index d88f36dc8b..5a91667608 100644 --- a/src/sites/doc/router.ts +++ b/src/sites/doc/router.ts @@ -1,3 +1,4 @@ +import { Divider } from '@nutui/nutui-react-taro'; // const modulesPage = import.meta.globEager('/src/packages/**/doc.md', { // as: 'raw', // }) @@ -43,4 +44,9 @@ for (const path in modulesTaroPage) { }) } +// routes.push({ +// path: '/zh-CN/guide/intro-react', +// name: 'intro-react-zh-CN', +// component: () => Divider +// }) export default routes From cddaaa4b04d28a1a847b758f7a06c9f027411e31 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Tue, 21 Jan 2025 18:57:32 +0800 Subject: [PATCH 07/40] feat: save some guide and routes logics --- src/sites/doc/App.tsx | 115 ++- src/sites/doc/components/header/header.tsx | 5 + src/sites/doc/components/nav/nav.tsx | 141 ++- .../docs/react/contributing-react.en-US.md | 129 +++ .../doc/docs/react/contributing-react.md | 121 +++ .../docs/react/international-react.en-US.md | 42 + .../doc/docs/react/international-react.md | 43 + src/sites/doc/docs/react/intro-react.en-US.md | 42 + src/sites/doc/docs/react/intro-react.md | 42 + .../sites/doc/docs/react/migrate-from-v1.md | 0 .../sites/doc/docs/react/migrate-from-v2.md | 0 .../docs/react/official-theme-react.en-US.md | 65 ++ .../doc/docs/react/official-theme-react.md | 65 ++ src/sites/doc/docs/react/start-react.en-US.md | 190 ++++ src/sites/doc/docs/react/start-react.md | 190 ++++ src/sites/doc/docs/react/theme-react.en-US.md | 68 ++ src/sites/doc/docs/react/theme-react.md | 65 ++ .../doc/docs/taro/contributing-react.en-US.md | 127 +++ src/sites/doc/docs/taro/contributing-react.md | 121 +++ .../docs/taro/international-react.en-US.md | 42 + .../doc/docs/taro/international-react.md | 43 + src/sites/doc/docs/taro/intro-react.en-US.md | 39 + src/sites/doc/docs/taro/intro-react.md | 39 + src/sites/doc/docs/taro/migrate-from-v1.md | 888 ++++++++++++++++++ src/sites/doc/docs/taro/migrate-from-v2.md | 888 ++++++++++++++++++ .../docs/taro/official-theme-react.en-US.md | 65 ++ .../doc/docs/taro/official-theme-react.md | 86 ++ src/sites/doc/docs/taro/start-react.en-US.md | 185 ++++ src/sites/doc/docs/taro/start-react.md | 191 ++++ src/sites/doc/docs/taro/theme-react.en-US.md | 58 ++ src/sites/doc/docs/taro/theme-react.md | 53 ++ src/sites/doc/router.ts | 49 +- 32 files changed, 4083 insertions(+), 114 deletions(-) create mode 100644 src/sites/doc/docs/react/contributing-react.en-US.md create mode 100644 src/sites/doc/docs/react/contributing-react.md create mode 100644 src/sites/doc/docs/react/international-react.en-US.md create mode 100644 src/sites/doc/docs/react/international-react.md create mode 100644 src/sites/doc/docs/react/intro-react.en-US.md create mode 100644 src/sites/doc/docs/react/intro-react.md rename migrate-from-v1.md => src/sites/doc/docs/react/migrate-from-v1.md (100%) rename migrate-from-v2.md => src/sites/doc/docs/react/migrate-from-v2.md (100%) create mode 100644 src/sites/doc/docs/react/official-theme-react.en-US.md create mode 100644 src/sites/doc/docs/react/official-theme-react.md create mode 100644 src/sites/doc/docs/react/start-react.en-US.md create mode 100644 src/sites/doc/docs/react/start-react.md create mode 100644 src/sites/doc/docs/react/theme-react.en-US.md create mode 100644 src/sites/doc/docs/react/theme-react.md create mode 100644 src/sites/doc/docs/taro/contributing-react.en-US.md create mode 100644 src/sites/doc/docs/taro/contributing-react.md create mode 100644 src/sites/doc/docs/taro/international-react.en-US.md create mode 100644 src/sites/doc/docs/taro/international-react.md create mode 100644 src/sites/doc/docs/taro/intro-react.en-US.md create mode 100644 src/sites/doc/docs/taro/intro-react.md create mode 100644 src/sites/doc/docs/taro/migrate-from-v1.md create mode 100644 src/sites/doc/docs/taro/migrate-from-v2.md create mode 100644 src/sites/doc/docs/taro/official-theme-react.en-US.md create mode 100644 src/sites/doc/docs/taro/official-theme-react.md create mode 100644 src/sites/doc/docs/taro/start-react.en-US.md create mode 100644 src/sites/doc/docs/taro/start-react.md create mode 100644 src/sites/doc/docs/taro/theme-react.en-US.md create mode 100644 src/sites/doc/docs/taro/theme-react.md diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index dd5ebde359..cf70257b2a 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -8,17 +8,23 @@ import Header from '@/sites/doc/components/header' import DemoPreview from '@/sites/doc/components/demo-preview' import Issue from '@/sites/doc/components/issue' import { getComponentName } from '@/sites/assets/util' -import routers from './router' +import { + routes as routers, + guideEnRoutes, + guideRoutes, + guideEnTaroRoutes, + guideTaroRoutes, +} from './router' import loadable from '@loadable/component' import CodeBlock from './components/demoblock/codeblock' import { BackTop } from '../../packages/backtop/backtop' + const Title = () => { let location = useLocation() const isTaro = location.pathname.includes('-taro') const s = window.location.hash.split('/') useEffect(() => { const componentName = getComponentName() - console.log(componentName) setComponentName(componentName) }, [location]) const [componentName, setComponentName] = useState({ name: '', cName: '' }) @@ -59,85 +65,76 @@ const Title = () => {
  • ) } + const components = { CodeBlock, } -const App = () => { - const [fixed, setFixed] = useState(false) - const [hidden, setHidden] = useState(false) +const Content = () => { + const [fixed, setFixed] = useState(false) + const location = useLocation() const scrollTitle = () => { let top = document.documentElement.scrollTop if (top > 127) { setFixed(true) - if (top < 142) { - setHidden(true) - } else { - setHidden(false) - } } else { setFixed(false) - setHidden(false) } } - + const isGuide = location.pathname.includes('/guide') useEffect(() => { document.addEventListener('scroll', scrollTitle) }, []) + return ( +
    +
    +
    + + </div> + </div> + <div + className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} + > + <Routes> + {[...routers, ...guideRoutes].map((ru, k) => { + const path = ru.component.name?.substring( + 0, + ru.component.name.lastIndexOf('/') + ) + const C = useMemo(() => loadable(ru.component), [ru.component]) + return ( + <Route + key={k} + path={ru.path} + element={ + <APPContext.Provider value={{ path }}> + <MDXProvider components={components}> + <C /> + </MDXProvider> + </APPContext.Provider> + } + ></Route> + ) + })} + </Routes> + </div> + <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + </div> + ) +} + +const App = () => { return ( <div> <HashRouter> - <Header></Header> - <Nav></Nav> - <div className="doc-content"> - <div className="doc-title"> - <div - className={`doc-title-position ${fixed ? 'fixed' : ''} ${ - hidden ? 'hidden' : '' - }`} - > - <Title> - -
    -
    - -
    -
    -
    - - {routers.map((ru, k) => { - const path = ru.component.name?.substring( - 0, - ru.component.name.lastIndexOf('/') - ) - const C = useMemo( - () => loadable(ru.component), - [ru.component] - ) - return ( - - - - - - } - > - ) - })} - -
    -
    -
    - -
    +
    +
    ) } + export default App diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index 6f81b823f5..41e0116504 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -95,6 +95,11 @@ const Header = () => { const handleMouseHover = (isHovered) => { setIsShowGuid(isHovered) } + useEffect(() => { + if(location.pathname.includes('/component')) { + setActiveLink('组件') + } + }, [location]) const toAnother = () => { if (!location.pathname.includes('taro')) { navigate(location.pathname + '-taro') diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index d6d0003761..626a8ea0b6 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -1,6 +1,6 @@ import React, { Fragment, useEffect, useState } from 'react' -import { nav } from '@/config.json' -import { NavLink, useLocation } from 'react-router-dom' +import { nav, docs } from '@/config.json' +import { NavLink, useLocation, useNavigate } from 'react-router-dom' import './nav.scss' import useLocale from '@/sites/assets/locale/uselocale' @@ -8,6 +8,8 @@ const Nav = () => { const [cNav] = useState(nav) const [lang] = useLocale() const [fixed, setFixed] = useState(false) + const [isGuide, setIsGuide] = useState(false) + const [activeName, setActiveName] = useState('intro-react') const scrollNav = () => { let top = document.documentElement.scrollTop if (top > 64) { @@ -19,56 +21,99 @@ const Nav = () => { useEffect(() => { document.addEventListener('scroll', scrollNav) }, []) + const location = useLocation() + const navigate = useNavigate() + + useEffect(() => { + if (location.pathname.includes('/guide')) { + setIsGuide(true) + } else { + setIsGuide(false) + } + }, [location]) + const changeNav = (_nav: any) => { + setActiveName(_nav.name) + + navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/` + _nav.name.toLowerCase()) + } const isTaro = location.pathname.includes('-taro') + const isZh = lang === 'zh-CN' return (
    -
      - {cNav.map((cn: any) => { - return ( - - {cn.enName === 'dataentry' ? null : ( -
    1. {lang === 'zh-CN' ? cn.name : cn.enName}
    2. - )} -
        - {cn.packages.map((cp: any) => { - if (!cp.show) return null - return ( -
      • - - isPending ? '' : isActive ? 'active' : '' - } - to={`${lang ? `/${lang}` : ''}/component/${cp.name}${isTaro? '-taro' : ''}`} - > - {cp.name}   - {lang === 'zh-CN' && cp.cName} - {cp.version !== '2.0.0' ? ( - - 🛠 - - ) : null} - -
      • - ) - })} -
      -
      - ) - })} -
    + {isGuide ? ( +
      +
        + {docs.packages.map((_package) => ( +
      • + {_package.show && ( + <> + {_package.isLink ? ( + + {isZh ? _package.cName : _package.eName} + + ) : ( +
        changeNav(_package)}> + {isZh ? _package.cName : _package.eName} +
        + )} + + )} +
      • + ))} +
      +
    + ) : ( +
      + {cNav.map((cn: any) => { + return ( + + {cn.enName === 'dataentry' ? null : ( +
    1. {lang === 'zh-CN' ? cn.name : cn.enName}
    2. + )} +
        + {cn.packages.map((cp: any) => { + if (!cp.show) return null + return ( +
      • + + isPending ? '' : isActive ? 'active' : '' + } + to={`${lang ? `/${lang}` : ''}/component/${cp.name}${isTaro ? '-taro' : ''}`} + > + {cp.name}   + {lang === 'zh-CN' && cp.cName} + {cp.version !== '2.0.0' ? ( + + 🛠 + + ) : null} + +
      • + ) + })} +
      +
      + ) + })} +
    + )}
    ) } diff --git a/src/sites/doc/docs/react/contributing-react.en-US.md b/src/sites/doc/docs/react/contributing-react.en-US.md new file mode 100644 index 0000000000..fa3d85d360 --- /dev/null +++ b/src/sites/doc/docs/react/contributing-react.en-US.md @@ -0,0 +1,129 @@ +

    Contribution Guidelines

    + +You can contribute to the NutUI community according to the co-construction direction in 《[NutUI invites you to build, Hello Contributor](https://jelly.jd.com/article/6320528b92d94a0068685525)》. + +  + +This guide will guide you on how to contribute to NutUI. Please take a few minutes to read this guide before you file an issue or pull request to ensure that the contribution is compliant and can help the community. + +## code of conduct + +In order to ensure a good network environment and create a comfortable development atmosphere, I hope all contributors can abide by this [Code of Conduct](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/), and please take the time to read the full text to clarify what is prohibited and what is allowed. + +## Branch management + +The main branch is currently maintained on github. If you want to fix a bug or add a feature, send a pull request to the main branch. + +  + +The official website will update [NutUI - React release cycle] (https://github.com/jdf2e/nutui-react/releases), at the same time every day developers review submitted code in the making. The release cycle is once a week, usually incorporating new code or features in advance and releasing formal packages; In case of emergency, beta versions can be released based on the specified branch. + +## Issue + +If submit Bug reports, please be sure to comply with the [` Bug report `] (https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) template. + +## Bugs + +We use [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) for bug tracking. We hope you can submit feedback through the issue assistant we provide, and provide all the development information as much as possible, because the more comprehensive the information, the faster the development response, and the bugs you find will be solved quickly. + +  + +Before you commit a bug, Please ensure that the search had existing [issue] (https://github.com/jdf2e/nutui-react/issues) and read our [FAQ] (https://nutui.jd.com/#/zh-CN/notice). + +## new features + +If you have a better idea of an existing component function or API, We also recommend that you use our provided [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) to submit a issue of adding new features. + +  + +If you want to help develop new features and components, Can scan [qr code] (HTTP: / / https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911 .png) join our community co-building group. + +## Participate in contribution + +If you are not familiar with the PR process of github, you can read the following two articles to learn: + +  + +[NutUI Contribution Guidelines](https://github.com/jdf2e/nutui-react/discussions/348) + +[github repository code synchronization](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request Specification + +1. Each PR addresses a single issue or adds a single feature + +2. When adding components or modifying existing components, synchronously change the corresponding unit tests and documents to ensure the stability of the code + +3. Please follow the [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) specification for the commit message + +4. The PR information should include which component has been modified, which problem has been solved, and associated the corresponding issue link on github + +## Pull Request Process + +1. Fork the main repository and synchronize the latest code of the main repository + +  + +2. Download the project locally, run npm install in the project root directory, and access it locally + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +cd src/sites/mobile-taro && npm install +cd - +npm run dev:taro:weapp +``` + +3. Create a new branch or develop on the corresponding branch + +``` +git checkout -b username/xxxx +git checkout {current branch} +``` + +4. If the development involves new components or new features of components, it is necessary to improve the Chinese and English documentation of the components, the unit testing of the components, and use [nutui-demo](https://github.com/jdf2e/nutui-demo) to Component testing is used. + +  + +5、Ensure that the compilation function is used normally + +``` +npm run test +// node v17 +// @nutui/nutui-react +npm run build +// @nutui/nutui-react-taro +npm run build:taro +``` + +6、After the development is completed, submit it to the corresponding branch of the warehouse. After the review is passed, the PR will be merged into the main warehouse, and then wait for NutUI-React to release a new version(Once a week)。 + +  + +### Knowledge sharing + +1. Project Use Cases + +     Share the [use case](https://nutui.jd.com/#/zh-CN/case) of NutUI, we will recommend it on the official website, prepare the name of the project, Project entry (QR code\link), logo, sample image, delivery platform (H5\mini program\APP, etc.), nutui version and other information should be submitted to **nutui@jd.com** by email. + +  + +2. Article video submission + +     Share your experiences (tutorials, articles, videos, etc.) by contributing to **nutui@jd.com**. After passing the review, collect it in the [official website resource](https://nutui.jd.com/#/zh-CN/resource), and pass your knowledge and ideas to NutUI friends. + +  + +3. Co-construction and sharing + +     Based on NutUI, design or develop new tools, such as adapting to uni-app, developing plug-ins to improve efficiency, etc. If you are interested, welcome to join our [Community Development Group](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png) to communicate and discuss. + +  + +### Credits + +Thanks to all the developers below who have contributed code to NutUI. + + + contributors + diff --git a/src/sites/doc/docs/react/contributing-react.md b/src/sites/doc/docs/react/contributing-react.md new file mode 100644 index 0000000000..21ad78757a --- /dev/null +++ b/src/sites/doc/docs/react/contributing-react.md @@ -0,0 +1,121 @@ +## 贡献指南 + +您可根据《[NutUI 邀您共建,Contributor 您好](https://jelly.jd.com/article/6320528b92d94a0068685525)》中的共建方向为 NutUI 社区做出贡献。 + +  + +本篇指南会指导你如何为 NutUI 贡献一份自己的力量,请在您要提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南,保证贡献是符合规范并且能帮助到社区。 + +## 行为准则 + +为保证良好的网络环境,营造舒适的开发氛围,希望所有的贡献者都能遵守这份[行为准则](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/),也请花时间阅读一遍全文明确哪些行为是禁止的,哪些行为是可行的。 + +## 分支管理 + +目前 github 上长期维护分支 main。如果您要修一个 bug 或新增功能,请发 pull request 到 main 分支。 + +  + +官网会同步更新 [NutUI-React 的发布周期](https://github.com/jdf2e/nutui-react/releases),同时每天都会有开发者 review github 中提交的代码。发版周期是每 1 周/次,通常会提前合并新的代码或功能,发布正式包;期间如遇紧急需求,可基于指定分支发布 beta 版本。 + +## Issue 报告指南 + +如果提交的是 Bug 报告,请务必遵守 [Bug report](https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) 模板。 + +## Bugs + +我们使用 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 来做 bug 追踪。希望大家通过我们提供的 issue 小助手来提交反馈,并尽可能提供一切开发信息,因为信息越全面,开发响应速度越快,您发现的 bug 会被快速解决。 + +  + +提交 bug 之前,请先确保搜索过已有的 [issue](https://github.com/jdf2e/nutui-react/issues) 和阅读了我们的[常见问题](https://nutui.jd.com/#/zh-CN/notice)。 + +## 功能新增 + +如果您对现有的组件功能或者 API 有更好的想法,我们同样推荐你使用我们提供的 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 提交一个添加新功能的 issue。 + +  + +如果你希望协助开发新功能新组件,可扫描[二维码](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)加入我们的社区共建群。 + +## 参与贡献 + +如果你对 github 的 PR 流程还不熟悉,可以阅读下面这 2 篇文章来学习: + +  + +[NutUI 贡献指南](https://github.com/jdf2e/nutui-react/discussions/348) + +[github 仓库代码同步](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request 规范 + +1. 每个 PR 只解决单个问题或者新增单个功能 + +2. 当新增组件或修改原有组件时,同步更改对应的单元测试和文档,保证代码的稳定 + +3. commit message 请遵循 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) 规范 + +4. PR 信息中最好包括修改了哪个组件,解决了哪个问题,并关联 github 上对应的 issue 链接 + +## Pull Request 流程 + +1、fork 主仓库,并同步主仓库的最新代码 + +2、将项目下载到本地,在项目根目录下运行 npm install,并在本地能正常访问 + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +npm run dev +``` + +3、创建一个新的分支或在对应分支上进行开发 + +``` +git checkout -b username/xxxx +git checkout {现有分支名称} +``` + +4、如开发涉及新组件或组件的新特性,需要完善组件的中英文文档、组件的单元测试,同时要使用 [nutui-demo](https://github.com/jdf2e/nutui-demo) 对组件测试使用。 + +5、保证编译功能正常使用 + +``` +npm run test +// build 使用 node 17 版本 +// 构建 @nutui/nutui-react +npm run build +// 构建 @nutui/nutui-react-taro +npm run build:taro +``` + +6、开发完成后提交到仓库的对应分支上,PR 会在 Review 通过后被合并到主仓库,然后等待 NutUI-React 发布新版本(每周一次)。 + +### 知识分享 + +1. 项目使用案例 + +     分享 NutUI 的[使用案例](https://nutui.jd.com/next/#/case),我们会在官网进行推荐展示,准备项目的名称、项目入口(二维码\链接)、logo、示例图、投放平台(H5\小程序\APP等)、nutui 版本等信息,以邮箱的形式提交到 **nutui@jd.com**。 + +  + +2. 文章视频投稿 + +     分享你的经验(教程、文章、视频等),可以给 **nutui@jd.com** 投稿。在审核通过后,收藏到[官网资源](https://nutui.jd.com/next/#/resource)中,将你的知识与思想传递给 NutUI 的小伙伴们。 + +  + +3. 共建分享征集 + +     以 NutUI-React 为基础,设计或开发新的工具,开发提效的插件等。有兴趣欢迎加入我们的[社区开发群](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)交流讨论。 + +  + +### Credits + +感谢以下所有给 NutUI 贡献过代码的开发者。 +  + +contributors + diff --git a/src/sites/doc/docs/react/international-react.en-US.md b/src/sites/doc/docs/react/international-react.en-US.md new file mode 100644 index 0000000000..30f695393b --- /dev/null +++ b/src/sites/doc/docs/react/international-react.en-US.md @@ -0,0 +1,42 @@ +# Internationalization + +NutUI-React support multiple languages. NutUI uses Chinese as the default language. Use as follows: + +## Usage + +### Switch languages + +:::demo + +```javascript +import { ConfigProvider } from '@nutui/nutui-react' +import en from '@nutui/nutui-react/dist/locales/en-US' + +ReactDOM.render( + + + , + document.querySelector('#root') +) +``` + +::: + +## Current supported languages: + +| Language | Filename | Version | +| --- | --- | --- | +| English | en-US | `v1.0.0` | +| Chinese | zh-CN | `v1.0.0` | +| Uygur | zh-UG | `v1.3.15` | +| Traditional Chinese | zh-TW | `v1.0.0` | +| Indonesian | id-ID | `v1.3.2` | +| Thai | th-TH | PR | + +> View all language configs [Here](https://github.com/jdf2e/nutui-react/tree/main/src/locales). + +## Common Questions + +### Missing language pack? + +Welcome to commit PR If you need new language pack. Changes refer to [language pack](https://github.com/jdf2e/nutui-react/tree/main/src/locales). diff --git a/src/sites/doc/docs/react/international-react.md b/src/sites/doc/docs/react/international-react.md new file mode 100644 index 0000000000..be7ed2c381 --- /dev/null +++ b/src/sites/doc/docs/react/international-react.md @@ -0,0 +1,43 @@ +# 国际化 + +NutUI-React 1.0 以上版本支持多语言。组件默认使用中文。 + +## 使用方法 + +### 多语言切换 + +:::demo + +```javascript +// 多语言版本 +import { ConfigProvider } from '@nutui/nutui-react' +import en from '@nutui/nutui-react/dist/locales/en-US' + +ReactDOM.render( + + + , + document.querySelector('#root') +) +``` + +::: + +## 目前支持的语言: + +| 语言 | 文件名 | 版本 | +| --- | --- | --- | +| 英语 | en-US | `v1.0.0` | +| 简体中文 | zh-CN | `v1.0.0` | +| 维吾尔语 | zh-UG | `v1.3.15` | +| 繁體中文 | zh-TW | `v1.0.0` | +| 印度尼西亚语 | id-ID | `v1.3.2` | +| 泰语 | th-TH | 等待 PR | + +> 在 [这里](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 查看所有的语言包源文件。 + +## 常见问题 + +### 找不到所需的语言包? + +如果上方列表中没有你需要的语言,欢迎给我们提 Pull Request 来增加新的语言包。改动内容可以参考 [语言包](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 的 PR diff --git a/src/sites/doc/docs/react/intro-react.en-US.md b/src/sites/doc/docs/react/intro-react.en-US.md new file mode 100644 index 0000000000..9bcccc2eae --- /dev/null +++ b/src/sites/doc/docs/react/intro-react.en-US.md @@ -0,0 +1,42 @@ +# NutUI-React + +The NutUI-React component library is suitable for H5 applications of the React technology stack. It can be used out of the box to help developers quickly develop user interfaces, improve development efficiency, and improve development experience. + +## Features + +- 🚀 70+ high-quality components covering mainstream mobile scenarios +- 📖 Based on JD APP 10.0 visual specification +- 🍭 Support on-demand reference +- 📖 Detailed documentation and examples +- 💪 Supports TypeScript +- 💪 Support for server-side rendering (Next.js) +- 🍭 Support custom themes +- 🌍 Internationalization support +- 🍭 Unit test coverage exceeds 80% to ensure stability +- 📖 Sketch design resources are available + +## Examples + +NutUI-React + +## Compatibility Environment + +| Version | Supported Frameworks | Visual Specifications | Compatibility | +| --- | --- | --- | --- | +| @nutui/nutui-react | React 17\18 | Jingdong [APP 10.0](#/resource) | Modern browsers start with Chrome >= 51、iOS >= 10.0 | + +For some older versions of browsers, corresponding polyfills are needed. It is recommended to use @babel/preset-env to address browser compatibility issues. The package provided by NutUI-React has not undergone extensive syntax transformation, so it is necessary to include the NutUI-React package in the compilation phase. + +For browsers that do not support CSS variables, it is recommended to use [postcss-var-replace](https://www.npmjs.com/package/postcss-var-replace) to resolve compatibility issues. + +## All Contributors + +Thanks to the following friends for their contributions to NutUI-React: + + + contributors + + +## LICENSE + +[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) diff --git a/src/sites/doc/docs/react/intro-react.md b/src/sites/doc/docs/react/intro-react.md new file mode 100644 index 0000000000..eea1cf0f3a --- /dev/null +++ b/src/sites/doc/docs/react/intro-react.md @@ -0,0 +1,42 @@ +# NutUI-React + +NutUI-React 组件库,适用于 React 技术栈的 H5 应用,开箱即用,帮助研发快速开发用户界面,提升开发效率,改善开发体验。 + +## 特性 + +- 🚀 70+ 高质量组件,覆盖移动端主流场景 +- 📖 基于京东APP 10.0 视觉规范 +- 🍭 支持按需引用 +- 📖 详尽的文档和示例 +- 💪 支持 TypeScript +- 💪 支持服务端渲染(Next.js) +- 🍭 支持定制主题 +- 🌍 国际化支持 +- 🍭 单元测试覆盖率超过 80%,保障稳定性 +- 📖 提供 Sketch 设计资源 + +## 扫码体验 + +NutUI-React + +## 兼容情况 + +| 版本 | 支持的框架 | 视觉规范 | 兼容 | +| --- | --- | --- | --- | +| @nutui/nutui-react | React 17\18 | 京东 [APP 10.0](#/resource) 规范 | 现代浏览器以 Chrome >= 51、iOS >= 10.0 | + +对于一些低版本的浏览器,需要相应的 Ployfill,建议使用 @babel/preset-environment 来解决浏览器兼容问题。NutUI-React 提供的包并未进行过多的语法转换,所以需要将 NutUI-React 包含到编译阶段。 + +对于不支持 CSS 变量的浏览器,建议使用 [postcss-var-replace](https://www.npmjs.com/package/postcss-var-replace) 来解决兼容问题。 + +## 贡献者们 + +感谢以下小伙伴们为 NutUI-React 发展做出的贡献: + + + contributors + + +## 开源协议 + +本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议 diff --git a/migrate-from-v1.md b/src/sites/doc/docs/react/migrate-from-v1.md similarity index 100% rename from migrate-from-v1.md rename to src/sites/doc/docs/react/migrate-from-v1.md diff --git a/migrate-from-v2.md b/src/sites/doc/docs/react/migrate-from-v2.md similarity index 100% rename from migrate-from-v2.md rename to src/sites/doc/docs/react/migrate-from-v2.md diff --git a/src/sites/doc/docs/react/official-theme-react.en-US.md b/src/sites/doc/docs/react/official-theme-react.en-US.md new file mode 100644 index 0000000000..a5abda8b81 --- /dev/null +++ b/src/sites/doc/docs/react/official-theme-react.en-US.md @@ -0,0 +1,65 @@ +# Official theme + +## introduce + +NutUI provides multiple sets of official `UI` themes by default, while allowing new themes to be customized to a certain extent to meet the diverse visual needs of the business. + +#### + +| theme description | scss file name | +| --- | --- | +| Jingdong APP 10.0 theme (default) | `variables.scss` | +| Jingdong B Mall Theme Preview | `variables-jdb.scss ` | + +NutUI theme customization + +## How to use + +### Modify the configuration file of the local project vite or webpack + +Modify the **sass-loader** configuration in the vite or webpack configuration file. The following example + +#### vite configuration example + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // Default Jingdong APP 10.0 theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack configuration example + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // Default Jingdong APP theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // Note: In different versions of sass-loader, the name of this option is different. For details, please refer to the version documentation corresponding to sass-loader + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: diff --git a/src/sites/doc/docs/react/official-theme-react.md b/src/sites/doc/docs/react/official-theme-react.md new file mode 100644 index 0000000000..777b004251 --- /dev/null +++ b/src/sites/doc/docs/react/official-theme-react.md @@ -0,0 +1,65 @@ +# 官方主题 + +## 介绍 + +NutUI 默认提供多套官方`UI`主题,同时允许在一定程度上定制新主题,以满足业务的多样化视觉需求。 + +#### + +| 主题说明 | scss 文件名称 | +| --- | --- | +| 京东 APP 主题(默认) | `variables.scss` | +| 京东B商城主题预览 | `variables-jdb.scss` | + +NutUI 主题定制 + +## 使用方式 + +### 修改本地项目 vite 或者 webpack 的配置文件 + +修改 vite 或者 webpack 配置文件中 **sass-loader** 的配置。如下示例 + +#### vite 配置示例 + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack 配置示例 + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // 注意:在 sass-loader 不同版本,这个选项名是 是不一样的,具体可参考 sass-loader对应的版本文档 + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: diff --git a/src/sites/doc/docs/react/start-react.en-US.md b/src/sites/doc/docs/react/start-react.en-US.md new file mode 100644 index 0000000000..753a4772ac --- /dev/null +++ b/src/sites/doc/docs/react/start-react.en-US.md @@ -0,0 +1,190 @@ +# Quick Start + +## Intro + +Through this article, you can master the installation and use of NutUI React. The operation is simple and easy to use, and the development is simple and fast. + +## Install + +#### 1. Install via NPM + +```sh +#pnpm +pnpm add @nutui/nutui-react +#yarn +yarn add @nutui/nutui-react +# npm +npm install @nutui/nutui-react +``` + +#### 2. Install and use via CDN + +> NutUI is available on public CDNs like **jsdelivr** and **unpkg**. +> It is not recommended to use the component library CDN in the production environment. If this method is required, it is recommended to download the specific version of the CDN file to the local project directory for use. + +:::demo + +```html + + + + + + + + + + + + + + +
    + + + +``` + +::: + +## Component usage + +> NutUI React supports Tree Shaking by default, and supports on-demand import of component JS files without any plug-in configuration. However, css style files cannot be implemented in this way, so from the perspective of style, it can be divided into the following two usage methods: + +#### Method 1, Conventional usage: Full import of styles + +:::demo + +```js +import * as React from 'react' +import * as ReactDOM from 'react-dom' +import '@nutui/nutui-react/dist/style.css' +import { Button } from '@nutui/nutui-react' + +ReactDOM.render( +
    + +
    , + document.getElementById('app') +) +``` + +::: + +#### Method 2, import styles on demand + +
    +vite + +Install the `vite-plugin-imp` plugin and configure it. + +```sh +#pnpm +pnpm add vite-plugin-imp -D +#yarn +yarn add vite-plugin-imp -D +# npm +npm install vite-plugin-imp -D +``` + +:::demo + +```js +// vite.config.js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import vitePluginImp from 'vite-plugin-imp' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + vitePluginImp({ + libList: [ + { + libName: '@nutui/nutui-react', + style: (name) => { + return `@nutui/nutui-react/dist/esm/${name}/style/css` + }, + replaceOldImport: false, + camel2DashComponentName: false, + }, + ], + }), + ], +}) +``` + +::: + +

    + +
    +webpack + +Install the `babel-plugin-import` plugin and configure it. + +```sh +#pnpm +pnpm add babel-plugin-import -D +#yarn +yarn add babel-plugin-import -D +# npm +npm install babel-plugin-import -D +``` + +Babel configuration: + +:::demo + +```js +{ + //... + plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react', + ], + ] +} +``` + +::: + +

    + +## Precautions for use + +- NutUI-React is built on [react@^18.0.0](https://www.npmjs.com/package/react) +- The component CSS unit uses **px**, if you need **rem** unit in your project, you can convert it with some tools, such as [px2rem-loader](https://www.npmjs.com/package/px2rem-loader) of [webpack](https://www.webpackjs.com/), [postcss] of [postcss](https://github.com/postcss/postcss) -plugin-px2rem](https://www.npmjs.com/package/postcss-plugin-px2rem) plugin etc. + +## Examples + +Source code for all the examples can be found in the [packages/templates](https://github.com/jdf2e/nutui-react/tree/next/packages/nutui-templates) directory. + + diff --git a/src/sites/doc/docs/react/start-react.md b/src/sites/doc/docs/react/start-react.md new file mode 100644 index 0000000000..deb0328ec8 --- /dev/null +++ b/src/sites/doc/docs/react/start-react.md @@ -0,0 +1,190 @@ +# 快速上手 + +## 介绍 + +通过本文你可以掌握 NutUI React 的安装和使用方法,操作简单易上手,开发简洁快速。 + +## 安装 + +#### 1. 通过 NPM 安装 + +```sh +# pnpm +pnpm add @nutui/nutui-react +# yarn +yarn add @nutui/nutui-react +# npm +npm install @nutui/nutui-react +``` + +#### 2. 通过 CDN 安装及使用 + +> 可以在 **jsdelivr** 和 **unpkg** 等公共 CDN 上获取到 NutUI。 +> 不推荐在生产环境使用组件库 CDN,如果需要这种使用方式,建议将特定版本的 CDN 文件下载至本地项目目录中使用。 + +:::demo + +```html + + + + + + + + + + + + + + +
    + + + +``` + +::: + +## 组件使用 + +> NutUI React 默认支持 Tree Shaking,在无任何插件配置的情况下支持组件 JS 文件的按需引入。但 css 样式文件无法通过这种方式实现,因此从样式的角度可以分为以下两种使用方法: + +#### 方法一、常规用法:全量引入样式 + +:::demo + +```js +import * as React from 'react' +import * as ReactDOM from 'react-dom' +import '@nutui/nutui-react/dist/style.css' +import { Button } from '@nutui/nutui-react' + +ReactDOM.render( +
    + +
    , + document.getElementById('app') +) +``` + +::: + +#### 方法二、按需引入样式 + +
    +vite + +安装 `vite-plugin-imp` 插件并配置。 + +```sh +# pnpm +pnpm add vite-plugin-imp -D +# yarn +yarn add vite-plugin-imp -D +# npm +npm install vite-plugin-imp -D +``` + +:::demo + +```js +// vite.config.js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import vitePluginImp from 'vite-plugin-imp' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + vitePluginImp({ + libList: [ + { + libName: '@nutui/nutui-react', + style: (name) => { + return `@nutui/nutui-react/dist/esm/${name}/style/css` + }, + replaceOldImport: false, + camel2DashComponentName: false, + }, + ], + }), + ], +}) +``` + +::: + +

    + +
    +webpack + +安装 `babel-plugin-import` 插件并配置。 + +```sh +# pnpm +pnpm add babel-plugin-import -D +# yarn +yarn add babel-plugin-import -D +# npm +npm install babel-plugin-import -D +``` + +babel 配置: + +:::demo + +```js +{ + // ... + plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react', + ], + ] +} +``` + +::: + +

    + +## 使用注意事项 + +- NutUI-React 基于 [react@^18.0.0](https://www.npmjs.com/package/react) 构建 +- 组件 CSS 单位使用的是 **px**,如果你的项目中需要 **rem** 单位,可借助一些工具进行转换,比如 [webpack](https://www.webpackjs.com/) 的 [px2rem-loader](https://www.npmjs.com/package/px2rem-loader)、[postcss](https://github.com/postcss/postcss) 的 [postcss-plugin-px2rem](https://www.npmjs.com/package/postcss-plugin-px2rem) 插件等 + +## 示例 + +示例代码可以再 [packages/templates](https://github.com/jdf2e/nutui-react/tree/next/packages/nutui-templates) 下查看 + + diff --git a/src/sites/doc/docs/react/theme-react.en-US.md b/src/sites/doc/docs/react/theme-react.en-US.md new file mode 100644 index 0000000000..062a297deb --- /dev/null +++ b/src/sites/doc/docs/react/theme-react.en-US.md @@ -0,0 +1,68 @@ +# Customize Theme + +## Introduce + +NutUI-React supports flexible style customization to meet multiple visual business and brand needs, including but not limited to support for global master tone and component-specific visual customization. +
    +
    +In NutUI-React version 2.0, the Sass theme customization function of 1.x can still be used. We added CSS variables to the original theme customization function, so that the new theme customization function can be used without introducing additional SCSS style files. + +## Method 1: Use CSS Variables to configure topics + +`NutUI - React` can [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) to organize the pattern, By overwriting these 'CSS' variables, you can achieve custom theme, dynamic switching theme and other functions. +
    +
    +You can play with the [ConfigProvider](#/zh-CN/component/configprovider) component. +
    +
    +We recommend replacing [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) for the theme of personalized configuration. + +## Method 2: Use Sass variable for topic configuration + +#### Step 1: Create a custom variable SCSS file + +Create a new 'SCSS' file 'custom_theme.scss' in your local project. + +```scss +// Dominant tone +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +#### Step 2: Modify the configuration file of the local project webpack or vite + +Modify the ** ass-loader** configuration in the 'vite' or 'webpack' configuration file. The following example + +#### vite + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";@import "./your/custom_theme.scss";`, + }, + }, + }, +}) +``` + +#### webpack + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // Note: The option name is different for different versions of ass-loader. For details, see the corresponding version document of ass-loader + data: `@import "./assets/custom_theme.scss";@import "@nutui/nutui/dist/styles/variables.scss";`, + } + } + ] +} +``` diff --git a/src/sites/doc/docs/react/theme-react.md b/src/sites/doc/docs/react/theme-react.md new file mode 100644 index 0000000000..cc180538e2 --- /dev/null +++ b/src/sites/doc/docs/react/theme-react.md @@ -0,0 +1,65 @@ +# 主题定制 + +## 介绍 + +NutUI-React 支持灵活的样式定制,满足多种视觉业务和品牌需求,包括但不限于全局主色调和特定组件视觉定制的支持。 +
    +
    +在 NutUI-React 的 2.0 版本中,依然可以使用 1.x 的 Sass 定制主题功能,我们在原有的主题定制功能上新增了 CSS 变量, 无需引入额外的 SCSS 样式文件,就可以使用到新的主题定制功能。 + +## 方式一 使用 CSS Variables 进行主题配置 + +`NutUI-React` 组件可以通过 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 来组织样式,通过覆盖这些 `CSS` 变量,可以实现定制主题、动态切换主题等功能。 +
    +
    +您可在 [ConfigProvider 组件](#/zh-CN/component/configprovider) 进行体验。我们更推荐使用替换 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 的方式来进行个性化的主题配置。 + +## 方式二 使用 Sass 变量 进行主题配置 + +### 第一步 新建自定义变量 SCSS 文件 + +在本地项目中新建一个 `SCSS` 文件 `custom_theme.scss` 进行自定义。 + +```scss +// 主色调 +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +### 第二步 修改本地项目 Webpack 或者 Vite 的配置文件 + +修改 `vite` 或者 `webpack` 配置文件中 **sass-loader** 的配置。如下示例: + +#### Vite 方式 + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";@import "./your/custom_theme.scss";`, + }, + }, + }, +}) +``` + +#### Webpack 方式 + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // 注意:在 sass-loader 不同版本,这个选项名是 是不一样的,具体可参考 sass-loader对应的版本文档 + data: `@import "./assets/custom_theme.scss";@import "@nutui/nutui/dist/styles/variables.scss";`, + } + } + ] +} +``` diff --git a/src/sites/doc/docs/taro/contributing-react.en-US.md b/src/sites/doc/docs/taro/contributing-react.en-US.md new file mode 100644 index 0000000000..e15ca4a49c --- /dev/null +++ b/src/sites/doc/docs/taro/contributing-react.en-US.md @@ -0,0 +1,127 @@ +

    Contribution Guidelines

    + +You can contribute to the NutUI community according to the co-construction direction in 《[NutUI invites you to build, Hello Contributor](https://jelly.jd.com/article/6320528b92d94a0068685525)》. + +  + +This guide will guide you on how to contribute to NutUI. Please take a few minutes to read this guide before you file an issue or pull request to ensure that the contribution is compliant and can help the community. + +## code of conduct + +In order to ensure a good network environment and create a comfortable development atmosphere, I hope all contributors can abide by this [Code of Conduct](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/), and please take the time to read the full text to clarify what is prohibited and what is allowed. + +## Branch management + +The main branch is currently maintained on github. If you want to fix a bug or add a feature, send a pull request to the main branch. + +  + +The official website will update [NutUI - React release cycle] (https://github.com/jdf2e/nutui-react/releases), at the same time every day developers review submitted code in the making. The release cycle is once a week, usually incorporating new code or features in advance and releasing formal packages; In case of emergency, beta versions can be released based on the specified branch. + +## Issue + +If submit Bug reports, please be sure to comply with the [` Bug report `] (https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) template. + +## Bugs + +We use [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) for bug tracking. We hope you can submit feedback through the issue assistant we provide, and provide all the development information as much as possible, because the more comprehensive the information, the faster the development response, and the bugs you find will be solved quickly. + +  + +Before you commit a bug, Please ensure that the search had existing [issue] (https://github.com/jdf2e/nutui-react/issues) and read our [FAQ] (https://nutui.jd.com/#/zh-CN/notice). + +## new features + +If you have a better idea of an existing component function or API, We also recommend that you use our provided [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) to submit a issue of adding new features. + +  + +If you want to help develop new features and components, Can scan [qr code] (HTTP: / / https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911 .png) join our community co-building group. + +## Participate in contribution + +If you are not familiar with the PR process of github, you can read the following two articles to learn: + +  + +[NutUI Contribution Guidelines](https://github.com/jdf2e/nutui-react/discussions/348) + +[github repository code synchronization](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request Specification + +1. Each PR addresses a single issue or adds a single feature + +2. When adding components or modifying existing components, synchronously change the corresponding unit tests and documents to ensure the stability of the code + +3. Please follow the [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) specification for the commit message + +4. The PR information should include which component has been modified, which problem has been solved, and associated the corresponding issue link on github + +## Pull Request Process + +1. Fork the main repository and synchronize the latest code of the main repository + +  + +2. Download the project locally, run npm install in the project root directory, and access it locally + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +npm run dev +``` + +3. Create a new branch or develop on the corresponding branch + +``` +git checkout -b username/xxxx +git checkout {current branch} +``` + +4. If the development involves new components or new features of components, it is necessary to improve the Chinese and English documentation of the components, the unit testing of the components, and use [nutui-demo](https://github.com/jdf2e/nutui-demo) to Component testing is used. + +  + +5、Ensure that the compilation function is used normally + +``` +npm run test +// node v17 +// @nutui/nutui-react +npm run build +// @nutui/nutui-react-taro +npm run build:taro +``` + +6、After the development is completed, submit it to the corresponding branch of the warehouse. After the review is passed, the PR will be merged into the main warehouse, and then wait for NutUI-React to release a new version(Once a week)。 + +  + +### Knowledge sharing + +1. Project Use Cases + +     Share the [use case](https://nutui.jd.com/#/zh-CN/case) of NutUI, we will recommend it on the official website, prepare the name of the project, Project entry (QR code\link), logo, sample image, delivery platform (H5\mini program\APP, etc.), nutui version and other information should be submitted to **nutui@jd.com** by email. + +  + +2. Article video submission + +     Share your experiences (tutorials, articles, videos, etc.) by contributing to **nutui@jd.com**. After passing the review, collect it in the [official website resource](https://nutui.jd.com/#/zh-CN/resource), and pass your knowledge and ideas to NutUI friends. + +  + +3. Co-construction and sharing + +     Based on NutUI, design or develop new tools, such as adapting to uni-app, developing plug-ins to improve efficiency, etc. If you are interested, welcome to join our [Community Development Group](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png) to communicate and discuss. + +  + +### Credits + +Thanks to all the developers below who have contributed code to NutUI. + + + contributors + diff --git a/src/sites/doc/docs/taro/contributing-react.md b/src/sites/doc/docs/taro/contributing-react.md new file mode 100644 index 0000000000..b851b28543 --- /dev/null +++ b/src/sites/doc/docs/taro/contributing-react.md @@ -0,0 +1,121 @@ +

    贡献指南

    + +您可根据《[NutUI 邀您共建,Contributor 您好](https://jelly.jd.com/article/6320528b92d94a0068685525)》中的共建方向为 NutUI 社区做出贡献。 + +  + +本篇指南会指导你如何为 NutUI 贡献一份自己的力量,请在您要提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南,保证贡献是符合规范并且能帮助到社区。 + +## 行为准则 + +为保证良好的网络环境,营造舒适的开发氛围,希望所有的贡献者都能遵守这份[行为准则](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/),也请花时间阅读一遍全文明确哪些行为是禁止的,哪些行为是可行的。 + +## 分支管理 + +目前 github 上长期维护分支 main。如果您要修一个 bug 或新增功能,请发 pull request 到 main 分支。 + +  + +官网会同步更新 [NutUI-React 的发布周期](https://github.com/jdf2e/nutui-react/releases),同时每天都会有开发者 review github 中提交的代码。发版周期是每 1 周/次,通常会提前合并新的代码或功能,发布正式包;期间如遇紧急需求,可基于指定分支发布 beta 版本。 + +## Issue 报告指南 + +如果提交的是 Bug 报告,请务必遵守 [Bug report](https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) 模板。 + +## Bugs + +我们使用 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 来做 bug 追踪。希望大家通过我们提供的 issue 小助手来提交反馈,并尽可能提供一切开发信息,因为信息越全面,开发响应速度越快,您发现的 bug 会被快速解决。 + +  + +提交 bug 之前,请先确保搜索过已有的 [issue](https://github.com/jdf2e/nutui-react/issues) 和阅读了我们的[常见问题](https://nutui.jd.com/#/zh-CN/notice)。 + +## 功能新增 + +如果您对现有的组件功能或者 API 有更好的想法,我们同样推荐你使用我们提供的 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 提交一个添加新功能的 issue。 + +  + +如果你希望协助开发新功能新组件,可扫描[二维码](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)加入我们的社区共建群。 + +## 参与贡献 + +如果你对 github 的 PR 流程还不熟悉,可以阅读下面这 2 篇文章来学习: + +  + +[NutUI 贡献指南](https://github.com/jdf2e/nutui-react/discussions/348) + +[github 仓库代码同步](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request 规范 + +1. 每个 PR 只解决单个问题或者新增单个功能 + +2. 当新增组件或修改原有组件时,同步更改对应的单元测试和文档,保证代码的稳定 + +3. commit message 请遵循 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) 规范 + +4. PR 信息中最好包括修改了哪个组件,解决了哪个问题,并关联 github 上对应的 issue 链接 + +## Pull Request 流程 + +1、fork 主仓库,并同步主仓库的最新代码 + +2、将项目下载到本地,在项目根目录下运行 npm install,并在本地能正常访问 + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +npm run dev +``` + +3、创建一个新的分支或在对应分支上进行开发 + +``` +git checkout -b username/xxxx +git checkout {现有分支名称} +``` + +4、如开发涉及新组件或组件的新特性,需要完善组件的中英文文档、组件的单元测试,同时要使用 [nutui-demo](https://github.com/jdf2e/nutui-demo) 对组件测试使用。 + +5、保证编译功能正常使用 + +``` +npm run test +// build 使用 node 17 版本 +// 构建 @nutui/nutui-react +npm run build +// 构建 @nutui/nutui-react-taro +npm run build:taro +``` + +6、开发完成后提交到仓库的对应分支上,PR 会在 Review 通过后被合并到主仓库,然后等待 NutUI-React 发布新版本(每周一次)。 + +### 知识分享 + +1. 项目使用案例 + +     分享 NutUI 的[使用案例](https://nutui.jd.com/next/#/case),我们会在官网进行推荐展示,准备项目的名称、项目入口(二维码\链接)、logo、示例图、投放平台(H5\小程序\APP等)、nutui 版本等信息,以邮箱的形式提交到 **nutui@jd.com**。 + +  + +2. 文章视频投稿 + +     分享你的经验(教程、文章、视频等),可以给 **nutui@jd.com** 投稿。在审核通过后,收藏到[官网资源](https://nutui.jd.com/next/#/resource)中,将你的知识与思想传递给 NutUI 的小伙伴们。 + +  + +3. 共建分享征集 + +     以 NutUI-React 为基础,设计或开发新的工具,开发提效的插件等。有兴趣欢迎加入我们的[社区开发群](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)交流讨论。 + +  + +### Credits + +感谢以下所有给 NutUI 贡献过代码的开发者。 +  + +contributors + diff --git a/src/sites/doc/docs/taro/international-react.en-US.md b/src/sites/doc/docs/taro/international-react.en-US.md new file mode 100644 index 0000000000..a0bbe071cb --- /dev/null +++ b/src/sites/doc/docs/taro/international-react.en-US.md @@ -0,0 +1,42 @@ +# Internationalization + +NutUI-React support multiple languages. NutUI uses Chinese as the default language. Use as follows: + +## Usage + +### Switch languages + +:::demo + +```javascript +import { ConfigProvider } from '@nutui/nutui-react-taro' +import en from '@nutui/nutui-react-taro/dist/locales/en-US' + +ReactDOM.render( + + + , + document.querySelector('#root') +) +``` + +::: + +## Current supported languages: + +| Language | Filename | Version | +| --- | --- | --- | +| English | en-US | `v1.0.0` | +| Chinese | zh-CN | `v1.0.0` | +| Uygur | zh-UG | `v1.3.15` | +| Traditional Chinese | zh-TW | `v1.0.0` | +| Indonesian | id-ID | `v1.3.2` | +| Thai | th-TH | PR | + +> View all language configs [Here](https://github.com/jdf2e/nutui-react/tree/main/src/locales). + +## Common Questions + +### Missing language pack? + +Welcome to commit PR If you need new language pack. Changes refer to [language pack](https://github.com/jdf2e/nutui-react/tree/main/src/locales). diff --git a/src/sites/doc/docs/taro/international-react.md b/src/sites/doc/docs/taro/international-react.md new file mode 100644 index 0000000000..19f3c6b717 --- /dev/null +++ b/src/sites/doc/docs/taro/international-react.md @@ -0,0 +1,43 @@ +# 国际化 + +NutUI-React 1.0 以上版本支持多语言。组件默认使用中文。 + +## 使用方法 + +### 多语言切换 + +:::demo + +```javascript +// 多语言版本 +import { ConfigProvider } from '@nutui/nutui-react-taro' +import en from '@nutui/nutui-react-taro/dist/locales/en-US' + +ReactDOM.render( + + + , + document.querySelector('#root') +) +``` + +::: + +## 目前支持的语言: + +| 语言 | 文件名 | 版本 | +| --- | --- | --- | +| 英语 | en-US | `v1.0.0` | +| 简体中文 | zh-CN | `v1.0.0` | +| 维吾尔语 | zh-UG | `v1.3.15` | +| 繁體中文 | zh-TW | `v1.0.0` | +| 印度尼西亚语 | id-ID | `v1.3.2` | +| 泰语 | th-TH | 等待 PR | + +> 在 [这里](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 查看所有的语言包源文件。 + +## 常见问题 + +### 找不到所需的语言包? + +如果上方列表中没有你需要的语言,欢迎给我们提 Pull Request 来增加新的语言包。改动内容可以参考 [语言包](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 的 PR diff --git a/src/sites/doc/docs/taro/intro-react.en-US.md b/src/sites/doc/docs/taro/intro-react.en-US.md new file mode 100644 index 0000000000..adfc592745 --- /dev/null +++ b/src/sites/doc/docs/taro/intro-react.en-US.md @@ -0,0 +1,39 @@ +# NutUI-React + +NutUI-React component library, based on Taro, uses React technology stack to develop applet applications, out of the box, helps R&D to quickly develop user interface, improve development efficiency, and improve development experience. + +## Features + +- 🚀 70+ high-quality components covering mainstream mobile scenarios +- 💪 Supports a set of code to develop multi-terminal Mini Programs +H5 at the same time +- 📖 Based on JD APP 10.0 visual specification +- 🍭 Support on-demand reference +- 📖 Detailed documentation and examples +- 💪 Supports TypeScript +- 💪 Support for server-side rendering (test phase) +- 🍭 Support custom themes +- 🌍 Internationalization support +- 🍭 Unit test coverage exceeds 80% to ensure stability +- 📖 Sketch design resources are available + +## Examples + +NutUI-React + +## Version + +| Version | Supported Frameworks | Visual Specifications | Compatibility | +| --- | --- | --- | --- | +| @nutui/nutui-react-taro | React 17\18 | Jingdong [APP 10.0](/next#/resource) | Modern browsers start with Chrome >= 51、iOS >= 10.0、Android >= 6 | + +## All Contributors + +Thanks to the following friends for their contributions to NutUI-React: + + + contributors + + +## LICENSE + +[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) diff --git a/src/sites/doc/docs/taro/intro-react.md b/src/sites/doc/docs/taro/intro-react.md new file mode 100644 index 0000000000..f862e45e9a --- /dev/null +++ b/src/sites/doc/docs/taro/intro-react.md @@ -0,0 +1,39 @@ +# NutUI-React + +NutUI-React 组件库,基于 Taro,使用 React 技术栈开发小程序应用,开箱即用,帮助研发快速开发用户界面,提升开发效率,改善开发体验。 + +## 特性 + +- 🚀 70+ 高质量组件,覆盖移动端主流场景 +- 💪 支持一套代码同时开发多端小程序+H5 +- 📖 基于京东APP 10.0 视觉规范 +- 🍭 支持按需引用 +- 📖 详尽的文档和示例 +- 💪 支持 TypeScript +- 💪 支持服务端渲染(测试阶段) +- 🍭 支持定制主题 +- 🌍 国际化支持 +- 🍭 单元测试覆盖率超过 80%,保障稳定性 +- 📖 提供 Sketch 设计资源 + +## 扫码体验 + +NutUI-React + +## 版本说明 + +| 版本 | 支持的框架 | 视觉规范 | 兼容 | +| --- | --- | --- | --- | +| @nutui/nutui-react | React 17\18 | 京东 [APP 10.0](/next#/resource) 规范 | 现代浏览器以 Chrome >= 51、iOS >= 10.0、Android >= 6 | + +## 贡献者们 + +感谢以下小伙伴们为 NutUI-React 发展做出的贡献: + + + contributors + + +## 开源协议 + +本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议 diff --git a/src/sites/doc/docs/taro/migrate-from-v1.md b/src/sites/doc/docs/taro/migrate-from-v1.md new file mode 100644 index 0000000000..97ec2f56e0 --- /dev/null +++ b/src/sites/doc/docs/taro/migrate-from-v1.md @@ -0,0 +1,888 @@ +# 从 v1 升级到 v2 + +本文档将帮助您从 NutUI React `1.x` 升级到 NutUI React `2.x` 版本。 + +## 升级步骤 + +1. H5 安装 NutUI React 2.x 版本 + +```shell +npm install @nutui/nutui-react +``` + +2. Taro 安装 NutUI React 2.x 版本 + +```shell +npm install @nutui/nutui-react-taro +``` + +3. 处理不兼容更新 + +从 NutUI React 1.x 到 NutUI React 2.x 存在一些不兼容更新,需要仔细阅读不兼容更新内容,并依次处理。 + +你可以手动对照下面的列表逐条检查代码进行修改,另外,我们也提供了一个 codemod cli 工具 @nutui/nutui-react-codemod 以帮助你快速升级到 v2 版本。在运行 codemod cli 前,请先提交你的本地代码修改。 + +4. 主题变量更名: + 如,primary-color 更名为 color-primary;注意在使用自定义主题,特别是使用 ConfigProvider 组件的情况下,有没有使用 `nutuiBrandColor`,这时记得更名为 `nutuiColorPrimary` + +## 兼容更新 + +1. 组件样式处理 + +新增了按需引入 css 文件的支持,同时保留了按需引入 scss 文件的能力。可通过 babel-import-plugin 插件实现按需引入 css: + +H5配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react", + ] +] +``` + +Taro配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react-taro", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react-taro", + ] +] +``` + +2. 更完善的类型导出以及对类型增加 `JSDoc` 注释 +3. 组件分类的调整 + 在组件分类上,我们从交互维度上,和交互设计侧共同对 1.x 分类进行了基于信息结构的评审,并进行了子类梳理,完成重新分类,目标是更贴合交互场景的分布,易于查找组件。主要分布在: + +- 基础组件,将 `Popup` 组件移除,将 `Popup` 细分到操作反馈-引导提示部分; +- 布局组件,保持不变; +- 导航组件:将分页相关组件 `Pagination`、`Indicator` 移动到展示组件(考虑移动端的分页轻操作);`Menu` 菜单移动到数据录入类-选择器子类(考虑 `Menu` 主要是作为筛选器);将 `BackTop` 移至导航组件,作为锚点组件的一部分; +- 展示组件:将 `Badge`、`NoticeBar`、`Popover` 移至操作反馈-引导提示类,`Empty`、`Skeleton` 移至操作反馈-加载状态结果反馈中;`WaterMark`、`TrendArrow` 作为特性增强类组件放在特色组件中,待由该类组件的使用场景和范围确认是否变更分类;同时新增 `Audio`,将其同 `Video`、`ImagePreview`、`Swiper` 一同归为展示-多媒体类; +- 操作反馈类,新增 `Skeleton`、`Empty`(加载结果反馈类),`Popover`、`Notify`、`NoticeBar`、`Popup` (引导提示类)6个组件;同时去除 `BackTop`(导航组件-锚点类)、`Switch`(数据录入-选择器)、`Audio``(展示-多媒体);在此基础上,未来会考虑增加 ResultPage`,整合错误状态、空状态等反馈状态,该组件在考虑中;同时考虑增加加载状态 `Loading` 组件。版本待定。 +- 数据录入类,主要分为两大类-输入及选择器。在输入中增加 `Signature`,该组件在 `Form` 表单中的应用范围日渐广泛,从特色组件中移入到数据录入部分;选择器中增加 `Switch`、`Menu`,及 `Address`。其中 `Signature` 和 `Address` 都是考虑其常用性,从特色中迁移到数据录入部分。 +- 特色组件,保留 `Barrage`、`Card`、`TimeSelect`,新增 `WaterMark`、`TrendArrow`。 + +## 不兼容更新 + +## NutUI Icons 调整 + +1.x 版本我们在实际开发过程中会发现 `Button` 只是引用了一个很小的 Loading Icon,但是全量引用了 IconFont 字体 ,会导致开发者的项目文件增大。我们在 NutUI React 2.x 中为解决此问题,重新定义了 Icon 组件,将所有的 Icons 抽离成单独的图标组件库 @nutui/icons-react(Taro 适配下为 @nutui/icons-react-taro) ,使其可以进行按需加载使用。 因此一些组件之前关于 Icon 的相关 Props 将被移除,需要使用插槽或者传递一个 Component 组件的 Props 进行使用。 受影响的组件如下: + +- Avatar +- Button +- ImagePreview +- Collapse +- InfiniteLoading +- Popup +- Steps +- Switch +- Toast +- Progress +- NoticeBar +- SearchBar +- Navbar +- Menu +- Tabbar +- Checkbox +- InputNumber +- Input +- Radio +- Rate +- Uploader +- Popover +- Grid +- TrendArrow + +如果你的项目中使用了这些组件,请仔细阅读文档并进行升级。 + +## 组件名称调整 + +- GridItem -> Grid.Item +- TabbarItem -> Tabbar.Item +- CollapseItem -> Collapse.Item +- SwiperItem -> Swiper.Item +- CellGroup -> Cell.Group +- MenuItem -> Menu.Item +- Infiniteloading -> InfiniteLoading + +## 组件 API 调整 + +在 2.0 版本中,我们重点对组件 API 进行了评审和修订,使属性和方法命名更贴合常用的命名习惯及 React 语言规范,目标希望开发者在使用组件时得心应手。我们的思路大体如下: + +### 属性定义 + +本次升级重点关注属性的命名方面,从 1.x 的 610 个属性精简为 410 个,更精简、更规范;同时增强属性的类型范围,提升自定义能力。 + +- 对同一属性进行统一描述,比如: + - 缩写类会改为全拼,如 `desc`、`descSlot`、`description` 统一为 `description` + - 能使用名词或形容词的优先使用该类词性,一个词能说明白的不用两个词。 + - 如 `wrap`、`wrapable` 统一为 `wrap` + - 如将 `isXxx` 统一为 `xxx`,如 `isVisible`、`isDeletable` 等,可直接使用 `visible`、`deletable` 等,形容词化 + - 如`showXxx` 尽量统一为 `xxx`,名词化。【部分属性待优化。】 + - 如 `roundRadius` 改为 `radius` ,`columnNum` 改为 `columns`等 + - `onClickXxx` 统一为 `onXxxClick` + - `modelValue` 统一为 `value`,并增加支持 `defaultValue`,支持受控与非受控模式 + - 对于标识位置、对齐等类的属性,将属性名变更为其上一层的属性定义,如 `center`会改为 `align`、`vertical`,改为 `direction`,像标记距离的,如 `top`、`bottom`、`distance` 等,会改为 `threshold` + - 不规范的定义如 `okBtn`、`okText` 这种,会改为 `confirmXxx` +- 扩充属性的类型。如 `title` 的类型从 `string` 扩充为 `React.ReactNode`,增强自定义内容;其中有涉及合并属性的,统一用最简命名来定义属性;如 `title`、`titleSlot` 合并为 `title`,再扩充属性类型。 +- 对于 `xxClass`、`xxStyle`类的属性,移除,可使用 `className` 、`style` 来实现。 +- 移除与样式有关的属性,除基础组件的样式属性及部分实现起来较为复杂的样式属性外,大多数样式属性被移除,可通过样式变量来实现。 +- 将普遍认同可内置的属性或不怎么使用的属性,直接内置,去掉属性设置。 + +### 组件实现 + +### 基础组件 + +#### Button + +- 移除 `plain`,通过 `fill="outline"` 实现 +- 增加 `ref`,对外暴露组件内 `button` 元素 +- CSS 变量中,对 `type` 类型对应的色值的定义,不在暴露到文档中,建议使用默认值,或修改主题变量 +- 增加 `fill` 模式类型,`dashed`,修改 `fill` 默认值为 `outline`。 +- 增加 `rightIcon`,可满足同时设置左右两个icon的情况。 +- 修改 `size` 为 `large` 时的默认 `width` 为 `100%` 的值,如果使用通栏的 `button`,可搭配 `block` 来使用。 + +#### Cell + +- `subTitle` 重命名为 `description`,类型修改为 `React.Node` +- `desc` 重命名为 `extra`,类型修改为 `React.Node` +- `roundRadius` 重命名为 `radius` +- `center` 重命名为 `align`,默认值修改为`flex-start`,可选值为 `flex-start`、`center`、`flex-end` +- 移除 `icon`、 `isLink`、`url`、`linkSlot`、`replace`、`descTextAlign`,通过用户自定义节点实现,参考文档demo示例 + +#### CellGroup + +- 新增 `divider`,单元格之间是否有分割线 +- `desc` 重命名为 `description` +- `title`、`description` 类型修改为 `React.Node` +- 移除 `titleSlot` 和 `descSlot`,通过 `title`、`description` 实现 +- + +#### ConfigProvider + +#### Icon + +#### Image + +- 移除 `round`,通过 `radius` 实现圆或圆角 +- 移除 `loadingImg` 和 `slotLoading`,通过 `loading` 属性实现,当 `loading` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `loading` 状态 +- 移除 `showError` 和 `slotError`,通过 `error` 属性实现,当 `error` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `error` 状态 +- 移除 `loadingImg`,可通过 `loading` 设置 `ReactNode` +- 移除 `errorImg`,可通过 `error` 设置 `ReactNode` +- `showError` 重命名为 `error`,类型修改为 `boolean|ReactNode` +- `showLoading` 重命名为 `loading`,类型修改为 `boolean|ReactNode` + +#### Overlay + +- `overlayClass` 重命名为 `className` +- `overlayStyle` 重命名为 `style` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- 更改 `lockScroll` 默认值为 `true` +- 新增 `afterClose` 和 `afterShow`,用于完全关闭后触发的回调和完全展示后触发的回调 + +#### Popup + +- `popClass` 重命名为 `className`,统一将组件的样式类名使用 `className`,不再指定特殊名字,减轻用户使用的记忆成本 +- `overlayClass` 重命名为 `overlayClassName`,继承自`Overlay` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `onOpened` 和 `onClosed` 重命名为 `afterShow` 和 `afterClose`,继承自`Overlay`,用于完全关闭后触发的回调和完全展示后触发的回调 +- `destroyOnClose` 的描述进行了修订,改为:“组件不可见时,卸载内容”,并把其默认值改为了`false` +- `onClickCloseIcon` 和 `onClickOverlay` 两个方法,增加布尔判断,如返回false 或 未定义返回值时,将不再关闭 Popup;默认值为 `true`;在demo中已增加相应示例;同时,两者的名字变更为 `onCloseIconClick`、`onOverlayClick` +- `closeIcon` 类型从 `string` 改为 `ReactNode`,以前的 `closeIcon='mask-close'` 需改为 `closeIcon={}` +- `onOverlayClick` 和 `onCloseIconClick` 不会自动触发 `onClose` 了,如需触发关闭事件,需主动调用 `onClose` 回调函数 +- 新增 `description` 属性,支持标题下展示描述内容。 +- 调整 `position` 为 `bottom` 时的默认样式,默认支持圆角,此刻不需要再设置 `round` 属性。 + +### 布局组件 + +#### Divider + +- 移除 `dashed`, 通过 `style` 属性实现 +- 移除 `hairline`, 默认为 `true` +- CSS 变量调整:`$divider-before-margin-right`、`$divider-after-margin-left` 统一为 `$divider-spacing`,`$divider-vertical-border-left` 变更为 `$divider-border-color`,增加 `$divider-side-width`。 + +#### Grid + +- 移除 `fontSize`,可自行控制传入的组件字体大小 +- 移除 `border`,作为默认样式 +- `columnNum` 重命名为 `columns` +- `GridItem` 使用方式修改为 `Grid.Item` + +#### Layout + +#### Sticky + +- 移除 `top` 和 `bottom`, 重命名为 `threshold` + +### 导航组件 + +#### Elevator + +- `acceptKey` 重命名为 `floorKey` +- `indexList` 重命名为 `list` +- `isSticky` 重命名为 `sticky` +- `onClickIndex` 重命名为 `onIndexClick` +- `onClickItem` 重命名为 `onItemClick` +- 新增`showKeys`,是否展示右侧导航 +- CSS 变量部分,对命名做了简化。 + +#### FixedNav + +- `unActiveText` 重命名为 `inactiveText` +- `navList` 重命名为 `list` +- `slotBtn` 重命名为 `content` +- `onSelected` 重命名为 `onSelect` +- 移除 `fixednavClass`,通过 `className` 实现 +- 移除 `slotList`,通过 `children` 实现 +- 该组件已废弃 `BEM` 规范,记得把 `__` 改为 `-` + +#### Indicator + +- 移除 `block`,暴露自定义节点 +- 移除 `align`,暴露自定义节点 +- `vertical` 重命名为`direction`,默认值为 `horizontal`,可选 `vertical` +- 移除 `fillZero`,暴露自定义节点 +- `size` 重命名为 `total` +- 增加非数字展示,并设置为默认状态 + +#### Menu + +- 移除 `fontClassName` +- 移除 `iconClassPrefix` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `titleIcon` 重命名为 `icon` +- `optionsIcon` 重命名为 `icon` +- 增加 `closeOnClickAway` + +#### NavBar + +- `desc` 重命名为 `right`,类型修改为 `React.Node` +- 新增 `left`,左侧内容,渲染在返回区域的右侧 +- 新增 `back`,返回区域内容 +- `onClickBack` 重命名为 `onBackClick` +- 移除 `title`,通过 `children` 实现 +- 移除 `leftText` `leftShow`,通过 `back`、`left`实现 +- `safeAreaInsetTop` 重命名为 `safeArea` +- `border` 废弃 +- 移除 `onClickTitle` `onClickRight` `onClickIcon`,通过在`left`、`title`、`right`自定义事件实现,参考文档demo示例 +- + +#### Pagination + +- 新增 `lite` 模式,只展示页码,不支持事件交互 +- 新增 `defaultValue` 非受控值 +- `modelValue` 重命名为 `value`,受控值 +- `prevText` 重命名为 `prev`,类型修改为 `ReactNode` +- `nextText` 重命名为 `next`,类型修改为 `ReactNode` +- `forceEllipses` 重命令为 `ellipse` +- `showPageSize` 重命名为 `itemSize` +- `itemsPerpage` 重命名为 `pageSize` +- `totalitems` 重命名为 `total` +- `pageNodeRender` 重命名为 `itemRender` +- 移除 `pageCount`,通过 `total` 与 `pageSize` 组合实现 + +#### SideNavBar + +- `offset` 重命名为 `indent` + +#### Tabbar + +- `unactiveColor` 重命名为 `inactiveColor` +- `tabTitle` 重命名为 `title`,类型修改为 `ReactNode` +- `bottom` 重命名为 `fixed` +- `safeAreaInsetBottom` 重命名为 `safeArea` +- `visible` 重命名为 `defaultValue`,非受控 +- `activeVisible` 重命名为 `value`,受控 + +#### TabbarItem + +- 使用方式修改为 `Tabbar.Item` +- `icon` 类型改为 `ReactNode`,移除其他 `icon` 关联属性 +- 移除 `href`,通过 `onSwitch` 事件控制链接与路由跳转 +- 移除 `num`,支持传入所有 `Badge` Props +- 移除 `color`,使用父元素的 `activeColor`,保持同样的 `active` 状态 + +#### Tabs + +- 增加 `lite`、`card`、`button`、`divider` 模式。 +- 移除 `background`,通过 `className` 或 `style` 控制 +- 移除 `titleScroll`, 默认支持滚动 +- 移除 `ellipsis`,默认 `flex:1` +- 移除 `size`,通过 css 变量 `--nutui-tabs-titles-item-font-size` 实现 +- `animatedTime` 重命名为 `duration` +- `titleGutter` 重命名为 css 样式变量实现 +- `titleNode` 重命名为 `title` +- `color` 重命名为 `activeColor` +- `type` 重命名为 `activeType` +- `leftAlign` 重命名为 `align` +- `onClick` 类型改为 `(index: string | number) => void` +- `onChange` 类型改为 `(index: string | number) => void` +- 增加 defaultValue +- 增加 `activeType` 类型 `simple`,实现选项卡的简约选择,只修改字号和字重,不处理字色。 + +#### Tabs.Tabpane + +- `paneKey` 重命名为 `value` + +### 数据录入 + +#### Calendar + +- `poppable` 重命名为 `popup` +- `isAutoBackFill` 重命名为 `autoBackfill` +- `toDateAnimation` 重命名为 `scrollAnimation` +- `startText` 类型改为 `ReactNode` +- `endText` 类型改为 `ReactNode` +- `confirmText` 类型改为 `ReactNode` +- `onBtn` 重命名为 `renderHeaderButtons` +- `onDay` 重命名为 `renderDay` +- `onTopInfo` 重命名为 `renderDayTop` +- `onBottomInfo` 重命名为 `renderDayBottom` +- `onSelected` 重命名为 `onDayClick` +- `onChoose` 重命名为 `onConfirm` +- `onYearMonthChange` 重命名为 `onPageChange` +- 新增 `firstDayOfWeek`,支持按照周进行选择,指定周起止日,如0-6 + +#### Cascader + +- 新增 `defaultValue`,其中 `defaultValue` 用于非受控,原 `value` 用于受控。两者的类型都改为 `(number | string | undefined)[]` +- `checkedIcon` 重命名为 `activeIcon` +- `poppable` 重命名为 `popup` +- `lazyLoad` 重命名为 `onLoad`,当启动懒加载 `lazy` 时,动态加载数据 +- `convertConfig` 重命名为 `format`,配置转换规则 +- 合并 `textKey` `valueKey` `childrenKey` 三个属性为对象属性 `optionKey` +- 移除 `tabsColor`, 该属性为设置 `Tabs` 当前选中的 `tab` 的下划线色值,但该值最好与文字部分搭配使用,统一处理 CSS 变量。 + +#### Checkbox + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 新增 `value`,用于 group 模式 +- `textPosition` 重命名为 `labelPosition` +- `iconName` 重命名为 `icon`,类型为 `ReactNode` +- `iconAcitveName` 重命名为 `activeIcon` +- `iconIndeterminateName` 重命名为 `iconIndeterminateIcon` +- 移除 `iconSize` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` +- 增加半选的禁用状态 + +#### Checkbox.Group + +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `textPosition` 重命名为 `labelPosition` +- `toggleAll` 重命名为 `toggle` +- `toggleReverse` 重命名为 `reverse` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` + +#### DatePicker + +- `modelValue` 重命名为 `value`,并增加 `defaultValue` +- `isShowChinese` 重命名为 `showChinese` +- `minDate` 重命名为 `startDate` +- `maxDate` 重命名为 `endDate` +- `onConfirmDatePicker` 重命名为 `onConfirm` +- `onCloseDatePicker` 重命名为 `onClose` +- 因为依赖组件`Picker`的变更,方法 `onConfirmDatePicker`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Form + +- 增加 `footer`,类型为 `ReactNode`,用于表单底部区域,通常用于设置提交、重置按钮 +- 增加 `initialValues`,用于设置表单初始值,同时用于表单的重置 +- 增加 `name` 属性 + +#### Form.Item + +- 移除 `labelWidth`, 通过 `--nutui-form-item-label-width` 控制宽度 +- 增加 `required`,用于必选样式控制 +- 增加 `trigger`,用于设置数据更新的时机 +- 增加 `valuePropName`,用于收集子组件受控的属性映射 +- 增加 `getValueFromEvent`,用于在收集数据中进行数据转换 +- 增加 `onclick` 用于收集子组件的 `ref` + +#### Input + +#### InputNumber + +- 增加 `allowEmpty`, 用于允许内容是否为空 +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `decimalPlaces` 重命名为 `digits` +- `isAsync` 重命名为 `async` +- 移除 `inputWidth`, 通过`--nutui-inputnumber-input-width`控制输入框的宽度 +- 移除 `buttonSize`, 通过`–nutui-inputnumber-button-width` 和 `–nutui-inputnumber-button-height`控制按钮的宽度和高度 +- taro 新增 `formatter` 属性, 用于指定输入框展示值的格式 +- 移除 `errorMessage` +- 移除 `showWordLimit` +- `autofocus` 重命名为 `autoFocus` +- `type="textarea"` 建议改为使用 `TextArea` 组件实现 + +#### NumberKeyboard + +- `randomKeys` 重命名为 `random` +- `customKey` 重命名为 `custom` +- `title` 类型变更为 `ReactNode` +- 新增 `onConfirm` 事件 +- 移除 `popClass` 定义,默认支持透传 `Popup` 属性 + +#### Picker + +- `isVisible` 重命名为 `visible` +- `listData` 重命名为 `options` +- `defaultValueData` 重命名为 `defaultValue` +- 增加受控 `value` +- `swipeDuration` 重命名为 `duration` +- `onCloseUpdate` 重命名为 `afterClose` +- 方法 `onConfirm`、`onClose`、`afterClose`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Radio + +- 移除 `iconSize`,可通过 Icon 的 css 变量设置 +- `iconName` 重命名为 `icon`,类型修改为 `ReactNode` +- 增加 `labelPosition`,用于设置 `label` 的位置 +- 增加 `checked` 和 `defaultChecked` ,用于受控和非受控 +- `onChange` 类型修改为 `(checked: boolean) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +### Radio.Group + +- `textPosition` 重命名为 `labelPosition` +- 增加 `defaultValue` ,用于非受控 +- `onChange` 类型修改为 `(value: string| number) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +#### Range + +- `maxDesc` 重命名为 `maxDescription`,类型改为 `ReactNode` +- `minDesc` 重命名为 `minDescription`,类型改为 `ReactNode` +- `curValueDesc` 重命名为 `currentDescription`,类型改为 `(value) => ReactNode` +- 移除 `hiddenRange`,通过 `max/minDescription` 传 `null` 实现 +- 移除 `hiddenTag`,通过 `currentDescription` 传 `null` 实现 +- 移除 `activeColor`、`inactiveColor`、`buttonColor`,通过 `css` 变量实现 +- `onDragStart` 重命名为 `onStart` +- `onDragEnd` 重命名为 `onEnd` +- `modelValue` 重命为 `value`,增加 `defaultValue` 非受控方式 + +#### Rate + +- `minimizeValue` 重命名为 `min` +- `readonly` 重命名为 `readOnly` +- 移除 `spacing`,通过 css 样式变量实现 +- 移除 `activeColor`、`voidColor`、`iconSize`,通过 `checkedIcon`、`uncheckedIcon` 实现 +- 增加受控 `value` 与非受控 `defaultValue`,移除 `modelValue` + +#### SearchBar + +- `onClickInput` 重命名为 `onInputClick` +- 移除 `clearSize`,样式默认 +- 移除 `background`,使用 CSS 变量 `--nutui-searchbar-background` 实现 +- 移除 `inputBackground`,使用 CSS 变量 `--nutui-searchbar-input-background` 实现 +- 移除 `align`,使用 CSS 变量 `--nutui-searchbar-input-text-align` +- 新增 `left` 和 `right`,为 `ReactNode` 节点,可自定义内容 +- 移除 `leftoutIcon` 和 `label`,使用 `left` 实现 +- 移除 `rightoutIcon` 和 `actionText`,使用 `right` 实现 +- 移除 `leftinIcon`,使用 `leftIn` 实现 +- 移除 `rightinIcon`,使用 `rightIn` 实现,同时兼顾和 clearIcon 的交互,当设置rightIn时,默认展示 rightIn,当触发输入后,展示 clearIcon。同时增加 `backable` 来标记是否展示左侧返回Icon +- 移除 `onCancel`,使用 `right` 来实现事件处理 +- 移除 `onClickLeftinIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickLeftoutIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickRightinIcon`,用户可使用 `right` 来实现事件处理 +- 移除 `onClickRightoutIcon`,用户可使用 `right` 来实现事件处理 + +#### ShortPassword + +- `desc` 重命名为 `description` +- `noButton` 重命名为 `hideFooter` +- `onOk` 重命名为 `onConfirm` +- `errorMsg` 重命名为 `error` +- 移除 `closeOnClickOverlay`,默认支持透传 Popup 属性 +- `title`、`description`、`tips`、`error` 类型修改为 `ReactNode` +- `modelValue` 重命名为 `value`,受控模式 +- 新增 `onFoucs` 事件 + +#### TextArea + +- `maxlength` 重命名为 `maxLength` +- `readonly` 重命名为 `readOnly` +- `limitShow` 重命名为 `showCount` +- `autosize` 重命名为 `autoSize` +- 移除 `textAlign`,可通过 `style` 传入 +- `defaultValue` 改为非受控,增加受控值 `value` + +#### Uploader + +- `maximize` 重命名为 `maxFileSize` +- `maximum` 重命名为 `maxCount` +- `listType ` 重命名为 `previewType` +- `isDeletable ` 重命名为 `deletable` +- `isPreview` 重命名为 ` preview` +- `defaultImg` 重命名为 ` previewUrl` +- `defaultFileList` 重命名为 ` defaultValue` +- `uploadIconTip` 重命名为 `uploadLabel`,类型变更为 `ReactNode` +- `onBeforeUpload` 重命名为 `beforeUpload` +- `onBeforeXhrUpload` 重命名为 `beforeXhrUpload` +- `onBeforeDelete` 重命名为 `beforeDelete` +- `onRemove` 重命名为 `onDelete` +- 增加 `fit`,用于图片填充模式 +- 增加 `value`,用于受控传值 +- 移除 `uploadIconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- `uploadIcon` 类型从 `string` 调整为 `ReactNode` +- `onChange` 参数类型从 `{fileList: FileItem[], event: any}` 调整为 `FileItem[]` + +### 操作反馈 + +#### ActionSheet + +- `title`,类型变更为 `ReactNode` +- `description`,类型变更为 `ReactNode` +- `cancelTxt`,重命名为 `cancelText`,类型变更为 `ReactNode` +- `menuItems` 重命名为 `options` +- `chooseTagValue` 重命名为 `value` +- `onChoose` 重命名为 `onSelect` +- 增加 `options` 的定义 + - `color` 重命名为 `danger` + - `name`,列表项的标题key + - `description`,列表项的描述key + - `danger`,列表项中提醒用户重点关注的操作 + - `disabled`,列表项中禁用项 + +#### BackTop + +- `elId` 重命名为 `target` +- 移除 `right`、`bottom`,通过 style 传入,增加支持 `left`、`top` +- `distance` 重命名为 `threshold` +- 移除 `isAnimation`,通过 `duration` 设置 0 实现无动画效果 + +#### Dialog + +- `okText` 重命名为 `confirmText`,规范命名。 +- `mask` 重命名为 `overlay`,组件库中统一使用 Overlay 组件作为遮罩层,并使用 overlay 作为是否展示遮罩层的属性值。 +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick`,组件库统一到该属性。 +- `noOkBtn` 重命名为 `hideConfirmButton`,初始值不变,依然表示是否隐藏确认按钮,主要是为了语义化更强。 +- `noCancelBtn` 重命名为 `hideCancelButton`,初始值不变,依然表示是否隐藏取消按钮,主要是为了语义化更强。 +- `okBtnDisabled` 重命名为 `disableConfirmButton`,初始值不变,依然表示是否禁用确认按钮,主要是为了语义化更强。 +- 移除 `noFooter`,使用 footer 统一处理,当 footer 为空时,及可替代该值。目前 noFooter 也需要手动声明是否为 noFooter;修改后需手动指出 footer={null} +- 移除 `textAlign`,改用样式变量 `--nutui-dialog-content-text-align` 或 SCSS 变量 `$dialog-content-text-align` 控制,默认值为 center。 +- 移除 `cancelAutoClose`,改为 `beforeCancel` 和 `beforeClose` 来实现,在点击关闭或取消时,可先触发这两个方法,以确定是否要关闭弹框,如返回true,则关闭;否则不关闭。 +- `onOk` 重命名为 `onConfirm`,规范命名。 +- `onClosed` 重命名为 `onClose`,规范命名,关闭时触发。 +- `onClickSelf` 重命名为 `onClick`,语义不变,仍表示点击弹框自身时触发事件。 +- 增加 `overlayStyle` 和 `overlayClassName`,用来配置 Overlay 组件样式。 +- 增加 `onOverlayClick`,支持点击overlay时,触发事件。 +- `onCancel` 回调不会自动关闭弹层,需主动调用 `Dialog.close(xx)` + +#### Drag + +#### InfiniteLoading + +- `useCapture` 重命名为 `capture` +- `onScrollChange` 重命名为 `onScroll` +- `isOpenRefresh` 重命名为 `pullRefresh` +- `pullTxt` 重命名为 `pullingText`,类型变更为 `ReactNode` +- `loadTxt` 重命名为 `loadingText`,类型变更为 `ReactNode` +- `containerId` 重命名为 `target` +- 修订类名如 `top-box`、`bottom-box` 为 `nut-infinite-top-tips`、`nut-infinite-bottom-tips` + +#### Notify + +- 移除 `color` ,通过css变量`--nutui-notify-text-color`实现 +- 移除`background`,通过css变量`--nutui-notify-base-background-color`实现 +- `onClosed` 重命名为 `onClose` + +#### PullToRefresh + +#### Swipe + +- 移除 `leftWidth` ,通过 `leftAction` 实现 +- 移除 `rightWidth` ,通过 `rightAction` 实现 + +#### Switch + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 移除 `isAsync`,通过 `checked`实现 +- 移除 `activeColor` ,通过css变量`--nutui-switch-open-background-color`实现 +- 移除 `inactiveColor`,通过css变量`--nutui-switch-close-background-color`实现 + +#### Toast + +- 移除H5版本 `id` +- 移除 `center`和 `bottom`,通过 `position` 实现 +- 移除 `bgColor`,通过 css 变量实现 +- 移除 `customClass`,通过 `className` 实现 +- 移除 `cover` 和 `coverColor` ,通过css变量实现 +- 移除 `loadingRotate`,旋转状态通过 `iconFont`实现 +- 移除 `textAlignCenter`,通过css变量实现 +- 修改 `closeOnClickOverlay` 为 `closeOnOverlayClick` ,语义不变,是否在点击遮罩层后关闭提示 +- 新增 `lockScroll` ,用于背景是否锁定,默认值为 `false` + +### 展示组件 + +#### Animate + +- `type` 属性类型更改为 `AnimateType` ,具体值详见文档 +- `action` 属性类型更改为 `initial \| click` + +#### AnimatingNumbers + +- `maxLen` 重命名为 `length` +- `endNumber` 重命名为 `value`,类型修改为 `string|number` +- `delaySpeed` 重命名为 `delay` +- `easeSpeed` 重命名为 `duration` + +#### Audio + +- `url` 重命名为 `src` +- `autoplay` 重命名为 `autoPlay` +- `onFastBack` 重命名为 `onBack` +- `onPlayEnd` 重命名为 `onEnd` + +#### Avatar + +- `url` 重命名为 `src` +- `onActiveAvatar` 重命名为 `onClick` +- 新增 `fit` 属性,用于图片填充模式 +- 移除 `iconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 + +#### AvatarGroup + +- AvatarGroup `maxCount` 重命名为 `max` +- AvatarGroup `span` 重命名为 `gap` +- AvatarGroup `zIndex` 重命名为 `level` + +#### Badge + +- 移除 `zIndex`,目前没有用到,也不生效,直接去掉。 +- 移除 `icon`,自定义 `icon` 可放在 `value` 中实现,扩充了 `value` 的类型。 +- 修改 `max` 的最大值为99(之前为10000),比较贴合实际场景。 +- 主题定制的 `css` 变量中,去掉和 `dot` 有关的其他值,只保留 `width`。其他值由 `width` 计算而来. +- 主题定制,增加包含 icon 情况下的样式变量。 + +#### CircleProgress + +- `progress` 重命名为 `percent` +- `circleColor` 重命名为 `color` +- `pathColor` 重命名为 `background` + +#### Collapse + +- 新增 `defaultActiveName` 非受控 +- `activeName` 改为受控方式 +- `icon` 重命名为 `expandIcon`,类型修改为 `ReactNode` +- `onChange` 参数变更为 `activeName, name, status` +- 新增一种样式,尝试修改 `--nutui-collapse-item-border-bottom` 和 `-nutui-collapse-item-header-border-bottom`,可查看 + +#### CollapseItem + +- 使用方式调整为 `Collapse.Item` +- subTitle 重命名为 extra,类型修改为 `ReactNode` +- 新增 `expnandIcon`,优先级高于父组件对应值 +- 新增 `rotate`,优先级高于父组件对应值 + +#### CountDown + +- 新增 `remainingTime`,支持剩余毫秒时间倒计时。 + +#### Ellipsis + +- 新增 `className` 和 `style` 属性的支持 +- 优化 H5 的代码,去掉 `useEffect` 渲染改用 `useLayoutEffect` + +#### Empty + +- 新增 `status` 属性,用于默认图片错误类型 +- 新增 `size` 属性,用于区分全屏与半屏状态下图片的不同大小 +- 新增 `title` 属性,用于展示提示的标题部分 +- 新增 `actions` 属性,用于展示提示的操作部分,支持1个或2个操作 +- `image` 属性类型更改为 `ReactNode` +- 新增 `title`、`size`、`actions` 属性,支持标题的设置、图片大小的设置、可能的操作设置,操作设置默认以`Button`实现。 + +#### ImagePreview + +- `show` 重命名为 `visible` +- `autoplay` 重命名为 `autoPlay` +- `initNo` 重命名为 `defaultValue`,同时增加 `value`,为受控 +- `paginationVisible` 重命名为 `indicator` +- `paginationColor` 重命名为 `indicatorColor` +- `contentClose` 重命名为 `closeOnContentClick` +- 在 `Taro` 下支持视频 + +#### NoticeBar + +- `direction` 的可选值从 `across` 重命名为 `horizontal` +- `text` 重命名为 `content` +- `closeMode` 重命名为 `closeable` +- `leftIcon` 类型扩充,支持 `ReactNode` +- `rightIcon` 类型扩充,支持 `ReactNode` +- `color` 移除,使用 CSS 变量,之前已支持 +- `background` 移除,使用 CSS 变量,之前已支持 +- `wrapable` 重命名为 `wrap` +- `standTime` 重命名为 `duration` +- `onClickItem` 重命名为 `onItemClick` +- `complexAm` 废弃 + +#### Popover + +- 移除 `theme` 属性,可以通过css变量 `--nutui-brand-color` 控制暗黑模式 +- 新增 `showArrow` 属性,用于是否显示小箭头 +- 新增 `closeOnActionClick` 属性,用于是否在点击选项后关闭 +- 新增 `closeOnOutsideClick` 属性,用于是否在点击外部元素后关闭菜单 +- 新增 `targetId` 属性,用于自定义目标元素 id +- 新增 `onOpen` 属性,用于点击菜单时触发 +- 新增 `onClose` 属性,用于关闭菜单时触发 +- 新增 `action` 属性,用于为对应的选项添加方法 +- `onChoose` 重命名为 `onSelect` +- 继承Popup组件的 `overlayStyle` 、`overlayClassName` 、`overlay` 、`closeOnOverlayClick` 属性。 + +#### Price + +- `decimalDigits` 重命名为 `digits` +- 移除 `needSymbol`,通过 `symbol` 判断是否需要加上 symbol 符号 +- 新增 `line`,是否展示划线价 + +#### Progress + +- `percentage` 重命名为 `percent`,受控 +- 移除 `isShowPercentage`,可以自定义传入文案 +- 移除 `textWidth`,可以自定义传入内容的宽度 +- `strokeColor` 重命名为 `color` +- `fillColor` 重命名为 `background` +- 移除 `size`,通过 `strokeWidth`、`progress-height` css 变量实现尺寸自定义 +- `status` 重命名为 `animated`,表示是否展示动画效果 +- 移除 `textBackground`,通过 css 实现 +- 移除 `textColor`,通过 css 实现 +- 移除 `textInside`,仅保留内显功能 +- 移除 `textType、icon`,通过 `children` 传入自定义 `ReactNode`,不再区分类型 +- 新增 `lazy` 属性,支持每次进入可视区时展示进度条动画 +- 新增 `delay` 属性,表示延迟数据加载时长 + +#### Skeleton + +- `loading` 重命名为 `visible` +- `row` 重命名为 `rows` +- 移除 `width`,通过 css 变量 `skeleton-line-width` 实现 +- 移除 `height`,通过 css 变量 `skeleton-line-height` 实现 +- 移除 `round`,通过 css 变量 `skeleton-line-border-radius` 实现 + +#### Steps + +- `current` 重命名为 `value` +- `onClickStep` 重命名为 `onStepClick` +- `progressDot` 重命名为 `dot` + +#### Step + +- 移除 `iconColor`,可通过 `icon` 属性传入自定义 icon 或借助 CSS Variables 修改 icon 颜色 +- 移除 `size`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- 移除 `renderContent` ,可通过 `description` 实现 +- `title` 类型修改为 `ReactNode` +- `content` 重命名为 `description`,类型改为 `ReactNode` +- `icon` 类型修改为 `ReactNode` +- `activeIndex` 重命名为 `value` + +#### Swiper + +- h5 + - 移除 `paginationColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `paginationBgColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `pageContent`,通过 indicator 实现 + - `autoplay` 重命名为 `autoplay` + - `initPage` 重命名为 `defaultValue` + - `paginationVisible` 重命名为 `indicator`,类型改为` ReactNode` + - `isPreventDefault` 重命名为 `preventDefault` + - `isStopPropagation` 重命名为 `stopPropagation` + - `isCenter` 重命名为 `center` +- taro + - 通过封装 Taro 的 `Swiper` 和 `SwiperItem` 实现,支持的属性可参考 Taro Swiper 文档。 + +#### Table + +- `onSorter` 重命名为 `onSort` +- 合并 `summary` 与 `noData` 的样式处理 + +#### Tag + +- `color` 重命名为 `background` +- `textColor` 重命名为 `color` + +#### TrendArrow + +- `rate` 重命名为 `value` +- `showSign` 重命名为 `symbol` +- `showZero` 重命名为 `zero` +- `arrowLeft` 重命名为 `left` +- `syncTextColor` 重命名为 `sync` +- `textColor` 重命名为 `color` +- `upIconName` 重命名为 `riseIcon`,类型修改为 `React.Node` +- `downIconName` 重命名为 `dropIcon`,类型修改为 `React.Node` +- 移除 `iconSize`,通过`riseIcon`、`dropIcon`自定义传入icon大小 + +#### Video + +- 在 `Taro` 下新增video的适配 + +#### VirtualList + +- `sourceData` 重命名为 `list` +- `conatinerSize` 重命名为 `containerHeight` +- `itemSize` 重命名为 `itemHeight` +- `itemEqualSize` 重命名为 `itemEqual` +- `horizontal` 修改为 `direction`,默认值 `vertical`,可选值 `horizontal` + +#### WaterMark + +- `fontColor` 重命名为 `color` + +### 特色组件 + +#### Address + +- 该组件的 `custom` 改用 `Cascader` 组件重写;`custom2`也将使用 `Cascader` 完成,在 `Cascader` 中支持 `Elevator`,开发中。所以会废弃 `province`、`city`、`country`、`town` 这些属性,同时支持 `Cascader` 的属性。 +- `modelValue` 重命名为 `visible` +- `modelSelect` 重命名为 `defaultValue` +- `onSelected` 重命名为 `onSelect` +- `existAddress` 重命名为 `existList` +- `selectedIcon` 重命名为 `selectIcon` +- `closeBtnIcon` 重命名为 `closeIcon` +- `backBtnIcon` 重命名为 `backIcon` +- `isShowCustomAddress` 重命名为 `custom`,用于已有地址列表与自定义列表的切换,修改默认为值 `false` +- `customAndExistTitle` 废弃,与 `custom` 合并,当 `custom` 为 true 时,为默认文案,设置为某字符串时,展示字符串。 +- `customAddressTitle`、`existAddressTitle` 重命名为 `title`,不再区分状态,可通过onSwitch修改title +- 精简布局和样式 + +#### Barrage + +- `barrageList` 重命名为 `list` +- `frequency` 重命名为 `interval` +- `speeds` 重命名为 `duration` +- `top` 重命名为 `gapY` + +#### Card + +#### Signature + +- `type` 类型修改为 `png|jpg` +- `unSupportTpl` 重命名为 `unsupported`,类型修改为 `ReactNode` +- 新增 `confirm`和`clear` ref 的方法,移除组件内部 `button`元素,通过自定义按钮元素,设置元素点击事件结合ref实现,参考文档demo示例 + +#### TimeSelect + +- 移除 `height`,通过 `style` 设置高度 +- `title` 类型修改为 `ReactNode` +- `onPannelChange` 重命名为 `onDateChange` +- 移除 `dates`、`times`,合并为 `options`,重新设计了数据结构 +- 增加 `optionKey` 用于自定义数据中的关键字 +- 移除 `currentKey`,新增 `defaultValue` 用于设置默认选项,支持时间选择 diff --git a/src/sites/doc/docs/taro/migrate-from-v2.md b/src/sites/doc/docs/taro/migrate-from-v2.md new file mode 100644 index 0000000000..5bd3f8ec5e --- /dev/null +++ b/src/sites/doc/docs/taro/migrate-from-v2.md @@ -0,0 +1,888 @@ +# 从 v2 升级到 v3 + +本文档将帮助您从 NutUI React `2.x` 升级到 NutUI React `3.x` 版本。 + +## 升级步骤 + +1. H5 安装 NutUI React 3.x 版本 + +```shell +npm install @nutui/nutui-react +``` + +2. Taro 安装 NutUI React 3.x 版本 + +```shell +npm install @nutui/nutui-react-taro +``` + +3. 处理不兼容更新 + +从 NutUI React 1.x 到 NutUI React 2.x 存在一些不兼容更新,需要仔细阅读不兼容更新内容,并依次处理。 + +你可以手动对照下面的列表逐条检查代码进行修改,另外,我们也提供了一个 codemod cli 工具 @nutui/nutui-react-codemod 以帮助你快速升级到 v2 版本。在运行 codemod cli 前,请先提交你的本地代码修改。 + +4. 主题变量更名: + 如,primary-color 更名为 color-primary;注意在使用自定义主题,特别是使用 ConfigProvider 组件的情况下,有没有使用 `nutuiBrandColor`,这时记得更名为 `nutuiColorPrimary` + +## 兼容更新 + +1. 组件样式处理 + +新增了按需引入 css 文件的支持,同时保留了按需引入 scss 文件的能力。可通过 babel-import-plugin 插件实现按需引入 css: + +H5配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react", + ] +] +``` + +Taro配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react-taro", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react-taro", + ] +] +``` + +2. 更完善的类型导出以及对类型增加 `JSDoc` 注释 +3. 组件分类的调整 + 在组件分类上,我们从交互维度上,和交互设计侧共同对 1.x 分类进行了基于信息结构的评审,并进行了子类梳理,完成重新分类,目标是更贴合交互场景的分布,易于查找组件。主要分布在: + +- 基础组件,将 `Popup` 组件移除,将 `Popup` 细分到操作反馈-引导提示部分; +- 布局组件,保持不变; +- 导航组件:将分页相关组件 `Pagination`、`Indicator` 移动到展示组件(考虑移动端的分页轻操作);`Menu` 菜单移动到数据录入类-选择器子类(考虑 `Menu` 主要是作为筛选器);将 `BackTop` 移至导航组件,作为锚点组件的一部分; +- 展示组件:将 `Badge`、`NoticeBar`、`Popover` 移至操作反馈-引导提示类,`Empty`、`Skeleton` 移至操作反馈-加载状态结果反馈中;`WaterMark`、`TrendArrow` 作为特性增强类组件放在特色组件中,待由该类组件的使用场景和范围确认是否变更分类;同时新增 `Audio`,将其同 `Video`、`ImagePreview`、`Swiper` 一同归为展示-多媒体类; +- 操作反馈类,新增 `Skeleton`、`Empty`(加载结果反馈类),`Popover`、`Notify`、`NoticeBar`、`Popup` (引导提示类)6个组件;同时去除 `BackTop`(导航组件-锚点类)、`Switch`(数据录入-选择器)、`Audio``(展示-多媒体);在此基础上,未来会考虑增加 ResultPage`,整合错误状态、空状态等反馈状态,该组件在考虑中;同时考虑增加加载状态 `Loading` 组件。版本待定。 +- 数据录入类,主要分为两大类-输入及选择器。在输入中增加 `Signature`,该组件在 `Form` 表单中的应用范围日渐广泛,从特色组件中移入到数据录入部分;选择器中增加 `Switch`、`Menu`,及 `Address`。其中 `Signature` 和 `Address` 都是考虑其常用性,从特色中迁移到数据录入部分。 +- 特色组件,保留 `Barrage`、`Card`、`TimeSelect`,新增 `WaterMark`、`TrendArrow`。 + +## 不兼容更新 + +## NutUI Icons 调整 + +1.x 版本我们在实际开发过程中会发现 `Button` 只是引用了一个很小的 Loading Icon,但是全量引用了 IconFont 字体 ,会导致开发者的项目文件增大。我们在 NutUI React 2.x 中为解决此问题,重新定义了 Icon 组件,将所有的 Icons 抽离成单独的图标组件库 @nutui/icons-react(Taro 适配下为 @nutui/icons-react-taro) ,使其可以进行按需加载使用。 因此一些组件之前关于 Icon 的相关 Props 将被移除,需要使用插槽或者传递一个 Component 组件的 Props 进行使用。 受影响的组件如下: + +- Avatar +- Button +- ImagePreview +- Collapse +- InfiniteLoading +- Popup +- Steps +- Switch +- Toast +- Progress +- NoticeBar +- SearchBar +- Navbar +- Menu +- Tabbar +- Checkbox +- InputNumber +- Input +- Radio +- Rate +- Uploader +- Popover +- Grid +- TrendArrow + +如果你的项目中使用了这些组件,请仔细阅读文档并进行升级。 + +## 组件名称调整 + +- GridItem -> Grid.Item +- TabbarItem -> Tabbar.Item +- CollapseItem -> Collapse.Item +- SwiperItem -> Swiper.Item +- CellGroup -> Cell.Group +- MenuItem -> Menu.Item +- Infiniteloading -> InfiniteLoading + +## 组件 API 调整 + +在 2.0 版本中,我们重点对组件 API 进行了评审和修订,使属性和方法命名更贴合常用的命名习惯及 React 语言规范,目标希望开发者在使用组件时得心应手。我们的思路大体如下: + +### 属性定义 + +本次升级重点关注属性的命名方面,从 1.x 的 610 个属性精简为 410 个,更精简、更规范;同时增强属性的类型范围,提升自定义能力。 + +- 对同一属性进行统一描述,比如: + - 缩写类会改为全拼,如 `desc`、`descSlot`、`description` 统一为 `description` + - 能使用名词或形容词的优先使用该类词性,一个词能说明白的不用两个词。 + - 如 `wrap`、`wrapable` 统一为 `wrap` + - 如将 `isXxx` 统一为 `xxx`,如 `isVisible`、`isDeletable` 等,可直接使用 `visible`、`deletable` 等,形容词化 + - 如`showXxx` 尽量统一为 `xxx`,名词化。【部分属性待优化。】 + - 如 `roundRadius` 改为 `radius` ,`columnNum` 改为 `columns`等 + - `onClickXxx` 统一为 `onXxxClick` + - `modelValue` 统一为 `value`,并增加支持 `defaultValue`,支持受控与非受控模式 + - 对于标识位置、对齐等类的属性,将属性名变更为其上一层的属性定义,如 `center`会改为 `align`、`vertical`,改为 `direction`,像标记距离的,如 `top`、`bottom`、`distance` 等,会改为 `threshold` + - 不规范的定义如 `okBtn`、`okText` 这种,会改为 `confirmXxx` +- 扩充属性的类型。如 `title` 的类型从 `string` 扩充为 `React.ReactNode`,增强自定义内容;其中有涉及合并属性的,统一用最简命名来定义属性;如 `title`、`titleSlot` 合并为 `title`,再扩充属性类型。 +- 对于 `xxClass`、`xxStyle`类的属性,移除,可使用 `className` 、`style` 来实现。 +- 移除与样式有关的属性,除基础组件的样式属性及部分实现起来较为复杂的样式属性外,大多数样式属性被移除,可通过样式变量来实现。 +- 将普遍认同可内置的属性或不怎么使用的属性,直接内置,去掉属性设置。 + +### 组件实现 + +### 基础组件 + +#### Button + +- 移除 `plain`,通过 `fill="outline"` 实现 +- 增加 `ref`,对外暴露组件内 `button` 元素 +- CSS 变量中,对 `type` 类型对应的色值的定义,不在暴露到文档中,建议使用默认值,或修改主题变量 +- 增加 `fill` 模式类型,`dashed`,修改 `fill` 默认值为 `outline`。 +- 增加 `rightIcon`,可满足同时设置左右两个icon的情况。 +- 修改 `size` 为 `large` 时的默认 `width` 为 `100%` 的值,如果使用通栏的 `button`,可搭配 `block` 来使用。 + +#### Cell + +- `subTitle` 重命名为 `description`,类型修改为 `React.Node` +- `desc` 重命名为 `extra`,类型修改为 `React.Node` +- `roundRadius` 重命名为 `radius` +- `center` 重命名为 `align`,默认值修改为`flex-start`,可选值为 `flex-start`、`center`、`flex-end` +- 移除 `icon`、 `isLink`、`url`、`linkSlot`、`replace`、`descTextAlign`,通过用户自定义节点实现,参考文档demo示例 + +#### CellGroup + +- 新增 `divider`,单元格之间是否有分割线 +- `desc` 重命名为 `description` +- `title`、`description` 类型修改为 `React.Node` +- 移除 `titleSlot` 和 `descSlot`,通过 `title`、`description` 实现 +- + +#### ConfigProvider + +#### Icon + +#### Image + +- 移除 `round`,通过 `radius` 实现圆或圆角 +- 移除 `loadingImg` 和 `slotLoading`,通过 `loading` 属性实现,当 `loading` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `loading` 状态 +- 移除 `showError` 和 `slotError`,通过 `error` 属性实现,当 `error` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `error` 状态 +- 移除 `loadingImg`,可通过 `loading` 设置 `ReactNode` +- 移除 `errorImg`,可通过 `error` 设置 `ReactNode` +- `showError` 重命名为 `error`,类型修改为 `boolean|ReactNode` +- `showLoading` 重命名为 `loading`,类型修改为 `boolean|ReactNode` + +#### Overlay + +- `overlayClass` 重命名为 `className` +- `overlayStyle` 重命名为 `style` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- 更改 `lockScroll` 默认值为 `true` +- 新增 `afterClose` 和 `afterShow`,用于完全关闭后触发的回调和完全展示后触发的回调 + +#### Popup + +- `popClass` 重命名为 `className`,统一将组件的样式类名使用 `className`,不再指定特殊名字,减轻用户使用的记忆成本 +- `overlayClass` 重命名为 `overlayClassName`,继承自`Overlay` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `onOpened` 和 `onClosed` 重命名为 `afterShow` 和 `afterClose`,继承自`Overlay`,用于完全关闭后触发的回调和完全展示后触发的回调 +- `destroyOnClose` 的描述进行了修订,改为:“组件不可见时,卸载内容”,并把其默认值改为了`false` +- `onClickCloseIcon` 和 `onClickOverlay` 两个方法,增加布尔判断,如返回false 或 未定义返回值时,将不再关闭 Popup;默认值为 `true`;在demo中已增加相应示例;同时,两者的名字变更为 `onCloseIconClick`、`onOverlayClick` +- `closeIcon` 类型从 `string` 改为 `ReactNode`,以前的 `closeIcon='mask-close'` 需改为 `closeIcon={}` +- `onOverlayClick` 和 `onCloseIconClick` 不会自动触发 `onClose` 了,如需触发关闭事件,需主动调用 `onClose` 回调函数 +- 新增 `description` 属性,支持标题下展示描述内容。 +- 调整 `position` 为 `bottom` 时的默认样式,默认支持圆角,此刻不需要再设置 `round` 属性。 + +### 布局组件 + +#### Divider + +- 移除 `dashed`, 通过 `style` 属性实现 +- 移除 `hairline`, 默认为 `true` +- CSS 变量调整:`$divider-before-margin-right`、`$divider-after-margin-left` 统一为 `$divider-spacing`,`$divider-vertical-border-left` 变更为 `$divider-border-color`,增加 `$divider-side-width`。 + +#### Grid + +- 移除 `fontSize`,可自行控制传入的组件字体大小 +- 移除 `border`,作为默认样式 +- `columnNum` 重命名为 `columns` +- `GridItem` 使用方式修改为 `Grid.Item` + +#### Layout + +#### Sticky + +- 移除 `top` 和 `bottom`, 重命名为 `threshold` + +### 导航组件 + +#### Elevator + +- `acceptKey` 重命名为 `floorKey` +- `indexList` 重命名为 `list` +- `isSticky` 重命名为 `sticky` +- `onClickIndex` 重命名为 `onIndexClick` +- `onClickItem` 重命名为 `onItemClick` +- 新增`showKeys`,是否展示右侧导航 +- CSS 变量部分,对命名做了简化。 + +#### FixedNav + +- `unActiveText` 重命名为 `inactiveText` +- `navList` 重命名为 `list` +- `slotBtn` 重命名为 `content` +- `onSelected` 重命名为 `onSelect` +- 移除 `fixednavClass`,通过 `className` 实现 +- 移除 `slotList`,通过 `children` 实现 +- 该组件已废弃 `BEM` 规范,记得把 `__` 改为 `-` + +#### Indicator + +- 移除 `block`,暴露自定义节点 +- 移除 `align`,暴露自定义节点 +- `vertical` 重命名为`direction`,默认值为 `horizontal`,可选 `vertical` +- 移除 `fillZero`,暴露自定义节点 +- `size` 重命名为 `total` +- 增加非数字展示,并设置为默认状态 + +#### Menu + +- 移除 `fontClassName` +- 移除 `iconClassPrefix` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `titleIcon` 重命名为 `icon` +- `optionsIcon` 重命名为 `icon` +- 增加 `closeOnClickAway` + +#### NavBar + +- `desc` 重命名为 `right`,类型修改为 `React.Node` +- 新增 `left`,左侧内容,渲染在返回区域的右侧 +- 新增 `back`,返回区域内容 +- `onClickBack` 重命名为 `onBackClick` +- 移除 `title`,通过 `children` 实现 +- 移除 `leftText` `leftShow`,通过 `back`、`left`实现 +- `safeAreaInsetTop` 重命名为 `safeArea` +- `border` 废弃 +- 移除 `onClickTitle` `onClickRight` `onClickIcon`,通过在`left`、`title`、`right`自定义事件实现,参考文档demo示例 +- + +#### Pagination + +- 新增 `lite` 模式,只展示页码,不支持事件交互 +- 新增 `defaultValue` 非受控值 +- `modelValue` 重命名为 `value`,受控值 +- `prevText` 重命名为 `prev`,类型修改为 `ReactNode` +- `nextText` 重命名为 `next`,类型修改为 `ReactNode` +- `forceEllipses` 重命令为 `ellipse` +- `showPageSize` 重命名为 `itemSize` +- `itemsPerpage` 重命名为 `pageSize` +- `totalitems` 重命名为 `total` +- `pageNodeRender` 重命名为 `itemRender` +- 移除 `pageCount`,通过 `total` 与 `pageSize` 组合实现 + +#### SideNavBar + +- `offset` 重命名为 `indent` + +#### Tabbar + +- `unactiveColor` 重命名为 `inactiveColor` +- `tabTitle` 重命名为 `title`,类型修改为 `ReactNode` +- `bottom` 重命名为 `fixed` +- `safeAreaInsetBottom` 重命名为 `safeArea` +- `visible` 重命名为 `defaultValue`,非受控 +- `activeVisible` 重命名为 `value`,受控 + +#### TabbarItem + +- 使用方式修改为 `Tabbar.Item` +- `icon` 类型改为 `ReactNode`,移除其他 `icon` 关联属性 +- 移除 `href`,通过 `onSwitch` 事件控制链接与路由跳转 +- 移除 `num`,支持传入所有 `Badge` Props +- 移除 `color`,使用父元素的 `activeColor`,保持同样的 `active` 状态 + +#### Tabs + +- 增加 `lite`、`card`、`button`、`divider` 模式。 +- 移除 `background`,通过 `className` 或 `style` 控制 +- 移除 `titleScroll`, 默认支持滚动 +- 移除 `ellipsis`,默认 `flex:1` +- 移除 `size`,通过 css 变量 `--nutui-tabs-titles-item-font-size` 实现 +- `animatedTime` 重命名为 `duration` +- `titleGutter` 重命名为 css 样式变量实现 +- `titleNode` 重命名为 `title` +- `color` 重命名为 `activeColor` +- `type` 重命名为 `activeType` +- `leftAlign` 重命名为 `align` +- `onClick` 类型改为 `(index: string | number) => void` +- `onChange` 类型改为 `(index: string | number) => void` +- 增加 defaultValue +- 增加 `activeType` 类型 `simple`,实现选项卡的简约选择,只修改字号和字重,不处理字色。 + +#### Tabs.Tabpane + +- `paneKey` 重命名为 `value` + +### 数据录入 + +#### Calendar + +- `poppable` 重命名为 `popup` +- `isAutoBackFill` 重命名为 `autoBackfill` +- `toDateAnimation` 重命名为 `scrollAnimation` +- `startText` 类型改为 `ReactNode` +- `endText` 类型改为 `ReactNode` +- `confirmText` 类型改为 `ReactNode` +- `onBtn` 重命名为 `renderHeaderButtons` +- `onDay` 重命名为 `renderDay` +- `onTopInfo` 重命名为 `renderDayTop` +- `onBottomInfo` 重命名为 `renderDayBottom` +- `onSelected` 重命名为 `onDayClick` +- `onChoose` 重命名为 `onConfirm` +- `onYearMonthChange` 重命名为 `onPageChange` +- 新增 `firstDayOfWeek`,支持按照周进行选择,指定周起止日,如0-6 + +#### Cascader + +- 新增 `defaultValue`,其中 `defaultValue` 用于非受控,原 `value` 用于受控。两者的类型都改为 `(number | string | undefined)[]` +- `checkedIcon` 重命名为 `activeIcon` +- `poppable` 重命名为 `popup` +- `lazyLoad` 重命名为 `onLoad`,当启动懒加载 `lazy` 时,动态加载数据 +- `convertConfig` 重命名为 `format`,配置转换规则 +- 合并 `textKey` `valueKey` `childrenKey` 三个属性为对象属性 `optionKey` +- 移除 `tabsColor`, 该属性为设置 `Tabs` 当前选中的 `tab` 的下划线色值,但该值最好与文字部分搭配使用,统一处理 CSS 变量。 + +#### Checkbox + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 新增 `value`,用于 group 模式 +- `textPosition` 重命名为 `labelPosition` +- `iconName` 重命名为 `icon`,类型为 `ReactNode` +- `iconAcitveName` 重命名为 `activeIcon` +- `iconIndeterminateName` 重命名为 `iconIndeterminateIcon` +- 移除 `iconSize` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` +- 增加半选的禁用状态 + +#### Checkbox.Group + +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `textPosition` 重命名为 `labelPosition` +- `toggleAll` 重命名为 `toggle` +- `toggleReverse` 重命名为 `reverse` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` + +#### DatePicker + +- `modelValue` 重命名为 `value`,并增加 `defaultValue` +- `isShowChinese` 重命名为 `showChinese` +- `minDate` 重命名为 `startDate` +- `maxDate` 重命名为 `endDate` +- `onConfirmDatePicker` 重命名为 `onConfirm` +- `onCloseDatePicker` 重命名为 `onClose` +- 因为依赖组件`Picker`的变更,方法 `onConfirmDatePicker`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Form + +- 增加 `footer`,类型为 `ReactNode`,用于表单底部区域,通常用于设置提交、重置按钮 +- 增加 `initialValues`,用于设置表单初始值,同时用于表单的重置 +- 增加 `name` 属性 + +#### Form.Item + +- 移除 `labelWidth`, 通过 `--nutui-form-item-label-width` 控制宽度 +- 增加 `required`,用于必选样式控制 +- 增加 `trigger`,用于设置数据更新的时机 +- 增加 `valuePropName`,用于收集子组件受控的属性映射 +- 增加 `getValueFromEvent`,用于在收集数据中进行数据转换 +- 增加 `onclick` 用于收集子组件的 `ref` + +#### Input + +#### InputNumber + +- 增加 `allowEmpty`, 用于允许内容是否为空 +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `decimalPlaces` 重命名为 `digits` +- `isAsync` 重命名为 `async` +- 移除 `inputWidth`, 通过`--nutui-inputnumber-input-width`控制输入框的宽度 +- 移除 `buttonSize`, 通过`–nutui-inputnumber-button-width` 和 `–nutui-inputnumber-button-height`控制按钮的宽度和高度 +- taro 新增 `formatter` 属性, 用于指定输入框展示值的格式 +- 移除 `errorMessage` +- 移除 `showWordLimit` +- `autofocus` 重命名为 `autoFocus` +- `type="textarea"` 建议改为使用 `TextArea` 组件实现 + +#### NumberKeyboard + +- `randomKeys` 重命名为 `random` +- `customKey` 重命名为 `custom` +- `title` 类型变更为 `ReactNode` +- 新增 `onConfirm` 事件 +- 移除 `popClass` 定义,默认支持透传 `Popup` 属性 + +#### Picker + +- `isVisible` 重命名为 `visible` +- `listData` 重命名为 `options` +- `defaultValueData` 重命名为 `defaultValue` +- 增加受控 `value` +- `swipeDuration` 重命名为 `duration` +- `onCloseUpdate` 重命名为 `afterClose` +- 方法 `onConfirm`、`onClose`、`afterClose`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Radio + +- 移除 `iconSize`,可通过 Icon 的 css 变量设置 +- `iconName` 重命名为 `icon`,类型修改为 `ReactNode` +- 增加 `labelPosition`,用于设置 `label` 的位置 +- 增加 `checked` 和 `defaultChecked` ,用于受控和非受控 +- `onChange` 类型修改为 `(checked: boolean) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +### Radio.Group + +- `textPosition` 重命名为 `labelPosition` +- 增加 `defaultValue` ,用于非受控 +- `onChange` 类型修改为 `(value: string| number) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +#### Range + +- `maxDesc` 重命名为 `maxDescription`,类型改为 `ReactNode` +- `minDesc` 重命名为 `minDescription`,类型改为 `ReactNode` +- `curValueDesc` 重命名为 `currentDescription`,类型改为 `(value) => ReactNode` +- 移除 `hiddenRange`,通过 `max/minDescription` 传 `null` 实现 +- 移除 `hiddenTag`,通过 `currentDescription` 传 `null` 实现 +- 移除 `activeColor`、`inactiveColor`、`buttonColor`,通过 `css` 变量实现 +- `onDragStart` 重命名为 `onStart` +- `onDragEnd` 重命名为 `onEnd` +- `modelValue` 重命为 `value`,增加 `defaultValue` 非受控方式 + +#### Rate + +- `minimizeValue` 重命名为 `min` +- `readonly` 重命名为 `readOnly` +- 移除 `spacing`,通过 css 样式变量实现 +- 移除 `activeColor`、`voidColor`、`iconSize`,通过 `checkedIcon`、`uncheckedIcon` 实现 +- 增加受控 `value` 与非受控 `defaultValue`,移除 `modelValue` + +#### SearchBar + +- `onClickInput` 重命名为 `onInputClick` +- 移除 `clearSize`,样式默认 +- 移除 `background`,使用 CSS 变量 `--nutui-searchbar-background` 实现 +- 移除 `inputBackground`,使用 CSS 变量 `--nutui-searchbar-input-background` 实现 +- 移除 `align`,使用 CSS 变量 `--nutui-searchbar-input-text-align` +- 新增 `left` 和 `right`,为 `ReactNode` 节点,可自定义内容 +- 移除 `leftoutIcon` 和 `label`,使用 `left` 实现 +- 移除 `rightoutIcon` 和 `actionText`,使用 `right` 实现 +- 移除 `leftinIcon`,使用 `leftIn` 实现 +- 移除 `rightinIcon`,使用 `rightIn` 实现,同时兼顾和 clearIcon 的交互,当设置rightIn时,默认展示 rightIn,当触发输入后,展示 clearIcon。同时增加 `backable` 来标记是否展示左侧返回Icon +- 移除 `onCancel`,使用 `right` 来实现事件处理 +- 移除 `onClickLeftinIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickLeftoutIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickRightinIcon`,用户可使用 `right` 来实现事件处理 +- 移除 `onClickRightoutIcon`,用户可使用 `right` 来实现事件处理 + +#### ShortPassword + +- `desc` 重命名为 `description` +- `noButton` 重命名为 `hideFooter` +- `onOk` 重命名为 `onConfirm` +- `errorMsg` 重命名为 `error` +- 移除 `closeOnClickOverlay`,默认支持透传 Popup 属性 +- `title`、`description`、`tips`、`error` 类型修改为 `ReactNode` +- `modelValue` 重命名为 `value`,受控模式 +- 新增 `onFoucs` 事件 + +#### TextArea + +- `maxlength` 重命名为 `maxLength` +- `readonly` 重命名为 `readOnly` +- `limitShow` 重命名为 `showCount` +- `autosize` 重命名为 `autoSize` +- 移除 `textAlign`,可通过 `style` 传入 +- `defaultValue` 改为非受控,增加受控值 `value` + +#### Uploader + +- `maximize` 重命名为 `maxFileSize` +- `maximum` 重命名为 `maxCount` +- `listType ` 重命名为 `previewType` +- `isDeletable ` 重命名为 `deletable` +- `isPreview` 重命名为 ` preview` +- `defaultImg` 重命名为 ` previewUrl` +- `defaultFileList` 重命名为 ` defaultValue` +- `uploadIconTip` 重命名为 `uploadLabel`,类型变更为 `ReactNode` +- `onBeforeUpload` 重命名为 `beforeUpload` +- `onBeforeXhrUpload` 重命名为 `beforeXhrUpload` +- `onBeforeDelete` 重命名为 `beforeDelete` +- `onRemove` 重命名为 `onDelete` +- 增加 `fit`,用于图片填充模式 +- 增加 `value`,用于受控传值 +- 移除 `uploadIconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- `uploadIcon` 类型从 `string` 调整为 `ReactNode` +- `onChange` 参数类型从 `{fileList: FileItem[], event: any}` 调整为 `FileItem[]` + +### 操作反馈 + +#### ActionSheet + +- `title`,类型变更为 `ReactNode` +- `description`,类型变更为 `ReactNode` +- `cancelTxt`,重命名为 `cancelText`,类型变更为 `ReactNode` +- `menuItems` 重命名为 `options` +- `chooseTagValue` 重命名为 `value` +- `onChoose` 重命名为 `onSelect` +- 增加 `options` 的定义 + - `color` 重命名为 `danger` + - `name`,列表项的标题key + - `description`,列表项的描述key + - `danger`,列表项中提醒用户重点关注的操作 + - `disabled`,列表项中禁用项 + +#### BackTop + +- `elId` 重命名为 `target` +- 移除 `right`、`bottom`,通过 style 传入,增加支持 `left`、`top` +- `distance` 重命名为 `threshold` +- 移除 `isAnimation`,通过 `duration` 设置 0 实现无动画效果 + +#### Dialog + +- `okText` 重命名为 `confirmText`,规范命名。 +- `mask` 重命名为 `overlay`,组件库中统一使用 Overlay 组件作为遮罩层,并使用 overlay 作为是否展示遮罩层的属性值。 +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick`,组件库统一到该属性。 +- `noOkBtn` 重命名为 `hideConfirmButton`,初始值不变,依然表示是否隐藏确认按钮,主要是为了语义化更强。 +- `noCancelBtn` 重命名为 `hideCancelButton`,初始值不变,依然表示是否隐藏取消按钮,主要是为了语义化更强。 +- `okBtnDisabled` 重命名为 `disableConfirmButton`,初始值不变,依然表示是否禁用确认按钮,主要是为了语义化更强。 +- 移除 `noFooter`,使用 footer 统一处理,当 footer 为空时,及可替代该值。目前 noFooter 也需要手动声明是否为 noFooter;修改后需手动指出 footer={null} +- 移除 `textAlign`,改用样式变量 `--nutui-dialog-content-text-align` 或 SCSS 变量 `$dialog-content-text-align` 控制,默认值为 center。 +- 移除 `cancelAutoClose`,改为 `beforeCancel` 和 `beforeClose` 来实现,在点击关闭或取消时,可先触发这两个方法,以确定是否要关闭弹框,如返回true,则关闭;否则不关闭。 +- `onOk` 重命名为 `onConfirm`,规范命名。 +- `onClosed` 重命名为 `onClose`,规范命名,关闭时触发。 +- `onClickSelf` 重命名为 `onClick`,语义不变,仍表示点击弹框自身时触发事件。 +- 增加 `overlayStyle` 和 `overlayClassName`,用来配置 Overlay 组件样式。 +- 增加 `onOverlayClick`,支持点击overlay时,触发事件。 +- `onCancel` 回调不会自动关闭弹层,需主动调用 `Dialog.close(xx)` + +#### Drag + +#### InfiniteLoading + +- `useCapture` 重命名为 `capture` +- `onScrollChange` 重命名为 `onScroll` +- `isOpenRefresh` 重命名为 `pullRefresh` +- `pullTxt` 重命名为 `pullingText`,类型变更为 `ReactNode` +- `loadTxt` 重命名为 `loadingText`,类型变更为 `ReactNode` +- `containerId` 重命名为 `target` +- 修订类名如 `top-box`、`bottom-box` 为 `nut-infinite-top-tips`、`nut-infinite-bottom-tips` + +#### Notify + +- 移除 `color` ,通过css变量`--nutui-notify-text-color`实现 +- 移除`background`,通过css变量`--nutui-notify-base-background-color`实现 +- `onClosed` 重命名为 `onClose` + +#### PullToRefresh + +#### Swipe + +- 移除 `leftWidth` ,通过 `leftAction` 实现 +- 移除 `rightWidth` ,通过 `rightAction` 实现 + +#### Switch + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 移除 `isAsync`,通过 `checked`实现 +- 移除 `activeColor` ,通过css变量`--nutui-switch-open-background-color`实现 +- 移除 `inactiveColor`,通过css变量`--nutui-switch-close-background-color`实现 + +#### Toast + +- 移除H5版本 `id` +- 移除 `center`和 `bottom`,通过 `position` 实现 +- 移除 `bgColor`,通过 css 变量实现 +- 移除 `customClass`,通过 `className` 实现 +- 移除 `cover` 和 `coverColor` ,通过css变量实现 +- 移除 `loadingRotate`,旋转状态通过 `iconFont`实现 +- 移除 `textAlignCenter`,通过css变量实现 +- 修改 `closeOnClickOverlay` 为 `closeOnOverlayClick` ,语义不变,是否在点击遮罩层后关闭提示 +- 新增 `lockScroll` ,用于背景是否锁定,默认值为 `false` + +### 展示组件 + +#### Animate + +- `type` 属性类型更改为 `AnimateType` ,具体值详见文档 +- `action` 属性类型更改为 `initial \| click` + +#### AnimatingNumbers + +- `maxLen` 重命名为 `length` +- `endNumber` 重命名为 `value`,类型修改为 `string|number` +- `delaySpeed` 重命名为 `delay` +- `easeSpeed` 重命名为 `duration` + +#### Audio + +- `url` 重命名为 `src` +- `autoplay` 重命名为 `autoPlay` +- `onFastBack` 重命名为 `onBack` +- `onPlayEnd` 重命名为 `onEnd` + +#### Avatar + +- `url` 重命名为 `src` +- `onActiveAvatar` 重命名为 `onClick` +- 新增 `fit` 属性,用于图片填充模式 +- 移除 `iconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 + +#### AvatarGroup + +- AvatarGroup `maxCount` 重命名为 `max` +- AvatarGroup `span` 重命名为 `gap` +- AvatarGroup `zIndex` 重命名为 `level` + +#### Badge + +- 移除 `zIndex`,目前没有用到,也不生效,直接去掉。 +- 移除 `icon`,自定义 `icon` 可放在 `value` 中实现,扩充了 `value` 的类型。 +- 修改 `max` 的最大值为99(之前为10000),比较贴合实际场景。 +- 主题定制的 `css` 变量中,去掉和 `dot` 有关的其他值,只保留 `width`。其他值由 `width` 计算而来. +- 主题定制,增加包含 icon 情况下的样式变量。 + +#### CircleProgress + +- `progress` 重命名为 `percent` +- `circleColor` 重命名为 `color` +- `pathColor` 重命名为 `background` + +#### Collapse + +- 新增 `defaultActiveName` 非受控 +- `activeName` 改为受控方式 +- `icon` 重命名为 `expandIcon`,类型修改为 `ReactNode` +- `onChange` 参数变更为 `activeName, name, status` +- 新增一种样式,尝试修改 `--nutui-collapse-item-border-bottom` 和 `-nutui-collapse-item-header-border-bottom`,可查看 + +#### CollapseItem + +- 使用方式调整为 `Collapse.Item` +- subTitle 重命名为 extra,类型修改为 `ReactNode` +- 新增 `expnandIcon`,优先级高于父组件对应值 +- 新增 `rotate`,优先级高于父组件对应值 + +#### CountDown + +- 新增 `remainingTime`,支持剩余毫秒时间倒计时。 + +#### Ellipsis + +- 新增 `className` 和 `style` 属性的支持 +- 优化 H5 的代码,去掉 `useEffect` 渲染改用 `useLayoutEffect` + +#### Empty + +- 新增 `status` 属性,用于默认图片错误类型 +- 新增 `size` 属性,用于区分全屏与半屏状态下图片的不同大小 +- 新增 `title` 属性,用于展示提示的标题部分 +- 新增 `actions` 属性,用于展示提示的操作部分,支持1个或2个操作 +- `image` 属性类型更改为 `ReactNode` +- 新增 `title`、`size`、`actions` 属性,支持标题的设置、图片大小的设置、可能的操作设置,操作设置默认以`Button`实现。 + +#### ImagePreview + +- `show` 重命名为 `visible` +- `autoplay` 重命名为 `autoPlay` +- `initNo` 重命名为 `defaultValue`,同时增加 `value`,为受控 +- `paginationVisible` 重命名为 `indicator` +- `paginationColor` 重命名为 `indicatorColor` +- `contentClose` 重命名为 `closeOnContentClick` +- 在 `Taro` 下支持视频 + +#### NoticeBar + +- `direction` 的可选值从 `across` 重命名为 `horizontal` +- `text` 重命名为 `content` +- `closeMode` 重命名为 `closeable` +- `leftIcon` 类型扩充,支持 `ReactNode` +- `rightIcon` 类型扩充,支持 `ReactNode` +- `color` 移除,使用 CSS 变量,之前已支持 +- `background` 移除,使用 CSS 变量,之前已支持 +- `wrapable` 重命名为 `wrap` +- `standTime` 重命名为 `duration` +- `onClickItem` 重命名为 `onItemClick` +- `complexAm` 废弃 + +#### Popover + +- 移除 `theme` 属性,可以通过css变量 `--nutui-brand-color` 控制暗黑模式 +- 新增 `showArrow` 属性,用于是否显示小箭头 +- 新增 `closeOnActionClick` 属性,用于是否在点击选项后关闭 +- 新增 `closeOnOutsideClick` 属性,用于是否在点击外部元素后关闭菜单 +- 新增 `targetId` 属性,用于自定义目标元素 id +- 新增 `onOpen` 属性,用于点击菜单时触发 +- 新增 `onClose` 属性,用于关闭菜单时触发 +- 新增 `action` 属性,用于为对应的选项添加方法 +- `onChoose` 重命名为 `onSelect` +- 继承Popup组件的 `overlayStyle` 、`overlayClassName` 、`overlay` 、`closeOnOverlayClick` 属性。 + +#### Price + +- `decimalDigits` 重命名为 `digits` +- 移除 `needSymbol`,通过 `symbol` 判断是否需要加上 symbol 符号 +- 新增 `line`,是否展示划线价 + +#### Progress + +- `percentage` 重命名为 `percent`,受控 +- 移除 `isShowPercentage`,可以自定义传入文案 +- 移除 `textWidth`,可以自定义传入内容的宽度 +- `strokeColor` 重命名为 `color` +- `fillColor` 重命名为 `background` +- 移除 `size`,通过 `strokeWidth`、`progress-height` css 变量实现尺寸自定义 +- `status` 重命名为 `animated`,表示是否展示动画效果 +- 移除 `textBackground`,通过 css 实现 +- 移除 `textColor`,通过 css 实现 +- 移除 `textInside`,仅保留内显功能 +- 移除 `textType、icon`,通过 `children` 传入自定义 `ReactNode`,不再区分类型 +- 新增 `lazy` 属性,支持每次进入可视区时展示进度条动画 +- 新增 `delay` 属性,表示延迟数据加载时长 + +#### Skeleton + +- `loading` 重命名为 `visible` +- `row` 重命名为 `rows` +- 移除 `width`,通过 css 变量 `skeleton-line-width` 实现 +- 移除 `height`,通过 css 变量 `skeleton-line-height` 实现 +- 移除 `round`,通过 css 变量 `skeleton-line-border-radius` 实现 + +#### Steps + +- `current` 重命名为 `value` +- `onClickStep` 重命名为 `onStepClick` +- `progressDot` 重命名为 `dot` + +#### Step + +- 移除 `iconColor`,可通过 `icon` 属性传入自定义 icon 或借助 CSS Variables 修改 icon 颜色 +- 移除 `size`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- 移除 `renderContent` ,可通过 `description` 实现 +- `title` 类型修改为 `ReactNode` +- `content` 重命名为 `description`,类型改为 `ReactNode` +- `icon` 类型修改为 `ReactNode` +- `activeIndex` 重命名为 `value` + +#### Swiper + +- h5 + - 移除 `paginationColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `paginationBgColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `pageContent`,通过 indicator 实现 + - `autoplay` 重命名为 `autoplay` + - `initPage` 重命名为 `defaultValue` + - `paginationVisible` 重命名为 `indicator`,类型改为` ReactNode` + - `isPreventDefault` 重命名为 `preventDefault` + - `isStopPropagation` 重命名为 `stopPropagation` + - `isCenter` 重命名为 `center` +- taro + - 通过封装 Taro 的 `Swiper` 和 `SwiperItem` 实现,支持的属性可参考 Taro Swiper 文档。 + +#### Table + +- `onSorter` 重命名为 `onSort` +- 合并 `summary` 与 `noData` 的样式处理 + +#### Tag + +- `color` 重命名为 `background` +- `textColor` 重命名为 `color` + +#### TrendArrow + +- `rate` 重命名为 `value` +- `showSign` 重命名为 `symbol` +- `showZero` 重命名为 `zero` +- `arrowLeft` 重命名为 `left` +- `syncTextColor` 重命名为 `sync` +- `textColor` 重命名为 `color` +- `upIconName` 重命名为 `riseIcon`,类型修改为 `React.Node` +- `downIconName` 重命名为 `dropIcon`,类型修改为 `React.Node` +- 移除 `iconSize`,通过`riseIcon`、`dropIcon`自定义传入icon大小 + +#### Video + +- 在 `Taro` 下新增video的适配 + +#### VirtualList + +- `sourceData` 重命名为 `list` +- `conatinerSize` 重命名为 `containerHeight` +- `itemSize` 重命名为 `itemHeight` +- `itemEqualSize` 重命名为 `itemEqual` +- `horizontal` 修改为 `direction`,默认值 `vertical`,可选值 `horizontal` + +#### WaterMark + +- `fontColor` 重命名为 `color` + +### 特色组件 + +#### Address + +- 该组件的 `custom` 改用 `Cascader` 组件重写;`custom2`也将使用 `Cascader` 完成,在 `Cascader` 中支持 `Elevator`,开发中。所以会废弃 `province`、`city`、`country`、`town` 这些属性,同时支持 `Cascader` 的属性。 +- `modelValue` 重命名为 `visible` +- `modelSelect` 重命名为 `defaultValue` +- `onSelected` 重命名为 `onSelect` +- `existAddress` 重命名为 `existList` +- `selectedIcon` 重命名为 `selectIcon` +- `closeBtnIcon` 重命名为 `closeIcon` +- `backBtnIcon` 重命名为 `backIcon` +- `isShowCustomAddress` 重命名为 `custom`,用于已有地址列表与自定义列表的切换,修改默认为值 `false` +- `customAndExistTitle` 废弃,与 `custom` 合并,当 `custom` 为 true 时,为默认文案,设置为某字符串时,展示字符串。 +- `customAddressTitle`、`existAddressTitle` 重命名为 `title`,不再区分状态,可通过onSwitch修改title +- 精简布局和样式 + +#### Barrage + +- `barrageList` 重命名为 `list` +- `frequency` 重命名为 `interval` +- `speeds` 重命名为 `duration` +- `top` 重命名为 `gapY` + +#### Card + +#### Signature + +- `type` 类型修改为 `png|jpg` +- `unSupportTpl` 重命名为 `unsupported`,类型修改为 `ReactNode` +- 新增 `confirm`和`clear` ref 的方法,移除组件内部 `button`元素,通过自定义按钮元素,设置元素点击事件结合ref实现,参考文档demo示例 + +#### TimeSelect + +- 移除 `height`,通过 `style` 设置高度 +- `title` 类型修改为 `ReactNode` +- `onPannelChange` 重命名为 `onDateChange` +- 移除 `dates`、`times`,合并为 `options`,重新设计了数据结构 +- 增加 `optionKey` 用于自定义数据中的关键字 +- 移除 `currentKey`,新增 `defaultValue` 用于设置默认选项,支持时间选择 diff --git a/src/sites/doc/docs/taro/official-theme-react.en-US.md b/src/sites/doc/docs/taro/official-theme-react.en-US.md new file mode 100644 index 0000000000..931c122da2 --- /dev/null +++ b/src/sites/doc/docs/taro/official-theme-react.en-US.md @@ -0,0 +1,65 @@ +# Official theme + +## introduce + +NutUI provides multiple sets of official `UI` themes by default, while allowing new themes to be customized to a certain extent to meet the diverse visual needs of the business. + +#### + +| theme description | scss file name | +| --- | --- | +| Jingdong APP theme (default) | `variables.scss` | +| Jingdong B Mall Theme Preview | `variables-jdb.scss ` | + +NutUI theme customization + +## How to use + +### Modify the configuration file of the local project vite or webpack + +Modify the **sass-loader** configuration in the vite or webpack configuration file. The following example + +#### vite configuration example + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // Default Jingdong APP 10.0 theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack configuration example + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // Default Jingdong APP 10.0 theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // Note: In different versions of sass-loader, the name of this option is different. For details, please refer to the version documentation corresponding to sass-loader + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: diff --git a/src/sites/doc/docs/taro/official-theme-react.md b/src/sites/doc/docs/taro/official-theme-react.md new file mode 100644 index 0000000000..c4107d8c8c --- /dev/null +++ b/src/sites/doc/docs/taro/official-theme-react.md @@ -0,0 +1,86 @@ +# 官方主题 + +## 介绍 + +NutUI 默认提供多套官方`UI`主题,同时允许在一定程度上定制新主题,以满足业务的多样化视觉需求。 + +#### + +| 主题说明 | scss 文件名称 | +| --- | --- | +| 京东 APP 主题(默认) | `variables.scss` | +| 京东B商城主题预览 | `variables-jdb.scss` | + +NutUI 主题定制 + +## 使用方式 + +### 修改本地项目 vite 或者 webpack 的配置文件 + +修改 vite 或者 webpack 配置文件中 **sass-loader** 的配置。如下示例 + +#### vite 配置示例 + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack 配置示例 + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // 注意:在 sass-loader 不同版本,这个选项名是 是不一样的,具体可参考 sass-loader对应的版本文档 + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: + +#### vue/cli 3 以上版本修改 **vue.config.js** 进行配置 + +:::demo + +```javascript +module.exports = { + css: { + loaderOptions: { + // 给 sass-loader 传递选项 + scss: { + // @/ 是 src/ 的别名 + // 注意:在 sass-loader v7 中,这个选项名是 "data" + prependData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +} +``` + +::: diff --git a/src/sites/doc/docs/taro/start-react.en-US.md b/src/sites/doc/docs/taro/start-react.en-US.md new file mode 100644 index 0000000000..b8d48574ff --- /dev/null +++ b/src/sites/doc/docs/taro/start-react.en-US.md @@ -0,0 +1,185 @@ +# Quick Start + +## Intro + +Through this article, you can master the installation and use of NutUI-React Taro. The operation is simple and easy to use, and the development is simple and fast. + +## Install Taro CLI + +```sh +# pnpm +pnpm install -g @tarojs/cli +# npm +npm install -g @tarojs/cli +# yarn +yarn global add @tarojs/cli +``` + +## Method 1: Use the NutUI template to quickly create a project + +#### 1. Use the command to create a Taro project: + +```sh +taro init +``` + +#### 2、Refer to the operation below to select the NutUI React template + +```sh +👽 Taro + +Taro 即将创建一个新项目! +Need help? Go and open issue: https://tls.jd.com/taro-issue-helper + +? 请输入项目名称! MyProject +? 请输入项目介绍 +? 请选择框架 React +? 是否需要使用 TypeScript ? Yes +? 请选择 CSS 预处理器(Sass/Less/Stylus) Sass +? 请选择编译工具 Webpack5 +? 请选择包管理工具 pnpm +? 请选择模板源 Github(最新) +✔ 拉取远程模板仓库成功! + 默认模板 + harmony + mobx + pwa +❯ react-NutUI(使用 NutUI React 的模板) + react-native + ...... +``` + +## Method 2: Introduce NutUI React into the existing Taro project + +#### 1. Install NutUI React + +```sh +# pnpm +pnpm add @nutui/nutui-react-taro +# npm +npm i @nutui/nutui-react-taro +# yarn +yarn add @nutui/nutui-react-taro +``` + +#### 2、Taro + +Install [@tarojs/plugin-html](https://taro-docs.jd.com/docs/use-h5/) + +```sh +# pnpm +pnpm add @tarojs/plugin-html@version +# yarn +yarn add @tarojs/plugin-html@version +# npm +npm i @tarojs/plugin-html@version +``` + +config + +:::demo + +```js +// config/index.js +config = { + plugins: ['@tarojs/plugin-html'], + designWidth(input) { + if (input?.file?.replace(/\\+/g, '/').indexOf('@nutui') > -1) { + return 375 + } + return 750 + }, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1, + }, +} +``` + +::: + +#### 3、Component usage and on-demand import + +You can choose to import style files in full: + +```js +import '@nutui/nutui-react-taro/dist/style.css' +``` + +You can also implement on-demand import of styles in the following ways: + +Install `babel-plugin-import`. + +```sh +# pnpm +pnpm add babel-plugin-import +# npm +npm i babel-plugin-import +# yarn +yarn add babel-plugin-import +``` + +babel config + +:::demo + +```js +// babel.config.js +plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react-taro', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react-taro', + ], +] +``` + +::: + +## Precautions + +#### 1. Check if Taro is successfully installed + +```sh +taro -v +``` + +The Taro version number appears to indicate a successful installation. + +#### 2. Saas-related errors occurred during the installation of Taro + +You may consider installing `mirror-config-china` and try again. + +```sh +npm install -g mirror-config-china +``` + +#### 3. When the applet project is running, the error message "can't find the template" appears + +Solution: Turn off prebundle and cache in Taro configuration file + +:::demo + +```js +// config/index.js +config = { + compiler: { + type: 'webpack5', + prebundle: { + exclude: ['@nutui/nutui-react-taro', '@nutui/icons-react-taro'], + }, + }, + cache: { + enable: false, + }, +} +``` + +::: diff --git a/src/sites/doc/docs/taro/start-react.md b/src/sites/doc/docs/taro/start-react.md new file mode 100644 index 0000000000..89ac3ff900 --- /dev/null +++ b/src/sites/doc/docs/taro/start-react.md @@ -0,0 +1,191 @@ +# 快速上手 + +## 介绍 + +通过本文你可以掌握 NutUI-React Taro 的安装和使用方法,操作简单易上手,开发简洁快速。 + +## 安装 Taro 脚手架 + +```sh +# pnpm +pnpm install -g @tarojs/cli +# npm +npm install -g @tarojs/cli +# yarn +yarn global add @tarojs/cli +``` + +## 方式一:使用 Taro 内置的 NutUI 模板快速创建项目 + +#### 1、使用命令创建 Taro 项目: + +```sh +taro init +``` + +#### 2、参考下方操作,选择 NutUI React 模板 + +```sh +👽 Taro + +Taro 即将创建一个新项目! +Need help? Go and open issue: https://tls.jd.com/taro-issue-helper + +? 请输入项目名称! MyProject +? 请输入项目介绍 +? 请选择框架 React +? 是否需要使用 TypeScript ? Yes +? 请选择 CSS 预处理器(Sass/Less/Stylus) Sass +? 请选择编译工具 Webpack5 +? 请选择包管理工具 pnpm +? 请选择模板源 Github(最新) +✔ 拉取远程模板仓库成功! + 默认模板 + harmony + mobx + pwa +❯ react-NutUI(使用 NutUI React 的模板) + react-native + ...... +``` + +## 方式二:在已有 Taro 项目中引入 NutUI React + +#### 1、安装 NutUI React + +```sh +# pnpm +pnpm add @nutui/nutui-react-taro +# npm +npm i @nutui/nutui-react-taro +# yarn +yarn add @nutui/nutui-react-taro +``` + +#### 2、Taro 相关配置 + +安装 [@tarojs/plugin-html](https://taro-docs.jd.com/docs/use-h5/) + +> 注意,这里安装的版本 version 必须与项目中 Taro 版本保持一致! + +```bash +# pnpm +pnpm add @tarojs/plugin-html@version +# yarn +yarn add @tarojs/plugin-html@version +# npm +npm i @tarojs/plugin-html@version +``` + +在项目中配置 + +:::demo + +```js +// config/index.js +config = { + // 开启 HTML 插件 + plugins: ['@tarojs/plugin-html'], + designWidth(input) { + // 配置 NutUI 375 尺寸 + if (input?.file?.replace(/\\+/g, '/').indexOf('@nutui') > -1) { + return 375 + } + // 全局使用 Taro 默认的 750 尺寸 + return 750 + }, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1, + }, +} +``` + +::: + +#### 3、组件使用与按需引入 + +您可以选择全量引入样式文件: + +```js +import '@nutui/nutui-react-taro/dist/style.css' +``` + +也可以通过下面的方式实现样式的按需引入: + +首先安装 `babel-plugin-import` 插件 + +```sh +# pnpm +pnpm add babel-plugin-import +# npm +npm i babel-plugin-import +# yarn +yarn add babel-plugin-import +``` + +安装后在项目中设置 babel 相关配置: + +```js +// babel.config.js +module.exports = { + presets: [ + // ... + ], + plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react-taro', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react-taro', + ], + ], +} +``` + +## 注意事项 + +#### 1、检查 Taro 是否安装成功 + +```sh +taro -v +``` + +出现 Taro 版本号说明安装成功。 + +#### 2、安装 Taro 过程中出现 Saas 相关错误 + +可以考虑安装 `mirror-config-china` 后重试。 + +```sh +npm install -g mirror-config-china +``` + +#### 3、小程序项目运行时出现「找不到模板」的错误提示 + +解决方案:在 Taro 配置文件中关闭 prebundle 及 cache + +:::demo + +```js +// config/index.js +config = { + compiler: { + type: 'webpack5', + prebundle: { + exclude: ['@nutui/nutui-react-taro', '@nutui/icons-react-taro'], + }, + }, + cache: { + enable: false, + }, +} +``` + +::: diff --git a/src/sites/doc/docs/taro/theme-react.en-US.md b/src/sites/doc/docs/taro/theme-react.en-US.md new file mode 100644 index 0000000000..30cfcb128c --- /dev/null +++ b/src/sites/doc/docs/taro/theme-react.en-US.md @@ -0,0 +1,58 @@ +# Customize Theme + +## Introduce + +NutUI-React supports flexible style customization to meet multiple visual business and brand needs, including but not limited to support for global master tone and component-specific visual customization. +
    +
    +In NutUI-React version 1.4.0, the Sass theme customization function of 1.x can still be used. We added CSS variables to the original theme customization function, so that the new theme customization function can be used without introducing additional SCSS style files. + +## Method 1: Use CSS Variables to configure topics + +`NutUI - React` can [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) to organize the pattern, By overwriting these 'CSS' variables, you can achieve custom theme, dynamic switching theme and other functions. +
    +
    +You can play with the [ConfigProvider](#/zh-CN/component/configprovider) component. +
    +
    +We recommend replacing [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) for the theme of personalized configuration. + +## Method 2: Use Sass variable for topic configuration + +#### Step 1: Create a custom variable SCSS file + +Create a new 'SCSS' file 'custom_theme.scss' in your local project. + +```scss +// Dominant tone +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +#### Step 2: Modify the configuration file of the local project webpack or vite + +Modify the ** ass-loader** configuration in the 'vite' or 'webpack' configuration file. The following example + +#### taro + +Configure `scss` file global cover in `config/index.js`: + +```javascript +const path = require('path'); +const config = { + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1 + }, + sass: { + resource: [ + path.resolve(__dirname, '..', 'src/assets/styles/custom_theme.scss') + ], + // 默认京东 APP 10.0主题 > @import "@nutui/nutui-react-taro/dist/styles/variables.scss"; + data: `@import "@nutui/nutui-react-taro/dist/styles/variables.scss";` + }, + // ... +``` diff --git a/src/sites/doc/docs/taro/theme-react.md b/src/sites/doc/docs/taro/theme-react.md new file mode 100644 index 0000000000..f1aec212d5 --- /dev/null +++ b/src/sites/doc/docs/taro/theme-react.md @@ -0,0 +1,53 @@ +# 主题定制 + +## 介绍 + +NutUI-React 支持灵活的样式定制,满足多种视觉业务和品牌需求,包括但不限于全局主色调和特定组件视觉定制的支持。 +
    +在 NutUI-React 的 1.4.0 版本中,依然可以使用 1.x 的 Sass 定制主题功能,我们在原有的主题定制功能上新增了 CSS 变量, 无需引入额外的 SCSS 样式文件,就可以使用到新的主题定制功能。 + +## 方式一 使用 CSS Variables 进行主题配置 + +`NutUI-React` 组件可以通过 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 来组织样式,通过覆盖这些 `CSS` 变量,可以实现定制主题、动态切换主题等功能。 +
    +您可在 [ConfigProvider 组件](#/zh-CN/component/configprovider) 进行体验。 +
    +我们更推荐使用替换 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 的方式来进行个性化的主题配置。 + +## 方式二 使用 Sass 变量 进行主题配置 + +### 第一步 新建自定义变量 SCSS 文件 + +在本地项目中新建一个 `SCSS` 文件 `custom_theme.scss` 进行自定义。 + +```scss +// 主色调 +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +### 第二步 修改本地项目 webpack 或者 vite 的配置文件 + +#### Taro 小程序使用示例 + +修改 `config/index.js` 文件中配置 `scss` 文件,全局覆盖如: + +```javascript +const path = require('path'); +const config = { + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1 + }, + sass: { + resource: [ + path.resolve(__dirname, '..', 'src/assets/styles/custom_theme.scss') + ], + // 默认京东 APP 10.0主题 > @import "@nutui/nutui-react-taro/dist/styles/variables.scss"; + data: `@import "@nutui/nutui-react-taro/dist/styles/variables.scss";` + }, + // ... +``` diff --git a/src/sites/doc/router.ts b/src/sites/doc/router.ts index 5a91667608..201f206500 100644 --- a/src/sites/doc/router.ts +++ b/src/sites/doc/router.ts @@ -1,9 +1,12 @@ -import { Divider } from '@nutui/nutui-react-taro'; // const modulesPage = import.meta.globEager('/src/packages/**/doc.md', { // as: 'raw', // }) const modulesPage = import.meta.glob('/src/packages/**/doc.md') const routes: any[] = [] +const guideRoutes: any[] = [] +const guideEnRoutes: any[] = [] +const guideTaroRoutes: any[] = [] +const guideEnTaroRoutes: any[] = [] for (const path in modulesPage) { let name = (/packages\/(.*)\/doc\.md/.exec(path) as any[])[1] routes.push({ @@ -44,9 +47,41 @@ for (const path in modulesTaroPage) { }) } -// routes.push({ -// path: '/zh-CN/guide/intro-react', -// name: 'intro-react-zh-CN', -// component: () => Divider -// }) -export default routes +const modulesDocs = import.meta.glob('/src/sites/doc/docs/react/*.md'); +for (const path in modulesDocs) { + let name = (/docs\/react\/(.*).md/.exec(path) as any[])[1]; + guideRoutes.push({ + path: `/zh-CN/guide/${name}`, + component: modulesDocs[path], + name + }); +} + +const modulesEnDocs = import.meta.glob('/src/sites/doc/docs/react/*.en-US.md'); +for (const path in modulesEnDocs) { + let name = (/docs\/react\/(.*).en-US.md/.exec(path) as any[])[1]; + guideEnRoutes.push({ + path: `/en-US/guide/${name}`, + component: modulesEnDocs[path], + name: `en-${name}` + }); +} +const modulesTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.md'); +for (const path in modulesTaroDocs) { + let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; + guideTaroRoutes.push({ + path: `/zh-CN/guide-taro/${name}`, + component: modulesDocs[path], + name + }); +} +const modulesEnTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.en-US.md'); +for (const path in modulesEnTaroDocs) { + let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; + guideEnTaroRoutes.push({ + path: `/en-US/guide-taro/${name}`, + component: modulesDocs[path], + name + }); +} +export {routes, guideRoutes, guideEnRoutes, guideTaroRoutes, guideEnTaroRoutes} From 62a87fab2e114324192e55d4dbf4ef16c1894ca8 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Tue, 21 Jan 2025 19:10:13 +0800 Subject: [PATCH 08/40] feat: save some guide and routes logics --- src/sites/doc/App.tsx | 4 ++-- src/sites/doc/docs/react/contributing-react.en-US.md | 2 +- src/sites/doc/docs/react/contributing-react.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index cf70257b2a..c0ee24bb8d 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -88,11 +88,11 @@ const Content = () => { return (
    -
    + {!isGuide &&
    </div> - </div> + </div>} <div className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} > diff --git a/src/sites/doc/docs/react/contributing-react.en-US.md b/src/sites/doc/docs/react/contributing-react.en-US.md index fa3d85d360..d96531048f 100644 --- a/src/sites/doc/docs/react/contributing-react.en-US.md +++ b/src/sites/doc/docs/react/contributing-react.en-US.md @@ -1,4 +1,4 @@ -<h2 style="margin-top: 0;">Contribution Guidelines</h2> +# Contribution Guidelines You can contribute to the NutUI community according to the co-construction direction in 《[NutUI invites you to build, Hello Contributor](https://jelly.jd.com/article/6320528b92d94a0068685525)》. diff --git a/src/sites/doc/docs/react/contributing-react.md b/src/sites/doc/docs/react/contributing-react.md index 21ad78757a..56e2eb7b72 100644 --- a/src/sites/doc/docs/react/contributing-react.md +++ b/src/sites/doc/docs/react/contributing-react.md @@ -1,4 +1,4 @@ -## 贡献指南 +# 贡献指南 您可根据《[NutUI 邀您共建,Contributor 您好](https://jelly.jd.com/article/6320528b92d94a0068685525)》中的共建方向为 NutUI 社区做出贡献。 From 485990ef03c0cbcb8f8e5101c898b515dd36c1ef Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Tue, 21 Jan 2025 20:17:17 +0800 Subject: [PATCH 09/40] feat: save some guide and routes logics --- src/sites/doc/App.tsx | 7 ++++--- src/sites/doc/components/nav/nav.tsx | 2 +- src/sites/doc/docs/taro/contributing-react.en-US.md | 4 ++-- src/sites/doc/docs/taro/contributing-react.md | 4 ++-- src/sites/doc/router.ts | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index c0ee24bb8d..653adaf8a8 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -85,7 +85,8 @@ const Content = () => { useEffect(() => { document.addEventListener('scroll', scrollTitle) }, []) - + const routes = [...routers, ...guideRoutes, ...guideEnRoutes, ...guideTaroRoutes, ...guideEnTaroRoutes] + console.log(guideRoutes,guideTaroRoutes) return ( <div className="doc-content"> {!isGuide && <div className="doc-title"> @@ -97,8 +98,8 @@ const Content = () => { className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} > <Routes> - {[...routers, ...guideRoutes].map((ru, k) => { - const path = ru.component.name?.substring( + {routes.map((ru, k) => { + const path = ru.component?.name?.substring( 0, ru.component.name.lastIndexOf('/') ) diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index 626a8ea0b6..88d3a2b061 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -35,7 +35,7 @@ const Nav = () => { const changeNav = (_nav: any) => { setActiveName(_nav.name) - navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/` + _nav.name.toLowerCase()) + navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide${isTaro? '-taro' : ''}/${_nav.name.toLowerCase()}`) } const isTaro = location.pathname.includes('-taro') const isZh = lang === 'zh-CN' diff --git a/src/sites/doc/docs/taro/contributing-react.en-US.md b/src/sites/doc/docs/taro/contributing-react.en-US.md index e15ca4a49c..2d201daa60 100644 --- a/src/sites/doc/docs/taro/contributing-react.en-US.md +++ b/src/sites/doc/docs/taro/contributing-react.en-US.md @@ -1,4 +1,4 @@ -<h2 style="margin-top: 0;">Contribution Guidelines</h2> +# Contribution Guidelines You can contribute to the NutUI community according to the co-construction direction in 《[NutUI invites you to build, Hello Contributor](https://jelly.jd.com/article/6320528b92d94a0068685525)》. @@ -123,5 +123,5 @@ npm run build:taro Thanks to all the developers below who have contributed code to NutUI. <a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> - <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> </a> diff --git a/src/sites/doc/docs/taro/contributing-react.md b/src/sites/doc/docs/taro/contributing-react.md index b851b28543..cc161ad9f8 100644 --- a/src/sites/doc/docs/taro/contributing-react.md +++ b/src/sites/doc/docs/taro/contributing-react.md @@ -1,4 +1,4 @@ -<h2 style="margin-top: 0;">贡献指南</h2> +# 贡献指南 您可根据《[NutUI 邀您共建,Contributor 您好](https://jelly.jd.com/article/6320528b92d94a0068685525)》中的共建方向为 NutUI 社区做出贡献。 @@ -117,5 +117,5 @@ npm run build:taro 感谢以下所有给 NutUI 贡献过代码的开发者。   <a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> -<img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"> +<img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> </a> diff --git a/src/sites/doc/router.ts b/src/sites/doc/router.ts index 201f206500..89d14b6518 100644 --- a/src/sites/doc/router.ts +++ b/src/sites/doc/router.ts @@ -71,7 +71,7 @@ for (const path in modulesTaroDocs) { let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; guideTaroRoutes.push({ path: `/zh-CN/guide-taro/${name}`, - component: modulesDocs[path], + component: modulesTaroDocs[path], name }); } @@ -80,7 +80,7 @@ for (const path in modulesEnTaroDocs) { let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; guideEnTaroRoutes.push({ path: `/en-US/guide-taro/${name}`, - component: modulesDocs[path], + component: modulesEnTaroDocs[path], name }); } From 3d618f49c69d8b572b967a847e0d13c6d7a2978e Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 22 Jan 2025 10:14:25 +0800 Subject: [PATCH 10/40] feat: save some guide & guideTaro routes logics --- src/sites/doc/App.tsx | 24 ++++-- src/sites/doc/components/nav/nav.tsx | 2 +- src/sites/doc/docs/react/intro-react.en-US.md | 4 +- src/sites/doc/docs/react/intro-react.md | 2 +- .../doc/docs/react/migrate-from-v1.en-US.md | 73 +++++++++++++++++ .../doc/docs/react/migrate-from-v2.en-US.md | 78 +++++++++++++++++++ src/sites/doc/docs/taro/intro-react.md | 4 +- .../doc/docs/taro/official-theme-react.md | 2 +- src/sites/doc/router.ts | 4 +- 9 files changed, 177 insertions(+), 16 deletions(-) create mode 100644 src/sites/doc/docs/react/migrate-from-v1.en-US.md create mode 100644 src/sites/doc/docs/react/migrate-from-v2.en-US.md diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index 653adaf8a8..0e92f54a6d 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -85,15 +85,23 @@ const Content = () => { useEffect(() => { document.addEventListener('scroll', scrollTitle) }, []) - const routes = [...routers, ...guideRoutes, ...guideEnRoutes, ...guideTaroRoutes, ...guideEnTaroRoutes] - console.log(guideRoutes,guideTaroRoutes) + const routes = [ + ...routers, + ...guideRoutes, + ...guideEnRoutes, + ...guideTaroRoutes, + ...guideEnTaroRoutes, + ] + console.log(guideRoutes, guideTaroRoutes) return ( <div className="doc-content"> - {!isGuide && <div className="doc-title"> - <div className={`doc-title-position ${fixed ? 'fixed' : ''}`}> - <Title /> + {!isGuide && ( + <div className="doc-title"> + <div className={`doc-title-position ${fixed ? 'fixed' : ''}`}> + <Title /> + </div> </div> - </div>} + )} <div className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} > @@ -120,7 +128,9 @@ const Content = () => { })} </Routes> </div> - <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + {!isGuide && ( + <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + )} </div> ) } diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index 88d3a2b061..3ddfbfe6a1 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -35,7 +35,7 @@ const Nav = () => { const changeNav = (_nav: any) => { setActiveName(_nav.name) - navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide${isTaro? '-taro' : ''}/${_nav.name.toLowerCase()}`) + navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}${isTaro? '-taro' : ''}`) } const isTaro = location.pathname.includes('-taro') const isZh = lang === 'zh-CN' diff --git a/src/sites/doc/docs/react/intro-react.en-US.md b/src/sites/doc/docs/react/intro-react.en-US.md index 9bcccc2eae..ca1a178d13 100644 --- a/src/sites/doc/docs/react/intro-react.en-US.md +++ b/src/sites/doc/docs/react/intro-react.en-US.md @@ -4,7 +4,7 @@ The NutUI-React component library is suitable for H5 applications of the React t ## Features -- 🚀 70+ high-quality components covering mainstream mobile scenarios +- 🚀 80+ high-quality components covering mainstream mobile scenarios - 📖 Based on JD APP 10.0 visual specification - 🍭 Support on-demand reference - 📖 Detailed documentation and examples @@ -34,7 +34,7 @@ For browsers that do not support CSS variables, it is recommended to use [postcs Thanks to the following friends for their contributions to NutUI-React: <a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> - <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> </a> ## LICENSE diff --git a/src/sites/doc/docs/react/intro-react.md b/src/sites/doc/docs/react/intro-react.md index eea1cf0f3a..6f12688d62 100644 --- a/src/sites/doc/docs/react/intro-react.md +++ b/src/sites/doc/docs/react/intro-react.md @@ -4,7 +4,7 @@ NutUI-React 组件库,适用于 React 技术栈的 H5 应用,开箱即用, ## 特性 -- 🚀 70+ 高质量组件,覆盖移动端主流场景 +- 🚀 80+ 高质量组件,覆盖移动端主流场景 - 📖 基于京东APP 10.0 视觉规范 - 🍭 支持按需引用 - 📖 详尽的文档和示例 diff --git a/src/sites/doc/docs/react/migrate-from-v1.en-US.md b/src/sites/doc/docs/react/migrate-from-v1.en-US.md new file mode 100644 index 0000000000..ac547cc7d1 --- /dev/null +++ b/src/sites/doc/docs/react/migrate-from-v1.en-US.md @@ -0,0 +1,73 @@ +# Upgrading from v1 to v2 + +This document will help you upgrade from NutUI React `1.x` to NutUI React `2.x` version. + +## Upgrade Steps + +1. H5 Install NutUI React version 2.x + +```shell +npm install @nutui/nutui-react +``` + +2. Taro installs NutUI React version 2.x + +```shell +npm install @nutui/nutui-react-taro +``` + +3. Handling incompatible updates + There are some incompatible updates from NutUI React 1.x to NutUI React 2.x. You need to read the incompatible updates carefully and deal with them in turn. + You can manually check your code against the list below to make changes, or we provide a codemod cli tool @nutui/nutui-react-codemod to help you upgrade to v2 quickly. Please commit your local code changes before running codemod cli. +4. Theme variables are renamed: + For example, primary-color is renamed to color-primary; note that if you are using a custom theme, especially if you are using the ConfigProvider component, you are not using `nutuiBrandColor`, remember to rename it to `nutuiColorPrimary`. + +## Compatibility Updates + +1. Component style handling + Added support for importing css files on demand, while retaining the ability to import scss files on demand. On-demand css import can be realized by babel-import-plugin plugin: + The H5 configuration is as follows: + +```json +// Webpack .babelrc or babel.config.js configuration +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react”. + ] +] +``` + +Taro is configured as follows: + +```json +// Configured in Webpack .babelrc or babel.config.js +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react-taro”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react-taro”. + ] +] +``` + +2. better type exporting and adding `JSDoc` annotations to types +3. Adjustment of component categorization + In terms of component classification, we have reviewed the 1.x classification based on the information structure from the interaction dimension, together with the interaction design side, and subclassed and reclassified them, with the goal of more closely matching the distribution of interaction scenarios and making it easy to find components. The main distribution is: + +- Basic components, remove the `Popup` component, and subdivide `Popup` into operation feedback-guidance tips section; +- Layout components, remain unchanged; +- Navigation components: move paging related components `Pagination` and `Indicator` to the display component (to consider the light operation of paging on mobile); move `Menu` menu to the subclass of data entry class-selector (to consider that `Menu` is mainly used as a filter); + +Translated with DeepL.com (free version) diff --git a/src/sites/doc/docs/react/migrate-from-v2.en-US.md b/src/sites/doc/docs/react/migrate-from-v2.en-US.md new file mode 100644 index 0000000000..ab97f5b9f9 --- /dev/null +++ b/src/sites/doc/docs/react/migrate-from-v2.en-US.md @@ -0,0 +1,78 @@ +# Upgrading from v2 to v3 + +This document will help you upgrade from NutUI React `2.x` to NutUI React `3.x` version. + +## Upgrade Steps + +1. H5 Install NutUI React version 3.x + +```shell +npm install @nutui/nutui-react +``` + +2. Taro installs NutUI React version 3.x + +```shell +npm install @nutui/nutui-react-taro +``` + +3. Handling incompatible updates + +There are some incompatible updates from NutUI React 1.x to NutUI React 2.x. You need to read the incompatible updates carefully and deal with them in turn. + +You can manually check your code against the list below to make changes, or we provide a codemod cli tool @nutui/nutui-react-codemod to help you upgrade to v2 quickly. Please commit your local code changes before running codemod cli. + +4. Theme variables are renamed: + For example, primary-color is renamed to color-primary; note that if you are using a custom theme, especially if you are using the ConfigProvider component, you are not using `nutuiBrandColor`, remember to rename it to `nutuiColorPrimary`. + +## Compatibility Updates + +1. Component style handling + +Added support for importing css files on demand, while retaining the ability to import scss files on demand. On-demand css import can be realized by babel-import-plugin plugin: + +The H5 configuration is as follows: + +```js +// Webpack .babelrc or babel.config.js configuration +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react”. + ] +] +``` + +Taro is configured as follows: + +```json +// Configured in Webpack .babelrc or babel.config.js +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react-taro”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react-taro”. + ] +] +``` + +2. better type exporting and adding `JSDoc` annotations to types +3. Adjustment of component categorization + In terms of component classification, we have reviewed the 1.x classification based on the information structure from the interaction dimension, together with the interaction design side, and subclassed and reclassified them, with the goal of more closely matching the distribution of interaction scenarios and making it easy to find components. The main distribution is: + +- Basic components, remove the `Popup` component, and subdivide `Popup` into operation feedback-guidance tips section; +- Layout components, remain unchanged; +- Navigation components: move `Pagination` and `Indicator` to the display component (considering the light operation of paging on mobile); move `Menu` menu to the data entry class-selector subclass (considering the light operation of paging on mobile); move `Menu` to the data entry class-selector subclass (considering the light operation of paging on mobile). + +Translated with DeepL.com (free version) diff --git a/src/sites/doc/docs/taro/intro-react.md b/src/sites/doc/docs/taro/intro-react.md index f862e45e9a..a1caceb7b9 100644 --- a/src/sites/doc/docs/taro/intro-react.md +++ b/src/sites/doc/docs/taro/intro-react.md @@ -4,7 +4,7 @@ NutUI-React 组件库,基于 Taro,使用 React 技术栈开发小程序应 ## 特性 -- 🚀 70+ 高质量组件,覆盖移动端主流场景 +- 🚀 80+ 高质量组件,覆盖移动端主流场景 - 💪 支持一套代码同时开发多端小程序+H5 - 📖 基于京东APP 10.0 视觉规范 - 🍭 支持按需引用 @@ -31,7 +31,7 @@ NutUI-React 组件库,基于 Taro,使用 React 技术栈开发小程序应 感谢以下小伙伴们为 NutUI-React 发展做出的贡献: <a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> - <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> </a> ## 开源协议 diff --git a/src/sites/doc/docs/taro/official-theme-react.md b/src/sites/doc/docs/taro/official-theme-react.md index c4107d8c8c..b183ada3bd 100644 --- a/src/sites/doc/docs/taro/official-theme-react.md +++ b/src/sites/doc/docs/taro/official-theme-react.md @@ -11,7 +11,7 @@ NutUI 默认提供多套官方`UI`主题,同时允许在一定程度上定制 | 京东 APP 主题(默认) | `variables.scss` | | 京东B商城主题<a target="_blank" href="https://nutui.jd.com/h5/vue/4x/?jdb#/zh-CN/component/button" >预览</a> | `variables-jdb.scss` | -<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI 主题定制"> +<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI 主题定制"/> ## 使用方式 diff --git a/src/sites/doc/router.ts b/src/sites/doc/router.ts index 89d14b6518..f37724055e 100644 --- a/src/sites/doc/router.ts +++ b/src/sites/doc/router.ts @@ -70,7 +70,7 @@ const modulesTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.md'); for (const path in modulesTaroDocs) { let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; guideTaroRoutes.push({ - path: `/zh-CN/guide-taro/${name}`, + path: `/zh-CN/guide/${name}-taro`, component: modulesTaroDocs[path], name }); @@ -79,7 +79,7 @@ const modulesEnTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.en-US.md' for (const path in modulesEnTaroDocs) { let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; guideEnTaroRoutes.push({ - path: `/en-US/guide-taro/${name}`, + path: `/en-US/guide/${name}-taro`, component: modulesEnTaroDocs[path], name }); From 745ba0918fb8cd14710b9cdfc5d8fabfb4646a83 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 22 Jan 2025 10:20:04 +0800 Subject: [PATCH 11/40] =?UTF-8?q?fix:=20=E9=87=8D=E7=BD=AENav=20Tab?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sites/doc/components/nav/nav.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index 3ddfbfe6a1..ce4d35d5cf 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -31,10 +31,13 @@ const Nav = () => { } else { setIsGuide(false) } + if(location.pathname.includes('/intro-react')) { + setActiveName('intro-react') + } }, [location]) const changeNav = (_nav: any) => { setActiveName(_nav.name) - + console.log(_nav.name) navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}${isTaro? '-taro' : ''}`) } const isTaro = location.pathname.includes('-taro') From d4624ced21d55f30207e376e2a00d2925fa2cee3 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 22 Jan 2025 10:25:00 +0800 Subject: [PATCH 12/40] chore: delete some logs --- src/sites/doc/App.tsx | 1 - src/sites/doc/components/header/header.tsx | 3 --- src/sites/doc/components/nav/nav.tsx | 1 - 3 files changed, 5 deletions(-) diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index 0e92f54a6d..2cbc4edc02 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -92,7 +92,6 @@ const Content = () => { ...guideTaroRoutes, ...guideEnTaroRoutes, ] - console.log(guideRoutes, guideTaroRoutes) return ( <div className="doc-content"> {!isGuide && ( diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx index 41e0116504..a0bce3b0ad 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/doc/components/header/header.tsx @@ -66,9 +66,7 @@ const Header = () => { (l) => location.pathname.indexOf(l.locale) > -1 )[0] setCurrLang(lang) - console.log(lang) }, [location]) - const [visible, setVisible] = useState(false) const [activeLink, setActiveLink] = useState('指南') // const handleSwitchLocale = (e: any) => { // const classList: string[] = [].slice.call(e.target.classList) @@ -158,7 +156,6 @@ const Header = () => { > <a onClick={() => { - console.log(item) toLink(item) }} > diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx index ce4d35d5cf..ed4c1efd4d 100644 --- a/src/sites/doc/components/nav/nav.tsx +++ b/src/sites/doc/components/nav/nav.tsx @@ -37,7 +37,6 @@ const Nav = () => { }, [location]) const changeNav = (_nav: any) => { setActiveName(_nav.name) - console.log(_nav.name) navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}${isTaro? '-taro' : ''}`) } const isTaro = location.pathname.includes('-taro') From 3a8ad9b40421db092900e6751c167f5b3c89b1f6 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 22 Jan 2025 11:35:20 +0800 Subject: [PATCH 13/40] feat: save some backtop logics --- src/sites/assets/styles/md-style.scss | 1 - src/sites/assets/styles/variables.scss | 49 +++++++++++++------ src/sites/doc/App.scss | 5 ++ src/sites/doc/App.tsx | 6 ++- .../doc/components/demoblock/codeblock.tsx | 3 +- 5 files changed, 46 insertions(+), 18 deletions(-) diff --git a/src/sites/assets/styles/md-style.scss b/src/sites/assets/styles/md-style.scss index 2578487490..f6e4995484 100644 --- a/src/sites/assets/styles/md-style.scss +++ b/src/sites/assets/styles/md-style.scss @@ -1,5 +1,4 @@ @import 'highlight.scss'; -$doc-smile-curve: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png') !default; .doc-content-document { position: relative; diff --git a/src/sites/assets/styles/variables.scss b/src/sites/assets/styles/variables.scss index fc6b3a5203..1ff4609e4c 100644 --- a/src/sites/assets/styles/variables.scss +++ b/src/sites/assets/styles/variables.scss @@ -1,5 +1,8 @@ // doc -$doc-default-color: #ff0f23; +$doc-default-color: #fa2c19 !default; +$doc-smile-curve: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png') !default; +$doc-footer-theme-icon: url('@/assets/images/icon-color.png') no-repeat + center/100% !default; $doc-default-primary-bg: linear-gradient( 135deg, rgba(250, 25, 44, 1) 0%, @@ -8,9 +11,14 @@ $doc-default-primary-bg: linear-gradient( rgba(250, 63, 25, 1) 100% ); -// color +$white: #fff; +$black: #000; +// 标题常规文字 +$title-color: #1a1a1a; + +// clolr // 红色 -$theme-red: #ff0f23; +$theme-red: #fa2c19; $theme-red-word: #fff; $theme-red-border: #fff; $theme-red-input: #fff; @@ -18,7 +26,7 @@ $theme-red-actice: #fff; $theme-red-select-border: #f0f2f5; $theme-red-select-word: #666; $theme-red-select-bg: #fff; -$theme-red-header-bg: url('../../assets/images/header-bg.png'); +$theme-red-header-bg: url('@/assets/images/header-bg.png'); $theme-red-footer-word1: #1a1a1a; $theme-red-footer-word2: #666; $theme-red-footer-word3: #1d1d21; @@ -37,22 +45,24 @@ $theme-white: #fff; $theme-white-word: #1a1a1a; $theme-white-input: #ccc; $theme-white-border: #d8d8d8; -$theme-white-actice: #ff0f23; +$theme-white-actice: #fa2c19; $theme-white-select-border: #f0f2f5; $theme-white-select-word: #666; $theme-white-select-bg: #fff; +$theme-white-select-hover: rgba(0, 0, 0, 0.02); +$theme-white-select-active: rgba(0, 0, 0, 0.06); $theme-white-box-border: #f5f5f5; $theme-white-footer-word1: #1a1a1a; $theme-white-footer-word2: #666; $theme-white-footer-word3: #1d1d21; $theme-white-footer-word4: #808080; -$theme-white-footer-hover: #ff0f23; +$theme-white-footer-hover: #fa2c19; $theme-white-footer-bg: #fff; $theme-white-footer-border: #eaf0fb; $theme-white-theme-border: #f5f6f7; $theme-white-circle: #fff; $theme-white-circle-border: #e5e5e5; -$theme-white-index-description: #959fb1; +$theme-white-index-desc: #959fb1; // 黑色 $theme-black-word: #ccc; @@ -60,6 +70,10 @@ $theme-black-input: #ccc; $theme-black-border: #d8d8d8; $theme-black-actice: #fff; $theme-black-select-bg: #1d1d1d; +$theme-black-nav-select-bg: #2c2c2c; +$theme-black-nav-select-border: #5e5e5e; +$theme-black-nav-select-active-bg: rgba(255, 255, 255, 0.2); +$theme-black-nav-select-hover-bg: rgba(255, 255, 255, 0.06); $theme-black-select-border: #c1c1c3; $theme-black-select-hover: #797a7b; $theme-black-select-word: #fff; @@ -67,8 +81,8 @@ $theme-black-box-border: #6b5554; $theme-black-footer-word1: #fff; $theme-black-footer-word2: #f5f5f5; $theme-black-footer-word3: #f5f5f5; -$theme-black-footer-word4: #808080; -$theme-black-footer-hover: #ff0f23; +$theme-black-footer-word4: #fff; +$theme-black-footer-hover: $doc-default-color; $theme-black-footer-bg: #1d1d21; $theme-black-footer-border: transparent; $theme-black-theme-border: #666; @@ -76,27 +90,34 @@ $theme-black-circle: #1a1a1a; // header $doc-default-header-color: $white; $doc-header-height: 64px; -$doc-header-bg: url('../../assets/images/header-bg.png') no-repeat; +$doc-header-bg: url('@/assets/images/header-bg.png') no-repeat; // nav $doc-default-nav-bg: $white; -$doc-default-nav-color: $color-title; +$doc-default-nav-color: $title-color; +$doc-nav-icon-color1: #41b883; +$doc-nav-icon-color2: #74c9ff; +$doc-nav-icon-bg1: rgba(65, 184, 131, 0.16); +$doc-nav-icon-bg2: rgba(116, 201, 255, 0.16); +// footer +// $doc-default-header-color: $white; +// $doc-footer-height: 73px; // home $theme-black-content-bg: #060506; //markdown-add-style $nutui-doc-black: #323233; -$nutui-doc-blue: #0073ff; +$nutui-doc-blue: #1989fa; $nutui-doc-purple: #8080ff; $nutui-doc-fuchsia: #a7419e; $nutui-doc-red: #fa2400; -$nutui-doc-text-color: #666666; +$nutui-doc-text-color: rgba(0, 0, 0, 0.88); $nutui-doc-text-light-blue: rgba(69, 90, 100, 0.6); $nutui-doc-background-color: #f7f8fa; $nutui-doc-grey: #999; $nutui-doc-dark-grey: #666; $nutui-doc-light-grey: #ccc; $nutui-doc-border-color: #f1f4f8; -$nutui-doc-code-color: #58727e; +$nutui-doc-code-color: rgba(0, 0, 0, 0.88); $nutui-doc-code-background-color: #f1f4f8; $nutui-doc-code-font-family: 'Source Code Pro', 'Monaco', 'Inconsolata', monospace; diff --git a/src/sites/doc/App.scss b/src/sites/doc/App.scss index 18bec29eb8..30e763cf00 100644 --- a/src/sites/doc/App.scss +++ b/src/sites/doc/App.scss @@ -247,3 +247,8 @@ $doc-title-height: 137px; right: 10px; } } +.doc-backtop { + position: fixed; + bottom: 14px; + right: 200px; +} diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx index 2cbc4edc02..a2be6f8ca0 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/doc/App.tsx @@ -128,7 +128,10 @@ const Content = () => { </Routes> </div> {!isGuide && ( - <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + <> + <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> + </> )} </div> ) @@ -142,7 +145,6 @@ const App = () => { <Nav /> <Content /> </HashRouter> - <BackTop threshold={500} /> </div> ) } diff --git a/src/sites/doc/components/demoblock/codeblock.tsx b/src/sites/doc/components/demoblock/codeblock.tsx index 6623682941..1509641103 100644 --- a/src/sites/doc/components/demoblock/codeblock.tsx +++ b/src/sites/doc/components/demoblock/codeblock.tsx @@ -12,6 +12,7 @@ const modules = import.meta.glob(`@/packages/**/demos/**/*.tsx`, { const CodeBlock: FunctionComponent = (props: { src?: string }) => { const ctx = useContext(APPContext) + const path = `${ctx.path}/doc.md` const originCode = modules[`${ctx.path}/demos/${props.src}`] try { const highlightedCode = hljs.highlightAuto(originCode, ['jsx']).value @@ -22,7 +23,7 @@ const CodeBlock: FunctionComponent = (props: { src?: string }) => { </pre> </DemoBlock> ) - } catch(e) { + } catch (e) { console.log('e', e) return <></> } From 3301a0f013d229dff03838266d2498cbcd3335dc Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 5 Feb 2025 13:47:28 +0800 Subject: [PATCH 14/40] =?UTF-8?q?refactor:=20=E6=89=93=E5=8C=85=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=88=9D=E5=A7=8B=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + index.html | 2 +- package.json | 15 +- src/packages/popup/doc.taro.md | 10 +- src/packages/uploader/doc.en-US.md | 20 +- src/sites/assets/styles/variables.scss | 2 +- src/sites/config/env.ts | 2 +- .../doc/components/demo-preview/index.ts | 3 - src/sites/doc/components/header/index.ts | 2 - src/sites/doc/components/nav/index.ts | 3 - src/sites/{ => sites-react}/doc/App.scss | 0 src/sites/{ => sites-react}/doc/App.tsx | 13 +- .../components/demo-preview/demo-preview.scss | 0 .../components/demo-preview/demo-preview.tsx | 0 .../doc/components/demo-preview/index.ts | 3 + .../doc/components/demoblock/basedUtil.ts | 0 .../doc/components/demoblock/codeblock.tsx | 0 .../doc/components/demoblock/demoblock.scss | 0 .../doc/components/demoblock/demoblock.tsx | 0 .../doc/components/demoblock/index.ts | 0 .../doc/components/header/header.scss | 16 +- .../doc/components/header/header.tsx | 5 +- .../doc/components/header/index.ts | 2 + .../doc/components/issue/index.ts | 0 .../doc/components/issue/issue.scss | 0 .../doc/components/issue/issue.tsx | 0 .../sites-react/doc/components/nav/index.ts | 3 + .../doc/components/nav/nav.scss | 0 .../doc/components/nav/nav.tsx | 0 .../doc/components/search/search.scss | 2 +- .../doc/components/search/search.tsx | 2 +- src/sites/{ => sites-react}/doc/context.ts | 0 src/sites/sites-react/doc/docs.taro.ts | 363 ++++++++++++++++++ src/sites/sites-react/doc/docs.ts | 359 +++++++++++++++++ .../docs/react/contributing-react.en-US.md | 0 .../doc/docs/react/contributing-react.md | 0 .../docs/react/international-react.en-US.md | 0 .../doc/docs/react/international-react.md | 0 .../doc/docs/react/intro-react.en-US.md | 0 .../doc/docs/react/intro-react.md | 0 .../doc/docs/react/migrate-from-v1.en-US.md | 0 .../doc/docs/react/migrate-from-v1.md | 0 .../doc/docs/react/migrate-from-v2.en-US.md | 0 .../doc/docs/react/migrate-from-v2.md | 0 .../docs/react/official-theme-react.en-US.md | 0 .../doc/docs/react/official-theme-react.md | 0 .../doc/docs/react/start-react.en-US.md | 0 .../doc/docs/react/start-react.md | 0 .../doc/docs/react/theme-react.en-US.md | 0 .../doc/docs/react/theme-react.md | 0 .../doc/docs/taro/contributing-react.en-US.md | 0 .../doc/docs/taro/contributing-react.md | 0 .../docs/taro/international-react.en-US.md | 0 .../doc/docs/taro/international-react.md | 0 .../doc/docs/taro/intro-react.en-US.md | 0 .../doc/docs/taro/intro-react.md | 0 .../doc/docs/taro/migrate-from-v1.md | 0 .../doc/docs/taro/migrate-from-v2.md | 0 .../docs/taro/official-theme-react.en-US.md | 0 .../doc/docs/taro/official-theme-react.md | 0 .../doc/docs/taro/start-react.en-US.md | 0 .../doc/docs/taro/start-react.md | 0 .../doc/docs/taro/theme-react.en-US.md | 0 .../doc/docs/taro/theme-react.md | 0 src/sites/{ => sites-react}/doc/main.tsx | 4 +- src/sites/{ => sites-react}/doc/router.ts | 4 +- src/sites/theme/components/header/header.scss | 8 +- vite.config.demo.ts | 126 ++++++ vite.config.site.taro.ts | 0 vite.config.site.ts | 92 +++-- 70 files changed, 975 insertions(+), 87 deletions(-) delete mode 100644 src/sites/doc/components/demo-preview/index.ts delete mode 100644 src/sites/doc/components/header/index.ts delete mode 100644 src/sites/doc/components/nav/index.ts rename src/sites/{ => sites-react}/doc/App.scss (100%) rename src/sites/{ => sites-react}/doc/App.tsx (92%) rename src/sites/{ => sites-react}/doc/components/demo-preview/demo-preview.scss (100%) rename src/sites/{ => sites-react}/doc/components/demo-preview/demo-preview.tsx (100%) create mode 100644 src/sites/sites-react/doc/components/demo-preview/index.ts rename src/sites/{ => sites-react}/doc/components/demoblock/basedUtil.ts (100%) rename src/sites/{ => sites-react}/doc/components/demoblock/codeblock.tsx (100%) rename src/sites/{ => sites-react}/doc/components/demoblock/demoblock.scss (100%) rename src/sites/{ => sites-react}/doc/components/demoblock/demoblock.tsx (100%) rename src/sites/{ => sites-react}/doc/components/demoblock/index.ts (100%) rename src/sites/{ => sites-react}/doc/components/header/header.scss (97%) rename src/sites/{ => sites-react}/doc/components/header/header.tsx (99%) create mode 100644 src/sites/sites-react/doc/components/header/index.ts rename src/sites/{ => sites-react}/doc/components/issue/index.ts (100%) rename src/sites/{ => sites-react}/doc/components/issue/issue.scss (100%) rename src/sites/{ => sites-react}/doc/components/issue/issue.tsx (100%) create mode 100644 src/sites/sites-react/doc/components/nav/index.ts rename src/sites/{ => sites-react}/doc/components/nav/nav.scss (100%) rename src/sites/{ => sites-react}/doc/components/nav/nav.tsx (100%) rename src/sites/{ => sites-react}/doc/components/search/search.scss (94%) rename src/sites/{ => sites-react}/doc/components/search/search.tsx (98%) rename src/sites/{ => sites-react}/doc/context.ts (100%) create mode 100644 src/sites/sites-react/doc/docs.taro.ts create mode 100644 src/sites/sites-react/doc/docs.ts rename src/sites/{ => sites-react}/doc/docs/react/contributing-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/contributing-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/international-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/international-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/intro-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/intro-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/migrate-from-v1.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/migrate-from-v1.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/migrate-from-v2.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/migrate-from-v2.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/official-theme-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/official-theme-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/start-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/start-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/theme-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/react/theme-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/contributing-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/contributing-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/international-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/international-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/intro-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/intro-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/migrate-from-v1.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/migrate-from-v2.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/official-theme-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/official-theme-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/start-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/start-react.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/theme-react.en-US.md (100%) rename src/sites/{ => sites-react}/doc/docs/taro/theme-react.md (100%) rename src/sites/{ => sites-react}/doc/main.tsx (88%) rename src/sites/{ => sites-react}/doc/router.ts (93%) create mode 100644 vite.config.demo.ts create mode 100644 vite.config.site.taro.ts diff --git a/.gitignore b/.gitignore index f56e3aa29f..54d4f200c4 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ node_modules .npmrc /dist /dist-demo +/dist-site /libs /jd/upload.js # yarn.lock diff --git a/index.html b/index.html index 47e045264c..738380c63b 100644 --- a/index.html +++ b/index.html @@ -49,7 +49,7 @@ continue.</strong> </noscript> <div id="doc"></div> - <script type="module" src="/src/sites/doc/main.tsx"></script> + <script type="module" src="/src/sites/sites-react/doc/main.tsx"></script> <script> //分享配置 var shareOption = { diff --git a/package.json b/package.json index 7e8f266dec..b4e0ff2a4b 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "changelog": "node ./scripts/generate-changelog.js", "clone:jdharmony": "node ./scripts/harmony/clone-jdharmony.js", "dev": "vite --open --force", + "dev:site:taro": "tsc && vite --force --config vite.config.site.taro.ts", "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jrkf": "VITE_APP_PROJECT_ID=jrkf vite --open --force", "dev:taro:rn:dark": "THEME=dark pnpm dev:taro:rn", @@ -64,12 +65,14 @@ "build": "node ./scripts/replace-css-var.js && npm run checked && node scripts/build.mjs", "build:taro": "node ./scripts/replace-css-var.js && npm run checked:taro && node scripts/build-taro.mjs", "build:taro:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp node scripts/build-taro.mjs", - "build:site": "npm run checked && vite build --config vite.config.site.ts", - "build:site:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", - "build:taro:site": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:jdtaro:site": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:taro:site:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:jstaro:site:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:demo": "npm run checked && vite build --config vite.config.demo.ts", + "build:demo:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", + "build:taro:demo": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:site": "vite build --config vite.config.site.ts", + "build:taro:site": "vite build --config vite.config.site.taro.ts", + "build:jdtaro:demo": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:taro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:jstaro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "generate:file": "node scripts/generate-nutui.js", "generate:themes": "node scripts/generate-themes.js", "generate:themes-dev": "node scripts/generate-themes-dev.js", diff --git a/src/packages/popup/doc.taro.md b/src/packages/popup/doc.taro.md index 5badf6c610..33a1f4807b 100644 --- a/src/packages/popup/doc.taro.md +++ b/src/packages/popup/doc.taro.md @@ -52,14 +52,6 @@ import { Popup } from '@nutui/nutui-react-taro' ::: -<!-- ### 指定节点挂载 - -:::demo - -<CodeBlock src='taro/demo6.tsx'></CodeBlock> - -::: --> - ### 多层堆叠 :::demo @@ -110,7 +102,7 @@ import { Popup } from '@nutui/nutui-react-taro' | description | 子标题/描述部分 | `ReactNode` | `-` | | destroyOnClose | 组件不可见时,卸载内容 | `boolean` | `false` | | round | 是否显示圆角 | `boolean` | `false` | -| portal | 指定节点挂载 | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | 指定节点挂载 | ``HTMLElement` \| `(() => HTMLElement)` \| null`` | `null` | | onClick | 点击弹框时触发 | `event: MouseEvent` | `-` | | onCloseIconClick | 点击关闭图标时触发 | `event: MouseEvent` | `-` | | onOpen | 打开弹框时触发 | `-` | `-` | diff --git a/src/packages/uploader/doc.en-US.md b/src/packages/uploader/doc.en-US.md index ddd803979b..3e774c0e4a 100644 --- a/src/packages/uploader/doc.en-US.md +++ b/src/packages/uploader/doc.en-US.md @@ -102,25 +102,25 @@ import { Uploader } from '@nutui/nutui-react' | deletable | Whether or not to show the delete button | `boolean` | `true` | | method | The http method for the upload request | `string` | `post` | | previewType | previewType | The built-in style of the uploaded list, two basic styles are supported picture, list | `string` -| capture | Picture [selection mode] (<https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#htmlattrdefcapture>"), directly bring up the camera | `string` | `false` | maxFileSize +| capture | Picture [selection mode](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#htmlattrdefcapture), directly bring up the camera | `string` | `false` | maxFileSize | maxFileSize | You can set the maximum file size (in bytes) for uploading | `number` \| `string` | `Number.MAX_VALUE` | | maxCount | File upload count limit | `number` \| `string` | `1` | | fit | Picture fill mode | `contain` \| `cover` \| `fill` \| `none` \| `scale-down` | `cover` | | clearInput | If or not you want to clear the `input` content, set it to `true` to support selecting the same file to upload over and over again | `boolean` | `true` | -| accept | Allowed file types to be uploaded, [Details] ("<https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#%E9%99%90%E5%88%B6%E5%85%81%E8%AE%> B8%E7%9A%84%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B") | `string` | `*` | -| uploadIcon | uploadRegion <a href=“#/zh-CN/icon”>Icon Name</a> | `React.ReactNode` | `-` | +| accept | Allowed file types to be uploaded, [Details](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#%E9%99%90%E5%88%B6%E5%85%81%E8%AE%B8%E7%9A%84%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B) | `string` | `*` | +| uploadIcon | uploadRegion <a href="#/zh-CN/icon">Icon Name</a> | `React.ReactNode` | `-` | | deleteIcon | Delete the icon name of the region | `React.ReactNode` | `-` | | uploadLabel | Text below the image in the upload area | `React. | multiple | Whether to support file multi-selection |`boolean`|`false`| | disabled | Whether to disable file uploading |`boolean`|`false`| -| beforeUpload | The beforeUpload function needs to return a`Promise`object |`(file: File[]) => Promise<File[] \| boolean>`|`-`| -| beforeDelete | Callback when deleting a file, does not remove it if the return value is false. Supports returning a`Promise`object, which is not removed when resolve(false) or reject |`(file: FileItem, files: FileItem[]) => boolean`|`-`| -| onOversize | Triggered when file size exceeds limit |`(file: File[]) => void`|`-`| +| beforeUpload | The beforeUpload function needs to return a`Promise`object |```(file: File[]) => Promise<File[] \| boolean>```|`-`| +| beforeDelete | Callback when deleting a file, does not remove it if the return value is false. Supports returning a`Promise`object, which is not removed when resolve(false) or reject |```(file: FileItem, files: FileItem[]) => boolean```|`-`| +| onOversize | Triggered when file size exceeds limit |```(file: File[]) => void```|`-`| | onOverCount | Triggered when the number of files exceeds the limit |`(count: number) => void`|`-`| -| onChange | Triggered when the list of uploaded files changes |`(files: FileItem[]) => void`|`-`| -| onDelete | Triggered when clicked to delete a file |`(file: FileItem, files: FileItem[]) => void`|`-`| -| onFileItemClick | Triggered when a file is uploaded successfully |`(file: FileItem, index: number) => void`|`-`| -| onUploadQueueChange | Triggered when the image upload queue changes |`(tasks: FileItem[]) => void`|`-` | +| onChange | Triggered when the list of uploaded files changes |```(files: FileItem[]) => void```|`-`| +| onDelete | Triggered when clicked to delete a file |```(file: FileItem, files: FileItem[]) => void```|`-`| +| onFileItemClick | Triggered when a file is uploaded successfully |```(file: FileItem, index: number) => void```|`-`| +| onUploadQueueChange | Triggered when the image upload queue changes |```(tasks: FileItem[]) => void```|`-` | > Note: accept, capture and multiple are the native attributes of the browser input tag, the support for these attributes varies among mobile models, so there may be some compatibility issues under different models and WebViews. diff --git a/src/sites/assets/styles/variables.scss b/src/sites/assets/styles/variables.scss index 1ff4609e4c..02a12925ca 100644 --- a/src/sites/assets/styles/variables.scss +++ b/src/sites/assets/styles/variables.scss @@ -26,7 +26,7 @@ $theme-red-actice: #fff; $theme-red-select-border: #f0f2f5; $theme-red-select-word: #666; $theme-red-select-bg: #fff; -$theme-red-header-bg: url('@/assets/images/header-bg.png'); +$theme-red-header-bg: url('@/sites/assets/images/header-bg.png'); $theme-red-footer-word1: #1a1a1a; $theme-red-footer-word2: #666; $theme-red-footer-word3: #1d1d21; diff --git a/src/sites/config/env.ts b/src/sites/config/env.ts index 930aa30c2c..3a2a1ebaea 100644 --- a/src/sites/config/env.ts +++ b/src/sites/config/env.ts @@ -12,7 +12,7 @@ type EnvConfig = { const config: EnvConfig = { baseUrl: '', - isPrd: true // 是否为线上 + isPrd: true, // 是否为线上 }; switch ((import.meta as any).env.MODE) { case 'development': diff --git a/src/sites/doc/components/demo-preview/index.ts b/src/sites/doc/components/demo-preview/index.ts deleted file mode 100644 index 584a5be520..0000000000 --- a/src/sites/doc/components/demo-preview/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DemoPreview from '@/sites/doc/components/demo-preview/demo-preview' - -export default DemoPreview diff --git a/src/sites/doc/components/header/index.ts b/src/sites/doc/components/header/index.ts deleted file mode 100644 index daa1dc13fe..0000000000 --- a/src/sites/doc/components/header/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import Header from '@/sites/doc/components/header/header' -export default Header diff --git a/src/sites/doc/components/nav/index.ts b/src/sites/doc/components/nav/index.ts deleted file mode 100644 index 01ec18ad30..0000000000 --- a/src/sites/doc/components/nav/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Nav from '@/sites/doc/components/nav/nav' - -export default Nav diff --git a/src/sites/doc/App.scss b/src/sites/sites-react/doc/App.scss similarity index 100% rename from src/sites/doc/App.scss rename to src/sites/sites-react/doc/App.scss diff --git a/src/sites/doc/App.tsx b/src/sites/sites-react/doc/App.tsx similarity index 92% rename from src/sites/doc/App.tsx rename to src/sites/sites-react/doc/App.tsx index a2be6f8ca0..906fa4d98b 100644 --- a/src/sites/doc/App.tsx +++ b/src/sites/sites-react/doc/App.tsx @@ -3,11 +3,11 @@ import { HashRouter, Routes, Route, useLocation } from 'react-router-dom' import { MDXProvider } from '@mdx-js/react' import './App.scss' import APPContext from './context' -import Nav from '@/sites/doc/components/nav' -import Header from '@/sites/doc/components/header' -import DemoPreview from '@/sites/doc/components/demo-preview' -import Issue from '@/sites/doc/components/issue' -import { getComponentName } from '@/sites/assets/util' +import Nav from '../doc/components/nav' +import Header from '../doc/components/header' +import DemoPreview from '../doc/components/demo-preview' +import Issue from '..//doc/components/issue' +import { getComponentName } from '../../assets/util' import { routes as routers, guideEnRoutes, @@ -17,7 +17,7 @@ import { } from './router' import loadable from '@loadable/component' import CodeBlock from './components/demoblock/codeblock' -import { BackTop } from '../../packages/backtop/backtop' +import { BackTop } from '../../../packages/backtop/backtop' const Title = () => { let location = useLocation() @@ -92,6 +92,7 @@ const Content = () => { ...guideTaroRoutes, ...guideEnTaroRoutes, ] + console.log(guideEnRoutes) return ( <div className="doc-content"> {!isGuide && ( diff --git a/src/sites/doc/components/demo-preview/demo-preview.scss b/src/sites/sites-react/doc/components/demo-preview/demo-preview.scss similarity index 100% rename from src/sites/doc/components/demo-preview/demo-preview.scss rename to src/sites/sites-react/doc/components/demo-preview/demo-preview.scss diff --git a/src/sites/doc/components/demo-preview/demo-preview.tsx b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx similarity index 100% rename from src/sites/doc/components/demo-preview/demo-preview.tsx rename to src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx diff --git a/src/sites/sites-react/doc/components/demo-preview/index.ts b/src/sites/sites-react/doc/components/demo-preview/index.ts new file mode 100644 index 0000000000..750c18144c --- /dev/null +++ b/src/sites/sites-react/doc/components/demo-preview/index.ts @@ -0,0 +1,3 @@ +import DemoPreview from '../../../doc/components/demo-preview/demo-preview' + +export default DemoPreview diff --git a/src/sites/doc/components/demoblock/basedUtil.ts b/src/sites/sites-react/doc/components/demoblock/basedUtil.ts similarity index 100% rename from src/sites/doc/components/demoblock/basedUtil.ts rename to src/sites/sites-react/doc/components/demoblock/basedUtil.ts diff --git a/src/sites/doc/components/demoblock/codeblock.tsx b/src/sites/sites-react/doc/components/demoblock/codeblock.tsx similarity index 100% rename from src/sites/doc/components/demoblock/codeblock.tsx rename to src/sites/sites-react/doc/components/demoblock/codeblock.tsx diff --git a/src/sites/doc/components/demoblock/demoblock.scss b/src/sites/sites-react/doc/components/demoblock/demoblock.scss similarity index 100% rename from src/sites/doc/components/demoblock/demoblock.scss rename to src/sites/sites-react/doc/components/demoblock/demoblock.scss diff --git a/src/sites/doc/components/demoblock/demoblock.tsx b/src/sites/sites-react/doc/components/demoblock/demoblock.tsx similarity index 100% rename from src/sites/doc/components/demoblock/demoblock.tsx rename to src/sites/sites-react/doc/components/demoblock/demoblock.tsx diff --git a/src/sites/doc/components/demoblock/index.ts b/src/sites/sites-react/doc/components/demoblock/index.ts similarity index 100% rename from src/sites/doc/components/demoblock/index.ts rename to src/sites/sites-react/doc/components/demoblock/index.ts diff --git a/src/sites/doc/components/header/header.scss b/src/sites/sites-react/doc/components/header/header.scss similarity index 97% rename from src/sites/doc/components/header/header.scss rename to src/sites/sites-react/doc/components/header/header.scss index e118ab2796..c6d116a3aa 100644 --- a/src/sites/doc/components/header/header.scss +++ b/src/sites/sites-react/doc/components/header/header.scss @@ -130,7 +130,7 @@ bottom: 3px; left: 50%; margin-left: -17.5px; - background: url('../../../assets/images/item-active.png'); + background: url('../../../../assets/images/item-active.png'); } } &:last-of-type { @@ -143,12 +143,12 @@ height: 26px; vertical-align: middle; background-repeat: no-repeat; - background-image: url('../../../assets/images/icon-user.png'); + background-image: url('../../../../assets/images/icon-user.png'); background-size: 26px; &.gitee { margin-left: 8px; - background-image: url('../../../assets/images/icon-gitee.png'); + background-image: url('../../../../assets/images/icon-gitee.png'); } } } @@ -207,10 +207,10 @@ .header { &-logo { .logo-link { - background: url('../../../assets/images/logo-header-white.png') + background: url('../../../../assets/images/logo-header-white.png') no-repeat center/100%; &.react { - background: url('../../../assets/images/logo-header-white-react.png') + background: url('../../../../assets/images/logo-header-white-react.png') no-repeat center/100%; } &.jdb { @@ -268,12 +268,12 @@ position: relative; &.select-down { .header-select-hd { - background-image: url('../../../assets/images/icon-select-white-down.png'); + background-image: url('../../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../../assets/images/icon-select-white-up.png'); + background-image: url('../../../../assets/images/icon-select-white-up.png'); } } .guild-line { @@ -673,7 +673,7 @@ &-box { &.select-down { .header-select-hd { - background-image: url('../../../assets/images/icon-select-white-down.png'); + background-image: url('../../../../assets/images/icon-select-white-down.png'); } } &.select-up { diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/sites-react/doc/components/header/header.tsx similarity index 99% rename from src/sites/doc/components/header/header.tsx rename to src/sites/sites-react/doc/components/header/header.tsx index a0bce3b0ad..c4519386c3 100644 --- a/src/sites/doc/components/header/header.tsx +++ b/src/sites/sites-react/doc/components/header/header.tsx @@ -1,13 +1,12 @@ import React, { useEffect, useState } from 'react' // @ts-ignore import { version } from '/package.json' -import config from '../../../config/env' +import config from '../../../../config/env' import './header.scss' import { useNavigate, useLocation } from 'react-router-dom' import { CSSTransition } from 'react-transition-group' import Search from '../search/search' import { - SiteVueTaro, SiteReactTaro, header, versions, @@ -20,7 +19,7 @@ import { moreGuide, businessGuide, products, -} from '../../../config/index' +} from '../../../../config/index' const Header = () => { const navigate = useNavigate() const location = useLocation() diff --git a/src/sites/sites-react/doc/components/header/index.ts b/src/sites/sites-react/doc/components/header/index.ts new file mode 100644 index 0000000000..989f813ead --- /dev/null +++ b/src/sites/sites-react/doc/components/header/index.ts @@ -0,0 +1,2 @@ +import Header from '../../../doc/components/header/header' +export default Header diff --git a/src/sites/doc/components/issue/index.ts b/src/sites/sites-react/doc/components/issue/index.ts similarity index 100% rename from src/sites/doc/components/issue/index.ts rename to src/sites/sites-react/doc/components/issue/index.ts diff --git a/src/sites/doc/components/issue/issue.scss b/src/sites/sites-react/doc/components/issue/issue.scss similarity index 100% rename from src/sites/doc/components/issue/issue.scss rename to src/sites/sites-react/doc/components/issue/issue.scss diff --git a/src/sites/doc/components/issue/issue.tsx b/src/sites/sites-react/doc/components/issue/issue.tsx similarity index 100% rename from src/sites/doc/components/issue/issue.tsx rename to src/sites/sites-react/doc/components/issue/issue.tsx diff --git a/src/sites/sites-react/doc/components/nav/index.ts b/src/sites/sites-react/doc/components/nav/index.ts new file mode 100644 index 0000000000..99e5eeb8a4 --- /dev/null +++ b/src/sites/sites-react/doc/components/nav/index.ts @@ -0,0 +1,3 @@ +import Nav from '../../../doc/components/nav/nav' + +export default Nav diff --git a/src/sites/doc/components/nav/nav.scss b/src/sites/sites-react/doc/components/nav/nav.scss similarity index 100% rename from src/sites/doc/components/nav/nav.scss rename to src/sites/sites-react/doc/components/nav/nav.scss diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/sites-react/doc/components/nav/nav.tsx similarity index 100% rename from src/sites/doc/components/nav/nav.tsx rename to src/sites/sites-react/doc/components/nav/nav.tsx diff --git a/src/sites/doc/components/search/search.scss b/src/sites/sites-react/doc/components/search/search.scss similarity index 94% rename from src/sites/doc/components/search/search.scss rename to src/sites/sites-react/doc/components/search/search.scss index dc27b2f741..08d5cce62d 100644 --- a/src/sites/doc/components/search/search.scss +++ b/src/sites/sites-react/doc/components/search/search.scss @@ -9,7 +9,7 @@ font-size: 14px; vertical-align: middle; background-color: transparent; - background-image: url('../../../assets/images/input-search.png'); + background-image: url('../../../../assets/images/input-search.png'); background-repeat: no-repeat; font-size: 14px; color: #fff; diff --git a/src/sites/doc/components/search/search.tsx b/src/sites/sites-react/doc/components/search/search.tsx similarity index 98% rename from src/sites/doc/components/search/search.tsx rename to src/sites/sites-react/doc/components/search/search.tsx index 4291bac671..4a7833504d 100644 --- a/src/sites/doc/components/search/search.tsx +++ b/src/sites/sites-react/doc/components/search/search.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react' import './search.scss' import { Link, useNavigate } from 'react-router-dom' -import { nav } from '../../../config' +import { nav } from '../../../../config' export default function Search() { const navList = nav.flatMap((item) => item.packages).filter((i) => i.show) const [searchVal, setSearchVal] = useState('') diff --git a/src/sites/doc/context.ts b/src/sites/sites-react/doc/context.ts similarity index 100% rename from src/sites/doc/context.ts rename to src/sites/sites-react/doc/context.ts diff --git a/src/sites/sites-react/doc/docs.taro.ts b/src/sites/sites-react/doc/docs.taro.ts new file mode 100644 index 0000000000..0e866e4365 --- /dev/null +++ b/src/sites/sites-react/doc/docs.taro.ts @@ -0,0 +1,363 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw' +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw' +import CellGroup from '@/packages/cellgroup/doc.md?raw' +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw' +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw' +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw' +import Col from '@/packages/col/doc.md?raw' +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw' +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw' +import GridItem from '@/packages/griditem/doc.md?raw' +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw' +import Row from '@/packages/row/doc.md?raw' +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw' +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw' +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw' +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw' +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw' +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw' +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw' +import HoverButtonItem from '@/packages/hoverbuttonitem/doc.md?raw' +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw' +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw' +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw' +import SideBarItem from '@/packages/sidebaritem/doc.md?raw' +import SideNavBarItem from '@/packages/sidenavbaritem/doc.md?raw' +import SubSideNavBar from '@/packages/subsidenavbar/doc.md?raw' +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw' +import TabbarItem from '@/packages/tabbaritem/doc.md?raw' +import TabPane from '@/packages/tabpane/doc.md?raw' +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw' +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw' +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw' +import CalendarItem from '@/packages/calendaritem/doc.md?raw' +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw' +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw' +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw' +import CheckboxGroup from '@/packages/checkboxgroup/doc.md?raw' +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw' +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw' +import FormItem from '@/packages/formitem/doc.md?raw' +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw' +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw' +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw' +import MenuItem from '@/packages/menuitem/doc.md?raw' +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw' +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw' +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw' +import RadioGroup from '@/packages/radiogroup/doc.md?raw' +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw' +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw' +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw' +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw' +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw' +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw' +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw' +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw' +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw' +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw' +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw' +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw' +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw' +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw' +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw' +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw' +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw' +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw' +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw' +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw' +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw' +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw' +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw' +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw' +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw' +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw' +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw' +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw' +import AvatarGroup from '@/packages/avatargroup/doc.md?raw' +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw' +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw' +import CollapseItem from '@/packages/collapseitem/doc.md?raw' +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw' +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw' +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw' +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw' +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw' +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw' +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw' +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw' +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw' +import Step from '@/packages/step/doc.md?raw' +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw' +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw' +import SwiperItem from '@/packages/swiperitem/doc.md?raw' +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw' +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw' +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw' +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw' +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw' +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw' +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw' +import TimeDetail from '@/packages/timedetail/doc.md?raw' +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw' +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw' +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw' +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw' + +export const routers = ['Button','Cell','CellGroup','ConfigProvider','Image','Overlay','Col','Divider','Grid','GridItem','Layout','Row','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','HoverButtonItem','NavBar','SideNavBar','SideBar','SideBarItem','SideNavBarItem','SubSideNavBar','Tabbar','TabbarItem','TabPane','Tabs','Address','Calendar','CalendarItem','CalendarCard','Cascader','Checkbox','CheckboxGroup','DatePicker','Form','FormItem','Input','InputNumber','Menu','MenuItem','NumberKeyboard','Picker','Radio','RadioGroup','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','AvatarGroup','CircleProgress','Collapse','CollapseItem','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Step','Steps','Swiper','SwiperItem','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeDetail','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,CellGroup,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,Col,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,GridItem,LayoutzhTW,Layouttaro,LayoutenUS,Layout,Row,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,HoverButtonItem,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,SideBarItem,SideNavBarItem,SubSideNavBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabbarItem,TabPane,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarItem,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,CheckboxGroup,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,FormItem,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,MenuItem,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RadioGroup,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,AvatarGroup,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CollapseItem,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,Step,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,SwiperItem,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeDetail,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/sites-react/doc/docs.ts b/src/sites/sites-react/doc/docs.ts new file mode 100644 index 0000000000..ef1bfc3344 --- /dev/null +++ b/src/sites/sites-react/doc/docs.ts @@ -0,0 +1,359 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw'; +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw'; +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw'; +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw'; +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw'; +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw'; +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw'; +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw'; +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw'; +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw'; +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw'; +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw'; +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw'; +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw'; +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw'; +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw'; +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw'; +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw'; +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw'; +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw'; +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw'; +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw'; +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw'; +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw'; +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw'; +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw'; +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw'; +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw'; +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw'; +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw'; +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw'; +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw'; +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw'; +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw'; +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw'; +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw'; +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw'; +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw'; +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw'; +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw'; +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw'; +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw'; +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw'; +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw'; +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw'; +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw'; +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw'; +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw'; +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw'; +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw'; +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw'; +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw'; +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw'; +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw'; +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw'; +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw'; +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw'; +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw'; +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw'; +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw'; +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw'; +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw'; +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw'; +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw'; +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw'; +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw'; +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw'; +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw'; +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw'; +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw'; +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw'; +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw'; +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw'; +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw'; +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw'; +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw'; +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw'; +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw'; +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw'; +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw'; +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw'; +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw'; +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw'; +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw'; +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw'; + +import CellScss from '@/packages/cell/demo.scss?raw'; +import OverlayScss from '@/packages/overlay/demo.scss?raw'; +import NavBarScss from '@/packages/navbar/demo.scss?raw'; +import CalendarScss from '@/packages/calendar/demo.scss?raw'; +import SignatureScss from '@/packages/signature/demo.scss?raw'; +import NoticeBarScss from '@/packages/noticebar/demo.scss?raw'; +import PopoverScss from '@/packages/popover/demo.scss?raw'; +import SkeletonScss from '@/packages/skeleton/demo.scss?raw'; +import AvatarScss from '@/packages/avatar/demo.scss?raw'; +import CircleProgressScss from '@/packages/circleprogress/demo.scss?raw'; +import SwiperScss from '@/packages/swiper/demo.scss?raw'; +import TourScss from '@/packages/tour/demo.scss?raw'; +import BarrageScss from '@/packages/barrage/demo.scss?raw'; +import TrendArrowScss from '@/packages/trendarrow/demo.scss?raw'; + +export const scssRaws = { CellScss,OverlayScss,NavBarScss,CalendarScss,SignatureScss,NoticeBarScss,PopoverScss,SkeletonScss,AvatarScss,CircleProgressScss,SwiperScss,TourScss,BarrageScss,TrendArrowScss } +export const routers = ['Button','Cell','ConfigProvider','Image','Overlay','Divider','Grid','Layout','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','NavBar','SideNavBar','SideBar','Tabbar','Tabs','Address','Calendar','CalendarCard','Cascader','Checkbox','DatePicker','Form','Input','InputNumber','Menu','NumberKeyboard','Picker','Radio','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','CircleProgress','Collapse','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Steps','Swiper','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,LayoutzhTW,Layouttaro,LayoutenUS,Layout,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/doc/docs/react/contributing-react.en-US.md b/src/sites/sites-react/doc/docs/react/contributing-react.en-US.md similarity index 100% rename from src/sites/doc/docs/react/contributing-react.en-US.md rename to src/sites/sites-react/doc/docs/react/contributing-react.en-US.md diff --git a/src/sites/doc/docs/react/contributing-react.md b/src/sites/sites-react/doc/docs/react/contributing-react.md similarity index 100% rename from src/sites/doc/docs/react/contributing-react.md rename to src/sites/sites-react/doc/docs/react/contributing-react.md diff --git a/src/sites/doc/docs/react/international-react.en-US.md b/src/sites/sites-react/doc/docs/react/international-react.en-US.md similarity index 100% rename from src/sites/doc/docs/react/international-react.en-US.md rename to src/sites/sites-react/doc/docs/react/international-react.en-US.md diff --git a/src/sites/doc/docs/react/international-react.md b/src/sites/sites-react/doc/docs/react/international-react.md similarity index 100% rename from src/sites/doc/docs/react/international-react.md rename to src/sites/sites-react/doc/docs/react/international-react.md diff --git a/src/sites/doc/docs/react/intro-react.en-US.md b/src/sites/sites-react/doc/docs/react/intro-react.en-US.md similarity index 100% rename from src/sites/doc/docs/react/intro-react.en-US.md rename to src/sites/sites-react/doc/docs/react/intro-react.en-US.md diff --git a/src/sites/doc/docs/react/intro-react.md b/src/sites/sites-react/doc/docs/react/intro-react.md similarity index 100% rename from src/sites/doc/docs/react/intro-react.md rename to src/sites/sites-react/doc/docs/react/intro-react.md diff --git a/src/sites/doc/docs/react/migrate-from-v1.en-US.md b/src/sites/sites-react/doc/docs/react/migrate-from-v1.en-US.md similarity index 100% rename from src/sites/doc/docs/react/migrate-from-v1.en-US.md rename to src/sites/sites-react/doc/docs/react/migrate-from-v1.en-US.md diff --git a/src/sites/doc/docs/react/migrate-from-v1.md b/src/sites/sites-react/doc/docs/react/migrate-from-v1.md similarity index 100% rename from src/sites/doc/docs/react/migrate-from-v1.md rename to src/sites/sites-react/doc/docs/react/migrate-from-v1.md diff --git a/src/sites/doc/docs/react/migrate-from-v2.en-US.md b/src/sites/sites-react/doc/docs/react/migrate-from-v2.en-US.md similarity index 100% rename from src/sites/doc/docs/react/migrate-from-v2.en-US.md rename to src/sites/sites-react/doc/docs/react/migrate-from-v2.en-US.md diff --git a/src/sites/doc/docs/react/migrate-from-v2.md b/src/sites/sites-react/doc/docs/react/migrate-from-v2.md similarity index 100% rename from src/sites/doc/docs/react/migrate-from-v2.md rename to src/sites/sites-react/doc/docs/react/migrate-from-v2.md diff --git a/src/sites/doc/docs/react/official-theme-react.en-US.md b/src/sites/sites-react/doc/docs/react/official-theme-react.en-US.md similarity index 100% rename from src/sites/doc/docs/react/official-theme-react.en-US.md rename to src/sites/sites-react/doc/docs/react/official-theme-react.en-US.md diff --git a/src/sites/doc/docs/react/official-theme-react.md b/src/sites/sites-react/doc/docs/react/official-theme-react.md similarity index 100% rename from src/sites/doc/docs/react/official-theme-react.md rename to src/sites/sites-react/doc/docs/react/official-theme-react.md diff --git a/src/sites/doc/docs/react/start-react.en-US.md b/src/sites/sites-react/doc/docs/react/start-react.en-US.md similarity index 100% rename from src/sites/doc/docs/react/start-react.en-US.md rename to src/sites/sites-react/doc/docs/react/start-react.en-US.md diff --git a/src/sites/doc/docs/react/start-react.md b/src/sites/sites-react/doc/docs/react/start-react.md similarity index 100% rename from src/sites/doc/docs/react/start-react.md rename to src/sites/sites-react/doc/docs/react/start-react.md diff --git a/src/sites/doc/docs/react/theme-react.en-US.md b/src/sites/sites-react/doc/docs/react/theme-react.en-US.md similarity index 100% rename from src/sites/doc/docs/react/theme-react.en-US.md rename to src/sites/sites-react/doc/docs/react/theme-react.en-US.md diff --git a/src/sites/doc/docs/react/theme-react.md b/src/sites/sites-react/doc/docs/react/theme-react.md similarity index 100% rename from src/sites/doc/docs/react/theme-react.md rename to src/sites/sites-react/doc/docs/react/theme-react.md diff --git a/src/sites/doc/docs/taro/contributing-react.en-US.md b/src/sites/sites-react/doc/docs/taro/contributing-react.en-US.md similarity index 100% rename from src/sites/doc/docs/taro/contributing-react.en-US.md rename to src/sites/sites-react/doc/docs/taro/contributing-react.en-US.md diff --git a/src/sites/doc/docs/taro/contributing-react.md b/src/sites/sites-react/doc/docs/taro/contributing-react.md similarity index 100% rename from src/sites/doc/docs/taro/contributing-react.md rename to src/sites/sites-react/doc/docs/taro/contributing-react.md diff --git a/src/sites/doc/docs/taro/international-react.en-US.md b/src/sites/sites-react/doc/docs/taro/international-react.en-US.md similarity index 100% rename from src/sites/doc/docs/taro/international-react.en-US.md rename to src/sites/sites-react/doc/docs/taro/international-react.en-US.md diff --git a/src/sites/doc/docs/taro/international-react.md b/src/sites/sites-react/doc/docs/taro/international-react.md similarity index 100% rename from src/sites/doc/docs/taro/international-react.md rename to src/sites/sites-react/doc/docs/taro/international-react.md diff --git a/src/sites/doc/docs/taro/intro-react.en-US.md b/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md similarity index 100% rename from src/sites/doc/docs/taro/intro-react.en-US.md rename to src/sites/sites-react/doc/docs/taro/intro-react.en-US.md diff --git a/src/sites/doc/docs/taro/intro-react.md b/src/sites/sites-react/doc/docs/taro/intro-react.md similarity index 100% rename from src/sites/doc/docs/taro/intro-react.md rename to src/sites/sites-react/doc/docs/taro/intro-react.md diff --git a/src/sites/doc/docs/taro/migrate-from-v1.md b/src/sites/sites-react/doc/docs/taro/migrate-from-v1.md similarity index 100% rename from src/sites/doc/docs/taro/migrate-from-v1.md rename to src/sites/sites-react/doc/docs/taro/migrate-from-v1.md diff --git a/src/sites/doc/docs/taro/migrate-from-v2.md b/src/sites/sites-react/doc/docs/taro/migrate-from-v2.md similarity index 100% rename from src/sites/doc/docs/taro/migrate-from-v2.md rename to src/sites/sites-react/doc/docs/taro/migrate-from-v2.md diff --git a/src/sites/doc/docs/taro/official-theme-react.en-US.md b/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md similarity index 100% rename from src/sites/doc/docs/taro/official-theme-react.en-US.md rename to src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md diff --git a/src/sites/doc/docs/taro/official-theme-react.md b/src/sites/sites-react/doc/docs/taro/official-theme-react.md similarity index 100% rename from src/sites/doc/docs/taro/official-theme-react.md rename to src/sites/sites-react/doc/docs/taro/official-theme-react.md diff --git a/src/sites/doc/docs/taro/start-react.en-US.md b/src/sites/sites-react/doc/docs/taro/start-react.en-US.md similarity index 100% rename from src/sites/doc/docs/taro/start-react.en-US.md rename to src/sites/sites-react/doc/docs/taro/start-react.en-US.md diff --git a/src/sites/doc/docs/taro/start-react.md b/src/sites/sites-react/doc/docs/taro/start-react.md similarity index 100% rename from src/sites/doc/docs/taro/start-react.md rename to src/sites/sites-react/doc/docs/taro/start-react.md diff --git a/src/sites/doc/docs/taro/theme-react.en-US.md b/src/sites/sites-react/doc/docs/taro/theme-react.en-US.md similarity index 100% rename from src/sites/doc/docs/taro/theme-react.en-US.md rename to src/sites/sites-react/doc/docs/taro/theme-react.en-US.md diff --git a/src/sites/doc/docs/taro/theme-react.md b/src/sites/sites-react/doc/docs/taro/theme-react.md similarity index 100% rename from src/sites/doc/docs/taro/theme-react.md rename to src/sites/sites-react/doc/docs/taro/theme-react.md diff --git a/src/sites/doc/main.tsx b/src/sites/sites-react/doc/main.tsx similarity index 88% rename from src/sites/doc/main.tsx rename to src/sites/sites-react/doc/main.tsx index 611a579cef..edbb32b1d5 100644 --- a/src/sites/doc/main.tsx +++ b/src/sites/sites-react/doc/main.tsx @@ -1,13 +1,13 @@ import React from 'react' import * as ReactDOM from 'react-dom/client' -import { isMobile } from '@/sites/assets/util' +import { isMobile } from '../../assets/util' import '@/sites/assets/styles/reset.scss' import '@/sites/assets/styles/md-style.scss' import App from './App' if (isMobile) { location.replace('demo.html') -} +} const rootElement = document.querySelector('#doc') diff --git a/src/sites/doc/router.ts b/src/sites/sites-react/doc/router.ts similarity index 93% rename from src/sites/doc/router.ts rename to src/sites/sites-react/doc/router.ts index f37724055e..3f99c2a5b3 100644 --- a/src/sites/doc/router.ts +++ b/src/sites/sites-react/doc/router.ts @@ -47,7 +47,7 @@ for (const path in modulesTaroPage) { }) } -const modulesDocs = import.meta.glob('/src/sites/doc/docs/react/*.md'); +const modulesDocs = import.meta.glob('/src/sites/sites-react/doc/docs/react/*.md'); for (const path in modulesDocs) { let name = (/docs\/react\/(.*).md/.exec(path) as any[])[1]; guideRoutes.push({ @@ -57,7 +57,7 @@ for (const path in modulesDocs) { }); } -const modulesEnDocs = import.meta.glob('/src/sites/doc/docs/react/*.en-US.md'); +const modulesEnDocs = import.meta.glob('/src/sites/sites-react/doc/docs/react/*.en-US.md'); for (const path in modulesEnDocs) { let name = (/docs\/react\/(.*).en-US.md/.exec(path) as any[])[1]; guideEnRoutes.push({ diff --git a/src/sites/theme/components/header/header.scss b/src/sites/theme/components/header/header.scss index a090f32d67..b1ae250808 100644 --- a/src/sites/theme/components/header/header.scss +++ b/src/sites/theme/components/header/header.scss @@ -209,12 +209,12 @@ &-box { &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); + background-image: url('../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); + background-image: url('../../../assets/images/icon-select-white-up.png'); } } } @@ -367,12 +367,12 @@ &-box { &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); + background-image: url('../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); + background-image: url('../../../assets/images/icon-select-white-up.png'); } } } diff --git a/vite.config.demo.ts b/vite.config.demo.ts new file mode 100644 index 0000000000..f89b305d4d --- /dev/null +++ b/vite.config.demo.ts @@ -0,0 +1,126 @@ +/// <reference types="vitest" /> +import { defineConfig, UserConfig } from 'vite' +import { resolve, join } from 'path' +// @ts-ignore +import atImport from 'postcss-import' +import autoprefixer from 'autoprefixer' +import config from './package.json' + +const projectID = process.env.VITE_APP_PROJECT_ID || '' + +let fileStr = `@import "@/styles/variables.scss";@import "@/sites/assets/styles/variables.scss";@import '@/styles/theme-default.scss';\n` +if (projectID) { + fileStr = `@import '@/styles/variables-${projectID}.scss';\n@import "@/sites/assets/styles/variables.scss";\n@import '@/styles/font-${projectID}/iconfont.css';\n@import '@/styles/theme-${projectID}.scss';\n` +} + +// https://vitejs.dev/config/ +export default defineConfig(async (): Promise<UserConfig> => { + return { + mode: 'production', + base: `/h5/react/${projectID === 'jmapp' ? 'jdesign' : '3x'}`, + resolve: { + alias: [ + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/loading.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/loading.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/global.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/global.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/pulltorefresh.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/pulltorefresh.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/loading.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/loading.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/global.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/global.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/pulltorefresh.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/pulltorefresh.json' + ), + }, + { + find: '@nutui/nutui-react/dist/locale/en-US', + replacement: resolve(__dirname, './src/locales/en-US.ts'), + }, + { + find: '@nutui/nutui-react-taro/dist/locales/en-US', + replacement: resolve(__dirname, './src/locales/en-US.ts'), + }, + { find: '@', replacement: resolve(__dirname, './src') }, + { + find: '@nutui/nutui-react', + replacement: resolve(__dirname, './src/packages/nutui.react.ts'), + }, + { + find: '@nutui/nutui-react-taro', + replacement: resolve(__dirname, './src/packages/nutui.react.taro.ts'), + }, + ], + }, + css: { + preprocessorOptions: { + scss: { + // example : additionalData: `@import "./src/dclearesign/styles/variables";` + // dont need include file extend .scss + api: 'modern-compiler', + additionalData: fileStr, + // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 + silenceDeprecations: ['import', 'global-builtin'], + }, + postcss: { + plugins: [ + atImport({ path: join(__dirname, 'src`') }), + autoprefixer({ + overrideBrowserslist: [ + '> 0.5%', + 'last 2 versions', + 'ie > 11', + 'iOS >= 10', + 'Android >= 5', + ], + }), + ], + }, + }, + }, + build: { + target: 'es2015', + outDir: `./dist-demo/${projectID === 'jmapp' ? 'jdesign' : '3x'}/`, + cssCodeSplit: true, + rollupOptions: { + input: { + mobile: resolve(__dirname, 'demo.html'), + }, + output: { + entryFileNames: `demo-${config.version}/[name].js`, + chunkFileNames: `demo-${config.version}/[name].js`, + assetFileNames: `demo-${config.version}/[name].[ext]`, + }, + }, + }, + } +}) diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vite.config.site.ts b/vite.config.site.ts index f89b305d4d..887b76ee31 100644 --- a/vite.config.site.ts +++ b/vite.config.site.ts @@ -1,9 +1,10 @@ /// <reference types="vitest" /> import { defineConfig, UserConfig } from 'vite' -import { resolve, join } from 'path' +import reactRefresh from '@vitejs/plugin-react' +import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' -import autoprefixer from 'autoprefixer' +import { readFileSync } from 'node:fs' import config from './package.json' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -12,12 +13,27 @@ let fileStr = `@import "@/styles/variables.scss";@import "@/sites/assets/styles/ if (projectID) { fileStr = `@import '@/styles/variables-${projectID}.scss';\n@import "@/sites/assets/styles/variables.scss";\n@import '@/styles/font-${projectID}/iconfont.css';\n@import '@/styles/theme-${projectID}.scss';\n` } +const refRandom = Math.random().toString(36).slice(-8) // https://vitejs.dev/config/ export default defineConfig(async (): Promise<UserConfig> => { + const mdx = await import('@mdx-js/rollup') + const remarkGfm = await import('remark-gfm') + const remarkDirective = await import('remark-directive') return { - mode: 'production', - base: `/h5/react/${projectID === 'jmapp' ? 'jdesign' : '3x'}`, + base: '/h5/react/3x', + server: { + port: 2021, + host: '0.0.0.0', + open: '/h5/react/3x/index.react.html', + proxy: { + '/devServer': { + target: 'https://nutui.jd.com', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/devServer/, ''), + }, + }, + }, resolve: { alias: [ { @@ -84,41 +100,69 @@ export default defineConfig(async (): Promise<UserConfig> => { css: { preprocessorOptions: { scss: { - // example : additionalData: `@import "./src/dclearesign/styles/variables";` - // dont need include file extend .scss + // example : additionalData: `@import "./src/design/styles/variables";` api: 'modern-compiler', additionalData: fileStr, // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 silenceDeprecations: ['import', 'global-builtin'], }, postcss: { - plugins: [ - atImport({ path: join(__dirname, 'src`') }), - autoprefixer({ - overrideBrowserslist: [ - '> 0.5%', - 'last 2 versions', - 'ie > 11', - 'iOS >= 10', - 'Android >= 5', - ], - }), - ], + plugins: [atImport({ path: join(__dirname, 'src`') })], }, }, }, + plugins: [ + { + enforce: 'pre', + ...mdx.default({ + providerImportSource: '@mdx-js/react', + mdExtensions: [], + mdxExtensions: ['.md'], + remarkPlugins: [remarkGfm.default, remarkDirective.default], + }), + }, + { + name: 'test', + apply: 'serve', + async load(id: string) { + if (id.endsWith('.scss')) { + // 移除 @import 语句 + const filePath = resolve(process.cwd(), id) + const scssCode = await readFileSync(filePath, 'utf-8') + const modifiedCode = scssCode.replace( + /@import\s+['"](\.{2}?\/)[^'".]+(.s?css)['"];/g, + '' + ) + return modifiedCode + } + }, + }, + + reactRefresh(), + ], + test: { + setupFiles: ['./vitest.setup.ts'], + globals: true, + environment: 'happy-dom', + coverage: { + all: false, + provider: 'v8', + }, + include: ['src/packages/**/*.(test|spec).(ts|tsx)'], + reporters: ['default', 'html'], + }, build: { - target: 'es2015', - outDir: `./dist-demo/${projectID === 'jmapp' ? 'jdesign' : '3x'}/`, + outDir: './dist-site/h5', + assetsDir: `${config.version}-${refRandom}`, cssCodeSplit: true, rollupOptions: { input: { - mobile: resolve(__dirname, 'demo.html'), + react: resolve(__dirname, 'index.html'), }, output: { - entryFileNames: `demo-${config.version}/[name].js`, - chunkFileNames: `demo-${config.version}/[name].js`, - assetFileNames: `demo-${config.version}/[name].[ext]`, + entryFileNames: `${config.version}-${refRandom}/[name].js`, + chunkFileNames: `${config.version}-${refRandom}/[name].js`, + assetFileNames: `${config.version}-${refRandom}/[name].[ext]`, }, }, }, From b8d14be1294ac662d165f51760926a7b0e2a78a4 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 6 Feb 2025 13:50:21 +0800 Subject: [PATCH 15/40] fix: site start vite config --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b4e0ff2a4b..6786666740 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ "changelog": "node ./scripts/generate-changelog.js", "clone:jdharmony": "node ./scripts/harmony/clone-jdharmony.js", "dev": "vite --open --force", - "dev:site:taro": "tsc && vite --force --config vite.config.site.taro.ts", + "dev:site": "vite --force --config vite.config.site.ts", + "dev:site:taro": "vite --force --config vite.config.site.taro.ts", "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jrkf": "VITE_APP_PROJECT_ID=jrkf vite --open --force", "dev:taro:rn:dark": "THEME=dark pnpm dev:taro:rn", From ed3f4a0c24a6a5969fd44e1929bdf7953d05dda1 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 6 Feb 2025 14:42:15 +0800 Subject: [PATCH 16/40] fix: adjust dir --- src/sites/{ => sites-react/doc}/components/header.scss | 0 src/sites/{ => sites-react/doc}/components/header.tsx | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/sites/{ => sites-react/doc}/components/header.scss (100%) rename src/sites/{ => sites-react/doc}/components/header.tsx (100%) diff --git a/src/sites/components/header.scss b/src/sites/sites-react/doc/components/header.scss similarity index 100% rename from src/sites/components/header.scss rename to src/sites/sites-react/doc/components/header.scss diff --git a/src/sites/components/header.tsx b/src/sites/sites-react/doc/components/header.tsx similarity index 100% rename from src/sites/components/header.tsx rename to src/sites/sites-react/doc/components/header.tsx From 18bdde2d60cf223bf40c5ac63f198d0351452923 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 6 Feb 2025 16:02:12 +0800 Subject: [PATCH 17/40] fix: extract taro basic structure --- index.taro.html | 85 ++++ src/sites/sites-react/doc-taro/App.scss | 254 ++++++++++++ src/sites/sites-react/doc-taro/App.tsx | 148 +++++++ src/sites/sites-react/doc-taro/context.ts | 5 + src/sites/sites-react/doc-taro/docs.taro.ts | 363 ++++++++++++++++++ src/sites/sites-react/doc-taro/docs.ts | 359 +++++++++++++++++ src/sites/sites-react/doc-taro/main.tsx | 17 + src/sites/sites-react/doc-taro/router.ts | 46 +++ src/sites/sites-react/doc/App.tsx | 3 +- .../sites-react/doc/components/header.scss | 47 --- .../sites-react/doc/components/header.tsx | 45 --- .../doc/components/header/header.tsx | 13 +- .../sites-react/doc/components/nav/nav.tsx | 2 +- .../doc/components/search/search.tsx | 1 - vite.config.site.taro.ts | 170 ++++++++ 15 files changed, 1456 insertions(+), 102 deletions(-) create mode 100644 index.taro.html create mode 100644 src/sites/sites-react/doc-taro/App.scss create mode 100644 src/sites/sites-react/doc-taro/App.tsx create mode 100644 src/sites/sites-react/doc-taro/context.ts create mode 100644 src/sites/sites-react/doc-taro/docs.taro.ts create mode 100644 src/sites/sites-react/doc-taro/docs.ts create mode 100644 src/sites/sites-react/doc-taro/main.tsx create mode 100644 src/sites/sites-react/doc-taro/router.ts delete mode 100644 src/sites/sites-react/doc/components/header.scss delete mode 100644 src/sites/sites-react/doc/components/header.tsx diff --git a/index.taro.html b/index.taro.html new file mode 100644 index 0000000000..a73641681a --- /dev/null +++ b/index.taro.html @@ -0,0 +1,85 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8" /> + <title>NutUI - 移动端React组件库 + + + + + + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file diff --git a/src/sites/sites-react/doc-taro/App.scss b/src/sites/sites-react/doc-taro/App.scss new file mode 100644 index 0000000000..30e763cf00 --- /dev/null +++ b/src/sites/sites-react/doc-taro/App.scss @@ -0,0 +1,254 @@ +$doc-title-height: 137px; + +.doc { + &-content { + margin-left: 290px; + display: flex; + flex-direction: column; + background: #fff; + &-document { + min-height: 800px; + + .markdown-body { + min-height: 600px; + } + } + + &-tabs { + position: absolute; + right: 475px; + top: 48px; + display: flex; + height: 40px; + align-items: center; + justify-content: space-between; + z-index: 1; + padding: 2px; + box-sizing: border-box; + + border-radius: 2px; + background: #eee; + box-shadow: rgb(0 0 0 / 15%) 0px 2px 4px; + + &.single { + padding: 0; + + .tab-item { + line-height: 40px; + cursor: auto; + } + } + + .tab-item { + position: relative; + padding: 0 10px; + line-height: 36px; + cursor: pointer; + font-size: 16px; + color: #323232; + text-align: center; + border-radius: 2px; + background: #eee; + + &.cur { + font-weight: bold; + color: #323232; + background: #fff; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + } + + &-contributors { + margin: 40px 0; + + a { + position: relative; + } + + img { + height: 26px; + height: 26px; + border-radius: 50%; + margin-left: 8px; + } + + .contributors-hover { + display: none; + padding: 5px 10px; + color: #fff; + font-size: 12px; + background-color: #000; + border-radius: 5px; + position: absolute; + /* min-width:150px; */ + white-space: nowrap; + top: -200%; + transform: translateX(-55%); + } + + a:hover { + .contributors-hover { + display: inline-block; + } + } + } + + &-contributors-gap { + padding-top: 20px; + border-top: 1px solid #eeeaea; + } + + &-faq { + &-title { + margin: 38px 0 20px; + font-size: 24px; + font-weight: bold; + } + + &-item { + margin: 0 8px 28px; + } + + &-que { + font-size: 18px; + line-height: 30px; + color: #323232; + font-weight: 600; + } + + &-aws { + margin-top: 8px; + color: #34495e; + font-size: 14px; + line-height: 26px; + } + } + } + + &-title { + width: 100%; + height: $doc-title-height; + z-index: 2; + + &-content { + display: flex; + justify-content: space-between; + flex-direction: column; + align-items: flex-start; + width: calc(100% - 408px); + + .npm-package { + img { + margin-right: 5px; + } + } + } + + &-position { + top: 0px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 24px 40px; + // line-height: 56px; + border-bottom: 1px solid #eee; + background: #fff; + visibility: visible; + opacity: 1; + // transition: opacity 0.8s linear, visibility 0.8s linear; + transition: opacity 0.8s; + + &.fixed { + width: calc(100% - 290px); + position: fixed; + padding: 24px 48px; + z-index: 999; + .title { + font-size: 24px; + font-weight: bold; + } + + .doc-content-tabs { + position: revert; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + + .title { + font-size: 32px; + font-weight: bold; + } + } + } +} + +::v-deep(.contributors-banner) { + display: flex; + width: 800px; + + .banner-link { + position: relative; + flex: 1; + margin-right: 20px; + + .shadow { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + opacity: 0; + transition: all linear 0.2s; + } + + &:hover { + .shadow { + opacity: 1; + } + + .img-icon { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + } + + img { + display: block; + width: 100%; + height: 200px; + } + + .img-icon { + position: absolute; + z-index: 999; + bottom: -10px; + right: 0; + width: 80px; + height: 70px; + transition: all linear 0.2s; + } + + .img-icon-book { + width: 50px; + height: 50px; + bottom: 0; + right: 10px; + } +} +.doc-backtop { + position: fixed; + bottom: 14px; + right: 200px; +} diff --git a/src/sites/sites-react/doc-taro/App.tsx b/src/sites/sites-react/doc-taro/App.tsx new file mode 100644 index 0000000000..b295f49da7 --- /dev/null +++ b/src/sites/sites-react/doc-taro/App.tsx @@ -0,0 +1,148 @@ +import React, { useEffect, useMemo, useState } from 'react' +import { HashRouter, Routes, Route, useLocation } from 'react-router-dom' +import { MDXProvider } from '@mdx-js/react' +import './App.scss' +import APPContext from '../doc/context' +import Nav from '../doc/components/nav' +import Header from '../doc/components/header' +import DemoPreview from '../doc/components/demo-preview' +import Issue from '..//doc/components/issue' +import { getComponentName } from '../../assets/util' +import { + routes as routers, + guideEnTaroRoutes, + guideTaroRoutes, +} from '../doc/router' +import loadable from '@loadable/component' +import CodeBlock from '../doc/components/demoblock/codeblock' +import { BackTop } from '../../../packages/backtop/backtop' + +const Title = () => { + let location = useLocation() + const isTaro = window.location.pathname.includes('taro') + const s = window.location.hash.split('/') + useEffect(() => { + const componentName = getComponentName() + setComponentName(componentName) + }, [location]) + const [componentName, setComponentName] = useState({ name: '', cName: '' }) + return ( +
    +
    + {componentName.name} {s[1] === 'zh-CN' && componentName.cName} +
    + {isTaro ? ( +
    + + @nutui/nutui-react-taro + + +
    + ) : ( +
    + + @nutui/nutui-react + + +
    + )} +
    + ) +} + +const components = { + CodeBlock, +} + +const Content = () => { + const [fixed, setFixed] = useState(false) + const location = useLocation() + const scrollTitle = () => { + let top = document.documentElement.scrollTop + if (top > 127) { + setFixed(true) + } else { + setFixed(false) + } + } + const isGuide = location.pathname.includes('/guide') + useEffect(() => { + document.addEventListener('scroll', scrollTitle) + }, []) + const routes = [ + ...routers, + ...guideTaroRoutes, + ...guideEnTaroRoutes, + ] + return ( +
    + {!isGuide && ( +
    +
    + + </div> + </div> + )} + <div + className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} + > + <Routes> + {routes.map((ru, k) => { + const path = ru.component?.name?.substring( + 0, + ru.component.name.lastIndexOf('/') + ) + const C = useMemo(() => loadable(ru.component), [ru.component]) + return ( + <Route + key={k} + path={ru.path} + element={ + <APPContext.Provider value={{ path }}> + <MDXProvider components={components}> + <C /> + </MDXProvider> + </APPContext.Provider> + } + ></Route> + ) + })} + </Routes> + </div> + {!isGuide && ( + <> + <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> + </> + )} + </div> + ) +} + +const App = () => { + return ( + <div> + <HashRouter> + <Header /> + <Nav /> + <Content /> + </HashRouter> + </div> + ) +} + +export default App diff --git a/src/sites/sites-react/doc-taro/context.ts b/src/sites/sites-react/doc-taro/context.ts new file mode 100644 index 0000000000..3af78c54ea --- /dev/null +++ b/src/sites/sites-react/doc-taro/context.ts @@ -0,0 +1,5 @@ +import React from 'react' + +export default React.createContext({ + path: '', +}) diff --git a/src/sites/sites-react/doc-taro/docs.taro.ts b/src/sites/sites-react/doc-taro/docs.taro.ts new file mode 100644 index 0000000000..0e866e4365 --- /dev/null +++ b/src/sites/sites-react/doc-taro/docs.taro.ts @@ -0,0 +1,363 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw' +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw' +import CellGroup from '@/packages/cellgroup/doc.md?raw' +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw' +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw' +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw' +import Col from '@/packages/col/doc.md?raw' +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw' +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw' +import GridItem from '@/packages/griditem/doc.md?raw' +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw' +import Row from '@/packages/row/doc.md?raw' +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw' +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw' +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw' +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw' +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw' +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw' +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw' +import HoverButtonItem from '@/packages/hoverbuttonitem/doc.md?raw' +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw' +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw' +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw' +import SideBarItem from '@/packages/sidebaritem/doc.md?raw' +import SideNavBarItem from '@/packages/sidenavbaritem/doc.md?raw' +import SubSideNavBar from '@/packages/subsidenavbar/doc.md?raw' +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw' +import TabbarItem from '@/packages/tabbaritem/doc.md?raw' +import TabPane from '@/packages/tabpane/doc.md?raw' +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw' +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw' +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw' +import CalendarItem from '@/packages/calendaritem/doc.md?raw' +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw' +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw' +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw' +import CheckboxGroup from '@/packages/checkboxgroup/doc.md?raw' +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw' +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw' +import FormItem from '@/packages/formitem/doc.md?raw' +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw' +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw' +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw' +import MenuItem from '@/packages/menuitem/doc.md?raw' +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw' +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw' +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw' +import RadioGroup from '@/packages/radiogroup/doc.md?raw' +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw' +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw' +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw' +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw' +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw' +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw' +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw' +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw' +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw' +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw' +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw' +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw' +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw' +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw' +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw' +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw' +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw' +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw' +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw' +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw' +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw' +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw' +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw' +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw' +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw' +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw' +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw' +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw' +import AvatarGroup from '@/packages/avatargroup/doc.md?raw' +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw' +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw' +import CollapseItem from '@/packages/collapseitem/doc.md?raw' +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw' +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw' +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw' +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw' +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw' +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw' +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw' +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw' +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw' +import Step from '@/packages/step/doc.md?raw' +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw' +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw' +import SwiperItem from '@/packages/swiperitem/doc.md?raw' +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw' +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw' +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw' +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw' +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw' +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw' +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw' +import TimeDetail from '@/packages/timedetail/doc.md?raw' +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw' +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw' +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw' +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw' + +export const routers = ['Button','Cell','CellGroup','ConfigProvider','Image','Overlay','Col','Divider','Grid','GridItem','Layout','Row','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','HoverButtonItem','NavBar','SideNavBar','SideBar','SideBarItem','SideNavBarItem','SubSideNavBar','Tabbar','TabbarItem','TabPane','Tabs','Address','Calendar','CalendarItem','CalendarCard','Cascader','Checkbox','CheckboxGroup','DatePicker','Form','FormItem','Input','InputNumber','Menu','MenuItem','NumberKeyboard','Picker','Radio','RadioGroup','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','AvatarGroup','CircleProgress','Collapse','CollapseItem','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Step','Steps','Swiper','SwiperItem','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeDetail','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,CellGroup,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,Col,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,GridItem,LayoutzhTW,Layouttaro,LayoutenUS,Layout,Row,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,HoverButtonItem,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,SideBarItem,SideNavBarItem,SubSideNavBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabbarItem,TabPane,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarItem,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,CheckboxGroup,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,FormItem,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,MenuItem,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RadioGroup,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,AvatarGroup,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CollapseItem,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,Step,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,SwiperItem,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeDetail,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/sites-react/doc-taro/docs.ts b/src/sites/sites-react/doc-taro/docs.ts new file mode 100644 index 0000000000..ef1bfc3344 --- /dev/null +++ b/src/sites/sites-react/doc-taro/docs.ts @@ -0,0 +1,359 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw'; +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw'; +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw'; +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw'; +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw'; +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw'; +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw'; +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw'; +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw'; +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw'; +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw'; +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw'; +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw'; +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw'; +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw'; +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw'; +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw'; +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw'; +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw'; +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw'; +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw'; +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw'; +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw'; +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw'; +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw'; +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw'; +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw'; +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw'; +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw'; +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw'; +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw'; +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw'; +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw'; +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw'; +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw'; +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw'; +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw'; +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw'; +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw'; +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw'; +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw'; +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw'; +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw'; +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw'; +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw'; +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw'; +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw'; +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw'; +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw'; +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw'; +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw'; +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw'; +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw'; +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw'; +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw'; +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw'; +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw'; +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw'; +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw'; +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw'; +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw'; +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw'; +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw'; +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw'; +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw'; +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw'; +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw'; +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw'; +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw'; +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw'; +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw'; +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw'; +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw'; +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw'; +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw'; +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw'; +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw'; +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw'; +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw'; +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw'; +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw'; +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw'; +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw'; +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw'; +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw'; + +import CellScss from '@/packages/cell/demo.scss?raw'; +import OverlayScss from '@/packages/overlay/demo.scss?raw'; +import NavBarScss from '@/packages/navbar/demo.scss?raw'; +import CalendarScss from '@/packages/calendar/demo.scss?raw'; +import SignatureScss from '@/packages/signature/demo.scss?raw'; +import NoticeBarScss from '@/packages/noticebar/demo.scss?raw'; +import PopoverScss from '@/packages/popover/demo.scss?raw'; +import SkeletonScss from '@/packages/skeleton/demo.scss?raw'; +import AvatarScss from '@/packages/avatar/demo.scss?raw'; +import CircleProgressScss from '@/packages/circleprogress/demo.scss?raw'; +import SwiperScss from '@/packages/swiper/demo.scss?raw'; +import TourScss from '@/packages/tour/demo.scss?raw'; +import BarrageScss from '@/packages/barrage/demo.scss?raw'; +import TrendArrowScss from '@/packages/trendarrow/demo.scss?raw'; + +export const scssRaws = { CellScss,OverlayScss,NavBarScss,CalendarScss,SignatureScss,NoticeBarScss,PopoverScss,SkeletonScss,AvatarScss,CircleProgressScss,SwiperScss,TourScss,BarrageScss,TrendArrowScss } +export const routers = ['Button','Cell','ConfigProvider','Image','Overlay','Divider','Grid','Layout','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','NavBar','SideNavBar','SideBar','Tabbar','Tabs','Address','Calendar','CalendarCard','Cascader','Checkbox','DatePicker','Form','Input','InputNumber','Menu','NumberKeyboard','Picker','Radio','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','CircleProgress','Collapse','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Steps','Swiper','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,LayoutzhTW,Layouttaro,LayoutenUS,Layout,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/sites-react/doc-taro/main.tsx b/src/sites/sites-react/doc-taro/main.tsx new file mode 100644 index 0000000000..edbb32b1d5 --- /dev/null +++ b/src/sites/sites-react/doc-taro/main.tsx @@ -0,0 +1,17 @@ +import React from 'react' +import * as ReactDOM from 'react-dom/client' +import { isMobile } from '../../assets/util' +import '@/sites/assets/styles/reset.scss' +import '@/sites/assets/styles/md-style.scss' +import App from './App' + +if (isMobile) { + location.replace('demo.html') +} + +const rootElement = document.querySelector('#doc') + +if (rootElement != null) { + const root = ReactDOM.createRoot(rootElement) + root.render(<App />) +} diff --git a/src/sites/sites-react/doc-taro/router.ts b/src/sites/sites-react/doc-taro/router.ts new file mode 100644 index 0000000000..6282cc9231 --- /dev/null +++ b/src/sites/sites-react/doc-taro/router.ts @@ -0,0 +1,46 @@ +// const modulesPage = import.meta.globEager('/src/packages/**/doc.md', { +// as: 'raw', +// }) +const routes: any[] = [] +const guideRoutes: any[] = [] +const guideEnRoutes: any[] = [] +const guideTaroRoutes: any[] = [] +const guideEnTaroRoutes: any[] = [] + + + +const modulesTaroPage = import.meta.glob('/src/packages/**/doc.taro.md') +// console.log('modulesTaroPage', modulesTaroPage) +for (const path in modulesTaroPage) { + let name = (/packages\/(.*)\/doc\.taro\.md/.exec(path) as any[])[1] + routes.push({ + path: '/en-US/component/' + name, + component: modulesTaroPage[path], + name: name, + }) + routes.push({ + path: '/zh-CN/component/' + name, + component: modulesTaroPage[path], + name: name, + }) +} + +const modulesTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.md'); +for (const path in modulesTaroDocs) { + let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; + guideTaroRoutes.push({ + path: `/zh-CN/guide/${name}`, + component: modulesTaroDocs[path], + name + }); +} +const modulesEnTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.en-US.md'); +for (const path in modulesEnTaroDocs) { + let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; + guideEnTaroRoutes.push({ + path: `/en-US/guide/${name}`, + component: modulesEnTaroDocs[path], + name + }); +} +export {routes,guideTaroRoutes, guideEnTaroRoutes} diff --git a/src/sites/sites-react/doc/App.tsx b/src/sites/sites-react/doc/App.tsx index 906fa4d98b..49e799bc21 100644 --- a/src/sites/sites-react/doc/App.tsx +++ b/src/sites/sites-react/doc/App.tsx @@ -21,7 +21,7 @@ import { BackTop } from '../../../packages/backtop/backtop' const Title = () => { let location = useLocation() - const isTaro = location.pathname.includes('-taro') + const isTaro = window.location.pathname.includes('taro') const s = window.location.hash.split('/') useEffect(() => { const componentName = getComponentName() @@ -92,7 +92,6 @@ const Content = () => { ...guideTaroRoutes, ...guideEnTaroRoutes, ] - console.log(guideEnRoutes) return ( <div className="doc-content"> {!isGuide && ( diff --git a/src/sites/sites-react/doc/components/header.scss b/src/sites/sites-react/doc/components/header.scss deleted file mode 100644 index e355763a87..0000000000 --- a/src/sites/sites-react/doc/components/header.scss +++ /dev/null @@ -1,47 +0,0 @@ -.applets-demo-header { - position: fixed; - z-index: 12; - top: 0; - left: 0; - right: 0; - height: 57px; - line-height: 57px; - text-align: center; - background: #ffffff; - font-weight: bold; - font-size: 20px; - color: rgba(51, 51, 51, 1); - box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.07); - .back { - position: absolute; - left: 0; - height: 100%; - width: 50px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - } - .home-icon { - display: inline-block; - width: 32px; - height: 32px; - background: url('https://storage.360buyimg.com/imgtools/8cbe8f9dbb-63411260-9091-11ed-aa68-651117499129.png') - no-repeat 0 0/100% 100%; - } - .applets-icon { - position: absolute; - top: 0; - right: 0; - height: 100%; - width: 120px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - > img { - width: 87px; - height: 36px; - } - } -} diff --git a/src/sites/sites-react/doc/components/header.tsx b/src/sites/sites-react/doc/components/header.tsx deleted file mode 100644 index 1bb013f81b..0000000000 --- a/src/sites/sites-react/doc/components/header.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import Taro from '@tarojs/taro' -import { ArrowLeft } from '@nutui/icons-react-taro' -import './header.scss' -import config from '../../config.json' - -const Header = () => { - const navigateTo = () => { - Taro.navigateBack({ - delta: 1, - }) - } - - const compName = () => { - let allComps: any = [] - let hashCompName = location.hash.split('pages/')[1].replace('/index', '') - config.nav.map((item: any) => { - allComps = [...allComps, ...item.packages] - }) - - let targetComp = allComps.filter( - (item: any) => hashCompName === item.name.toLowerCase() - ) - - return targetComp[0]?.name - } - - return ( - <> - {Taro.getEnv() === 'WEB' ? ( - <div className="applets-demo-header"> - <div className="back" onClick={navigateTo}> - <ArrowLeft /> - </div> - <div className="applets-icon"> - <img src="https://img13.360buyimg.com/imagetools/jfs/t1/67106/30/23857/9375/63b4df85Fce5fd959/35265019206515fe.png" /> - </div> - <div>{compName()}</div> - </div> - ) : null} - </> - ) -} - -export default Header diff --git a/src/sites/sites-react/doc/components/header/header.tsx b/src/sites/sites-react/doc/components/header/header.tsx index c4519386c3..3e3444020b 100644 --- a/src/sites/sites-react/doc/components/header/header.tsx +++ b/src/sites/sites-react/doc/components/header/header.tsx @@ -83,7 +83,8 @@ const Header = () => { // } // window.location.href = link // } - const isReactTaro = location.pathname.includes('-taro') + const isReactTaro = window.location.href.includes('taro') + console.log(window.location.href) const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) const [isShowGuid4, setIsShowGuid4] = useState(false) @@ -98,12 +99,12 @@ const Header = () => { } }, [location]) const toAnother = () => { - if (!location.pathname.includes('taro')) { - navigate(location.pathname + '-taro') - } else { - navigate(location.pathname.replace('-taro', '')) + if (window.location.href.includes('taro')) { + window.location.href = window.location.href.replace('taro', 'h5'); + } else if (window.location.href.includes('h5')) { + window.location.href = window.location.href.replace('h5', 'taro'); } - } + }; const checkGuidTheme = (item: any, type: string) => { setIsShowGuid(false) window.open(item.link) diff --git a/src/sites/sites-react/doc/components/nav/nav.tsx b/src/sites/sites-react/doc/components/nav/nav.tsx index ed4c1efd4d..5900d89a83 100644 --- a/src/sites/sites-react/doc/components/nav/nav.tsx +++ b/src/sites/sites-react/doc/components/nav/nav.tsx @@ -39,7 +39,7 @@ const Nav = () => { setActiveName(_nav.name) navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}${isTaro? '-taro' : ''}`) } - const isTaro = location.pathname.includes('-taro') + const isTaro = window.location.pathname.includes('-taro') const isZh = lang === 'zh-CN' return ( <div className={`doc-nav ${fixed ? 'fixed' : ''}`}> diff --git a/src/sites/sites-react/doc/components/search/search.tsx b/src/sites/sites-react/doc/components/search/search.tsx index 4a7833504d..04fd406374 100644 --- a/src/sites/sites-react/doc/components/search/search.tsx +++ b/src/sites/sites-react/doc/components/search/search.tsx @@ -80,7 +80,6 @@ export default function Search() { style={{ display: searchList.length > 0 ? 'block' : 'none' }} > {searchList.map((item: any, index) => { - console.log(item) return ( <li key={index} className={searchCurName === item.name ? 'cur' : ''} onClick={() => checklist()}> <Link to={`/zh-CN/component/${item.name.toLowerCase()}`}> diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts index e69de29bb2..c9cc50eb3e 100644 --- a/vite.config.site.taro.ts +++ b/vite.config.site.taro.ts @@ -0,0 +1,170 @@ +/// <reference types="vitest" /> +import { defineConfig, UserConfig } from 'vite' +import reactRefresh from '@vitejs/plugin-react' +import { join, resolve } from 'path' +// @ts-ignore +import atImport from 'postcss-import' +import { readFileSync } from 'node:fs' +import config from './package.json' + +const projectID = process.env.VITE_APP_PROJECT_ID || '' + +let fileStr = `@import "@/styles/variables.scss";@import "@/sites/assets/styles/variables.scss";@import '@/styles/theme-default.scss';\n` +if (projectID) { + fileStr = `@import '@/styles/variables-${projectID}.scss';\n@import "@/sites/assets/styles/variables.scss";\n@import '@/styles/font-${projectID}/iconfont.css';\n@import '@/styles/theme-${projectID}.scss';\n` +} +const refRandom = Math.random().toString(36).slice(-8) + +// https://vitejs.dev/config/ +export default defineConfig(async (): Promise<UserConfig> => { + const mdx = await import('@mdx-js/rollup') + const remarkGfm = await import('remark-gfm') + const remarkDirective = await import('remark-directive') + return { + base: '/taro/react/3x', + server: { + port: 2021, + host: '0.0.0.0', + open: '/taro/react/3x/index.react.taro.html', + proxy: { + '/devServer': { + target: 'https://nutui.jd.com', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/devServer/, ''), + }, + }, + }, + resolve: { + alias: [ + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/loading.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/loading.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/global.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/global.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/pulltorefresh.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/pulltorefresh.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/loading.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/loading.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/global.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/global.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/pulltorefresh.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/pulltorefresh.json' + ), + }, + { + find: '@nutui/nutui-react/dist/locale/en-US', + replacement: resolve(__dirname, './src/locales/en-US.ts'), + }, + { + find: '@nutui/nutui-react-taro/dist/locales/en-US', + replacement: resolve(__dirname, './src/locales/en-US.ts'), + }, + { find: '@', replacement: resolve(__dirname, './src') }, + { + find: '@nutui/nutui-react', + replacement: resolve(__dirname, './src/packages/nutui.react.ts'), + }, + { + find: '@nutui/nutui-react-taro', + replacement: resolve(__dirname, './src/packages/nutui.react.taro.ts'), + }, + ], + }, + css: { + preprocessorOptions: { + scss: { + // example : additionalData: `@import "./src/design/styles/variables";` + api: 'modern-compiler', + additionalData: fileStr, + // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 + silenceDeprecations: ['import', 'global-builtin'], + }, + postcss: { + plugins: [atImport({ path: join(__dirname, 'src`') })], + }, + }, + }, + plugins: [ + { + enforce: 'pre', + ...mdx.default({ + providerImportSource: '@mdx-js/react', + mdExtensions: [], + mdxExtensions: ['.md'], + remarkPlugins: [remarkGfm.default, remarkDirective.default], + }), + }, + { + name: 'test', + apply: 'serve', + async load(id: string) { + if (id.endsWith('.scss')) { + // 移除 @import 语句 + const filePath = resolve(process.cwd(), id) + const scssCode = await readFileSync(filePath, 'utf-8') + const modifiedCode = scssCode.replace( + /@import\s+['"](\.{2}?\/)[^'".]+(.s?css)['"];/g, + '' + ) + return modifiedCode + } + }, + }, + + reactRefresh(), + ], + test: { + setupFiles: ['./vitest.setup.ts'], + globals: true, + environment: 'happy-dom', + coverage: { + all: false, + provider: 'v8', + }, + include: ['src/packages/**/*.(test|spec).(ts|tsx)'], + reporters: ['default', 'html'], + }, + build: { + outDir: './dist-site/taro', + assetsDir: `${config.version}-${refRandom}`, + cssCodeSplit: true, + rollupOptions: { + input: { + react: resolve(__dirname, 'index.taro.html'), + }, + output: { + entryFileNames: `${config.version}-${refRandom}/[name].js`, + chunkFileNames: `${config.version}-${refRandom}/[name].js`, + assetFileNames: `${config.version}-${refRandom}/[name].[ext]`, + }, + }, + }, + } +}) From 55f46026daa53db996d5eec547fa12f2b4a7b086 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 6 Feb 2025 16:29:12 +0800 Subject: [PATCH 18/40] =?UTF-8?q?fix:=20vite=20taro=20site=20=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=85=A5=E5=8F=A3=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sites/sites-react/doc-taro/App.tsx | 1 + src/sites/sites-react/doc/components/header/header.tsx | 1 - src/sites/sites-react/doc/components/nav/nav.tsx | 6 +++--- vite.config.site.taro.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sites/sites-react/doc-taro/App.tsx b/src/sites/sites-react/doc-taro/App.tsx index b295f49da7..d55e7788fa 100644 --- a/src/sites/sites-react/doc-taro/App.tsx +++ b/src/sites/sites-react/doc-taro/App.tsx @@ -18,6 +18,7 @@ import CodeBlock from '../doc/components/demoblock/codeblock' import { BackTop } from '../../../packages/backtop/backtop' const Title = () => { + console.log(routers) let location = useLocation() const isTaro = window.location.pathname.includes('taro') const s = window.location.hash.split('/') diff --git a/src/sites/sites-react/doc/components/header/header.tsx b/src/sites/sites-react/doc/components/header/header.tsx index 3e3444020b..6339e75a07 100644 --- a/src/sites/sites-react/doc/components/header/header.tsx +++ b/src/sites/sites-react/doc/components/header/header.tsx @@ -84,7 +84,6 @@ const Header = () => { // window.location.href = link // } const isReactTaro = window.location.href.includes('taro') - console.log(window.location.href) const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) const [isShowGuid4, setIsShowGuid4] = useState(false) diff --git a/src/sites/sites-react/doc/components/nav/nav.tsx b/src/sites/sites-react/doc/components/nav/nav.tsx index 5900d89a83..69bf78038d 100644 --- a/src/sites/sites-react/doc/components/nav/nav.tsx +++ b/src/sites/sites-react/doc/components/nav/nav.tsx @@ -37,9 +37,9 @@ const Nav = () => { }, [location]) const changeNav = (_nav: any) => { setActiveName(_nav.name) - navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}${isTaro? '-taro' : ''}`) + navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}`) } - const isTaro = window.location.pathname.includes('-taro') + const isTaro = window.location.pathname.includes('taro') const isZh = lang === 'zh-CN' return ( <div className={`doc-nav ${fixed ? 'fixed' : ''}`}> @@ -86,7 +86,7 @@ const Nav = () => { className={({ isActive, isPending }) => isPending ? '' : isActive ? 'active' : '' } - to={`${lang ? `/${lang}` : ''}/component/${cp.name}${isTaro ? '-taro' : ''}`} + to={`${lang ? `/${lang}` : ''}/component/${cp.name}`} > {cp.name}   <b>{lang === 'zh-CN' && cp.cName}</b> diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts index c9cc50eb3e..a394d74b86 100644 --- a/vite.config.site.taro.ts +++ b/vite.config.site.taro.ts @@ -25,7 +25,7 @@ export default defineConfig(async (): Promise<UserConfig> => { server: { port: 2021, host: '0.0.0.0', - open: '/taro/react/3x/index.react.taro.html', + open: '/taro/react/3x/index.taro.html', proxy: { '/devServer': { target: 'https://nutui.jd.com', From f0a5e279f9cdcc50efff628402ef25b56e513b25 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 6 Feb 2025 18:04:11 +0800 Subject: [PATCH 19/40] =?UTF-8?q?fix:=20change=20from=20spa=20to=20routes?= =?UTF-8?q?=20=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sites/sites-react/doc-taro/App.tsx | 2 +- src/sites/sites-react/doc-taro/router.ts | 8 ++++---- src/sites/sites-react/doc/App.tsx | 6 +----- src/sites/sites-react/doc/router.ts | 21 ++------------------- 4 files changed, 8 insertions(+), 29 deletions(-) diff --git a/src/sites/sites-react/doc-taro/App.tsx b/src/sites/sites-react/doc-taro/App.tsx index d55e7788fa..975f48d96c 100644 --- a/src/sites/sites-react/doc-taro/App.tsx +++ b/src/sites/sites-react/doc-taro/App.tsx @@ -12,7 +12,7 @@ import { routes as routers, guideEnTaroRoutes, guideTaroRoutes, -} from '../doc/router' +} from './router' import loadable from '@loadable/component' import CodeBlock from '../doc/components/demoblock/codeblock' import { BackTop } from '../../../packages/backtop/backtop' diff --git a/src/sites/sites-react/doc-taro/router.ts b/src/sites/sites-react/doc-taro/router.ts index 6282cc9231..4a4e7bfc7a 100644 --- a/src/sites/sites-react/doc-taro/router.ts +++ b/src/sites/sites-react/doc-taro/router.ts @@ -25,7 +25,7 @@ for (const path in modulesTaroPage) { }) } -const modulesTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.md'); +const modulesTaroDocs = import.meta.glob('/src/sites/sites-react/doc/docs/taro/*.md'); for (const path in modulesTaroDocs) { let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; guideTaroRoutes.push({ @@ -34,13 +34,13 @@ for (const path in modulesTaroDocs) { name }); } -const modulesEnTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.en-US.md'); +const modulesEnTaroDocs = import.meta.glob('/src/sites/sites-react/doc/docs/taro/*.en-US.md'); for (const path in modulesEnTaroDocs) { let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; guideEnTaroRoutes.push({ - path: `/en-US/guide/${name}`, + path: `/en-US/guide/${name}-taro`, component: modulesEnTaroDocs[path], name }); } -export {routes,guideTaroRoutes, guideEnTaroRoutes} +export {routes, guideRoutes, guideEnRoutes, guideTaroRoutes, guideEnTaroRoutes} diff --git a/src/sites/sites-react/doc/App.tsx b/src/sites/sites-react/doc/App.tsx index 49e799bc21..2c05f1160f 100644 --- a/src/sites/sites-react/doc/App.tsx +++ b/src/sites/sites-react/doc/App.tsx @@ -11,9 +11,7 @@ import { getComponentName } from '../../assets/util' import { routes as routers, guideEnRoutes, - guideRoutes, - guideEnTaroRoutes, - guideTaroRoutes, + guideRoutes } from './router' import loadable from '@loadable/component' import CodeBlock from './components/demoblock/codeblock' @@ -89,8 +87,6 @@ const Content = () => { ...routers, ...guideRoutes, ...guideEnRoutes, - ...guideTaroRoutes, - ...guideEnTaroRoutes, ] return ( <div className="doc-content"> diff --git a/src/sites/sites-react/doc/router.ts b/src/sites/sites-react/doc/router.ts index 3f99c2a5b3..fa7e1b2b66 100644 --- a/src/sites/sites-react/doc/router.ts +++ b/src/sites/sites-react/doc/router.ts @@ -66,22 +66,5 @@ for (const path in modulesEnDocs) { name: `en-${name}` }); } -const modulesTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.md'); -for (const path in modulesTaroDocs) { - let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; - guideTaroRoutes.push({ - path: `/zh-CN/guide/${name}-taro`, - component: modulesTaroDocs[path], - name - }); -} -const modulesEnTaroDocs = import.meta.glob('/src/sites/doc/docs/taro/*.en-US.md'); -for (const path in modulesEnTaroDocs) { - let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; - guideEnTaroRoutes.push({ - path: `/en-US/guide/${name}-taro`, - component: modulesEnTaroDocs[path], - name - }); -} -export {routes, guideRoutes, guideEnRoutes, guideTaroRoutes, guideEnTaroRoutes} + +export {routes, guideRoutes, guideEnRoutes} \ No newline at end of file From 495299efaf869b2f84481d0b36f639c1fc49345d Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 6 Feb 2025 18:34:37 +0800 Subject: [PATCH 20/40] fix: header import failed --- src/sites/components/header.scss | 47 ++++++++++++++++++++++++++++++++ src/sites/components/header.tsx | 45 ++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/sites/components/header.scss create mode 100644 src/sites/components/header.tsx diff --git a/src/sites/components/header.scss b/src/sites/components/header.scss new file mode 100644 index 0000000000..e355763a87 --- /dev/null +++ b/src/sites/components/header.scss @@ -0,0 +1,47 @@ +.applets-demo-header { + position: fixed; + z-index: 12; + top: 0; + left: 0; + right: 0; + height: 57px; + line-height: 57px; + text-align: center; + background: #ffffff; + font-weight: bold; + font-size: 20px; + color: rgba(51, 51, 51, 1); + box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.07); + .back { + position: absolute; + left: 0; + height: 100%; + width: 50px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + } + .home-icon { + display: inline-block; + width: 32px; + height: 32px; + background: url('https://storage.360buyimg.com/imgtools/8cbe8f9dbb-63411260-9091-11ed-aa68-651117499129.png') + no-repeat 0 0/100% 100%; + } + .applets-icon { + position: absolute; + top: 0; + right: 0; + height: 100%; + width: 120px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + > img { + width: 87px; + height: 36px; + } + } +} diff --git a/src/sites/components/header.tsx b/src/sites/components/header.tsx new file mode 100644 index 0000000000..93e8b83814 --- /dev/null +++ b/src/sites/components/header.tsx @@ -0,0 +1,45 @@ +import React from 'react' +import Taro from '@tarojs/taro' +import { ArrowLeft } from '@nutui/icons-react-taro' +import './header.scss' +import config from '../../config.json' + +const Header = () => { + const navigateTo = () => { + Taro.navigateBack({ + delta: 1, + }) + } + + const compName = () => { + let allComps: any = [] + let hashCompName = location.hash.split('pages/')[1].replace('/index', '') + config.nav.map((item: any) => { + allComps = [...allComps, ...item.packages] + }) + + let targetComp = allComps.filter( + (item: any) => hashCompName === item.name.toLowerCase() + ) + + return targetComp[0]?.name + } + + return ( + <> + {Taro.getEnv() === 'WEB' ? ( + <div className="applets-demo-header"> + <div className="back" onClick={navigateTo}> + <ArrowLeft /> + </div> + <div className="applets-icon"> + <img src="https://img13.360buyimg.com/imagetools/jfs/t1/67106/30/23857/9375/63b4df85Fce5fd959/35265019206515fe.png" /> + </div> + <div>{compName()}</div> + </div> + ) : null} + </> + ) +} + +export default Header \ No newline at end of file From 97e0cb7e7ee859b2b1f371d1608758d7539b7680 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Sat, 8 Feb 2025 16:58:17 +0800 Subject: [PATCH 21/40] fix: taro doc build failed --- example.file | 28 +++++++++++++++++++ .../doc/docs/taro/intro-react.en-US.md | 2 +- .../docs/taro/official-theme-react.en-US.md | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 example.file diff --git a/example.file b/example.file new file mode 100644 index 0000000000..b41cb0a052 --- /dev/null +++ b/example.file @@ -0,0 +1,28 @@ +import Taro from '@tarojs/taro'; + +// 定义一个类型,用于表示设备信息,排除 deviceAbi 和 CPUType 字段 +interface IDeviceInfo extends Omit<Taro.getDeviceInfo.Result, 'deviceAbi' | 'CPUType'> {} + +/** + * 获取设备基础信息,兼容新旧 API + * @returns {IDeviceInfo} 设备基础信息 + */ +export function getDeviceInfo(): IDeviceInfo { + return Taro.canIUse('getDeviceInfo') ? Taro.getDeviceInfo() : Taro.getSystemInfoSync(); +} + +/** + * 获取窗口信息,兼容新旧 API + * @returns {Taro.getWindowInfo.Result} 窗口信息 + */ +export function getWindowInfo(): Taro.getWindowInfo.Result { + return Taro.canIUse('getWindowInfo') ? Taro.getWindowInfo() : Taro.getSystemInfoSync(); +} + +/** + * 获取应用基础信息,兼容新旧 API + * @returns {Taro.getAppBaseInfo.Result} 应用基础信息 + */ +export function getAppBaseInfo(): Taro.getAppBaseInfo.Result { + return Taro.canIUse('getAppBaseInfo') ? Taro.getAppBaseInfo() : Taro.getSystemInfoSync(); +} diff --git a/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md b/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md index adfc592745..68f59f4280 100644 --- a/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md +++ b/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md @@ -31,7 +31,7 @@ NutUI-React component library, based on Taro, uses React technology stack to dev Thanks to the following friends for their contributions to NutUI-React: <a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> - <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> </a> ## LICENSE diff --git a/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md b/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md index 931c122da2..a2a53645af 100644 --- a/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md +++ b/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md @@ -11,7 +11,7 @@ NutUI provides multiple sets of official `UI` themes by default, while allowing | Jingdong APP theme (default) | `variables.scss` | | Jingdong B Mall Theme <a target="_blank" href="https://nutui.jd.com/h5/vue/4x/?jdb#/zh-CN/component/button" >Preview</a> | `variables-jdb.scss ` | -<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI theme customization"> +<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI theme customization"/> ## How to use From d8a744a8dc7004b9c04db09cd45e1c1251edf21b Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Mon, 10 Feb 2025 18:44:25 +0800 Subject: [PATCH 22/40] fix: test build h5 demo routes --- .../sites-react/doc/components/demo-preview/demo-preview.tsx | 4 ++-- src/sites/theme/components/demo-preview/demo-preview.tsx | 2 +- tsconfig.json | 2 +- vite.config.site.ts | 3 +++ vite.config.ts | 3 +++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx index abdecb48f4..9ded5fe091 100644 --- a/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx +++ b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react' import './demo-preview.scss' import { useLocation } from 'react-router-dom' - +declare const __DEMO_PATH__: string const DemoPreview = (props: any) => { const location = useLocation() const [URL, setURL] = useState(location.pathname) @@ -12,7 +12,7 @@ const DemoPreview = (props: any) => { return ( <div className={`doc-demo-preview ${props.className}`}> - <iframe title="demos" src={`/react/demo.html#${URL}`}></iframe> + <iframe title="demos" src={`${__DEMO_PATH__}${URL}`}></iframe> </div> ) } diff --git a/src/sites/theme/components/demo-preview/demo-preview.tsx b/src/sites/theme/components/demo-preview/demo-preview.tsx index bc25d904d4..8d6316ac5d 100644 --- a/src/sites/theme/components/demo-preview/demo-preview.tsx +++ b/src/sites/theme/components/demo-preview/demo-preview.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react' import './demo-preview.scss' -import { useHistory, useLocation } from 'react-router-dom' +import { useLocation } from 'react-router-dom' const DemoPreview = (props: any) => { const location = useLocation() diff --git a/tsconfig.json b/tsconfig.json index 7ec048bcd8..96e9336eac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -45,7 +45,7 @@ "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx" - ], +, "global.d.ts" ], "exclude": [ "./node_modules/**", "src/sites/**", diff --git a/vite.config.site.ts b/vite.config.site.ts index 887b76ee31..adb1a8677e 100644 --- a/vite.config.site.ts +++ b/vite.config.site.ts @@ -97,6 +97,9 @@ export default defineConfig(async (): Promise<UserConfig> => { }, ], }, + define: { + __DEMO_PATH__: JSON.stringify('/h5/react/3x/demo.html#'), + }, css: { preprocessorOptions: { scss: { diff --git a/vite.config.ts b/vite.config.ts index 4d81daf249..e5f223bfa2 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -23,6 +23,9 @@ export default defineConfig(async (): Promise<UserConfig> => { host: '0.0.0.0', }, base: '/react/', + define: { + __DEMO_PATH__: JSON.stringify('/react/demo.html#'), + }, resolve: { alias: [ { From af8508d0e72b235b540e39ae2d19ec5b18347740 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 12 Feb 2025 15:22:19 +0800 Subject: [PATCH 23/40] =?UTF-8?q?feat:=20taro=20site=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- scripts/rename.js | 16 ++++++++++++++ .../components/demo-preview/demo-preview.tsx | 22 +++++++++++++++---- vite.config.site.taro.ts | 3 +++ 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 scripts/rename.js diff --git a/package.json b/package.json index b03be6f472..08704bd582 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "build:demo:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", "build:taro:demo": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", "build:site": "vite build --config vite.config.site.ts", - "build:taro:site": "vite build --config vite.config.site.taro.ts", + "build:taro:site": "vite build --config vite.config.site.taro.ts && node ./scripts/rename.js", "build:jdtaro:demo": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "build:taro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", "build:jstaro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", diff --git a/scripts/rename.js b/scripts/rename.js new file mode 100644 index 0000000000..2163da3dc8 --- /dev/null +++ b/scripts/rename.js @@ -0,0 +1,16 @@ +const fs = require('fs') +const path = require('path') + +const distDir = path.join(__dirname, '../dist-site/taro') // 假设你的构建输出目录是 dist-site/taro + +fs.rename( + path.join(distDir, 'index.taro.html'), + path.join(distDir, 'index.html'), + (err) => { + if (err) { + console.error('重命名文件时出错:', err) + } else { + console.log('文件重命名成功') + } + } +) diff --git a/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx index 9ded5fe091..017e599765 100644 --- a/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx +++ b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx @@ -1,18 +1,32 @@ import React, { useEffect, useState } from 'react' import './demo-preview.scss' +import { nav } from '../../../../config/index' import { useLocation } from 'react-router-dom' + declare const __DEMO_PATH__: string const DemoPreview = (props: any) => { const location = useLocation() - const [URL, setURL] = useState(location.pathname) - + const [iframeSrc, setIframeSrc] = useState('') + const taroComponentPath: any = {} + nav.forEach((n: any) => { + n.packages.forEach((p: any) => { + taroComponentPath[p.name.toLowerCase()] = + `${n.enName}/pages/${p.name.toLowerCase()}/index` + }) + }) useEffect(() => { - setURL(location.pathname) + const c = location.pathname + .slice(location.pathname.lastIndexOf('/') + 1) + .toLocaleLowerCase() + const path = __DEMO_PATH__.includes('taro') + ? `${__DEMO_PATH__}/${taroComponentPath[c]}` + : `${__DEMO_PATH__}${location.pathname}` + setIframeSrc(path) }, [location]) return ( <div className={`doc-demo-preview ${props.className}`}> - <iframe title="demos" src={`${__DEMO_PATH__}${URL}`}></iframe> + <iframe title="demos" src={iframeSrc}></iframe> </div> ) } diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts index a394d74b86..7eea40a26b 100644 --- a/vite.config.site.taro.ts +++ b/vite.config.site.taro.ts @@ -34,6 +34,9 @@ export default defineConfig(async (): Promise<UserConfig> => { }, }, }, + define: { + __DEMO_PATH__: JSON.stringify('/taro/react/3x/demo/index.html#'), + }, resolve: { alias: [ { From 7b260b0f8d352f54dedc7956a1484a02216f4573 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 12 Feb 2025 16:33:24 +0800 Subject: [PATCH 24/40] fix: add redirect link to resolve empty page bug --- src/sites/sites-react/doc-taro/App.tsx | 19 ++++++++---------- src/sites/sites-react/doc/App.tsx | 27 ++++++++++++++------------ 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/sites/sites-react/doc-taro/App.tsx b/src/sites/sites-react/doc-taro/App.tsx index 975f48d96c..ccaf89769f 100644 --- a/src/sites/sites-react/doc-taro/App.tsx +++ b/src/sites/sites-react/doc-taro/App.tsx @@ -8,14 +8,11 @@ import Header from '../doc/components/header' import DemoPreview from '../doc/components/demo-preview' import Issue from '..//doc/components/issue' import { getComponentName } from '../../assets/util' -import { - routes as routers, - guideEnTaroRoutes, - guideTaroRoutes, -} from './router' +import { routes as routers, guideEnTaroRoutes, guideTaroRoutes } from './router' import loadable from '@loadable/component' import CodeBlock from '../doc/components/demoblock/codeblock' import { BackTop } from '../../../packages/backtop/backtop' +import { Navigate } from 'react-router-dom' const Title = () => { console.log(routers) @@ -84,11 +81,7 @@ const Content = () => { useEffect(() => { document.addEventListener('scroll', scrollTitle) }, []) - const routes = [ - ...routers, - ...guideTaroRoutes, - ...guideEnTaroRoutes, - ] + const routes = [...routers, ...guideTaroRoutes, ...guideEnTaroRoutes] return ( <div className="doc-content"> {!isGuide && ( @@ -102,6 +95,10 @@ const Content = () => { className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} > <Routes> + <Route + path="/" + element={<Navigate to="/zh-CN/guide/intro-react" />} + /> {routes.map((ru, k) => { const path = ru.component?.name?.substring( 0, @@ -127,7 +124,7 @@ const Content = () => { {!isGuide && ( <> <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> - <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> + <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> </> )} </div> diff --git a/src/sites/sites-react/doc/App.tsx b/src/sites/sites-react/doc/App.tsx index 2c05f1160f..b82c72b8b8 100644 --- a/src/sites/sites-react/doc/App.tsx +++ b/src/sites/sites-react/doc/App.tsx @@ -1,5 +1,11 @@ import React, { useEffect, useMemo, useState } from 'react' -import { HashRouter, Routes, Route, useLocation } from 'react-router-dom' +import { + HashRouter, + Routes, + Route, + useLocation, + Navigate, +} from 'react-router-dom' import { MDXProvider } from '@mdx-js/react' import './App.scss' import APPContext from './context' @@ -8,11 +14,7 @@ import Header from '../doc/components/header' import DemoPreview from '../doc/components/demo-preview' import Issue from '..//doc/components/issue' import { getComponentName } from '../../assets/util' -import { - routes as routers, - guideEnRoutes, - guideRoutes -} from './router' +import { routes as routers, guideEnRoutes, guideRoutes } from './router' import loadable from '@loadable/component' import CodeBlock from './components/demoblock/codeblock' import { BackTop } from '../../../packages/backtop/backtop' @@ -83,11 +85,7 @@ const Content = () => { useEffect(() => { document.addEventListener('scroll', scrollTitle) }, []) - const routes = [ - ...routers, - ...guideRoutes, - ...guideEnRoutes, - ] + const routes = [...routers, ...guideRoutes, ...guideEnRoutes] return ( <div className="doc-content"> {!isGuide && ( @@ -101,6 +99,11 @@ const Content = () => { className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} > <Routes> + <Route + path="/" + element={<Navigate to="/zh-CN/guide/intro-react" />} + /> + {routes.map((ru, k) => { const path = ru.component?.name?.substring( 0, @@ -126,7 +129,7 @@ const Content = () => { {!isGuide && ( <> <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> - <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> + <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> </> )} </div> From 3b864645fea23ef79318962721895a39c455bd22 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 13 Feb 2025 18:55:24 +0800 Subject: [PATCH 25/40] fix: resolve tabs activeName incorrect --- src/sites/sites-react/doc/components/nav/nav.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/sites/sites-react/doc/components/nav/nav.tsx b/src/sites/sites-react/doc/components/nav/nav.tsx index 69bf78038d..7c12605d4b 100644 --- a/src/sites/sites-react/doc/components/nav/nav.tsx +++ b/src/sites/sites-react/doc/components/nav/nav.tsx @@ -9,7 +9,7 @@ const Nav = () => { const [lang] = useLocale() const [fixed, setFixed] = useState(false) const [isGuide, setIsGuide] = useState(false) - const [activeName, setActiveName] = useState<string>('intro-react') + const [activeName, setActiveName] = useState<string>('') const scrollNav = () => { let top = document.documentElement.scrollTop if (top > 64) { @@ -31,9 +31,7 @@ const Nav = () => { } else { setIsGuide(false) } - if(location.pathname.includes('/intro-react')) { - setActiveName('intro-react') - } + setActiveName(location.pathname.slice(location.pathname.lastIndexOf('/') + 1)) }, [location]) const changeNav = (_nav: any) => { setActiveName(_nav.name) From e0aacc902ab32c5c77fc18238692be672a0c1dec Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 19 Feb 2025 14:10:23 +0800 Subject: [PATCH 26/40] fix: resolve conflicts --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4819163337..2d005a0854 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,11 @@ "build:taro:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp node scripts/build-taro.mjs", "build:demo": "npm run checked && vite build --config vite.config.demo.ts", "build:demo:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", - "build:taro:demo": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", + "prebuild:taro:demo": "SKIPDD=1 pnpm run update:taro:entry", + "build:taro:demo": "npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", "build:site": "vite build --config vite.config.site.ts", "build:taro:site": "vite build --config vite.config.site.taro.ts && node ./scripts/rename.js", - "build:jdtaro:demo": "pnpm update:taro:entry && npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:jdtaro:demo": "npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "build:taro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", "build:jdtaro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "generate:file": "node scripts/generate-nutui.js", From a5b11fe74ebd144cfa72a95819a5009a145f9e3e Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 19 Feb 2025 14:22:10 +0800 Subject: [PATCH 27/40] fix: build error --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2d005a0854..cda2f9f615 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "changelog": "node ./scripts/generate-changelog.js", "clone:jdharmony": "node ./scripts/harmony/clone-jdharmony.js", "dev": "vite --open --force", - "dev:site": "vite --force --config vite.config.site.ts", + "dev:site": "vite --force --config vite.config.site.mts", "dev:site:taro": "vite --force --config vite.config.site.taro.ts", "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jrkf": "VITE_APP_PROJECT_ID=jrkf vite --open --force", @@ -74,7 +74,7 @@ "build:demo:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", "prebuild:taro:demo": "SKIPDD=1 pnpm run update:taro:entry", "build:taro:demo": "npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:site": "vite build --config vite.config.site.ts", + "build:site": "vite build --config vite.config.site.mts", "build:taro:site": "vite build --config vite.config.site.taro.ts && node ./scripts/rename.js", "build:jdtaro:demo": "npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "build:taro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", @@ -160,7 +160,7 @@ "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-v8": "^2.0.4", "@vitest/ui": "^2.0.4", - "@inquirer/prompts":"^7.2.3", + "@inquirer/prompts": "^7.2.3", "autoprefixer": "^10.4.17", "axios": "^1.6.7", "cypress": "^13.15.0", From be94ef3f2804eab8da5e54feb06f13c0c8e9e255 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 19 Feb 2025 14:23:46 +0800 Subject: [PATCH 28/40] fix: build error --- vite.config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.mts b/vite.config.mts index e8d0826e78..4ea541fd80 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -99,7 +99,7 @@ export default defineConfig(async (): Promise<UserConfig> => { // silenceDeprecations: ['import', 'global-builtin'], }, postcss: { - plugins: [atImport({ path: join(__dirname, 'src`') })], + plugins: [atImport({ path: join(__dirname, 'src') })], }, }, }, From 90b094cb684f8aa04116dfe7a58b2f18c244500c Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 19 Feb 2025 16:05:10 +0800 Subject: [PATCH 29/40] =?UTF-8?q?refactor:=20=E7=AE=80=E5=8C=96site?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=96=B9=E5=BC=8F=E5=B9=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84E2E=E6=B5=8B=E8=AF=95=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/e2e/utils/visit-demo.cy.js | 3 ++- package.json | 10 ++++------ vite.config.site.mts | 2 +- vite.config.site.taro.ts | 5 +++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cypress/e2e/utils/visit-demo.cy.js b/cypress/e2e/utils/visit-demo.cy.js index 4825dafccf..d36f94896f 100644 --- a/cypress/e2e/utils/visit-demo.cy.js +++ b/cypress/e2e/utils/visit-demo.cy.js @@ -1,5 +1,6 @@ export const visitH5Demo = (componentName, delay = 500) => { - const getPath = () => `${Cypress.env('baseUrl')}${componentName}` + const getPath = () => + `http://localhost:2021/h5/react/3x/demo.html#/zh-CN/component/${componentName.toLowerCase()}` cy.visit(getPath(componentName), { onBeforeLoad: (win) => { Object.defineProperty(win.navigator, 'userAgent', { diff --git a/package.json b/package.json index cda2f9f615..b62798e85c 100644 --- a/package.json +++ b/package.json @@ -53,9 +53,7 @@ "checked:taro": "npm run generate:file:taro && tsc --project ./tsconfig.taro.json --noEmit", "changelog": "node ./scripts/generate-changelog.js", "clone:jdharmony": "node ./scripts/harmony/clone-jdharmony.js", - "dev": "vite --open --force", - "dev:site": "vite --force --config vite.config.site.mts", - "dev:site:taro": "vite --force --config vite.config.site.taro.ts", + "dev": "vite --force --config vite.config.site.mts --port 2021 & vite --force --config vite.config.site.taro.ts --port 2022", "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jrkf": "VITE_APP_PROJECT_ID=jrkf vite --open --force", "dev:taro:rn:dark": "THEME=dark pnpm dev:taro:rn", @@ -90,11 +88,11 @@ "publish:beta": "npm publish --tag beta", "test": "vitest --coverage", "test:ui": "vitest --ui --coverage", - "cypress:run": "cypress run --env baseUrl=http://localhost:5173/react/demo.html#/zh-CN/component/ --spec 'cypress/e2e/h5/index.cy.js'", - "cypress:open": "cypress open --env baseUrl=http://localhost:5173/react/demo.html#/zh-CN/component/ 'cypress/e2e/h5/index.cy.js'", + "cypress:run": "cypress run --spec 'cypress/e2e/h5/index.cy.js'", + "cypress:open": "cypress open 'cypress/e2e/taro/index.cy.js'", "cypress:run:taro": "cypress run --env baseUrl=http://localhost:10086/#/ --spec 'cypress/e2e/taro/index.cy.js'", "cypress:open:taro": "cypress open --env baseUrl=http://localhost:10086/#/ 'cypress/e2e/taro/index.cy.js'", - "e2e:run:h5": "start-server-and-test dev http://localhost:5173/ cypress:run", + "e2e:run:h5": "start-server-and-test \"vite --force --config vite.config.site.mts\" http://localhost:2021/h5/react/3x/index.react.html#/zh-CN/component/ cypress:run", "e2e:open:h5": "start-server-and-test dev http://localhost:5173/ cypress:open", "e2e:run:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:run:taro", "e2e:open:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:open:taro", diff --git a/vite.config.site.mts b/vite.config.site.mts index adb1a8677e..a177b5236a 100644 --- a/vite.config.site.mts +++ b/vite.config.site.mts @@ -107,7 +107,7 @@ export default defineConfig(async (): Promise<UserConfig> => { api: 'modern-compiler', additionalData: fileStr, // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 - silenceDeprecations: ['import', 'global-builtin'], + // silenceDeprecations: ['import', 'global-builtin'], }, postcss: { plugins: [atImport({ path: join(__dirname, 'src`') })], diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts index 7eea40a26b..22d7afb152 100644 --- a/vite.config.site.taro.ts +++ b/vite.config.site.taro.ts @@ -25,7 +25,8 @@ export default defineConfig(async (): Promise<UserConfig> => { server: { port: 2021, host: '0.0.0.0', - open: '/taro/react/3x/index.taro.html', + // open: '/taro/react/3x/index.taro.html', + open: false, proxy: { '/devServer': { target: 'https://nutui.jd.com', @@ -107,7 +108,7 @@ export default defineConfig(async (): Promise<UserConfig> => { api: 'modern-compiler', additionalData: fileStr, // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 - silenceDeprecations: ['import', 'global-builtin'], + // silenceDeprecations: ['import', 'global-builtin'], }, postcss: { plugins: [atImport({ path: join(__dirname, 'src`') })], From 189255c2ca2071c8039723cead2528e0b6d079ae Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 20 Feb 2025 15:00:24 +0800 Subject: [PATCH 30/40] =?UTF-8?q?chore:=20=E7=AE=80=E5=8C=96=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=BC=80=E5=8F=91=E6=96=B9=E5=BC=8F=EF=BC=8C=E7=A7=BB?= =?UTF-8?q?=E9=99=A4vite=E5=86=97=E4=BD=99=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- .../doc/components/header/header.tsx | 10 ++ vite.config.site.mts | 93 +----------------- vite.config.site.taro.ts | 94 +------------------ 4 files changed, 14 insertions(+), 186 deletions(-) diff --git a/package.json b/package.json index b62798e85c..8817b59c08 100644 --- a/package.json +++ b/package.json @@ -53,9 +53,10 @@ "checked:taro": "npm run generate:file:taro && tsc --project ./tsconfig.taro.json --noEmit", "changelog": "node ./scripts/generate-changelog.js", "clone:jdharmony": "node ./scripts/harmony/clone-jdharmony.js", - "dev": "vite --force --config vite.config.site.mts --port 2021 & vite --force --config vite.config.site.taro.ts --port 2022", + "dev": "vite --open --force", "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jrkf": "VITE_APP_PROJECT_ID=jrkf vite --open --force", + "dev:site": "vite --config vite.config.site.mts", "dev:taro:rn:dark": "THEME=dark pnpm dev:taro:rn", "predev:taro": "SKIPDD=1 pnpm run update:taro:entry", "dev:taro": "pnpm --dir ./packages/nutui-taro-demo dev", diff --git a/src/sites/sites-react/doc/components/header/header.tsx b/src/sites/sites-react/doc/components/header/header.tsx index 6339e75a07..2d6d6b2db9 100644 --- a/src/sites/sites-react/doc/components/header/header.tsx +++ b/src/sites/sites-react/doc/components/header/header.tsx @@ -98,6 +98,16 @@ const Header = () => { } }, [location]) const toAnother = () => { + // 开发环境 + if(process.env.NODE_ENV === 'development') { + if(window.location.href.includes('/react/#')) { + window.location.href = window.location.href.replace('/react/#', '/react/index.taro.html#'); + } else if (window.location.href.includes('/react/index.taro.html#')) { + window.location.href = window.location.href.replace('/react/index.taro.html#', '/react/#'); + } + return + } + // 生产环境 if (window.location.href.includes('taro')) { window.location.href = window.location.href.replace('taro', 'h5'); } else if (window.location.href.includes('h5')) { diff --git a/vite.config.site.mts b/vite.config.site.mts index a177b5236a..da354b2202 100644 --- a/vite.config.site.mts +++ b/vite.config.site.mts @@ -4,7 +4,6 @@ import reactRefresh from '@vitejs/plugin-react' import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' -import { readFileSync } from 'node:fs' import config from './package.json' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -35,67 +34,7 @@ export default defineConfig(async (): Promise<UserConfig> => { }, }, resolve: { - alias: [ - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/loading.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/loading.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/global.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/global.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/pulltorefresh.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/pulltorefresh.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/loading.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/loading.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/global.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/global.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/pulltorefresh.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/pulltorefresh.json' - ), - }, - { - find: '@nutui/nutui-react/dist/locale/en-US', - replacement: resolve(__dirname, './src/locales/en-US.ts'), - }, - { - find: '@nutui/nutui-react-taro/dist/locales/en-US', - replacement: resolve(__dirname, './src/locales/en-US.ts'), - }, - { find: '@', replacement: resolve(__dirname, './src') }, - { - find: '@nutui/nutui-react', - replacement: resolve(__dirname, './src/packages/nutui.react.ts'), - }, - { - find: '@nutui/nutui-react-taro', - replacement: resolve(__dirname, './src/packages/nutui.react.taro.ts'), - }, - ], + alias: [{ find: '@', replacement: resolve(__dirname, './src') }], }, define: { __DEMO_PATH__: JSON.stringify('/h5/react/3x/demo.html#'), @@ -106,8 +45,6 @@ export default defineConfig(async (): Promise<UserConfig> => { // example : additionalData: `@import "./src/design/styles/variables";` api: 'modern-compiler', additionalData: fileStr, - // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 - // silenceDeprecations: ['import', 'global-builtin'], }, postcss: { plugins: [atImport({ path: join(__dirname, 'src`') })], @@ -124,36 +61,8 @@ export default defineConfig(async (): Promise<UserConfig> => { remarkPlugins: [remarkGfm.default, remarkDirective.default], }), }, - { - name: 'test', - apply: 'serve', - async load(id: string) { - if (id.endsWith('.scss')) { - // 移除 @import 语句 - const filePath = resolve(process.cwd(), id) - const scssCode = await readFileSync(filePath, 'utf-8') - const modifiedCode = scssCode.replace( - /@import\s+['"](\.{2}?\/)[^'".]+(.s?css)['"];/g, - '' - ) - return modifiedCode - } - }, - }, - reactRefresh(), ], - test: { - setupFiles: ['./vitest.setup.ts'], - globals: true, - environment: 'happy-dom', - coverage: { - all: false, - provider: 'v8', - }, - include: ['src/packages/**/*.(test|spec).(ts|tsx)'], - reporters: ['default', 'html'], - }, build: { outDir: './dist-site/h5', assetsDir: `${config.version}-${refRandom}`, diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts index 22d7afb152..4b1ebf98ef 100644 --- a/vite.config.site.taro.ts +++ b/vite.config.site.taro.ts @@ -4,7 +4,6 @@ import reactRefresh from '@vitejs/plugin-react' import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' -import { readFileSync } from 'node:fs' import config from './package.json' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -39,76 +38,13 @@ export default defineConfig(async (): Promise<UserConfig> => { __DEMO_PATH__: JSON.stringify('/taro/react/3x/demo/index.html#'), }, resolve: { - alias: [ - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/loading.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/loading.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/global.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/global.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/pulltorefresh.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/pulltorefresh.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/loading.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/loading.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/global.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/global.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/pulltorefresh.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/pulltorefresh.json' - ), - }, - { - find: '@nutui/nutui-react/dist/locale/en-US', - replacement: resolve(__dirname, './src/locales/en-US.ts'), - }, - { - find: '@nutui/nutui-react-taro/dist/locales/en-US', - replacement: resolve(__dirname, './src/locales/en-US.ts'), - }, - { find: '@', replacement: resolve(__dirname, './src') }, - { - find: '@nutui/nutui-react', - replacement: resolve(__dirname, './src/packages/nutui.react.ts'), - }, - { - find: '@nutui/nutui-react-taro', - replacement: resolve(__dirname, './src/packages/nutui.react.taro.ts'), - }, - ], + alias: [{ find: '@', replacement: resolve(__dirname, './src') }], }, css: { preprocessorOptions: { scss: { - // example : additionalData: `@import "./src/design/styles/variables";` api: 'modern-compiler', additionalData: fileStr, - // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 - // silenceDeprecations: ['import', 'global-builtin'], }, postcss: { plugins: [atImport({ path: join(__dirname, 'src`') })], @@ -125,36 +61,8 @@ export default defineConfig(async (): Promise<UserConfig> => { remarkPlugins: [remarkGfm.default, remarkDirective.default], }), }, - { - name: 'test', - apply: 'serve', - async load(id: string) { - if (id.endsWith('.scss')) { - // 移除 @import 语句 - const filePath = resolve(process.cwd(), id) - const scssCode = await readFileSync(filePath, 'utf-8') - const modifiedCode = scssCode.replace( - /@import\s+['"](\.{2}?\/)[^'".]+(.s?css)['"];/g, - '' - ) - return modifiedCode - } - }, - }, - reactRefresh(), ], - test: { - setupFiles: ['./vitest.setup.ts'], - globals: true, - environment: 'happy-dom', - coverage: { - all: false, - provider: 'v8', - }, - include: ['src/packages/**/*.(test|spec).(ts|tsx)'], - reporters: ['default', 'html'], - }, build: { outDir: './dist-site/taro', assetsDir: `${config.version}-${refRandom}`, From 1a7a8c306d0f432dde2131c28a07907bca93aeb1 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 20 Feb 2025 15:45:25 +0800 Subject: [PATCH 31/40] fix: e2e url --- cypress/e2e/h5/index.cy.js | 2 +- cypress/e2e/utils/visit-demo.cy.js | 2 +- ...e Test -- check h5 demos blank (failed).png | Bin 0 -> 284719 bytes package.json | 7 +++---- 4 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 cypress/screenshots/index.cy.js/All H5 Demos White Page Test -- check h5 demos blank (failed).png diff --git a/cypress/e2e/h5/index.cy.js b/cypress/e2e/h5/index.cy.js index ef142a6588..e21f1b20e6 100644 --- a/cypress/e2e/h5/index.cy.js +++ b/cypress/e2e/h5/index.cy.js @@ -8,6 +8,6 @@ import { checkH5Blank } from '../common/pageWhiteTest.cy' // import './exhibition.cy' // import './feedback.cy' -describe('All Taro Demos White Page Test', () => { +describe('All H5 Demos White Page Test', () => { checkH5Blank() }) diff --git a/cypress/e2e/utils/visit-demo.cy.js b/cypress/e2e/utils/visit-demo.cy.js index d36f94896f..d533867d2a 100644 --- a/cypress/e2e/utils/visit-demo.cy.js +++ b/cypress/e2e/utils/visit-demo.cy.js @@ -1,6 +1,6 @@ export const visitH5Demo = (componentName, delay = 500) => { const getPath = () => - `http://localhost:2021/h5/react/3x/demo.html#/zh-CN/component/${componentName.toLowerCase()}` + `http://localhost:5173/react/demo.html#/zh-CN/component/${componentName.toLowerCase()}` cy.visit(getPath(componentName), { onBeforeLoad: (win) => { Object.defineProperty(win.navigator, 'userAgent', { diff --git a/cypress/screenshots/index.cy.js/All H5 Demos White Page Test -- check h5 demos blank (failed).png b/cypress/screenshots/index.cy.js/All H5 Demos White Page Test -- check h5 demos blank (failed).png new file mode 100644 index 0000000000000000000000000000000000000000..823c0b7181b5f4265f6efcc0973527ace4aa958f GIT binary patch literal 284719 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%0Duf%p$t(mD~cOiqJ1@Q=5YDuU8QL$UM8>DN7j2- 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�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%0DH-_ExsDB+B&ccs}apZ&8WuTK3tro$rpuh zoqjv%5-73!D(=FKwD{#usuL$Q`N`Bu_SpF<d!O1NO}-}Qopz62*E(NS?~;<y6Q@SI zF}%7RZGE@R(plGp>YWX1-YVO34x*S+4NnJ#<mn3SxJhq{!pW)Pz{aZ86|7mOx&RMI zw-Y8Ot<akx8>P!R$2EW4=WmLORFV~fa1LJZyU>4fbvs_PvT{N*QL|u==BWQ-1t(sx zRURmIJalDyi9IcPMTjmbJFsXhDyf)>@&GFqt=ukF%|7yl@NF{E%u27-y{bt$zhqnS zQId+`g6BL4yDdC=C31Qr%N`gz3My~VjzGD;?*sA@3d;S#A^Fl>lu?XDmtE4Jb$k>% z2`VIt^_No}d}_7Q#Y6LD8sVlR#3)O);^Gta;;hN<Ak`=y>AX@j&?@~$5;oNV0))51 zO`zWGCVJOiSp)IUCOgx8-87RZY{nnx%Mrdv(=cD`-&4|IwW6BxcfZQDXLOM7DlYk5 zb_}1XYJF9VB<Dp`)NBo2OIeYds;gx=%vh%q*?*t(a;MRLEZ_4YaYgMMYfd54TJ@6% z9_AW;sB^M+#>-`}oXSiNKK#tg|C|h<Ji1@`XL8kCZ>)@kA9SAg4{iB9^BeyP(P?-x z16i7&RZxE>c|QlB6iRH`FT_9w9MdZz;t^PlaS-#Jh%~P<yHQsR)ADB|%N{>FR$A2$ zERs%eC=S0D`Z|e8+Ac%m{yKq#oK6_e5yI%<?%ZKFzHQ(0UIx1l<nxUu`z4qSL$a$& zAKr7BvK6`BAZh5fZeR}S)}Yfgs!h%m`|FB{U?#evrg2G!+f`BAZwV)>Ln}1#N+TyD zoGeWP9zp3|=vZv+yGG%X<~_0j_2v^chU87<x-Y@edCZZ$P>;)wZ7{?^%~rOsIt!y4 znT{WmlI4xqqfel<H$QK|ARZ5iZg#1lI8>4>!8_x-si}RYD*rc?uNye<i)vQnJnPD3 z2a;0Zq1Z~8e9RyQ^05<@kn<Ne3XE*Z+i3Fb%+9=%J&3)kC^NY?e=_k$_aV#O-Ff3S zccYm12W^6y7-<_ONcuijFVMCPBPi3|pB7!(Y?Z5xTQ*MSfv^Y$ILKJ@iOkT?Z$<iU zo;V~?)4q$^aLM6C;~94lKS4V_!svtJq$TlmxC?{T5u7T@K75;RK+f!=&Sa%lu9kJS zOFX#(zA;_GW?VQH>S$`-u_M;qHwhKrJ3TKEyh_0+{=cpy&@WwSvzHdKB{p{;8G`Z{ zr(|8g9qSz?T=WD7by~H(^l+XOs??+FtCtgNrjf34c+QFlPNqz6nA>>Q>X&(IUE@x~ z-CE^-6&4i`-zn3{XHe*ppvN1xV?S$8jBrmnsdtWge}yE)Htu%o5rz^e3~z~#n+4i6 z1)H9`XF6m#gpv87BQ<GN+FhJosRUP#j!FdP!#_2WpOtoWyj%+K_!4+a!u56H&qA6a z53%G2)!gpbq;{LY347U=DBpOs8jE#Q-ShqA%?R9Hl6EK}$?0nuQwH8YPNo2G#NUYT zOZN4ROe?nA-`U0=r>1(#QDvBw^>q^Dke2vdB^)!=*;b@{%-P=A@-Id$yML#b>sC+f z(ale;zN7f!v66Y1TUUWrq)AX?@iOyJmH6|AU{*T2WmgPB1LGM>ukD9qxFut+M*Gs3 z%Tbyr7^0OGJRjry=58m<>8P`+Ks1Ykl;l@me=VVTvH-Dw^F5m)mYm19!~LlHvvn3u z*5?p`rW^J$tHoA`=hZcjB&9;mu~rTs;+F{S&j5Eow}21fRg=vu{E-rnoR8c))P^K| zR8w3<+TwD`$7|niTb4AU)4F%2*bf@$Uvt$#m(fb-#+AA~lXjT9c{p~}=IJ0}Ujl+B zmK-4^B%JAcc9dNU{~b+WYv3dQH4{YVl##q4yF2VVJOu@qsSsEq#;%z^m4U&X^-i2- znUhQ6Gb*M$?Y^-Ho-M>Wm)1;e>^ok}(PG@FEpM5A3Cb%(==I8#mFMr(D{$49Q;Q$D z$tN9<Zf;&Ep+b6n3Li=LN$=lju)2INr$00s-i_JOXjl43LMs|elBGOIWHx19xptUQ z)#n@WW(}jEsoIomsW#bav0f{0_zA#+0a7tVRfQBwDbYQyoI-S>!S*ZEDLlmy3{|KA zLlsDF_f!=);qNpoXsgmN{Ip6Q8S*N99ScMeCq}WgP2dpOBgZ2{^;;PKt)=dR26>x> z>SN1k{?bmt>>!i%_}bcYr1bLI_1l|(ft}edtt7cTq?xI`2^lA9xwIFOgwQtX84^{? z-v7}8v~>5u31Y1Z(2SycWfWYevqN$%nDa4QwHVh<3$4taP98&V$n_juQQ_}MhBojO zD*iy0@SWe_k58=fc)2}8d;PJ^_xJYCl(-k3XrQf-Y61_&(B74E&k(FB{>n3RRLr)a zgF4Mei48Z`M<Df4rfu!*a!WFl#@Db=zXEht?_u{r#nVo+eJefvFGSTWMCd;=D^r}j z2o74JBUS?_VHqzh#ptj6Y|{u}!5(SpuE#Xc*jJiHy3+GsmA-$B$%Sh<9vncT=^<S^ zM9%o-jbUf|E^Aoi2bx^A%fv_fy|B%{HI<^tunNMkyQ&zHJGqU$w0WIzFR}mJ@9r*| z-B(GvSW?1-S*|C#O?D>r8_CXAjhfuZRzCX10=Fs#K`+A-yYGLhy+z{UpD=38f*ua8 zvkj89M!@ER`}4cV$L;uh9i@R{J54^1{9K}3zDXS~FN2oKEovM|0P#;Xw&F`v&X`N; z(9?|au5BVguU`(Df1hx{jOn=?v8>6cEFM{P#G~{gpZD-^cAey}x#(&SLdSq*(e!PS zfY5P&s{Vt%wfiZf+ij!gcI|fA2+Gm9lG?Z{@1$qd-3IZOhzM?8Y8BT<e^6Dt_0fM9 zWnF4oW4!^RyI)A44u)3I>IWJwM7yC(Ko0g_WeATurU14`m6J<^zHd1_s9!n`6q;Zo zmNg16di7Y8JU!7M|Jd1IrYIgAw%*J=oms;9mi`fUu0^L+Jex@40WqPVP?cJibn(}T zsRia8!DvoHW0cWMF1fKeS0!3rLv%3B(e<YEW{%Pv0EG}H0TzUh`!iG%AJ6L6J|lzD z4;xh6x~zmpVbZ&z>%S1A#=c-c>H|u}2^C;a`!rt-g<~m^sS#-Kdws(GM6p4I*n#NK zq1rwlpJGfe9hnY`=YF8wMH^0Ba9=O00JX@mQS4E{P#a<tOEf_(x%L_FrQ7vQ+1;N{ zumTNy)PKsRUsvElF`y4x5^(H8L(ViKx|}x+tsWrY;7X5i1R126kqiQp>YddCPL0QF z?u)Kd-oKRwLuV9L!uD+2sSRDE-WHBLY7H7`0(U4>&uda2d6%X_j;~`~Dxw`M@%J)i z#a%?A<ez=engpE8jB*usIEh5BWT;5vCq68&SlQ~hB#&Owj4B1>fm)<V9=qR|30BE< zmb248HBwd|3q<6efm~lhsb3HSo#A)aN%Eat)=iJo#Ahg2sG`oY&;Nx|I|dl_0(}-^ z6^~+@o2)u+PG>IuOdx8^t9VVNudc{QbHchRl38aS9dT{UJQM?~jzHR@%3)T2qUBw} z2;-;a!t!Adru#jcP4W9kL;BvqGpNf6Cs?(r+?^f`pG;^Z3zkr&1x?1ltWM1i2X{kY zs^YVt)(1;JSCx=}(3`RF6U_vO3~uO~zm?G7QjPpu(_=~WMh1yLd6+f4P2Mod4w*!1 zBGX>1RraT6X!3Br8@4I)1fi?i*fua%Z+v*cry>iVLMw&Cq@XH>gZ<ay<km6yM~lob zB!ur-oBgW!JiUv%5|`ueF=yj^eWP0)EKPAOzi-UUcFUv<q$4%I9t|dfObjLlk}ueV zK&hy>bo*17ae;m1kMR(`GF%m#X(7#rxLrJ#H<V&O=i!@Mb+(jIO`R^!8!RY@54ei) zt=N}UF0JtYDY?KoH?G_6)e0?9xVfo(NreVLx8ZI3TCZ{W5AW>*Hk?u#a?N*-KXF25 zo;>mYVyXIOVqIyRdYq~PZ)M5IK1Bc=xUBDEB;8mql|3CxdVb5(u5mp(b1m%o-36lA z`W@JAt#U4-+u@z3qT|0a5a0D$HIIpQkuf!I!u=(vap?jh6bu|SvKl8!chqO!g$x~~ zrs~#=BlWTmBn5y71AC}c6iT0{Y6cMhC@0KVFG<9>UTD|T-?x?^9DNbz|6;cuQ>!Q! z#;HJ<o%1@)t2H>u=*?G;_)NzlKpwjrUcGGe*n6VaCVYGpMi-5(>tILcn(6p;=5V=S z*Qx`Qo&Azhax=He95u9Q0e$0aFr?4en}V?JIST^N5-;mBappTr@4pnx#;ERz=>ge$ zOs}IYR8J63LQaB4$SVWq;cnPSR&DVsTmi-KdB-5%7Lk64!pFfF6~GWu&8&KER%6tv zehRQN2+y}Y&bIy#93o_D|4M7hNn+1vc=tGImi?=8cewHotF+2yoEye<{i{Fpkk$#x zQyc1%)*|20<y+yoCVL+gSCCs0na6VwccX^j5Mg_RBSRvXbrsDE8ZwoWRe=`3=J4~$ zQv}FVqYisECDoF-3#A%Q1GW*WIM9`VJita~%u$ZGx94kE*MsNs|6=bg+^Sx)_u&nQ zpc0BANUDHHqjVb}0@5ih2uQbdC@RuON_Uq?H-doD-6_qcyLs0>=gf@GcYgoDyRYF~ zjGMhb^*k%?`(A6gMl;ek)Mbk$lB5FKr?t1dXP;LXF??n>a(-r@H?d;ip4m8`!};(m zBLsKmwm_+4+1C>gMQrd=*HTW5+61eZEiKee>{1{mKS$Aei;INT@Z89-U!HQZto(8g zHIrwfXyu1x%HfFcT<S8cg9hZhAg{$($(f`tE5o<yiZI4n7?WW?x~m{|!}YM6bG9mE z;i)8HSC{fikVj}Nx=3s^BXdJl3z3(>50=#`44CWjwyVj#VJJdJ)5d1+E}C@h#;d@r zJ;S(;q)!w%O5e$tM>#biSD|4{CATJO&gulDs=DML;>K-a{_%MN#OUWJ4@qkS9YExx zS@MMS<k^mWpFp*aPD@=`_eP(=ccT7m1^SxiJ^NathVcFzrQ)+1{MSAPM;$`e6$HGD z*%?idqlRXC$@x_nz}#JKnXYP=2<>~dxI|F12ZX>22vT5p%oQsvvc8A2(`Z0Z0T2z% z8rLg2CIZ-K^i-l_=yFjY*3dVDAm@O@`o}0*>RMkfG&m)ceUb1vBGMPytu$NeiC*%~ zH%p~roJUT3G*KQff;i`PUgr5*X#Q?%Kg7fz2tQ@5-W$zouD%-a*8l~c{iu9?TD8iv zubxY8wcr2eK11AeP;^oARQ4YMTLi6?5bku`7K5f)k!qbi1Nd%QqR4(AtWmy9z~zKn zUe$k8LG)=JEGs5Cy@y(ql+@y(orO~+I5aP3PMg+Xk7*C}GHx93#^ABZ1%<5Feyc>+ ziwj`UXq>|=5K*iLF4Oy_sGSxiuan~y{=rB^HQcN(PfTNO7+h>Jy)+jOT!Eq_)9rKV zV;$Wio;A*;_*x^SN>CNvzXvE8%1vlnoJV+GP%Rsyq$88zd`4K>L!(z}`;F`q2Cxo3 zM`nvF4Z3a<tCltSMvKdJJr#RX0Lo({*4YlVl~gZ65>aZ(fMs7@`Z^T55D=~7xwbu7 z)is!+F#Jsy0PvP83f}&8$E`SIba&+hvl8=ffKcV_ky2?USE{hcUB%Jiii*%BNyIu( zmbGpI`#1K9aiCq^58nXA%rq}+a((q`yG<NGgdeNggxn89n+zDSn|@|kcI1a1sHNzW z8>`uMeh@G@%m|pG04WTeCJ;{AvxO!l9TwhrmlRbkD9hE;v(L8LtKh*i&Kbbh$k`Gg z#swYaE_h1XnDMs#d`dWS9m3J1Er-WuPE~;(0aP0bw(_yzuYGGU*I%jO6TzEfR}F-- zl;8oC80qYouI%@buGMyDop+gTy#xB7azSG<Ld2{=NShgv^`3aQQe@9~6lgkN2VBcZ zoi|9G-g(@F@I3=gD_AE9jNN48C>iXO>5WlwB<aR+Q|`J_d>jjBYm8UI(i{oyc|Acp zo4t?gTF>ku&-)d-T#;UUopQ}~cYALdQo--82w~#RjQCVMA-5gVloY1;_E3DOI8=xW zN*9I>O~n3*6JO}fxQBV7Am;#paaD!AV|oXz*3*D_^3}uq&GC&og5`=pT6B9Lpj3GE zzP@T&p2_I`B|LX$a-WhaI(lMlqb}&y{L=sSCf95KN|s0IC)F=)Qbx^Me4>Tryx-$5 zAkG~RK>!L5PvMQ<#UHI#oW5{jT~y)K$EK}MC(EHF>!4mU`*sep1VigfV%Ol-x=oB+ zkjNXhD*BQNosV06#4B`H4q{pIzVFH#G<<cjsBv?el>{LoP8lU)naAw{$ovQaQ$S}1 zF1`x79QK5lBz#F#D#My@R$q~|<&BZkkRUB2$$b>HY$L|wTD77P&6M@P+JNYMa@dy! zTU?l?a0g0cxAsev$G88PrXc7@K*W%RhA3f*PI?!5T4~K9^>l^5g@nXX{i6G5QLi;k zu`)hILtaUh4^TNJwkQD|uwo^9EhLfaJ87{^a6e0I-IEggK>sH`((<G8vh2?*77Fu+ zTkQcM{b6C_g8VyEqJs`|l}#O(WN*GxR_*idYBh_xs8z@rc7yV1PdfK22gz`LC)f>h z!4v-Wu#6nL6+~u~+Ike%M7=yTjzQ~YxW{Gdo*r$0g~I%E7gQ=#?>Ac1_^>BvKfqn- zEiNn<F#e!(@#0&$LBdKBiOKm6O4oO^cB_hiPg8hPiSE3$NW||+$nmW_zgQR-7h4A1 z80-T@T*K8+X2nip0A!8B8%(2u8}xqJDmiD%RheaX(4=`c>IZaOtGyEIy3%>?c>VoA zh<9E_m+a#YXZ)Y$`&Ala)7FeC2g<<AqPBl0On<Kw(k}W1Z0Y_$cuAQble|SB!8I`L z_41Ufk4=5DBu&9)pBC!k!=SX}Wzv~>Phd43xBCH?b!>TLcKqUqIRHrsqM6vi{H7J> zS!)OVy(Y7H{_(O!g^BUi-SHMI)Hnr_HM{$t{wvfe>!G<LeMbHA`km!{X}4rX^V3;f zP2Q_PW30OL2<?F(A1V_EJ&||krZe(fDR>dU74Gk9X^~jQt;at|ZV*mL$iWDeY*Rj? zrhz~cqzn)lb@m9kf7pFZ^D&-qVcw@V{VB1Fvy8g3(96KuVEcj#@JH7M`WXmuo2G%| ze**|7g6u^$%h_Vy)x%1p7zEflk}t3?VGD!EY_6TTgx*;>5)Xzm-6d$fvtYxELbnt1 zf96OQfeE10sRzV}1P1_2lwxjRcuq;t(p8_=)uM?>=KvLhl%{Tfeg!a8Vri~x>$f0d z8b(&cg)92|Fr_FntLAo2oaa|pDQ2+8(D#3*zG<W677SMiop#1+jI5Ix>Hd&8cYUy` z>+vZsXY9NjXzd{92H7D>e@rsWCo|EX@Gc{dYr0GdVqO(_;$LldY@k#jG2=#z?!Ku_ z^GClAHC-Q3s<_LsyY?IUSL@I*E)z@!fQSV?4#HWUOiSor0hjO=B1K<8K@`TX>x2b) z5!EUZcYI&6k|fiyN<Lzkj){g0(b?T?CFvg?5dnQrm)&A3?=(@t0EMjj1>FbgCZ#3P ze@UxzbvcT17AQ+y&!Si$s+A-|u@F4;b$%(aouOTz)!ot~{2Uwf&bO2p1WkU#*Ns-b zPKGGFUsQ#bU+E@B6t?S~-6Qi#mIj5en`FlL4~6*iVg(7mow^R%t|pdxrcT~O@!WN8 z2n(5>@}1z^qLyFzasz!YJ(Ci<RUQ+DjcZ;T=nEJmkjuT<H#C++W{|x?U6s(*?Z+w6 zrzj)^cTup!iVo&1JjaY3ahlAe3~oFnJ7y>8ur}oHxMoh;VGGqApj%5UFSDKT^Sn1~ zWXoCMVo~Y8#?4uAa&>3SewypkA5;q<$z^ZgzR1*{9u}j@@#A3p@vpWbvmMcl22R zp-hDmBts~oliz0gVxi6Jgse0ouTT0k{m*;4Q4HMHFi-cw4<=q8cBY7*vsuW2+KGXW zV7iXyqt*gc-u!tq7-?aIQogq0nJXa9xw{Z;T9jp;M|A4H=!@KlgkZOJgDKL(LmLlI zuAi&WZgOB`yuxgxF-W3Z0qu)@h+?jwDM%S%uR;geuCaOptUr>ED_0x{0a?=n@lNpB z<C?x^r6A>65W&1~6u%vmbo(;NWdx-Mn%@fft5?QNUccm)`K{3~l(I^sgP&Z!PK=Gx zk9zbidkdm5xmEqo(F?T@bVZOa#~%DF{yR^H`r3zAd-d}t`?XHm;rBm8zVLr^QJ+AC zX(iJCw|HRTDil3zW?JhJb~<EX{olfbE?Qy~PDn(bS?O}|zrR^nIPNJ9a1ub0A!;xF zkGcijl)c>xooOSW|MI1!bouc=&Q5sSs~&YlV<WWxrxFI<`;K}KkM}j=&#tp51tSR? zrFk5}Wq9a?!Il3zM<Vea)J#-nR_D}@r2W6XxUcN%#fAS>Gx4ewwIa)9WM^08ZzduK zN5u?5^@@S8v9X(8(M_v#elmkg_9r_d{5MQyo12YZTa<(Ne4YF~LMy4s79bPgr7KeB zACG^toD95v^*thKTCh-+G2P5;XY)n|XM2PfXqOP~S4C2kY4$@&$h{tDX(0yY1xl~$ z)IGj(g$xI=P@pQSBF~l30eYg(L6_$(V{l*3DE9j<Zsj&`?~5it3mvAhqs%#_!sm>d z{9sgmf0al6dv_tC+ztjg_~xY7s&N6_p%`%4wUc%>daD)pnhfSJyzaOT+6n{$#iMkr z@h!}<$)z+s@fm2a-BF$;7OFyWf+h@sV4>uGOSDT~PTy1(D*&pd>jnns2xcXvX{V0r z`w1NqtWoPNM<tHx${=ja<KHN`=Q3VIjCFRGfU32*>TJU&Z~7S>#(yoAvvfE~mV#+j zB?LPrChm<xqgQL%p~=!-$QNXzMK)+kbI;Hay(LA{v@BJYeE}JSH%M-S1(Q*5a>2~H z{rK_a>kGU!b&*{$69KEEzTl=1U(V!Cza%^XUyOZ*_Q2A#p1Wf=Sn|T4#v4m`2pluz zZ<q2FiOANt_Y0c?t0g86qXzz5-ZpwD*fZ5*mE<*|xZYpLWP&ElJVr?E-201}#(862 zfyx^A(<p8kswogKv}l@xCsnEZPO@#4q7vJ0+WwD65afS`<kLeFAMt8siRAUsHZcdI zZPl2E@vY7d{QRjGItSwC8Z#qRzmxSKK`=I~*oiB+yk*?T+0@8}C)hUQpfS<!-yW;U z5{vt%t<f-r?H4}uqC~4Asp$3d^=}#0ItM5;4EZ)PUoj<7n%O)6gWSFFmGaYhaRqf! z{4zNeQ9FF#t*Wdj9%q2e1T+o-l?l`|^p8-J4qm-`p!FmhCLJs<R;{jnD~iW`tLcT% zw$!M?mcJwV<l{Oe>n;yxtmV4l9cAm6JE)4m|GX02oKeQ0uf*1VW$@lqg1Fkx<9iCO zTfk^g-65fq{q$;e`H_R}Rd7pBip&8ujIg}7zQ>XHH3O5z78f?jR;lS<D)T3Z2WRet zOd1-0h|SYqnNaLF1bBi70_<oY0pW$LHt)t=sTt*gM00KJA1?nxUw#EO#b5+Pn~=5C zK|iUoq^pMax}N&7Pb*l`@s>M*F#mhujPN!-&ZLPU=1k=)0QVlDA2)nus|+Q(@uqcO zMS+8hswVS#@e8@st2eL&&tr7!CI(Vm^?U7uIqTP!ZnAmoat>>ss&jw{arp*;FNhZN zb3q~lXsk|INe!iG*y;t!9uQXOLaXxIk3B3?3(1O@OcA|Hc2{$p0jU9bJpZo)zW12t z>pB+pFMu<TH`jh}fRhtj?OJH(bovY&f-}x}L@hK`-KZvaPf3$5D<K~fXm$>M97yA_ zS3B|Q`*w)%xuc_LIXw;|wUG~1Vfo(J7p~uG$Q{?T5hEOa_V6L=A$P8bQyWSJhg<@; z2z@lDpM3rlL+m-{&m7H6NBX+bfad!xCf<uFJGiCliWq#owV$o49SIiZJ%4W8`^Xgq zu^BWvJ<o23rv+mS?oaDBAVKJzVq0JGoT38-dWtj5f7rzv<k*8HP4w+FcmDm>siEHv zZ_zxGtmBCXTEs^FQ*YL!>MC-e9q(xuIUf6d4Acgs<Tf=c0)lcVVDd~E*jjrlZ{aSa zpL(Yr3Nu76`E(79VUYJep#4AgVjpGHc$JkB6h4%P-Dzs_8hBmdqVNzjr$Wvs(QkD0 z)a!9iW};s|W1JvrTC|+NjJUDid`KGl<p!egdHKe6uFIhHY0!wEQ0esbmo(h%ThlNT z;2R`Lt6_fFyL(qhDqk-U$BsE^f48R00&$=-kg$KnC3C73|I)Fqr*Br{)sD4XN8vr| zJF=84DLa1l$0zt>=&vWrXYT+(C-P8|9JclsD^*T}DEGWUUiEvoDkq;(0}#vX_xG@T zbXim9$1h=t#HziLcr>4;^<8?k9G6b^icXY#gWmp5)EeH6)Egb#uv30@MVZwGEkC=$ zZ~c!Z-J@KoC}?zmE4$&i)g~ZrPZ~LJw`C2AwL!1WHl>U1A2?xGVj}#kl;NBmtUMuy z4P2UIC3QaMyT;U?6274X(`X1t%$m%{oy~uk+9FPo(9#*gS=TH={Nq!xZCo5}P|v$s zu8~vh4ZWT@7dv#4-_+rF{Hf!1XGh2Mf9cTmIL-~Zk6ds622xEQCw@qZ?ADfRt9`;f zD`WFvk=R3sCyZDJPy^bq6zH6oQ<Rbd&4zGCiKr%$%c=l1)*>fkc#Y6<_?5Rm9wrG` zq>m}+L)TB{HEk~~oIg04Iw~=*gFU;U>7vG0eYDK*BXITM^T)wzcbVI-`J0=mdj7m% z85nmCYV+2}g#3sE1>eP1pWe#jk+_Hm>*q>z`*=CJ$G-95GkanRx0wQ+1D~_KLhN#0 z7f__$GnXSl#Fv*5q7L7D2&C+;bInHYmI~+(N$1+%$wp=oF=Vb+&1)*|#>B*Wi<(zI zgsA{AFqvy4_5`}NknuP0C`-n@746R^c&Gy%{81tZ)O52l8U9CuL4O3j9|aHoVnue; z)6?q?HpTPEoUGJ+?KOsa@4qAzOq=<EeZ2d|>C0W?pr+1WiP>WNKQ&6|Rz%T6u@|eM zlV%kkXBkS`9a>{<qUt#-Ul6hfog(B?IP(+UpzUw;x1k290T6;;&@KN#U@u=aHrQ`M zz?lWAjsEVTf6d^c{P-o5CbihCaSWQf!?)f1M<f0HL)H-whRWhS+1scV?K&s(^Q%g$ z&!3pE-w~ToD^GpD!m>63Vk3k$j6zu@#<}2lzuz+OKO*q4xAq8D(CLESS}LV3ZtL)g zgqojuWs@)Vg+@4>61Z*<Wclt`TZLxoQ57|ldr5ge+u6m}ASXb;%-hR6#P+;Olj-W` zaohqvT)f}#&eH+s4EKa57m0(nuAGShB@0t1$-C1sfJ<A(O1_6%qCwe)vW#)kPu*(> z&h=;(kSUpz*i7@4n986Ic7w=+)L`cB8t@6ucF<ZIuIf>>9dm5J_F%$@Y)8wpCN}|l z{IBc@-1GBhK-vQs-NUMk^RlsGPQ|tD2O(z@8(v{f)U3D{;<7pCi&bs7xlom%kP*WD z2^r#12&)aYu#Xy1t1K!kp^Ztx10<SgvPq2#CBVNqIDsE9?u^0N9yJS>uX^#+@PtIK znsnQ7wAzCC`b+)0BaT^B-2dg=`LZDZK?Rf+K5FWuR<k8<uRNlInJ^PWU(rxOhksy` zf6qLsM5~A`&8PFZxWYLoAoMEnkG*!p92NPVkEnyF1zhW(%P9d=kHIQddp9dsqmPL< zPvq6C0kC%0Z9<E8#SqU}-mSsDL~Ee^RYB4CWLZ6$o|$wlN9HB%_bIiKQR-?!Sjrd< zn0M1NJU|>iv#-L~9{KK(<d>N@eG>O*>!E$Ul8i6FD4)Y4K0IH{==|1Ix4p%cTic=K zMC$%``}(ngfQhOtG$qM6?}q2W2n3VHbyP)4sr804jJiTtoO6J(4Mh5zbXfT8kaf+T zh@uu0%G~u<I_%=`SM0eriL2_~zyfcAibb!GAeR;!PAi?G?=p%gJ!0%{i}s)Vc6k8M z{b?}zXxw!?73~_=Zk6@*q<uuFi|Df9X)r7JTc;N4)HR`Moj{9yaZ6jR7m!O-5(as% z$>(4nEF~6sf1W9&gl=|<T<BiU*cQvExdwgkD{~DE8x~vN(f>;ezyQM~XksQ3dSo8n ziIJk+?OKd)ErKY%*>-4|vsX-U>OT9!f()?>_Q(Y>6szlS%6Nql2kOyOv~LbGhP}u$ zW}o@1lf9u!l1f+;+vI7?k2eEfY7tOYIGLew#7Zkb$kr3oQ2tU9d$)xvM@f~6vYq8S z6oq9+agZBZS;vQ?du`qerlMLu8R7D}Y@uPyCs-cnnK;bb+VQMuX;D6*XYq@L)p@9& zc~^h1#C@J@nw5rLj*)ME)dB*`!}I4mhxM*>T$KmWziUrrgwDtQ;^G%;2bB!3V>VGz zntT(Z>kzG3CL|I-oySMKOAVD`i_K+uQ5+a?&x@Zz8~e;}VBNchdOZ4itOKK#_NxUe ztS+ERlA6E5@;a^o8tSs4yeO?8w+kL1M<^~26uLegCIFO34E$h<{Ie;;La-ky8--Mn z81dyGJV2vo8j2)RmJ}cEtS5w!>d)M~S0`)Of;X98<91W^ZMEGmoY<qr@XPEf5$2BK zLD+~xVjNVzxD6iQt@giN%Jbq3Qfy<gw_yE9c%ArT^3wwB$shAri1`+Vjo|R&7eLA& zJ^iP=ScItQD|kG-uBQB>bCyZ{N9PP_*4+_FF<;Rp?LN-hE8@>V&c|pD<T%J+NfGPg zKiT%DVxmNlZH9EY^e?UA4Pnj@x2g=JAY#zn-F5kz6k+%avnP?*h+-RFbfzn}zKPq` zhP5+0uMH^!_=$#C82fUb3rFb@SmMVjGB;H#dJzLEP2WJ)bNeG8pP;^PZ1AQ>)P8z< z+h%Xa2hr}Upgh?OgbxZC-yDv}b+Uz;tk?;=b#F@RpCQkZpH#e6u5q(VBQ6N1H(sC4 ziE1c^Qp{d<s3TmV`otizyUW*T2Ov)M7ya4Eds!QeQ`11xs@!k5f-nInDfybZfRf5v z-S;#IcNE_;sf^Mqf8eeG4WQ*2<Z$AMbx_2Iu%?9ZpCTq%Dt4!0rqj?6sgn;z*^NJ_ z449J(_HwHR>uB_?L);VcC7J&^aMu8U6Se@aV<;!m39z8^9$Y?5KLGG$eIQTZ7q9Xn zTT=Za%OrL#A#Phdx54U5?z$id_hX@(h*7_=S-=qf(bn|(rRts5ONpw}{}T50UEyz) zl-wjnw0`tcqNgxYb9cHQYYE&U^e=X|!mNdw=~31(MZ%3DkERgLrmI!$IBndHTR$!w zo35eF5<@}kIu{8V0z{sxn#B*Y`GBFKtl9sdBKTSPV~y*|6+j;AAP|L`yhPI-5Kaou z3PGW&>+vsAK-$hD3SX;QjMVY`vc5yM^v76&+lkWWiV=5MwiJR_mL&ZA6^489ln*4a zCS&z3HEe<&_ewH4nPO#oNZF$&URUmH9DV@B@NO2WXc63pMP{i2PZ--vY{U&Y4pu(* ziJFqD01?@*nLIDECnuO3SGDIy*-`ck`r%-{U6kV%{oHbc7mX~3F$OIXSRz2*1@)W` zcrlz^M3B!9NLX-+--gxuw(oXc=oVlye`U3tbzzMEsOuqUiYKohU%aqxSK*)Uivh&5 zT8hOGD2z~$7zp%^t;@d?>O)G;Uo0J#MS))LX>-S_Rk0`4d#@u*@viQ!vjgT~O1^^J zfCZ+0;xz;rPJB)b5AGIQ&pjbFa(OI_X!)ztB8qh&?V`Iy7jb+N*2__AMtOi!^rrd~ zy3FQ2auL~-TR;^0k9gYC99KYflgCI+poI`2vDCLl{mn#<{_QHii{?8lkfz+q3VCG3 zkf!Hjo?4NI?>00W83km6dKkI`cwjvb!V4fKU}a&`$ad1-bG6yqrPGzp<&8`?6j`QL zre9e_KGy3Qe47eR#EMkg!9OR8M`N@C>cCT$W`y&4KqLHiXveuZFSmisX}7`;3Dvsn zc!F_2RMF92+l5gOI!&6h_HZPk^N*_$f$aMglLp)0bTUYOMTtt$cTCCCEUo<%9&!Am zH`kReS_}~GhA&RuqO$G#nGgc8HH{pp6qEJSFWA{=wcx_XiWk4w_zbvU<Z3IX+C*<Q z-kDL%cv1dZBH-(2o&tt7rdE4MNRpC~My7z&mbTLmugIVU=vm(1`3}PadY0ekX}67m z`Xg&&w2|=~%{1#OXFpWW^2@zYpYZkD7p+6>yZL1W5``~9JsyIab7sUGMeJyzKalry zVrb3x^*~jCOWdjh`}*;s$K!klYz9LQACaQR%H(8g_v+Cx?mf;dEJZG3>P10&DCi3S zp}faD>qdMae}K~wmUbu7GRY>l9ns&Nk-J-CH7O;5S5G*=;k!gO6IN}TvjS)WxvSG+ z#s0pWVEK{ytr}{&1x0nf^67x@@dG}ur`(Thf4&i3u}dW9Ldnp12e3Ip?zpXX(>?#S zb1H#p_Tn3}p;;Igr<e8u1payzdFJXq@PnMnB>Ql2?x%Hjda<j*L#ZK^#y4aLoAb*6 z1aP+gBwVX;T_`1Jk6N%zZ4~xanntXzdi79gPTLro0q4kn`oq9;Z2W*MA~@C?p(VN_ z#OJOt-+PcmzV^6C;!m_O(Tx!mis@5Y-<%Qu5rS?ES)RC_Kn{2Cux813XdHgOm+*4- zr{UL)5p_?h;&ip3aX1#oUyZ}b#Ir%1t|mlbh55+T_G<zN@`2oYdW7p11N!(xmoIFC z14CmTum<6suHs^7BY~lW)Xvfp<zV5tM&p?RDy6YUo>xH3`gMD^t{X{lp0tIVIJ0g@ zhGay*^Zsn7uBcsrT+zBXIomi{?z^CiM!kVA;^X453DA=82XRHQiZIt9IRxZRhL<>V zdu!v3X4=&ibsyxCZ2u&W#SP$ixHAZ5USW7!JvB>SGC-@Y{uoSOq7g!$i&n3^M4AUq zQ_fNj@72K(N$67eY9E@$R3n@&yI6wOfjX2OrT<F92)yZ%nl}G5nO%A&etNJecHWW^ z3n6NhpTp5_c@qm!f1Uxs9CQCUKSLChrzG6L;p;*w&=(D_a6eZ_9c%F8{KE6=9v@lL zv%p>Bl_e{_@E?Jf^$x^ajsF8Kp?)hrMb#ZDx{P#ArDf4EJj6@E8QUe4QR_yRdCTQa zg`oA^nL%h*USsWE#Y#tGcbNEF7>dSZ`neTKTO@LsxmD=Q6K4>Uud*(J#IG*iPR}cf z&$C8qp5r`#IJ~W06lJC3R}{n`>&&!iXAL5A4tgwWwea&s;3tRyi1J$CVf16@l45y@ z?>GKSuL@nf3FJs`b+V7^!o+s^HRGo7-eh~d10w~5I<y!;OafxOUW98rX~3@ID4vLI zji-FV0$7XHi_R{E`#m4@MTcpbc;y5>uopl3_Av47=&Jx=r|4Zb?^y>Cgmk9ve!fwE zj$qc7&@Y!Yn~ob>&|~X@MO@D<v{P|})Tug8vXY8?T4D0ejDnZbIuj$SOsgg02W4tQ zF|95+R;((*JXT1pa_=xf*X-7Wmu8ytS_^4Z*Z5e@m<ZIlD?ADZNulfjue1Be&<Bm` z@HPtiNU2YAwoTgUk$>i^ryD3h6!MWr7pl}R!8#GAp)s{(XEJ?X2k?jjXBoQQ)*T-D z7#@wgdE2Gtg?B<QAG}M3_IWKsvGRCTXhuash|j^FGRdqbFpExB?0+h5TLlq#4t0x+ z%yH5yRJ8*q3AoLzunzoj$}){CHutbAq|=V(tiH(#I;5k_aAjq*`fVo{aItIOw%X($ zcZuvxj;b`haW*dpwJZQS#L_F`DQ!sX(Ah?(XFb~cKj{W1C<R<{`}4TkA`{3SQ*=zz zC<DNZr2}XjG-iNm_9<;dCzeDi_wbpjY4MAuY_iNH5U`GOTh(&h;m3J+>Z;?AETdaK zM+|r0X_BJ1;(loFjJpmr=rA0j7rI0?A=VOjWTZx5@ZBB{l-k&}_wZhFwf?vQZMCZm zHU}ACwvyKC71CdsAHr@>CNUEEvo;kr^5PXTxx>T#ZU9`?3n&aXJ9@Uw+oVcoRcqwY zX6EU-ZnxGs`)FA}$ob2FSnR;23Km(;JM+)?Y@f|P`V*x-BZj7Il}nFALb2azFn|y- zB{L+g|I2;T%c6K;DB>5g<BzjYJw(R9_-WVny*FrB?yd-xFh{TqkD=EVIN^UB7)EqQ z`zl-sf!w4P^h(!|-bP4K!ax#So^zq0#Pdogov&E6CC&Wh6tk;~$WP=Ha}K&spgj(% zekt)$d`by^9wjf{1JY>AbCLXtJi#8)?e21p*(8Cj&?)4pJJo1%&*FNKpK${Zs&I5a z(P_}6b^1X$7bFC&?N7H#HKgR;63hi1koGNU3Anf@&whsFQ14_Jgkg@7W_WXwRxVP{ zU8u4-N50J8Be4p!6OrPyLA;I@3>g0=V+=}?>jpf-XA}&KH;UyV`8mO2KCyMZ5Lui_ zH8$e=!v7Z55;UHW9a$=ioL2eC^bNz=5A-}Z)s+4Y!RlL2j$*#Q^Q3>n!ZWJZiTre1 zKy-%Qfhoo)l-q#}81kvrluO^gj+u#yRWYcj+!CmOGIp;68dSaOr(nMb!=Ds+Tr~IV zb`B7XRL-=ju;Yd=x|cldI~(VA9?g;DX3a;kli)lJ%e7<=y^WQv)GMy2!_^)$YgqxE zk0ANa-K-3pw>7c<yy<)j=p;z+ZieLvD@vp6UE*2CxJ%Pd*@-<$x3!g>@uNi>JKh~{ zdXY!h(9R2Ekz%Bl5zrQ2rS-qcx69(MOY5(@Ow3oTLrPTs@VxG2Np!JzX6l&oRjC1| zHB&n`w`?;r{gy@V<j_v!f&IGu@^b64v%xN30YAlF|2zibuh(SV1I!2K6l5JzlC9Oy zI(xLn>~nH8Se3`pGA+wyx;r%8ny`JKMkGBYOU)}S(@?;ok1#ScI0cdejeExBDFkEY zTxR*syQ{x~RayJUNxUxN_pnepsgU~k-{s;FlX!M3`$R7^tUqXOQo>HF=3=+}PEQAa zd=-tJ>OI{^S;@{Ro28Pd;@EuS{GA{7sAhD6w+lK1(-Xbv$uqKLpFE15lWgmn46K(E zYgx21lopGSoi(@orXX;-;4-Y?Ea!76RTbSCX}8SzR;zlr2oEbyojJUDDQa{rru=$L zm5b5xLZJz5*+|>4hsoj4JZxvI03#)(4;Lj@KAn}ChVwcdNja^iMPZ2$DlRQjvO**4 zmE9<t(o9v6*;RzG{-erNy<|fpqpz{!m2G<uO;&IAuKU(lH^{ZM|CDnoIf^8^o7c;S z^(1#iIN<r>73`Da9cAOy5EGGiA5`aJY!2z)>FP1hM8t&L_3X(g*`*ArUxfd$tDcE> zrzU>dt=W+M<hZ}27}lZs@?vI#@H-@fu{mp46d&IXpS(){zy{4CrCE(wlQFV)WDW0T zb+KKIzv2K1Qq(wuZyb7A&$5S_<KW`;mk7F6h#MhoXGbHRh;Z-S%ON~%-SeJ5r28r6 znzdi_+BPdIPpd1f&LeBCRYB)jA@pyu9cnf7#wIsp(;VwI${;A)63)og;_e_uUX42m z@ovttDJ)mIcV(*i>BoWSXhxa_VI<PceyVWZEO=WB-}MnKl9YpW1`lVTq=a;9_gSk4 zOd>1V+oor}|LDc7Z>p|K5xxCmNw}2P56A{ywzF|@40WG6XNTUli@w{p0&^#WF0yrR zZ*>TyCvMV%l9`T%St-J6LzUImd->tR!=Co4M%UQA9l+@F#`&B<>|hvX5G#zh{P&_o z{g?U9Im8tiB!!bgkPUK=Ldc+r(fE~|v2sZl1smt>I=L%3Wd$vAbeV1zPiyRTgR5QV z+k!?PUf<hw2s3ppo-!rR&CDl5_Kh7CI<7KOnS@*>OyN^z%r~))uapyVKHz9^nzQIO zcG@%kS;#+|l6rR}sd=b_%cS@8tGA^l+S&N9+fxRE4%SCLoKccn*4FGoTup;>9!a#7 zyGJ!8<9&4*^4BOxZi_WbNXlwv7Ku+V@a>WGoh5&|tTizipQ)y*S1`oR(Wdb;yF5kF z#lyqf3tPE4<D$yk1D}J#klwzm!fIJAmgnheVX9e%ro8sT9VSDoTk1`G_^K7<J5hd7 zJIa(5N<r7I6J(1xl&OY<Gf1C4(sjY`;8j&jdOj2plnmYETTWwNRC-Zty>v;!Q&KQo zy=F%`KXp;Re&FTK=<_GoT?H}A!bALTD=WMu`m8e1$0h?G@5<Q8WLBjO$k7zAQb}gb zw{IVnWmx8i?GBCj6CRDO+S|r}@AVURfOf5_n%v!vhkEjX^z7V&RxA!5QZ70xr14*c z!5d80CQ?#ib2Bdu=e^{Zm|D4VCtpn)t}V)18-(YZ;4zd_OArc$Ckw3|%IxK;zo_K0 z6EB{V`q}Rl$t&{iJ;}hgEq*(qxZb(PqD4!+m0mu+y@Um+NN;)5Xr`uZYroxa<>o0H zl3QiIFs6~(S0RV3q*_3J3$%HUEkCV_+t&|lN%QUQXP<HnZLwp0(jakC*^XcuDb#U% zW65;?>eY~l&yz(OVj3PPOH(6Qc*v{D*{pN+3ihAPDqp^dW)2@0u<x}xX`iXY{Lg}m zo_K}ki?EJy4Q4aZe)V+1c}~QXo;UHZ7*C>)L5v>y@eLasZRofh4eewa7Zs!1a>wwh zYGk?Xj}?Tmwy>tPq?q%cBx;USXfcQHsH;^}?9^fL?c^9}$~kpB<?EdpB$i-k`Zaw1 zWI}B%qraE)Ynt1G8pk7ns-m;WeJNL*>aF7zN24t)K@2uXv4)qEV$5_!)2cV4(rn@@ zyEm&P<Rm4sT-VbEwzKRwNneD)^G|Zod+rhp7V#^=)oT>L@Gj#ipDR?j!2aHte*{bD z>{N<8CznG%xM#MT4-0QGEw5^2kDvBF{`jb!%-P{_+;OqG*{iiqSh<dv58JBGy0aW@ z_XPV23rYIU`&n<u78xft9e2e|d^s0(h~-)6+C))RY*0g!X_rcmaJ;@b`o%8!*RZ?p zOJ-9Z=T-uv&1^F}-qS})<W*INb8IX|$WPNi`pZmA{@7cz;AI+M;iCCzKFevnpuk%Y z+N(KUrc7(J<U2dH+sm>xYFy^5NqB*&@4i45hW|NJr0Pg-kGW~VQTOhc<67sB0>e_B z`I1;Qb3+!S@v6Y-Qq<vWRMfFjCu45TKrm@Z`hc|Y#IIpTm%V_zSLTKhpgv>FsiU#G z**(DH|Gvhd^OX?>W7&KI(h1-9@cC5%X=~P=fug-MupU|`D+PyJx%e){928dEg(Zd0 zI!uZ_gabCQv&M2dbiaK!mf~cOfmC69@MYxyA8Y*Zbz`LCf7VT{XgHHobES102xi76 zPE+*`)Rm$=+*sUBTD}e?tDT<I?F*U&$^Fs^4gDOSd+Hk6$L085_4ooluB?*ITbS6b z*x&gw<Ck7>HmlZ|^8i!hrh)6OF-P>pqM5W5`umIuK;i1*MLi1<xVxaxkjuS;i<gm~ zRL_7|lz`#(UxNq;$*v^_9iGn%9C<17-g9v=&-t6m=|+~h(R4=G*Pr?Kn#H6P93BVD zx~!T&2XF<)N727--|idlNeas~n|9*W^1t!2fR2mix$M*nUL_5_xias9CjEkpn*xem z@Gq*0#uw;gB@JPa=Cfy=uzzj+wqkL<4uz1BCi%YOet!-tt0+qi(B!bmP0@!p+u7K; zRluN#`ve5nFUo+uUK**w_^A(0gZ`<6;#p^)IFbbYauSwcdFBxxhU0Oi`ks*gD^mfk zTjO<gkHosCg`V3<`C}mv?f!w<75BTRrE6}X+<|J5ttkoFFLPl8!a1Z1ofvH{2#GGv zQaY1c%K0f?d7^gmbEa2BmbmTC?sI>R{_DX8Z|fHo6s>)rHA7>OmXmbeuv2D7clu19 z>Y%eEq^*6umS(5+6X3;)S7WWMvb`vJ7OkGE*4<u*4drcIl_e2tx?@V7X&$BWpl{Ji za=*;()`jm5csRIzM?51!-0Vi7vcIi@hWCh@=$Q!uUqY4IMKM#AKGW>HE8&m82&$jD z@t;3KASQLd&7mnOXwpTsU0-++t-L9TR?>Y>0jF~CGln}z5UjXk(8zFq|Hx%-lq>Y4 z@6gN|yd<msG8tN=&hYjTmCcY9A6LoDq@?(&$CX=8h!g()DQ>OH2;m2Wp~~Wk=#yVy z5s&SjP+~a}&llBb?j1b<p7^&HH_JIpM?`69j?=O%{Cs+V|4;n*&)+bkPC+~O0se2F zfnS-QqW+n4XaRxq#~ahv$rjKib>@S7ZoB{S2CEtBQgByd-cX?b@rHUJHsW@?cQb=t z5*F(p@A#6UJvi5!(7g0tr~LQ9WkhB}gVGV$e|%(`@ERQcSMh4TXc7FN3;cO@rIT=H z+{@4f{`e50^d@Rq=?DAa)lPqXsT!;QQvYcXuanbGb1uG6P!rBO)bPAV3L(@PrNx?j zQX%K;VJ-gW<?e>M7tCdM(YcwqSTxf`4$6X(1!(l9@uo3HR=i>7IV&VTT6rxdCt+6t z0b0lKJ(hD1Iio1bjZ*3!jRrJKm<`j%V6Vsj=PMBicUja!<S4W|?}$wleY~wOZENUK z|9Q{H$G6i%Ij6UIsE3fmq-w`)Z}rI0awM0{we^yilHA)Xr@_fV<pFaJzu)D_BoEXY zO|O(I_Q}RtZ^~22?X%Vw3j*ouc8-A-$yPO33vVA^)-WIACJMQu=3!D_de_(|mv$uQ zK7-oU{<G`)WL4v49+z2v?$s3CaW_@RNWHQdDiRwInf?1!D~k2+CpHzW1|i@5tJ5@M zdVZ4A!vhpAd)U;9Nn1oSjT#HJ9y(^y9Pds2v|3>n%y{VeILIcueAkz9OT9%xf+IJJ znxpW*+;CX}{Ges*$zzYDr4_!U=|5IxJ3G2NHUydCVnouI52BJQd#~x1*+iS_BS(0* zm-|=JCOYdk7cm==Fc!e&tU<Yti`!l)z#(@w%};&cO~Nfj&LUsqGY>*VUKLr}RL|ey z0R$qN1GQLx4?&-O^p<=2MI)$}i#6SUT=Tu>yH}cK#fkOxw#k`KY|}C*h$u)B-xey& zrc!4?LPaRqmT73XQ)X%-Tnd^t8Znr7<c)KQqrd329Rmk*zsf2lnF3g*d=vbOa&pfK zJ37cIDp)wh=u$g0Lb&8k)>I^8bf~DVG1#e1jK4v%jm#XA-2Plm-5|^$#3bT%ughp< zNeN7xk?QcV86^clA}kPy<QeYptAi6ZT3YDMkK`>=XGZcs$*q^)y)XlP1Cl&rwUH1L zRa&vO7!9yBR81FgWle<NIWI1(C{ENaVg$ih#_os+C(BQtB7=gGdrMV@JWQ4r78NBW zqUfU{XGv_O|NW@p7w6u;Hj_;*1LAaj%E`}tB<}UHteSMds+MiU+m%)A{=oVK%9_Je zPD;VKBJ-CjpHJsfIaKdeJ>ZP89fhFNcuZ|A6Jq(z({QtLsg{ddF8;Fs2J1d|HSKUc z`PC-bxS75D%w?~-!g;j<Vi18cOP>zg=VD%tzY5|u%gkgobNdB$Kjt5g_LDn0wiJs| z_AKj$w+^^uG0Q&_E*&UO>MJ_zisMSpwWVGNiwnyX&3&E$5p?68c7Nx1!bD}kb4oG> z&hZur$*us3gXE6s`BZAPcG(~b`(vW8^<Snf*OB9)49=@(F+`gEkO#YVnBU%d5IH(3 z@zKAVR#`LCc&;N%;O-A&7kHG_C(DkZ{Q-HI)W6>(X7#`AWc!O#7UuhPa$~vRUAL^P z8Ar~ItQ>AfGE_ZMkq-*q-r*adXS+8(Z=l7i8wqjjcBqz+UIx2?nWPhM>{L$IE>n*A zb_Mh0rjXIT#cG=^5+>#!TNQ1s**H98QY}srsggT~6s>a8Iy-$MX1x<<yU#<TjiRFC z1b3}XR+l$3)wzdHlZy0X7x+K7j{4wS>Zuub@=T?sJs?+xSOQuNo#cY&{r9U@6d!i- zXNg?v!4h^MroONIe6$jI%cEJVr)Xp4CZBHC*HM>wn7~RgT3h@?jX7j;I84rUBY_2y zVXi%Ll=sb5<CZR?Th&%F6Av=e{3-*X9>dQuslAxQ`mZsWR`xrU&z~3%H>X}VWm7B+ zPDWt~vrtAM0Ku!692hd@xaY63Ntu%SyZcO+!^6W8Q+l4DJFu8dm|mD9&&U*@Y6?ka z$*YnIpONMWV~A2Mtk_RBQdJ9$_#7{hCN2NcKAlA1t&xLa1|S8!sfkp)n(|qotA+gC z2w;XWw^==qTUjj@I#VGAO|JLq{!0tc+hyp>#=)!v84|nT+D;V~qp6=uQJ;W}QpV;7 zeX;JuV|7CPWU-*(a;M(zzLl-xJG}VGUL68r<;ZTDC;NH8&IpaH`$INQf16$5x!8qr z$8nRk)@EX5C;fllU-(6RALaK*hC56f?sqJ`t{Ey7aU0)Bpr*UUE62qcX`W4LgL5M< zFG5IkNX#o}RMLm?Y>V_sXz{@A@&IM^v4hC_3Ji5vNxqZe^^3hdQKG|0%@T{;4abpu z9f6_)580-Qto`KIF-9UzP2Mz5i1W-XWcrwLT=)1?WK+QG1tnwUmDi!jY+Ixq;54C7 zZK4|qM!Emg<FJ7=ihaR?cuk<nA&NQXUYqg6{KQ1U*AI8f_`BmFEG>7|PuP@lF$a{R zvD}50p>XZxd+NmxB3pilcsQH9iJ@#Tv3_%qh5HU*E>cZZ2FX71zZ!$p{e3=m#;k>Z zxk%v1Z}&S2$bm$}Gi6qAgz0zlKAGhAFOOwCh`~K^ZF`B7xOe0T|9O}v*w8FUp@Lop z+pIMcqK@Cf#H1R-91h9j(pUL!#mmX(;+kOY`PXxUPcB6s=-_3<WSehaZ1K~pDR5{7 zE1*}&Y;MwhHLqs6=%ltYaGcMk*LWg$#}5_gW-sHQEGf^OCogW@3Q8{ASJCBjV=`-- z&NeaPG2J&WJP}a4jUTnl|M|x#X@B2<d8KB7MXnSlyV1nYixNIBtQ#Kx@tDa_j~P!< zDXwQa!b4NdpG<kJ_Gu?QEl-!dhU&npN-1A2CGY_G$8*&lnsFmTY~7Bw+CQd>#<vE8 z6y%hJ{6DFw{Q$X}|JT`9M}8~_?ta}naDE(S)aiT6{p7lMcjr=47pfUpdV&lccr~sS zR%Q&%AN2=L@8@P2u=Z$0P5*57@M^7kF%m#z{QN~VHJyN<)R|R>DfrZ$)u8)TWqAwH z6QaMLGq=#c0?0H!mzW!$UL=T1f8+|ocY2q)d7|*9g>{9hEUV8!+@JiyhrZ(C1ODoR zEk38C-i5Tt7#8^J=BH#gnp7ALQoc8;sMa4|Dv{j%TyJXG<P^QV&wYZVU6TQ~voQ{L zUX{0^uWul2;iE-LQ_~HkvxbwCOrVu~P$RpPR^{6W*GECY5m;Aaoa#9#c~fUT6OTD8 z%DsPIN;%SXWlB}RE>)=`CS!+hcj2d>nzKLY@7F-7@uv$%HUVIhFO1vvFzemIT^eB# zzihVmKki@6`IZMFhL*2j#^vZbv=A2ebL^`c1shMQvhe&*N~d{J4Jt;$a#!z>Pv@Dd z>b^VsK!$g6?B_S^yzsfJZckoWBLUE*Pt>;CyN4!d{4_LT-(FYbFSFFn2k<x#^bO<z zj1V^>sZa6DW)+vzhI@PTh;Lh}>xBk~U04{=Tox<an2K9Vw}|7EN6Zpu(Z%z>T|}*@ zmP|aByU*C*@b}mYbMXW5^$B1wb%)sQ8kpH3hno9Gmz09Sq*|08Z9jEK%7}z^OcQ;s zdohihL1^z=RVU4$E*+e~%N?uhSX>bk6YMbDQG$hOSWfqScR2RM(dq0K)v-Zvp^0jB z{<yNSdWU7XIx{4xF}s7OyOcR1n=j|S3D3u-fy}sS{hO4_PD#hoTCDREyfpcsBUR@1 zxFx$905?z|(CJq8;O~*R`=zUdf8_`5l33ajh`hx7A#7=fT;wWJSwpQNU%hYC=pcIb z{XwSDYpl{Boy46*4rLOgztVt_@`hNRuBYd_yF8qYD$r$vcwn#%?S4moK)KfNV4Z2O zfWBS<2bukBbi}ZhlHrB6S!!B(*sGMWjN#NN4NY|H_A^&{yG9HSe2uTS%1UiMg@$4K z1y@Cj7b!`CdN`_OG7c&zbDF3AzBcN%jy73<$dwg}Q&SYHFg(2R@Pny$@bC`Fk6`fU z(zG%oSD0J%i==z6e|s(n^-|c>wdy1Wn#OgTJ@UQ-u`j+J%VySw{u@rO_%ApeuF=ob zt-{i0&0}P=2+y;?-!4}rbBO1;(b{S#HThpyGoDxwfC4+~eOZhZEX^GpnoYmM#uauG zdk%y7#pJQe_au-ciX+3RzUS<sMziMI`V%YFT`aOy;K5)nW<<sWr^Hnrrshja7=+J8 zW<O_D_N32JoaoPG(3c!YQ_?cK5irqgpNcTFfBMmN`v)z+5XrYZ`Cjg|lyKh2v786A zE)vsP^mWlsg4XEZU_G9W6FtIV6`TFu4O&6`JG^_hA3fg5i>s9HYhyw!B1LwNEbw|| zbU(|j+MiJ!b1hgb*xTl;A*twCm>Rx1fBohb`tXn2$NjhKYZ?!FegBb%2a~C^K)ppj z=a+s9g|o>(*Nw(IE+_3#G-X@*5^1wy%>^b~1-Rx&3q`+<={;PWrB{l6`g#>=(;qxP zypkP%TH8KKQ2Gz1>BRgOrdjY8rpYWw-;JFmmV||%b!r8Fbh2GkvJ)dco)IrkLk?q_ zZF+uThOKxTBmD*ds2#Sf6lO>zdK%RIOLwR0XpIw9GN$6cXnuSo6^1OH_3<Oqel3@{ zp|Q8Uhujb{XD!y?Wis#GVr+e;oRGn^;Wf-Vy(2vT?d6=NtE#t2TKi%`mhvI_9=MsD z-B`^U<d!7b0{{!}qr3lpGbk@W`3{2F4ANOtCej}e92Lpv)cM1P3oA$Gc3r4WCi*<X ztKt*;d{l(lSEM>pz#EOi_xgm6SD#lotuLhO?w?BJErG99=;=06NM>u)<xMR!T~paN z_A|x{^D7>U;GO&CO@A_G9^17M$(v{Ef#>;}Fis&wbYv*b++OrZN=ap$l$fM@ZNfz> zZ)M25654pCLogPnJ7o9u(OKCk3$Ki32B1c`JY=bsoT{qxb7=uv`~q`z!gFxFvGudP zQ<)?+E8+OcO30CpoB@cpTsv;vxjhOUbzx(jcszD3`6Ir3Umqr*H_l^JOQKRyb0XQY znKR+U|A6Yv5XY8*M9?^o1$Qmg4brIOkWv*rnmg%PHClQ*ekAOe?UUDuZX{%XKPMvc z4h27fBoG3F?Ftu&81EDO>KhzKSxBA^MXiMkyaQV|`Kg5$FIYlqs{o5VvZA~fn)Mj< z2_X=yf_*3RsrQS79LhF=lKcDnt*t8mHw=aG7l;tuWP}`M=l(vyhKAU`n}o^wS2}$^ zvLyCQ-Kr$j^wk>nwoJS6ia^!$#WY2(lFagh(c}E1XWRo@@eq0G;Y!ZWsQmuiOD#G9 zbU>jL|8JxsW+F%P542{|Sp+a7{os|l#s30c=KUrCqaor8SHFh#drppUx1>URbcZMl zXZtsj1<qvh?Z5CSQUUirj-oyKPt1bl_`6X@AS@o<hVP=M&kGU8eDM3lAc*tgQHL+F z4G_qLAA*G!f4p6b=?URnE8)T)$3fI$dZGUL4k`J6pTJuT0fhRpx|Qs?KTo>xudpzo zimmgHC=20!i2xE76x(UCjriS%{&W4j3eU+GZvEFep$?7$MF<EHf1H<g<y(M=)JLnG zCdLj|UF<L&iU0Vd#kU0Xzdy-I`hPz9|KB>)t%Jlo9e$q1d;W1}5kzEw+OR6e|85N6 z-V#x(BB*LjzILGzyHiS}&Kf?^|3IBlP@<f-e8^f$g+3`QWtFJZ7Hi0uH<7O<aDstG zcI7{h#CiJ)3f7z9mG(vqd%O*ai=`I>zbgCKNz`4`#!}4BN73q8A+=%cl#HdRi@WH% zt#55UL`Jf%xzs>B4>{aGFt$DoHsORe6`8p?0-g0}==#rJyjd-Cj-bvk*OrksAG$ty zCFTYsV%~n(;ncQ!`017TbZ}n(J_q+JsBrTyc=PSlo4#=5?yS$O1@BHDZ5$24-e2I$ zp;b<#0Ki<OUsbiv>Mx;DTxrLuPf!=5&oRfIe0qGeIgAXA2}v*Sf9<mB=5}>q%J(^3 zGIJb{%d?T#^qhg%pkM<B;UCX@OB6bTsnc3A`g18b>|QTg=oKBF$HHJQ?_ppa%cCVF zndQ|YIK6|STnn^wA(SS(ay=6o<ATHJ0xsx?d@X!Ha}DoM+;MMG_GF=hw0$=4KaWUT z0d*PRioV8R3AnRF-IFX~(P9*HG(1|}f?-dxN`d+??8)EhY+;@CWb&Jn->jDTXtoBe zc*l=HR?CUXBPG2%cb*0nQ}E=bak{b2xdiL#UL(5kf{|z-Hg0dWI+(CoN*qN*=<6FS zyizoc_hi4rkSg6%#h~nKIHFZ`61y7`J&X2G;^O9$6RC2?qwP_k(wf_=<}DO-4e$_Q zy)kZk$Q_@##Y<f3R9k1Zt?li-5Ukj=9rGNX`s4w@+4MC);O<j-`Cz|Ug445qKOjV{ z!w1;zOEP-4@t*P7$>&bm+6Kge=p!R{Ad5ny=xU(lXBURs*0?E*{uy9{u#Q*pgvPai z;HrkiF+f^Eosm=Fq<%EwVdALY@>=)csbbp=@`;GAHQA4V&%G<ADqzr$c@@zrEpcP3 zcpip5CH;V5PvMZ;2spOUa}?UXI@<VU&7PT`KV$;YluEJuM)?*DdukqH+kTJC3#)On zV&&tL-_vr4h_yd4Z8_rk>2)!G#BWw^^*3;G{>DGB=g+mc=?=lD<eG|EU2kmMP-=mV z!x0iIZgkFAA4OLqZ<zFCIJVD#h^&8x@%V8jB(GGu_1^)XyfGzYcnp)C{soh=*5WDo zo{La!kIdDoE)#3t`m&Re<{V&Tip7w5Y{vH~Gn!b)8ndcikpps`bU-BwlW$7*u=V)a z4z$L(jAJ4+n8RcFq%pRw(_VtgA&<+|0AR`O&Gstqi<kOL8Ll&M)@c}S4`W)RU|FNp z<@>uFZnVrXH90^2v+&d_QFaq$HK-T+*90g6r?q(OQa74TAoNU9TD^#md+!l?P;ck> zi%L9PJS70s^G8RAXgqri8EJ(@=%@!Z9;U-i1@QAC{)Mi}Q4<kQPvlcYzokZ*d}bh~ z<e>>sR1l+QPeQ6cGkIP{4<w%xE&xxX@S^VvcL6Jf#`P#}K1ZWEE5G51@LgCALG0W! zGFcf$YCs?-*40sq;idHu1hGo^`SiWbkcYF$^&o_1@iAe>okHB{5aj7PSzk8noRSfd zFL-OhDcK>eEG3uNOcH66SUhfp6V;X)GDxiJp#M5`qrA9C@@J}T(4L*u9e@Ixr6put zRWo@V9TmEI6EpQEzSSpxeno}D#gEmRNL5GZK>v|mY(+p|iE{g->im!i3aRMreF<n* zdPb52h*&jq7}`vNfE47QV$hIElYqboOv|>D<geRQ*RJctVC}}=Z2R#{+3``ORB!(Q z&htA@MCtYwin0&Ncp8tG#ROb1#Ql6Y#*xb_@@uv3{|2Tv_RICF2f?UD1!ce8R=~x< z&B!bhfpEsPW9!*yl)%XejJs6^a2L)plz=Gdu-IRA??T~^FRYM_-Doji5lSD}qafZo zjh#?bvkN%?;lnkZk}TF9mkCZAoAmU`W(EaQhemF)#)7*voKFg@zfyxJW=UaWcy4PD z;6?h@XYxiS*+wJ73Q7|%9i$F)s?VTxF@OdvQOTpdF9C|nsL0d8qR;H@8{wKWwn%;d z{u~1zU6;zZYxdy2l%~B~n(I!3G{Ze!@gT+#2WV~avsJ$UCH(3B^(%y!JZ1INwaC^E zDQxNi-|MofTb-+)bRzh4yo1jT^a6m4y5y2}IE+_2=ih739Tz;QneQjvvjwS#pwpOQ z&}c_L9i3QM{(KY+eJU=@09*=nqnq0m#MONP1I$QGvF+W$#=jtIhB~4SAt6Pof2<~l z?dy!>+^NE|g`4*opTTAV-9kJ_aRH}N@QIr+H`LinJt$j7me3BGam~e|(1lEMP-hQb zjc^Kfq4<wgy9x1_HJuD0;<1OvPHkv7X-h{<jdkzJno6}WWsOc5^&Vv}<?&AzKU>hW zbWV&GJ_+LcvhGDG_~HWD2@16r`f+C1L{YS}y>O}+e&b=rEzie7t~-*Zg3hh;`SO4# zH<0G_RgRKj4rLEy!JP(0R@Ws;m8P?dzHsBd=!meuQC0wbSDGZYh1?uk2x^0p-72^A z+jw?F_i{x2kyvhyZ7O>a#>&V{hXQ!EnZ`T#HBRkc&2?--P8W046h42_uN)Ze%V9a4 zK%uRxN>AQah^%E*>=^<*Kr-@~fl-m2(^%<s>gi&8k@rP>w(+x;*b|fpz;_lnpOb}8 z(ud{h&5~mM<xLd%m3y_*HN^7nCX6uGcY6?bU|}=jeWM+>iS$n~6s4ev_Qgp#w-a0j zjTlhZhszyqx~-pp>NpvA94Dim%qNU$e4ckU<&Zc1;r%%zq;N~a2iDg}OkAA#qNP^2 zW&c0E-aD$Pty>?)c2F$XK&2i9L@73US5y!XklsN=dX)|#U_*{n4bq!P?;Q+PM0yEQ z5_(XC01-k9p#^?3=e~EG^WJZa?+=F#z+|(t_F8j3ZRYM7@0~+G93(iP7C*b^ELOX} z1vFe>TU(@RmcS~ymA|u&@f!bh!QcWaT`(wOE(}Rej_?}Gx9Rs<X?3hw+xEg&u@T>5 z{5y!^O~hS-5TpLYb_6-#JH4X%`OdOZA@cb4;>w5~3QHPF;}vsSMmue+%9XeVF6x(j zBaVC!5uSUC!((ZE9Q887`2@(UZ}v#>h_2T%(#>RL=qJ}sIW7}7O^};<>bB&uxN6&W zd6k-hrl`TKEl$(o-`f>ZPJLrnhf(Q{t-<83XveKqDXgKPcMUg^7#CCCkpI>Dy3|z- zv$_R~4wZ_^Yo6jsaQr*baQPJT*~c{|K#P4l{Ja1`Gyz%I{3_1OF%APKjPGP?!_ox@ z8rt1_KkVQaGrZev<g1BM)s}&Qvz@EsJ4xauw4HY_c&?vY$pkrZr}?dP%p024aM1+) z)w;MBWPp%;O8s@+*<b>2s<{|5?;)Z-O550|r~$EZp@Fa^CRXr$<?H?iVo=n8$gFd~ zYWZ~Ca<Vm0v)8W1+6gq&+86N*Aj(HrcGSfVS?~}^T1qB$%;$d1k(^m`*nXqd1`wRy z)IU@f(O%mt&D9>mJfO~^7~<u`)AtbDCUt1iM_e^1kC2uN<oM($bF?12T9)Z}ojO#2 zGj4@yzb1AXU!~mGJ=LUchERdM?dfJ$LX5yblU|W<_}<WU|GerK@9o9o&|=>S|D0{l zPfb`FJ$LK4Z1h}`4qxv5LW5_~MrR>=;X03flq81v`OJD5jGKs_mw5L6RJ5HmU^u?B zxlz$_DEj~5h>#p!@T6@mr%`Mh2d<j_kZU)Iy3W<eqF)SmDcUk-101zQ4FJj4*RD%; zZi_~^T_qnrG@X@z^(jB78WGV?;oSJlv%{+d(k|a$^Exy%cY)|beJIFma*eubQl<Yj z0JXi{p~P_{E4I~D68J%Dm;@E|;UlN4dr@JcP`~w(<+D4<w0<b~Seb6s))akB=od3r zhfw&Y7V7K;=3M6qx4cuk_Q17xB?k=W?biZ^*MDsZS-p%pWV%nRotng)o?-Yk0N`O* zaJYG`yz7(;9i3{*1AjA7K7Q7~h-b#j>z2GfwH1SKs(78jJy)m_L#xtD5}7#(tKz$% zo}50;#D+tTaNN}UU<$UrG4cDECgkL_)4DXDLkM^t;^X*x;p73de6w*!+O67{&)$Xw zw>$F))R_ZGG1tC3cAhiZuYl6VI~}KfPPxgo{RiA+$~LLwHS$eWo>*Wx@ExjhezT@U zODVsSx4q0NyGWE@!@<=zxJ&}PI**&KqSIQvbcEnA$Cv~}(MWvSpGC9-dJE&Sp^jqc z+o_7Lpg&|#Xyjv2W{H0*8^dke{Sv*kJ?gY(q;sRqYSkdjU0E50u~5o#zThZ}`|kaR z7O!hEAbI6Gp7n^OY|E5z4x;lbG_tDOs;mqBIr{+(4-2DRP#gzDKli~w9|+ICTG zm-U9aYfyE~R&5^tHNh@ifSg~EmG|pCZi?||Sm9eh=KJ~2+*?$2yFay&eWlYAZnTqO z?H7H2Qm=-}bJtsLv_XRZ94Wfmv}Wq*meIC^$6)Pn3$cpPTMxgi{rCu-=#~lLf_@w2 zuw++HdmqTha%%!^S6wrDdN32p45o7zY;C6`h4}9VAUcmL(0u^~Fg1;rR{M-!5)(3s z>5k2O5@BJ*%X6j8svmR&Bc8SQpiTiU8~fn{_jtqnt?48NLtr+wipQPG_jNr8tvbls zMYzD?;HW<5lWbNqb(w49mn*uwWVSfhXvBSrXVs&7XE@rid;85F^hPg{{kQto8o!^B z)YZx&GI!|!CRB1wjAz(JY7|&KZO4aDx6Px4!WK;Nh}%h-y2%!{MbgX{J!|Tz%cEhQ zZ^x0;5#P1X>t|zZ6?Cg<qS^8NqM{0vg6b~7u?h=JNbHiidFtIYQn~`)5kcYeB<C6p zU~jpVpd;PtSq)gRvu3%#oEd;7h^i#a9iSn4rWqg?0GX-H^zRFNIc1efyLk~Nc})G| zI+bi{S)MV81K6fkCQkMYR^}cpxL}${7N!8qsx)l9Dlr4R@vFRoKL_)}q)%r=JZLuz zAW9owtLl=)78T~%rao7t#p13duP0?nw3RyK1VU=X`$AdsMg@2kNBe}5fd8dZSC6H| z%ea%742|De3y>r=a_cgt4Gm+n?r&;YMk11tTO<5r=K#OvA*WlE8Jp8-$f}#NDX~q_ zcTWWEt~2A!KP|L|)a}<ok>jix8Tz1U0kARiZj=rb^qO|Y`M^R@wkG<{{1m+NF{6Lw zmy2Wt2#@&^jGoGojXPD9L>EWlltq%U5f^@Z!Y(@1Rgm7n4RA7+#vjH2ahXihCN^^{ ze3fY+47yq8LW~wdxl<d5EgbsmFb$>G2_flb7`#2gAUAlz2nBrGyu*$|+}${jf<@gj zkm{C|-dZbZJ{n30hX);$2sbN}y4<cp5pVYShn>YHprdQRumKsY4cc=nE6Z6xbagaI z$UPv?r~Ho}@zkqk6*auy{%3+JjjG11HORDO*60f8lwTE~nA;AgV^;0@osqz7^ZdSy zzKgU9Ti_B55;`*#wqA~^DcF3U%d!A>wbNR)YK&gYr1Z98o<i=CYk=eX$AGR3S~~Ux zDTBfn7lR-cp#oG!@C^16IpR=>=>gSl1u!bgnb-@9DmT5*6toZ?<l5oVVF#LAg4Q6f zPc=tVd0m}F%e~HH$lejeXLF&pEh1jk#?i__k#UH=Z^{3HRB8baxh)dA+v|VLl9z{1 zteL&qRcXXTQ*?g)h=zu8C`V4P#cmVYI`B`7%SUUSGQ7jsCs6G6QqkYvSDSzLvl#zq zk=~*C4z@V6fC|{w7Z$M;GvC3}H{Ojc>~@)pDb3F=^ry*Dqx9b8gEZIE=pEE@kY5r| z8^Lf?=%wnRIjpkF41;#EPI(uRc}BJ5wZkqYOm$@G$3CULiN0GhyKTspYJlXqz7dFS za^kxAd-{9llosFN@p#WPOT0Ni(l&S{FR3rA%-v!ynSt48@V73*=zfg!NW1!a3bh7H z^?ne49*+{}v9i4$Kca1m+_t*|Y(-SFjmKF)3}(P52`x12?Tezh3KEHG)YdJ%IzEI_ z9|%N5<S)=(6ZGQ~LwZk#XEqr<S?<WUv!~Z?>?U{ruNJ@$>u#|*Treu=Sg1ZQFt^P( z#?@|e@j9r`vr)4KCd-fSN7a*m`vNKs60B>~m7@{o&DGs9GHE)7ip>K`i-;~ZIzJx* z$HMizHA%5DlV;uuAmzEeZo7)p4T*_o&qwQ~Y(M4YVJV2>v26;XUt2xS%A-`YFka+5 zhRlmra|=2^n6WZiPnxZp3)$Rs$;?$vR-M@vfsQt&Cw9iI#-uqz7B3bQ%I&rN3tzWg zpF#Ek$q|n@!M*`#O=wnj(^nMi4}F#H_j22d;u4Ij0ZgSk%S<@=B51?Oc*Yu|7o*(W zNvH)Tx;5#U7c0ut$5i`hQai`lbU@iRf1(54wh~gV9?IOlc2QDUZgY*Q{8zZ9!?y>- zA7Bii`ZY=A+Hv^2QJX;v%W#c*@2&$sgCjYJ);B@O5L9V4O+oi%`R#RuMOY~abE|3* zx>>Fp;$3sDb5UB9;o_4uCT2C%%UnAI)LMv`==>`St{;_e6RmAril@=uvjgi^$x(M$ zr4;tROpaopL`TozO}(3Kq^P6Uk=Vl@t$e#uXo4Oh(vr#7ey>eV*oHLs9jJ)9a*K#+ zY5xYfiY-^J9UMqr8;~ou775U%(B!L!w6Y$cm>+gu5TUygwlI-jrA=4<2c5Ht=i6o9 z&L0*a-4crC-A)jPjLv_~Mdxxl1)8cdxstp%?6N6fZ&`vZT-2zn)U`t8Uu+0HXdn1z z5ySILB+Nr4ukYTCo;EKSAE$XwqKo3iMpqO`9?tbdCeY_`>4-$%_=}t7-Y6?l2a0QM zhUX}`SBIaRkx<mHhn@In6ce#?GvKjJ+v%4#gV;gSJm6#(W^>{gtYV$mmv&zH`cG<Q z4NdIfl+Vep|9<+BfU`~M!Bf&j3uc}qAyY)<@Y=ckLP3XNa!rr&#&uvpD6#t;SsB^- zO6CoRU%d?7TTc=Y!&>uP_O5V%G>m>YghDOdI@^E_YCS9*Z^`|QsGzmoEVj<%6S&9i zrSDplV~C~ZT@(761}C<!55crkKLR(9<MsGyy=6k~4d2R3)D+yrt=xOceJ@ttKWmBo zs$`XnC)zMI`rQo30#k`#L0Gq}f3xe9B&5z0^_-n6^TqT|h8#X#QNHu{@`iCzT8g;r z(Lds?2fM#-*iEx=oPKholLppACR7?O+PAY~?dOZ%)XET=F`~6oOzZE*@aSKK2hnyt z4?Hj+1JK|9EyLq@G(p=F<@FavItChga+;o~cc3to@qF>MO;xBG9d{p#$Yp#Z1L@@O zQvmm(KN<ov1UPBfk{M{0{i|&Ac4zb&aG9?Z1x8h8&`+J@SV7tsR9OAhHR8ddy@kK- zhUVn*_9NNw=)NBpFK*4qRN2~stitQ|Qfq+!-6E3A<6)~y1UOY#XD*zGO1I@`^m03N z8>2fchg@*9NUq^#zY!QOlM*;%F9qHRtU#=NPBDKw|Bjdtf79m^sI^}$1@jA>#fb!$ zW}Wt}vFOYG&Z1jK=z7{ZdP4;$qz|3brLWsCFbl{#<zHLAUm8#n9eN_kZsu0l2TOJV zabB|>k?31m>U+;YbNY}d-Sh(cG17+`&DAP+hr#V|R(a1B{h~ppi#}AT6LP*k%cnk! zF&!c4m)x_D5zu~_!xwiwN>woWvCi)KQ8qp3!I!lE6cFInUsc!PLZu(i?0v&sq#KtU zmD-hJG&*8+<aK=0aiCG7JMQkvHkBP;jJqWQ-k|uE_|3oJ*|f!}wNr+OMQW0v1mcZD z=AYj<s}}l<GMD0p*Sg%fgnyvcen&54vFCML^(S66XmN$wCwXuFoZ@&ZUV12?RNjN5 zz?c4w!q?}5N%c)mhccJ!APAG^m=N>Kmz<)LBgJzUxEB7xgOrDVXZXjd;+sV&uxVZe z4)XN=^<#BO&JdR*cqb8bOgSUEc#3XdMDPc#ew5%U<vL=0^SF)gE&67-Q5D<T&58lw zVG8{-uX7q^c;{2zsx02n0%*X`GC2WNgPI52&0>?9)@&!CIyu_UUn9GgtM8Sms-$)+ zmu(Aml05^&n023#RnydV*%*k)rlFPxr=1Ku-(s)T+-t5NkNE!jJTVdA@{m%vX_{;2 z#O`)j3Sc07H9?f?n9MJi*#=X8lhJU4yb;wkX_*7h>t8<YFH=aq2;}0t&>>7Wp&~2& zVK)axs<W)Pv)ZY3`3VhSR$62TGOJxSL@sXSX=|J2sNPpx+x>pVw6PYgm9L}R;J)gy z)z^*Nlu^WNJAI;Lq6J;$2io?;V)ORu0@hwnbFwDBh1q$s|5AEyDEvpU-tIZF&{Lis zdw!~7lM%lgdza4gcv$o!qk6^OoYAw<e;qrj<NNhN$Uqav3q||M9+psO?AB_Wgc;51 z`e3|NyGdhyU5y^l&Y78)`G0BmeiJ&Taihb#i(qRS6Zh`%<{zEXxs=yIZ?3eQJ-w9s z&W3@GtuVhNytTYAzrNl2T_eZYr!ZiOylEY5osrSMtas=dSL29NDHMt7&J!~fx2`+o zGvR6~6+!`ku^}sevvs@JbYCWVxqhnbu{UxHEPitWPl@39AQ8UFk0vD?)3P@Yz~=x@ zaP=7%rL^edW7pqp`Y@;`%<e-ZT1-Z;qf^Axi@ffm^Gh1<T`7X}AtXOLBrM2u$>iFC z;8jjb`v{~e&cmyHu1WSnCW&UDbR3s49p#Rzx4`^q0mRL;skqqzg+m;URdRa`>dLNF za`iv8`AIYd#uht5K<9VQH@CU%>vg#p6R#+Zx$eteOQj%TsDcHuw==-0GnKV9-?pJj z={%p(SaRyr);h0~*g88<^b}LSLCtpep?jGA9lv+Kn0Ajb9{(QN^`36B=L}CYdB!@m zX#T~FwRxK2QdNDyUAc{Zd*5I2IxU{i=3Hw}$yHg&nr~@7x)zpYR<5nbzUN~YA@Lni zR^MH-|1p&D-&w|Z<~Au_`s)&B+-TE+|2hBaX+<T?CZN;@Wc^MehgkF3^AaZ8X0~f~ zPgfr@A*5fa`Q%)Uc1e_Y@Zlu8Wls6jh4>rvbW|OKRbklacy_9QDrxXrHQ{=9_7qDl zIGlV^rc{BP1AV!zG#B9lJ4a?tCf!GgcTv;dUHeykO(l`>mczA0G;LOrefj*`UHPY4 zn)y*>Ev%xf{Hv7jVBw&gU}yJ0U~+v>+kW-FqhZkus-O*{=@Ug03=bq&#)T6NkR2p_ znU@!e7AFWgwjEv5t~ql9)>*vY_-{F+t7cf+G{N#Z(zTI$l5pV?oBf|Qu{h+E^&Tky zhF>X24kL6YQR(tpfw$en9d1!Fvv~SfLUE%JF`>Q%82Zi3VuQQe8+k&8xi3U3yes<2 zygZ^Ur~i-@ezQ)Bo1yy{v6&K?n7#Dw{d`FBzS|h)wB$RO)j*#_7+2fkBMp>IHMgAJ zd-Fx>)u=LS{R7XfC(#hW^0A1zC?S|4tJ;}G0MXuyWutchRYOlZ2uI-t^<mM;_4CP% z0OxG=)OoS&BY;MnI(oE7pYKaNY#C={awmN&qs%nlS#MH@yeEs7M^?p3a{5^+kCu#z zbocpBY#V$gw>_h2@1fVSohz3X>`HjT<_st+t<#jroHPoblMb;bsvGfaHbr8e<L{BW z6|~+-@ku{~bwooCvd>m8=$CZJB$FeP5NCY;1xYW_DEh7pH<Nt;b!goiYU3oU<4)X? zl<w+ND6aNNKdotM7|ft*eg*UKoy5S+S(ofm+w@zpUc|@t#l2(l&(y*z1V74^x!nrG zU5inniBF<kFh5`BM1T1pvG#$a!IWQZ`7~b-li;X*e2vZC-TSj;0|3EXA5K20B4Vex zUfcs#=tw9C!?vhnfAv1H<h~q>-8>N$Ta?y0t!aRa#4KFy+(E9LI5sOra#*)>mW~G% z8**yVD6AL-7T)?0#5J=*fNnQ;YVY(vTkY3kI>lmVt3!0le}!F7xbBFTnOXXX?n`@G z;KG9@yhB&4%|Ie>bNPn&{kWGxQw1IRlh5$l8;7wECKkB0o)j#|PNiL{0EZ&@BhRVM zObC|^J5+NA<d)QuXP-5UCSUKOY~ACt3eS@KH0)hSypc7>uNEHiUKLyUlO_bN<$%Zj zEsK4WsN4PW%<!I@^q)d4T3W7P+|?mDKPieK;*fuRWb*DlM*+!CfJT1c7UUP`Et(j1 z$WQt0W*e*02hHP%f2}?Z=%`)yO<S2<ncGbJgRV|~C@W42^is4%#7ET@87QpxM{c9Z zk{VMcj<hYNtfJHK=B?|3WbJ8l%AU_LGre~9M^eTjnt@oi`pfr?QUW`(&gmOYI!XNA zo*=QZ4ZLAwgo2;`EGJV=Km*B%OT59)x1NX2Mivu!Ty?8ru7)Gz?L-2|fj~AcVrXj( zWoC7t8&6X1Zk0z6PWJz^lmutj66mZWRV&@b_6^Os<`f{f*Uq`e?~65hq^xPI{TilC zWrPS2Yx#!a<k^|Rx}!TD&v*cglWSk5+j^58W%bnhiqLn-aA-3?4p?&Vx+_XC_Xe5q zL=OJ!L3kKE@VT9#mY8B=g-;bCj>hRV#~(xI!Si&=742SX{)>@J=9t<Y`nmZZ6Ax@K ztsi0}PbcTtIAA~KjHmL{^4hEXtQEEo6b(p4{r>iz?;iE;UDMQJp^T0-<Wu<dP%ouZ zM!VbF`+&4In1FJ3P>fVRn5{54^gYK}nyhG%4?SwNyHzR%BZPSc*QwXFGC{L8WazkL zDBiYRK;2KSIZs$_kBTvzSUqMba4ptOTObr%K-SoNQ7m*=8^;K7dCbb1c-#FU$z2zj zG21QqsRd29Qlgn=Sc?__Pl8kb!o^NlA$6Y}t4jP~6C2LxKN`xX8^)d_`AFAiWc4UF z#?BE;E5NfZZ>AK9_Q6`oj7=7r%2~A8HC6XA35sj-1n4083;AV^M0KNkQC%tVZUsgE zfLWyNeL*FhU}B#0m`BJm9!j^V-O&CcrC@>{^a|8zA7K%Zx!B`cq&|cGkn~}eX(>uA z&`I^q!o-U^MUGtxh;Rgr%cO9AZiSJql(pHE6kqd!r4-@i)wLZY2nvq{{z2bqRW|n` zuMo7^?|XMzJ~c%<B4v-N*Qxy#+{cB>zl8;HLxpxqVq8>e@k!ElRzZzoccyX%k^_g` z`CSh$p%PeY4z!$!gmoqjjHs21Luk3`C9`?rELFmCBc;?o==-k*sah>6ok9H9PR0OY zm6#q)Q+w^>j_e8{n2qdgjVki74+SQr55E8S+e1&=nLK7H(Wr{SOl$Ea_b6XbKUnR& zz+axTPC-6`_yI{x1Dav7J0U);@nR78%iD&sh6f5o0GmoN_Q)|ECZ|HxLY}SAGn9WV zBIr0TRB?B0hojzmssbL{dm$^Xf{y<7h9d&0fiO`3kQW_?*HY)vwZ*r=`=C=izF3Hz zcD(>1*~cO1(*`E?2^pnH5`H&-oqAAmBjaGxUHP>%McEt>?;n>KdjTAOh0^$x!?Sr6 zjr&o)TlAsppJ^R9xaM^=&^5Wn|DB95gaII+Xxu;Y`~1-O{EB6ih_Ef#dksYpZ@A}@ zJ7a7|p~7VPP|0~6%Uh`LbWo<jdy1vN#P_WyQw*QzC3)bpqTu|)?EJ>H$QGE4^MPx( zJX9D;h|cTZ$F3SkKGMjjEOdf?lb=^Y0~7>#ZD|XitgobjO-7E|bzsCuGm}Xu^TOZ_ zXyN>8Z1XVo({VY}pi$?(<q=8pdJUl)to%fMj{<J5sQREHQ_Eq0U<{TeFJCe?GeEqe zsRVLpzz8>`4xN?WmAz8+`Ef2sz?v-W@M}J#CAex&4Ihu5cZRyJd$HOfZh4E5R2MK& zwb!ktTz+s{)_>C#xwA4YTSZ-Zil#|0I}zxdb`G6;t)>;7Z24<US5_>+cf4rik+Xbk z6L<(9u}%dZq{T4EPu0)<UMM>#%|l6RG_J#}Zb~z6=3s+k(*j2?^8rbHnt3(REr>5y z<c9E5Kj%({qoI$N?xm=p+!tO-7}h*Z1-H63s4%n#$37LmI|=kXj-5X`HryErgUh<@ zRHpS-Y0l-fO=3}{!ycr^3MVh@t+z`FrZ$1yyujcFju;P9I_#+7GN5X~tb!iGu%;#q zzb$ff#tzaCz_z2%X5y+xFT$x_x-08JA=@kHzVY9gqc7ikioTX$V3QaGU@A#nCbA26 zMMPHDc~L4GHR3y1UP+5}IGUyQeP@iV^I5lN@|8jI(Q$Kh@8n~d<ze-l>{?~TJbR`y zKX&)RB_s@#gWqCtdrL1Z@$F*?C@DI9?|Cr`ptM@HF`L=DysA$Be(*N-evf;_8e1bN zdzh~E;fWgEnmnBt9)spmK_jPIEr+IFHpV`2FnlPl<jQmL$n?b@FU%g?RC><I{Mg}( zXbU^n({{e-5C;$2!HSUyM8ZPZ>dws?YfN0+LSMM9Z$n`SF<yv}h$gws$a0~mOH|Ns zZ79;(96a{ayJxH;QssXNnV`;cPM=>Lf|(=aH8Q{SK!3H!E$N3|g{G+x=FNUp5VwL( zerKwZr6riz@iMisvE!DG{OXB@X(M@s`hcAY&tIPljcUJa_yI}8?^-JO;{`=6sUmT8 zy}iGBJC{E!_YI}c$nl^A1TG8=_vdA&V)G{ki-Ya*3xxWorra?)dD_DR`MH_QTnA^7 zrh3jP{^S`aB)P{Z>{-z0mTVo-M8=&u$iQ-fF8oya3R*7H<@WG-oyik1ALi2Z3U0YR z2b{bGNt$06oC+BGNvUnOn{%IUXRjegG2$;NF&sUD?HFS#=;~gUz_Lwl_7#Y+yr{fW zWhCc2jo~YxXq)=|s6$peE$>%<bd|@z{^$z1ao8;ylM9EQ8_DmZy5sqriP*?Qo1CB6 ziE+oA32vo5YF5D(27}aWymO~?)Pb+<L7BF?(2QhD^_bt%U%Hr19Vg{dOF@-BOy%$1 z_kFH-R-U<sIt7U`bqcJL8`%#`bZ+zoQwHnk!@w<+Q*AycpMp6beVWz6wy}=j{@!x$ zdgVf2FxoAYAOw7lriUiVbQIBh`b5HFnS_JRuJP26TLsydIFzFiQKujKDq?C`&!d0G zxLSnF{N;?Jj9+1;X@I25H=98g7PjA7s`>Q=CUSmr9v)=FSM_s8mO($ozL|ejn@)I7 z;du3UOBq7eM=yT0UJNF=OX`~1mdBeKy~{dB`5h@t#`7q}gBxw~<DcWDes7%&>c5d_ zv#`iDRf=DY!iyh`m-q%M<R!44KKs-sS*jWlx@2Z&9Ey+rx%*qz+)+?=kobF!gcGWv zoF^#V`ue=72Rkrlwzm|Ykx}pzsXHNVoXv!G`w$cVWOE@ZeQ&t7`}D7)rK3@isPuR6 zmH}jz1{|-FGYIVJtV0Az3)lI+FHU8J(wXKrr9z3px)2+*nO82JWUaNb!^rjKctFE; zh_V7wH>+$tJ%{@5!!3gO%i-*=r3@(y;zEr(tyXTI+frb4Q~ii)Dzsr(cWHM>#p5<f z&Lu)8j92oKF_>8W2^Q<uF%7x+1%C{0?4L@IfG>OTE!_MqeD~<UpuHp7P+KdjVUt`I z?b$l9Dx+(fBN!CUGP;<$T2I;GR}K&3AWJKa`20?<-y9{7XWmaqYG`D1(}&O2Gz1vj z7paIwJkl5K;~2CmGsv~~p)Y93?X~j!oNm0gzLMfzo-f~>q;@>k@GCP;WJ7x(A-n(- z76?qk&#HxjUq>$0RZ>2xY3r(>77eO8PU~(pgGB$a9l-$Gn@!E6Yiq@A!*H%3%KALs zbT^VF?OFHmq|9RIBerVIzywi5UGW+*)BahezM@?|;_>@K#)2hSvozW@R$w4jb7hr4 zfglY(?-axLRdTiN_!s^<!tGBSK1c3p7s_?EuhNcpKYqe+F$LX$z2{vN2r>G|sdoIF zO<V=J&`8t6EyRDV!;0#<?WFR2%}+W(v^_hK5WSYSP=g^F);wC_eb#{S34F<8Z<AG- zF-WMg5?+4)J~)Eqh^gx3rPUC4*G$J60Va7K_3X`YEo*WZZ^|;K?ivGDwUWo~;l0;9 z#kzw7KPgq-)hiE~)(j<+>^wX-+1!dhcX`+S$<+-*u}T|Mn)p}}sJodDl9$$wBG%_p zQhXXUmpz=6SF(S|1$1GsPqE1jB)eQ3n!I$AIvdqJKf4G8)1>QM!Bo~-fd5`8W(2C? z@`Hy$?B?N4c;!`ErmGf|W$DS`tF@$#svGu%fxYwxYDFW3HWrKO(0PLD-s#z}%^85q zOCGB3x2~T-@A$Tk%DN@bmr3N;*NqeE@D0R<Eqrl~KX3o$zs&iQozWuJ!wzi%4@Y-N z{+*>r3L^(&@59HQt4tw0N~00U=Lv1AG-+4EPA8`G@|=T5!R~qvp+$!GT3;%t!$5SI zU7EA`RlSe9%}LMKFR^dRVz6KCBMik-IoX)NC7|sV8F}_JTmH}LEsa+PccEbC2X`Dm zbkV_Yw3ewsi?}`s1C+FRe#6G5R{vIQh>~&oT}Z?T4s*#a$WwvEn8N2rNKn-TDa5Ta zKOy>OVBmXBaLeTs(ZLBeb93bo;20l%03qwZ*qk<$X6ic46^DGbvbN=(I0XF2YPeN+ z^}5J?*fyAOgX)s{x3r$HpMrY$QSo@8n+KVYL0+|SGOI8)t0pTb^@Wf~xc;>AyDghS zJ5sUCoOvVBqB<f~ZR~$>teh*!*|`RWyDJy@G;f9<Ca+WS;1Pxxi|8BVW-C6NZPoAx z_#Yr{kwEzBd>_c~QQ8?57XUXofY^M6_De^8_(a6KKUt)&_!^{qgV@0WSiT}2?rJvU zBaWgpOQejf?#0GNI7)I$>h3z4j87%A9)7VQwk)4LfBd24yg6Fp87e(GI{LzeqK_YM zqt-S8oa5gw)6sniJaw8aeXacSZFL%)bgm?RM3>BHT)QV{20jcVjaKpD`>L9m+`9?$ z9daxznGB;N3jjpD|0XDml^GWC+`Alx{)eu|Pvn;7_<U__0v%pTu+$ly@v%?yGjI2P zY-U=9(3EuxfxMxJ^U!><Mqd*KP0L!c9uYfSI5<3ArHKpt6`l2|@9AA8le#(x_2I1I zNk_lbw)Tp!Ol+@=JoXyO&<YP7lci^xPb}7kS+Odp@MxXcs+x(qNsA{d4X<L-;0~)! zi}Cbkx+cAHs)9IexB$uBMvGXRit0O62%9=J$3*yB7bym}<sW_e^S@IOGFv&K&c+6Z zN<}2~l_ok2JBkV>L>5pm#)kVU;z}$3RM)#6o2BS9{4rWB3(mz3W#!^;lJ<s%<e$mN zeF<EbTgE=EChDnJg>H0?it$13K$EXg^me744k`Qt(t#0z7Dv)ma9f-1L;85D`kcE? z7$}!Raz(U6uFL442u2WPpe?VRZW(YF5wyE7-F?n+R6n#$NQX`!`EgWUr|P@$Lf*>7 z58NK^l%>&s@n3ZNgK4jP+34{~z`PgQhR27ac4<OZu(Q1{@z=fPd-tx0UwHu2u<UH? zaW8&qI!d`3AGoIXG3)KKZ<1`ve+7R)WXF%A4SH9^PQDrK{YN?vR_J3O{{1rc2{H4# za=KT;QNmrgxBrW9g@?ynn%vH_k6Hh|iswo+&10@J@$lN&fBoKcFu>q%bBaLTJHbc) z*U-XD^T0@&YB0@S{jdM?CI4>^jK1#0w+zq!>pM3L)^DrR#Z;++p#}b&p0)k2Z-2?Z z3pL}+iM9Xo+WgNo(3Q0-&_DjKACE1cq`jI{)!6@a=P1#x?Em+-3FG+kU$1q;mZs5f z<<H$Oa|j-$!By9aKe-^8;`?|3Zk?TBDfHyw{C~l=bUU<n;Dg&DT*gG_Ml%Gk{PZ$Y zLZ(6WY2_|^_!#zuB8XEj$xBmGEAmtZy9@RuzaLD>)3vcQ4d<Twg6=zddM7>s#jR+Q zogT8v(e--Z^LZYH`%0)S<7-TV1FFPT2hjv(%gpU@u`5+-I@pKvt5#3gjro4VSK}8! zF_AY?UA<qN>!07^OCasGSIm_t@+f)jO)g(xU9Cy^toZExiH2?2)hXU<36r?#aF5C5 zI(m{09BkZkn_iT8uNwT(rO^D9KFv_tAggmvLrMNS9L<XNl~MkCi}b!$l;oqgdYXU# zU@htwIeL^^iI*>r+>Mu(D}bpGf8iKqsn799n31^EaYkMJKi3HPSpt;ZQA~X{SH{7A zxqv1$X+|sd%&?sQ)dI|5AL`PDMuf77tiibMJ5lMK-<pe0$ky-jjTb+C&z%D$CEf=j zCS^0LXv%F++Y#)pLkct$5Kq{-R{3+|hIZ=7B{fm+PhMB@CH#uJc{dE~^9rCC3$|y? z6dxV#K3y!uNQ605J_AVWJYGE$mt5kcYn1cWwTuuF`d_A|L^D_c5WZtoe4yCKiFUeL zY^T{53BQ!L&a=06x^y@@#GG9qMN09)5!jLY-n3k}&~KEi_kj2$FQ55o)!c9uUaV4G zS2qHo=JM#B?#%R+Hm4Zw3dtl3j+7X?<0>W&l*gCFzkdC|e9qn>CE|;|j#kKWDC}6s zIV`Is>sE=JmJr(7fe)_E%D<2}Ix;xi&-!KfpU;=>8ZDgVM%CD29BaYgaE90kCYDh~ zlYp@0Er;%3xtiwd3~Q3bN*$^fj?5)S1lwzw7oNq!^v$ix_2*p{!jOXIyO>02mFwjO zoBZKDr9Skt{m4yQF8p0<b<%w=Myr=zC)fNA(n0ib*p2DL^m}l-Rd+8WbVz<qjLVbI zr2dP;x`w1ZE^rX;W0exQ*3zfD(#6f!5C~k8oXCBNb|t$-_uSeNrNM5&Gm>I(_(T5z zD42$&R*3RE%fL8}KpBD~@vFQ%w-WWhwF>bhhSE`Z;2;<4nWT|cUU19I5e$M4T&yAh zV8H9S9;cZMbA$#fz?gWRocL#r34E2N@5g_64lyb^hWIPE$&Z*4pebm+4SSbI-Rwyn zs;U~G)H=Zwlbcqf_#^eAp(L*g6}k^Y!;5aF!jL2ZKi;zL;%yIx0)|_C014y^=~S?= zaal?xd7OkGu-bvAAT!H`^eTvw%5_-TL*Bdpy7LqZpOSKLIEqVPU<miqoe#)~p~VG~ zo{=7<yp;_WgZ+J{a4;vkr<WT;Esx3{BxM?HUW01siTl9kRZeE2%N2odtLl&P%2c2k zipDHq`*B6<PJ1bFCz*1f2~z4~k{E8;c2Y8tK}I7+zmHq^OmtmrL!}~4LM)A?gaJsl zaqS&;kP{H*BN!QVp55~G*`&HU*Lc42W<>=)?jbk92^<>>n}e;%_`vt8aBJY1EWg2T z(#@{M4g;;+>aK%r0oq4svfQh46`TwXSTtes<id+@bYmXqD9G0WYfGa{W_n8a1(Y@K zD8w)Oewo&^9UpRx&MG}2|MI0kK_c|^zt*c6q0qV?7_nn|3@_&#S*J$YJW)h|wu<R# z`c<i$cgPD1uul#=@0_LxLDE(^e9GU$59^3jWPdI+HL2U(Gda)9bgGcajc^47IEav7 z7^=yYkpDvM-;Q3Fx&Q39#oBM;l~#rN!f;Mi2>Cll6hXA=+p18IkU|n7$z+9;+m2p? z`f5vtlKavRIlXQqU@oL&N1Vq-j(XV>N+M+mJN;D7?=K%>r17%P44v6zGXr1<4<x-^ zXss=_PVp}zjz1&F8eA>8xz#!9{GC=*)IqJ&pBE!1{!y;B3b#_P+Q(aHl!d?*=-L!R zH3{|>xy{uC*?lz)yKRoux10;1`^?GBxi2PQa;5!D&t{BVZSLOcTSOSblh!g*e+jjq zIcu!K7HfRNxYhq!bWZlu#cyuNK(d^0xP-QGCX6^%PkUpVS$g7cy}hFtaU}4N!ji+# z3pbvvO>7bbChDTLN7$?E9PcFKG23~gVuqDsoZ_ESoW~^=Zt|$NkvJFYfP~<>_?atX zdaI}Gy1`fH<_e3T(w4}xXEJzqf1Xn6lj6n9Di*=eIQ@k5y`8aFfG6oTbY=wYSx3U? zlkzM4ckuzU{tblMoyL7sXf6EZh`eSyp-_PPQ>d78vW`BaJ;bKEFKNKQVwB~jL$3@` zcTNjuW-&IkFGfYqADQQwA}%veeyH%^(K}Jd6gou*vQqXD*V*inJw?U<dFXsm>Cpf8 z_h(uonox(fI#VltMz2NjCijVv>Qsi6j<npgwx3^%XrR7Qzbyt>(VjQn1fJne?;<!D z_LdR|QO?!$V4IOm{R|-($f-g`TYszSu7-n!jd$wm_llE!5D~sxTZ(lvhcf9N!yK6{ z#UqW!VMluaqE+?!jSCjrDtmj83cVgfW&yvN427=ip|r=xa$zjv2g^O}qJBiZ+1@nC zy{Rv-+Jejw7@ItJhDm2@#(D3t1f`=E?fbh)j1|9G+>>l7Q@6_QC}Vsj;8_oAj9}k6 zu?d@lZ%tmk@-@fEE?ki|_hAlhJ!15)0?kTpdn1VMT+cFO_wpAVYa0SiEDQ(YkTl&N ztfIVEHTIU5URC=xN;jl7=bh{7_mcIG$e?EbI&u+d*CetvL-pDOp^|!3LlK^Q(WJrq z#Wb>}I}@ELS^}L4a{EP%;14;a>b-dp!?+lsnK54C7RaHd6gm4=&~AQE#`8Y>z`<$n zgE_^V=`7<?C0pX3qz=dCOeQx-^2UqG#fd&m`|@D}gk!)5MqF)M%bBCCH*K%RTW?LQ z)EW-$PHHjIH16fMt}9X)0}oQ;eoKOt5*Hx7^HEg5VD`+n$aI}e^w#cO&NA%{*82Ll zD}^m$gE!BlrL7gvFIK|U+is3YR3isnRR&9!4X49ft%707RfH+KCW`rK2EXl<rE*e! zmTR2wx(th8+Xt3&M6n&QEkdZVwf4Qw8Iq4p?MgZ7mnA!8PMl!qBZxW0E)gQE!}UU* ztolK>C3xos$zC*wX%rG*DU>nuBYR4kpr3a_KY2S{2M5TW3n?iY)Za%o{eQ<-bf~b_ zv6JIpO2aHKj)DC}kH(e=6Lss#u&72`K0nF%)8f|!DJ>!Y!0w#<10-zsjPhI52k7hu z@4{_{57|^D<J+8Zmc#=h3)=uvuL!GHWN1ly%Ou-yQ6)~ZfT()vmvLG6Vc5I-Eja59 zyb2BG%A75o!guG_!=ec?ZB95OQI`n&R%gizyXz<ZIr(EHKs|n&DO%@&?6Z(K^THiZ z&%{T;<5vB6JR%4T`rJP997c?sT9#U6P9`N?hm(M&o$ndsUz?wJ)q=(entqHhDZ>t3 z%dzi;80@H|*pGj=a;_=(&v!^E64u&_9m)@H7^W*H_hN_V4HqQb)QB?#`}&+*?1J7k zT<Xu#oC$`Iz___BV#Ju0A3yEsLd@sGHrMV{X6vsIUubYc{k~}<D#+QeNN1C4UjouP z#H0B0Lwg3-3fK=FR?2TscLZ72imumQ2DH{gJiC7!SH#({`^L$*QXeM}%d2Gf%yW)6 zz+VeC#)9al*2*gfeS+=gxeX3zKoC6ChN<|5)fZqb^jP@1pDTOw2Y*qovu7Q#3I*88 z9oS&%x0ey2y|Dn9kP;=+4&2W$d>5C=SfHPooq7^?7iX5HI_jyk^4hKPT=EThS2015 z*G~dyQ$Yhl6S*>&`Z;J(n|S}pH0ASlAtPcpJ~}Ff=jB!DdF2}x202&v+?pvj3XJEN zDjB(}(zg}38itc%P(NQpYbJMUl5<f__#ee^u81adi?>=uP8&$M6b`tWyjr|77?=BX z8gZx_=D^Ma7&|yPnpJ}<6n+_4aw6yn`w3{s!hB55n4bs%kQCg7!j;`bgB7Y;*9#n! zNRYz6*11qq!RK74`>W^XdiOFz<8HH~n1LZzLqO((tUNn%YE)<Wv(3}PsxR)X#=^}a zM^MHsUq6S;S2A{4OH$7$3&4?T+u<j}4x(^Q7I~}^=BPqg4*?&nxtc4gL}urAxFsKv zHdnKt=h_s7TlQ98>0Y4-e<+V3<e`|fswGtsg#)tgc-8>^ej8dD==pLWzXpI2o9<fa z&M~?26$a!=bzay)KloXZKg%T%zV7{{JchEkRU~rejXilHr%b_e7__g{aT%}k7yD@G zH_tvlnp=K0Qv5Vkw&DlNl#mfXYtO>*pZ=Bad839Vk8$*+$z#Uly!{kfkC%=L>J;_p zMzAZRH-mXPl-IOJTvdE`BAm|)-k}|Vcz<eVFk5a{l>qPPVY)xS%cI3wC?cDcovF6B z)^${YwH^2eq|=qZn4k!gy4rYnGM2!r)Y`#MP9m6MpLb@^4x}>y%YSJMJBr7On|LOu zn(g+gDm=<;o*Q5^^EJuhvlnO;?C5yZ`e;zJ{fzSPXTO}1I_R)zpqx_Q%qzt;3}?-# zO&wa;I-Ma-qPLtl1SV6Xd_ak~=r&rBLGIa~ALgyPh0#4$$>QxrLGhMzVyJI!KrCRj z7Q!RBmFm142D<M?^}<mb9Oj-qXnWj6)sua!-VS~0o14lO?wo1=+h9JWK6+~m_%!i{ zCyj4<al1^z#zRBEN2?0YqxBGK=jNcdlOkD|)@0vy(^7b;x3`+**b*;eV36i4=TcQt zR8yob(k*CVy6xQ+bqTR8Lj=Q{g4vLFQ*Z2`?;Mp1O8IKf_q=pN^S}G<Xt{WpX}n!$ zih6)rG^rXn>`z{!<k@}Lq~#k^uJhk)JWc24LE5Jh+n3-&Rq89MBw>l$j4BYm!&dD$ z&D2uwj~hyDc^e-is(HL9H>de@v~UrOV3i%LEN2-7rvW-M_#+^H)F$U-NS}S~$tjnS zRln8z9vv?$1eaA6o7@cz&wQ3qrOJwQRs(e_Mi8HbKK;wu=`(f+haJpl*d+@oRJ2eq ziCWMdMq|ha8DlWr>#Q{Ic!{?3n$x~Tj5hYgublnjY;?kUbfLkAaowE?xtHnzZ&68@ znlrVo$4UB5zdGRSi>ryg`RUSECXUlU?11%|x3H#T$P21@y#G3n#de+6ec$;!vkw4u z0!;-QjZ=9+z1KKj+KQQ;GcB`F1)Sm0AVv0^OZLbM#l(4LpZjMwzrjz-D48j`JQ^ql z8P0u~p7|ZlqDqXWRXszp#+p_KbGX%+inuJfE~e#w^PVDicQPA|6giDlcG8-*)SsH2 z`b`(_Ds_nI9Dv1;(mg6X>3V_0F32xts;Ib8$($Sv1&D4T48O`OsQLS(?-F5?d@o%f z5OhEoDi!KV_jvRas24zhQ=TkhHnp6p+dFe($^|j|u%9;lY9*1#RK3}4L;_R0l5ArU znC(-Dv0aj2xcz=0(`7gu#&$!`0Q<pmN)r#4d1cpY?}mlQZXL#qlDm@q7gk#`Lc%B! z(K`Cr-z6&y<OHmyl1Y<~_i5FAUsCBt3izXGbt{(nm+kVS=Wfq*-)KZF0S+#3@v6`& z#YhwPXBA@Sf-n76%hB6$I5Ty#hDuHu^I;C`PxstBuix0-GnUC|UU}AThrXbEiC(C< zlg>GZs~47Ta!C*M<FA(~Ydu(elW{bRHUdk%VMKPt!IQi`SAO*!frU+b_|g5ZaF7{l zy|ezkO%C@O7$3DZK+NQ(8JHIQ6%@xG<w+sul-j!9>2J?J;KurRRcJkxsWTLzhsQeQ zNJ@+okAdsh>T4URKW^TT>PwK4C03W!D2Cl_Q1{9=HP^oK+Y7z+4Qmp;Z2an#r0m(1 zsPx~d0q4HTzw`)$IavIhY~?#AIQdF;5x2%GC;nL!&xc>oWDyBFPt&i7yIsk^Piwx- zIi6Jov1(k!mzCgjUzNyA%Nz9`7rSvfpYKMP*2GY{mJarY2|_QzvIeht+<|+;H9g(9 zA`_c2F(u4c5tLYX-+*hurIRIoZSm1y&T^MJC%UI9JY~fe#$Y+t_57gD*t0oZm1cX% z;)2!|J-gn?%D^M)B^f4~KlAtzEaVB%Lu1^;x)14@C-Azlkp}dDbDgzhI5pwdd^+vx zq|G1H*HN{vLI`$>MUvu!H!avtn3%&LEb8pD&YN}A1MsS6PoEVQ4w|D6?7}>A-h2M? zx99kic%loPJ@qF{bC~&(B<6O$@N=QLyxWbcwE}xbJwPIcS`+F+s??J;yzmd&u8*Ew z<10)W+L$_03TCn&D3V9qfwvR*x0Gt1DVHB@#%Bsrg;xoMX60YJsXgswvgUWP=7t5F z9d5l$RUtez2;Uw_s+za=nwTf#N-G?liAyN~TI~#jYrLuzI|M{G?W=)G5RQ1K+P$C2 z)M%Fp_aZkZJJfeOW7Mwu<kDx{=dLw}HwO>RLF>~M+se2Xp5Kv>_tztJvRqaALLipV zil~dgUi;UX<zh?AvFVbTyWO_==rKb+#FrWJ5q(r5sw#1U%V*@3f-f97jEx=f%xrB{ z+mOZp=bfU8oeXK{aG!bf1c|7@?B?9i`*RJ_598t5+DpD?uC~;xS*sU)m-QB>O~V32 z$Meweg2LzsOhSWs)OQQ~Wd>`zQm?q_=hmhU^SZ~L7rK>IIAQ8R-g?t`x$J~Oo{MOF zi|1bIL$}$Iw3=2JhvgR*_x_~y5uT)ik~hcL&CM0wJ&5=I;v^tyU_@6W*ro+p5XwRF zQRa<}z&tBR;eJ;8Mu}`N8cTkak8;XADDnOICkbvbQ*s$-0W%W#s*-N#7)Q1g4v6VM z+ZG)hIrCiC+vcx~tqf<6FYjF}kVZA}4^z!njp@go(t=Y|H8bagsMK)oxa2c#z0X$c zF?*7t^mMKEB@2$F#4l`gq3pSIpZ&l4O;wfVq-i<(2AXFflA@IhoT^SF^RLP_2YEeq z8@nkbZDAGPWA7n}oI#yscN~`G#EAU!NKO7!q|ItUj?VtbI%<0-Q{uxd-%-8x5tJ^9 z$D7M%zspQ<vIJeMIm3CM6kdY^HZyMhKc{{jW<6r#6Vwh%Rq%%1IkwynVkR?mllSr% zGFzIjw8^4)oEF)(C4-7?@?A2%T9Ulp)=W<RsO+ivQX|SqJoM=a*|@tJGrj#Tw_6-E zbl)sj!v|vBAdL2SXL$tgPNVx;q$g^gOx;j<;Fx&3U%T~Tcvwj-scs#rL;cF@_YQqw zEHJ*T<m-sPh$M%HfvNx?2m!7x30-o-*oUWaM_;L>qvE`5JZs&+UXgDRi>1YOXxwr7 zG^PI9i%D)ZR;5%(FjbXwbG7v_cRWQ$IQ+FaC?%Ps*QAx|G43=U6P@+0vD<@!?984% z6gK59Pkm#Reo&Kl3(s8FdBI9r8@Ghpzp+@M$3m+6Y@MRs=2eZet)~D22Khhhvdx#I zg}<Gy_S<{-e%`S4gbQPpxfs6FN{&hOTwF3SJoVAPKZCx%RUrDh=11zfUc*{Z;o%|8 z+f3B*pUwQ%0vc8BN0nB|S$)IBQ`1rY7}aG4OQl=#nke4aB4f$@Y`&5CgS*_ephf76 zt%)!i#j8c3gC|hG^KXW;{TQDSm1yxz0(={)T4x7N)@r#K&w{3X<vZmA?<sG-K8RL! zxZBz+$rg=3O?m`8xpc{0=T3476?+6fIrbFyVsiophR(Gw)QCilL`91hO=(9b%*QU@ z{gGv^@#Dw*9IGwWceI0Fz#<m6svXBq*P<v<eo0Ib$e0ngYMU!`=kx8)`HbvU|3Tks zTsHGa2e6ZsmgNJ5p#2O!#wb+TdQ@b_CrsnJxGSUID_=quDqiB_5O&bfcGzxLaLJEX zFfExljuMv}3=r?#VZG>seKFjvCvbCr6^fi3hcg8(!M_4YxuPdh{W4U$)APGHCbp`* z@BoSV3w*?37@IkFyV3VkvV?~eNnRrujU|!|YLoTU0LpsewZ1|N3wlIQT#EgwVT?4) z#;Sj^oIdj}^x?BGtqAd`{nT;zb@vCzc2&{28c<-~UHeLW=CJ|9NXRxkdsTwW%~jYA zR(?nbe;uqlGowEeAnUSVm^NO(O|`<+wAhpA`f_*B3Xg7KPo-XWsBIkbDy;OE-<R|D zM$kv-;J3BqjvZm>YnfIN&}p7G8Xa`b&8@(?2f)LHTman-!wZu-r0+9~ztTkG1@({Z zW>G?JOSa-4Kg3uae{iksftLGg-m#};!)t?5<77K$kC^sW&fEDmu_#rvwiCs7<tg zgb^yq_J~_tV32-Z0O*QL-rY1xG>N9_%}k#!61!&hNn}+)HY>kgqp-2@CgJ9(nLkNy zc#c{|mID({J`rfhZk}3g^&*Q(s{e$#$)6F2Q}DUl|9U27Zcx{w7Lg#=a(?D^5_FXn z1-p3?YSCyO?|U|X!Eqim5z!y-!-WZ>c%fL%Ssd|;Ychd~$n{|Z*9>hy7MAbXj0X(y z&R5TG=os>>8RyI4Ji@FS>t6%d$YW_UEBImf7fqM4W9qD?`Lm6nGS5PgS{5Dlm^9h9 z#FaT8aJ{YppQZX)xQ<A>jcolQYU!H4phYp%iW-vAD_TPsLxj$vQPs!_!rZ^G|K}6I z28<b+$_%vO`B6ezF7H2^;bYH_v~;!NeEGgEUAndPD8M!aJ7YQ|w8J_DtNgbJ3kv$_ z0LVfK&T~wse`_s_SaC&)7Dj2<U{eostF)vhD*e`XKb;m#Asz|4_a<oWZL4e+dmwLA z<cI9R%#+yneGDr0N^VQdfR*l)pQVz{$rijKC|5W&N~gtt1VCPW!H-Zo9^$2zEGmCZ zR7sBd(^^O0G$)d2P&p!EuoOK!&*@^oXA51hB(%<;DdY<%1Wn;Zni>aISu`EKlk>OO zOS9d-2Um?bRl(>B8Pf6bknlwgi1gPFkCa}pdi7hBx~7scSZI+|enrUSQ098u_20u; z;fu-7ijcJ)kKhfV=|~e<#pB(AK-H2{+;!%0_g@kHwQJhls!Dy(Ky7e-n>iwXyl7(^ zTk!qo?}rr<GL&C727#5F?C2^j_Oh@1C%2{<$I~<1O2KhqXW-Shp>vqG!?;a||K=Tl zMu4Mz2!Emfpbx_~pvuc!(y7iMa7d|{^X;@Q5I!^r*c3Ue#!09W#%8R65t``ir?gdr zSnQ39H}s(R?*A)+k>mSZE{nyUzMu!M(V*j}KUAk#X<0N$5%@GWaI6=*r)r$)5z4Ii znzCuIJR!$>_1OTQzhIIYgst(}U6J;tq5^4-Qb(19LIZL2Q>k2zEqU=q0y>u{$%5D* zT>+t)t;p;C3W1hUk~%tR|C1DKtK^vp0R37we%E}=zDj9}g7KG!@#yocO9$T&M@B+D z5VF`iP{slA$VB|>k^Y0?LY6I6P!ia7rph<0#`k#4q;ngLq^Or`{-Or}2o!hRO2GVV z4admleJxc6nJb@!r~>e3hO%DaunE+aQa(OQrnpf_py_o^63>9F|4!%sGq{SE#xy1T zJ-7;lDk&w9)5<#7Hzzz|(Q@yeKHn!m`wjW-lh+w%3C_O<#7H$-DBiZ860$hgF7>L~ zoHJ2_(Iuw%0DVB?pS}+J$;IV?uO5uHpve&AOvfF3Fl=fg|H$b|YjYE6jXcN^Q+~0Z z9|uK}$N0}f3O3(CEghWbVDdiFk!=;=3|Rv8$>_C$SScE>gi43Ac{)=+Z;d9F(x9rd z99gFI#}MiSt*x7uOjH-lO&RFN(|Rc$Mx8IW=ncCl1Y^gfU?Ph<VV-HLjm2K1AgNVt z9%w`gq9D?Q9zIPOv_)0@$`2!MCEAd%xP-JQw8V<2p-p~Pky#dBUIjq(C>WddL;^1r z3cxDtAMW|JnkoeE5phPn8?5!bfB()W>qgtvqPqFpYKpS;yYDj1ZqXYvFpv*sz~?Ba zbL(iImIvV5Y5q>i4xt&y_2mBh{t;4II{Z*^YFxc8%crTw6k49_KX^8s;rNM4X_X1{ z96!0itC%3S3Xf=!N^U7FIFBkQ4kg&Lzb<&W<ZqUHc;w`y^$!8|I*!T+PBH4^q_FqB z!W9Tj7y$tXbvaE_bm^;n*!Cnc36yl@+Z$I+<jS1@4J$AcHX{a&h#R%AO>?kc&3k9> z(tEfaa;&e)_@~<?p~(xIhV*2|g<ubFz8}Z&7(H3>$*L{9dr?2zJx}|e=HIRH6KNi+ zt6_-u0L}vBk}}mZh&9UPsP|cWO~bfLTDY2;+_$4TMP@ziaV1*O+g`Fb!GAW&$)5^G zA0LcG?A+}stADW%2|~1rvZZvO!vJ^U&dILqAtX{TXXk1#b@?#5i2o6AYic@!v!rDI zp3_zrL}xvTp#IW;NBI4yV;z<`ODn(|FoD(IDt1H`+o1TfXB=&(^|iH%%p4FZBAJ!% z;RuA>C1=~w_ZE>g8%H)`2xfyM&jy0n4Xx3>%yIvbIfy5iWmVr*Q|#muAl2|d4l0ee z!CtQ-iGCG;)u*uC(O0d29(S_5{Ec7w+nGPv3J=@loVH=Wc~>#|?~d2OGj5Te3Dv=9 z1P5-<$=_{&nAjmX<hv0|lMkj<8W%d-<LnWPTL<rS`)~9SeUW?S@Gj?JZk7GAR)u}8 z#V(GMHn+-mn|^JDp1yqZ%PAFYlAjLU+O=Qk>B$Gp6|%TCL*MOhwkp}}HPz$Z3P%kp zyu64;AOV2=UIWU1-z~*@b+}j4y8upy8=||}B%^wqFEPEo_rF>Io(eq*#{l5Z7KqO> z<U9nUp;L<beR-9Nhot%ETz5uCqIE%9I{LeQZP&lf!|zuWZHSc@Xy-EO@*65B8$=`W zH*8WG46(}1=`ZrCEm+hr+-4qxgn{d|nXj5NV1P$?IYW%}iw6NX@l$C9ul~?tecWDl zZP#yUHa10Mkof<&`|GGE+wKh*z5oFMK>?*hQA8T0+oYsn=n|y6JEWCVK$H&YlJ4$q zhVGE=uJ;_DxNq;@^L>B3f4;NUtTk({nJdq8pL-w2vG-;}XT6*{?>_*h#5~?f(tXmt z&0H11WuXVWJ>1|O*|7pa@zr*Kdr?;*(5YRYjuQZrMzReg-WjQ5;}w6?fm*B<=yoe} z>|<m@qt{dB$|d>*^JGHDYn-)A(Gq8E*RkX?e*e+84UbJ^4OF1TOLrOox-b0uoxCy; zKfuc}!m7FeNU|Egb?u*j=@Wk?cK9msD@e-XZg>e(Qxu&0*)9*lz*qMwwf`-@i-&#) z<_F&d)gqsan!(E}oZ>?#Y=GWt^}G3nPyXcsyws>w`t2A{Qh)*$=^({DUBEuE=?xD; z!!~-;57+}BsAH>13(yq@R8q|1BgB7gVBOwuIwmrpx(3TSq9vBRZV+|4!-EtM5IuaL z0n`!0-0k`UW`(r0k5yK8^D!}S6o7~u_{pG$Rm%N4aAFd&Y*3;P{Jw+zmn_(1Yg+T+ zec{hgt);Y7P-fyekOm_8_oGDSW=;ot1jk1&oKgxG6?KXGm;P_b+wN^35USJ7N-cq1 zqFe;sggo97GkV}^nU(9yIMp*sH5X^xs0O?rjl4vc8Z5K0vh~@>YgO^M+hAFSaj<6r zy_@U`z}>TQveuBh#RPJEx{r&1{4Qvdb-(poK|fL@R-N_Ph<q!VO(i4aJ6s2|Qq?!? zHN(`*MWB@EaIqv~0?#iysZ)D%4vZ#SP@F;h%)X@5U8{>O`7cA_(TRm9p6jZrMW3S< zxF?ar(mRYhy{CsGg5#(E*UvyxqE1}I58o;Km~f~jq*=<ev!YIZqLF^OW2FO%bF#Cw zvvU#sAq0V-4+x=@ZPk23@u%1zU^YSN{SN*i!qdrHB^R-bASqjTOKP*LRQ7K*E<t-K z0>o14qk9i@c;d<iBbf4XE(C=?C}3RE^h_cl?e8ZAsomZ95C<`tBUWDUe$+Sk$7T;@ zKZI_L{1?U_U;j(`^}FfQAK$YW)+6?2Z&pr={Acy!u;1CxAWh)^r-<zT6jB~QRJ9CN zlt*>K{PQ662(|!0lO-YF|6_~zSN=Zyx+T*=oe(4NzTrgj$7YuG-%WQ=`2Q}6gP?B_ zh!%zj-Px?DGC#8-*0TX>QSzxN5S%Bzwd#6a2AE5rwh;RQh^hl1=0}SAOP&b!&%*OB zxz1grm~dXjoW71KGSPt#)+u42gB3a|EfCX!dH&MN^O0z`WSWucIMe92!ViGdYvj~O z`+29gcV3Qn=5r64gY4hWwT=jJ@u18oGQW>94X6a~ppGyF`#|A(wh;tht!Ul{9jsgr z;-?RDH6{zUt3tS=-#>041xPNBqO+mK-$DW~AjtncAPUs=_&o&wsk*|5kG_ka14yWR zb$Qm^&~eVKithCJ71M0#8Jm_EQPAM-tY4p!t;D@pr}QY6F>dE{e?XRTVuh(c;cv3E z{~YGGw$6vR)MbkdBqoV|5hEp`u{8^wO4Xlnn;8{QR_0IK-y4)=n5%t7tqTO>Np6uK zXQv`_8C=4km7HAQIi2WXPI4*RQCebkV_DDi2REQIkAa{5@z7Qf?adH#=|^W8a)N{` zkhtWl^R;sn{w06vgaP*e4)m&La{+l-X|>m$!Q6v;vcg-&2rUswG>z?5{+<}%<oRX> zLBw2kKPfpmA})@}uQ5>s^we71So<=#DsO6<!^6Xa%=hZQPp9h!qKGVzHPVSzoTG>I zj(!6|b6^a=JOW{9R&}K+&;$bwZc6%&MQnDq!Y0@70>a+MM<oGE%WlsD1BmY0GC^&t z(EneFQE5K;`%)m!?$}<z>7AmC{_%crCAW(_<I27Qw4e>X+1xfbQVNi7@>C;xIr71H zP=|FX<uN^|GXp$Ig!QW^w;fsl32fmY;R0*~HC+)W2h25(x;lL+a9V_-C4e-e<)|V1 z)`BhQlKDma{1I^I<Uj=dIsfIWyZE>d+{Y^`hX*;`o?AUzf6gOl%sevJ2lT24sdSr} zoU`I@9dG~WqvLP-$iO;(m@-q8lngE?EYvMjzV>6w&j(`fAefU=1sy#-OjdS&e<tz2 z_tC=e0pt%^8>fO6Sgk7*Y{+JLE*8&o)YZ?14&hI@+VHyovV4G8%#J?}3as!nGyr^n z!)WTlC0?*>i(CB%V0sb$=iU{3s|*GbZ7zD2^2}xo#-?3n{oQJ8)AFnTt8J<IkGAC) zESkR%@|GD_dTZ+<AfgQ1L@>@kLDE~)%67gJq4+CtJx>PUXT3FYF!r-NK{FZCPLV!F zpfnGebcrR<)g_woQU;z*++>aFb}ZAgX;7eR#GQXnw02?T5sh-L%ol;nlU~NT=8#<V z6!bjRmE#Nd)5a_?)Ss;#O6Zb{45~T<?c&*@t>XGJDDc~6c04u%6yw_h#|59(A1lJ} zAgGJt^XJbhRSx-NukKw7=@gEI$Hsz|;SRApwqlZL*1mfGHLf1tm!qkW^ui@dh`X+v zd8inMH^J;W*a?Cwztjf_MQ0Z+*a9m(qGCe`y+*DEOE1j<wJ1U^z3p;A5pVIeoPE=w zs!>%ZR#gqovR3mvkk&DC5TPqM1i|kjCy-)du?{X-VXI85@|)*=U3!0x4b%=GhPXOP zE(HzMbl=Ar;@7qSrZ>LBM<-TL!FV|%*K0MKA0gQ~o~^F1ZI-Q_tDWmLH%S|&grLZR zp`jtmMt40KP)tigqS}M?zi`#_1Q{ft3my@-qXuoo@=cgQeQMyYc8vXI(g6)84njU4 zszYQCe0g6wc5r+=od}XcMZW;p;V)r?I7kZq@&gRhsd6VDjVWj8FKMw`M-BJ|*f8!Y z!!fF4cGEXHg-74$#zhAJn$c+o#(tc;ecmHl)~6b9CI*(HpnI~$TQ(#sOR0~IyQ|c6 zW<c^l>5Uypg^`%Zr_`(K_EVYk`^zK~AZZ$5!PdSKAZq@so$fE*ybbeGlxE~)e}fJ1 zLuCh9{Y+z!j+O)<(VUL>EGg46p)V^Mx!)txtY29hm~68wf5#(DM#wY-wm~Y5$~ein zah7vY(M#P!i7!7Q9J%R4jxQ{$fDCk5@)~B9T7mN;BM-F8x?UTO3R^tg0Jj|>VU5kr zlzDBCj?hgE7Bs7T`!0}i)CE-Cb{{`}l(Dlr`qA6j)1#oSP7eD^rpqMrFKs8QYJL~+ z<->TVM?n1c<x#URw++BU16?n3kpL^H$be|L`bcVUzV-UVw?EZ(|HH$xO?Yi~n}w8z zv9e?d?ghv#So=QpaMRXYJ%7jnk#pu&dS3l>1q7n6&wW+;rz_2haa-0wsbiRRXZi{- zxkJG6iVo<TtC`<`qIqMT0KrE1z6;2o3casO$hlMFYxCtUnId<m0Z#L44Rzn8$MtIJ zwmeXOmMW4I0sIO)Ch4udV*)~M+1+Ie(Q=Tz_x6jKs-q7s1hR<M6esMnfX+e35kxo( z#pMOF<xgJ*%c-Le48h|T4LkWvz(oi-&jUnhxU_g(+Hx%Y9w8D`m-3D$;^Nt}XEsM0 zWBXixwM0^5K&-}?opcu^GS$+1;xF<*u2;3=VwtY9QotYrX%hV+@jLQ80;)^amzrPL zKzt~o?2}83S)xnba!$_sfNlU!i<I7AIfVO%f-HO%|7&!cBcWB7uvyKtgF48uiobBI z?A--2QK$72+IVXa<RfH9Z<JTX0)u5`ZHj)2XfrIIwpb<?m$CO2CgnR$?#w8yIG4Vr z;Fz*yi74jGE=+?vR9iO7Mht;AGNR>bUJoP4y6=IWrFAJZJUmVvE0U?Ef3*qKBSb7@ z3-@5GJaOE=4v*Sd*S1J8R6xu?low!38VCm^GQh!~m6TElEbo_-t3S+9JV#R#IInK~ z`U8LhVc*J&eM~IX8;OL2ZKoHJJ@Cm{K{^p_{=*m5E7PZ14M@!ZF5xelBgu)2%-T&# z0KF{TW=eg@XzVqsy}l<GbH{D*d;=9WkFLH`<uJB|fgVK7YZJF!<YTA!$K7+~Rc{ma zoLGYxKu_cK>!$Et>c1M6TCDyjU!etb*`fr}R7Az>37V>xa*oOJAKr4tK6K0+c6<v+ zIA0)LI3u6AI3=IrHzG=jiUsOd=@gp4E}f)^i!VA!j5+UwL6<H2uDO!3Fmf73CWV>v z#p+K_FJDxGAq0f90Bm~#SRg~o{1yTCV*w!Vm9(1oUS186VzCYnU9=ggmxoXP1nDC5 zv^*-u>eZn4SzP>Py1&H~!0*hIDx{g+EuPm-@0QFsqJTy6mBr4`wNz<eU*A3#{(o0P zHF3lc1M*2w!+ndA&#k@{RAnyt-Es@0cmnq`cmvUL3opAq56t;ayU;1KjBrjB$bu)w z!F5@ne&00<N77}oJ#ckutE7C8JMrn&T5yoiiFw`9K=1TuA~-!#Mi)Wr1*fS}v*Je? z)s++GShK)VV&Y&vD-p)p32Gs$0oj!>b>qsJh15cv)QThD!%DTY%SuWE=Q)h2GMmr2 zbZv4#A)J5x&{$#Z_V#AP;1Jy(%{?LooD*m~I;WaI%dOkX35tL!`P8DPGr{}2<<``{ zT5gSWb;`L6ftFhijwv&{`w}3&^&Q%)Ue*v0qgOK@1TD9|KdqjaV(RH3I^Or%u<PdZ z8RY<qAI=am&IWf5QR9^*;`7VmmczKTiA@DV^@TE>5W6cS#xH5VPr8b|#QqmJx#1as z!<egOcy9+g*OPW@X2qp$^1~_+6X(#jv0g2x=l|iv7yi5DmR>5#Pihav>Av^gX;sIF zY%frq%S4f*SV>?d(~}Rz;fSpE5mb%=t7;3vKNwe(pJ%lLMbHpEsy5?lYDBxI$nNjQ zoqt<Nkz|<Un0iVdl|5I7{gz-&#L$PDEiyJd;m0onaynWt+FP3GhK4$Ft1Dagh&h=x zlQw>QP8c`X?-e8BP6gqz*H*iaSoh4O5)9{Gm-YyOOoF)Q<h5>Av?`F-=cVtkh|1c# zU#DBw+Mdd~x?I9qjzE?$%ktk;g^<Ts!0)Uk(dFV)24==FhfVUwoutW_YL@ENQM|EY zM44MhtE6ya8M{=FmQ@7kSZX0*;#Ps;1=DM<3BKPAw~ljElbgrB8(G`^&g?Qc?_c=x z1H?4~_JfCC2Y-_=$$y8t4|44<ad`Vn8VAV>%Sv8=3e936$3^YcK%NFtr~94L0v3Tv z1GIWVsO4%kXN+P7C;JV{X-FfPhk;UdxVXgdGU@cJ3mdMo%xa{|C+EQi>hN73f`(fv zGwDc?H1Cg_N@9hKCjmMSRB;2J<xC51utvVuSIONMF)X*c8%IRqzP7HFY0M1d|6oG9 zW*QldL<6ZGNLK*KUqFLB0QezLw+@U^Rv7!$b_k*(ey5%2<u4f8-$M-+XGA~0;Zlhz z>P;JOP$_pj&dF~s+f*xOE`9n63AD3|JzI9Q7u#Fx1|vHn+?abgO?7(cV~0`g!tuf3 zy1Z^Nfv%&<?|xglTmR~}1?n>Z$d+rZ_y=h6H{J`J*~Q~Ba5r%k!dh@3N&7B<NM3F) za~?9sS4kZuehCKtVujAIRj1_}cH4h7<+WIj8R_l?ZQEL!f1$^peao+{$(ee#Y_Kn= zCYu_fQQXmnq(}XjXvP*`Srpd`1Pi0=`&O-0J)VJV_r8te#ph(OYe?CWi|cQKsG*a? zM&kC2%~bmSReSu5JjicIKi?Nessm8sABjC6#>4nmW*10(2FrNW?84%YN3?AM1(TpP zAOiD_&a6AdimC>Z#TnNv-Qg0Yi9$e}+5&#j{rJEdqy-Osvp$)7o40;==?4-3wL!zJ zWgU{i$r5`ip?@{pvYk97*;jH*xms@5w@s}W(MLQX*EiIeJ4U?cg^UxnWj`kOG(ZRk zB>d{80v1gUc>pE{1I%s3>L01jWooI897>?yR*J+PPxVNH{7AjcNL(j>Iv@*@OEd*Q z^7QuAmF^}3ANLyjYhiEIOfm(|(sY3E3@!XQ1V#&%8KM)>vOg4GSI!ie%v^f4qOjqA zn{sK^79BWBra|Tl`<O2Z60~JN1rX5u8m0nIaFd(8Me!S^1GTcK)czfnrRBK~Er7ze z5fqeZz9n{u^86O5XD_At#q+#&Lhpc8jBaF38qsfyhj+MdL_qI%zb$T9HLKirC$@iQ zi4xSFbDE5@<n+3)=ae!`prWFF`O$jqJXj<E^k+8|L@YuF2IrCa5$({`nv9H8hXv~p zt+&d4cYue1ggxSJRc1FcM->o47Na}S5f+!^Zi)H~W=5&V4=-MaOc5r3*FXpDDS%Ej z=5zjk7b)<8#rb#VEf6>%GSL2YjK8*jvjwYI9n+RV-e2E=PZs%LwFU?ahcgd^^7k!u zZys_X5St!G&NqK~rifo?{YHO&10a8ZTL7*3w=eeopDoYDNdP7=wEHRZxzyjE9&jJ1 z5snTRvZC@3@FxCxd9)XxJ0X`<A(W@!{rO)xwtsEcBS%0x_6dKWDG*eMXqWX(g5#eT z^8*#Jx5@IQ)SLJJ+6nmd`^*4DDEtrb?O%KP4GI3U@z(Fu#{XAIm)n8|PhGDQ&ryCq z|G&=Tn{E2Pa~ZpZP@n(xJ^1vE;oqL%hq(U+W50jUCH8OR=sKkO9LGAVVi5gGj6}kG z;9#0B&T^Yv@h3JD(Ji8z)ZyNbyd@?!n5#D)kG&7;W*TE?_k499qnh|;^JtmYr1P<Z z({{Ci5bML$V?Vv%p7H^k2@=2KeLlXB+^y=06^$wD=Ef?QT1W{g)c>C^gC7Ue6p(9) zsq2M|iR%Tf`E9R%{>1-RMI&_I@q6P0%6+PTzABiWLLwTeUcuxZAOFuEg}PcNP!f81 z(8(B(MPC2&#io4=`l1N5tB%e$|GDk;YdAF;)SlH75&oi;qVE50e%Jy|Y1pR#)BN^_ z|8v}56-|h(<zJpb+0g$uu&k5$Z4ZHo5`n8H;O$@P_u~H?z-H<l6k63aw~2HI_n$BI z$Wi2PRpRL6ybyjrv@9v|O2LH;O2{e1-=^SQTEfNcfBuE4TZw~PmBF0Xij2Uxlu-E3 z0~~~eAU)rEhEBHd<7UE(JYgpjHYg#b(G$=!%pt!Dsd*Ugetu97d6-3GpTgKRC~$+& zNte5tvO!{T-AB)POJb-iFaXJhr%0JcW@>VNbMB5~_eIw&6Xj==P~Y&BSEK;{;u5Yp z@kd-eZ?qE>h$nmMNk-Q3-aqb?8WHp;FVoa;|LBf4x&lM}Cf0JDUg^R_Z*2oK%YIb% zi5gr47O*hc$TQA!w#*^^EnZjBOwiqtAt%d6DCaFL#Ug<$$rTx>nr9%#i9hDu+fQsd zqDM{dOrsTHUiheQ6dhmRHOEn;`-S8&^-fr>5*6EYvrI|hLv9=ebC8(<@qi0sW{#Im z)uRh)5Nc+}J-tUO^ZDk^{+l<i@U7_R^4B+-ky_7#f{bHdXhP1tE3>uNHJ2(l-~YG} z18KxSilwLZG9x>HG-BA1N}0c*Ko09WyOyMEXTo1`AEH;U301lOtfh3@KXq>2i?`oy z%&%&of5t&lO*vJJv8#s<X<etNRh4be{yYx4h5bTF%R{Lrk0gG7&qjt8?_rleyUzpO zr#Re8uxW~cpA0cvNXJa-T-m1amnZl!Ps%z_sJgmENDp`ow>KKH&_m{@l4<hh(tV|H zAOiW2+S3ZV5jK~lWzq-Ns;!Gn4&XvjIVIygHLFi4R2T?!DZMm8hJK0UtJS#+{xQdr zEPcU1$;8sVH%)<zM<sqT?#m8&44k1=6<qsA3LlIuY#YC>;#Ok_dF=6>06)h?h*34) zDK@0uLwS{!<<}wPu^b$XyJ_CHzO$F+*Swdq*Fn!yL%$?$Nz2g{ivcM;)g7?Khr~lZ zk{p#RJncFR5y^E}6}9jXq^PzeHi}lY<l?+02{Ll9;UTw+ue_<QS!GrQ3smFb#?n-- z#6-DdMi0YZu)N-Dc35i+i8v0U>SiIirClCs{pYM~A^!JlMnbvbzFHeZI$2RQf8mkG z49#ZT78J_sUM}8sQAiOMrj59dl_ji!B#pyrdwi6XU9<ZsFi41*n(n3dwZ~`0o=iit zX8QBnx2qE)W0`GHzeh?&`Rm(ld~hWz5f~PO%Nz4*stC-MBxiJpKBQ6Xt5nkX=t^jH zhlI$ZoY?Ri5heY|6qoB>85YDthEv5OiE<zphQHe#WZb+huB*d3&FzHu!mXyvbdJm$ zjf*~LnoS2&W6Yfhj9P8YQ(jB0ixMiDznj3MUM9qaAuI``HOL%)(6JjS)lJ|&DJZAL zW3a^Ju9<uj1A1=yHp^jieZgxd;d%aK-w00h6w_CU7cW@Oxae=%+8!qq7vf(DJxon` zL^V1?8QDQE!yov`wnjieB>2;FG5JR(cBDZ0^;uOpXlr^J>G&h3-@|DWPj0T8IDRMq zbAFPY@k*|8#mFQP32En;9T{?RGBx;;S%P|c{-CY*Hl$TJ5fSRm0E`N&Y?#c%faiY7 zy`N*79qd1k4icINXiFl!MEE&K0bQB^UuAjvfIt*i?=F1gVIC+>?<<-1O5VU<sYf!9 zFfS`A3YRtqWwJJmzP?rKxs&+a0iC3Nqx^)T8r&u9I4?ik2lZ69;O@8EJW(!iM+sk} zdJqJlj!^W@WND<msv7eKWBkSmiOkG+a6=SN=}5#gau4sDtOa=5?@D>4r~CXHqAHN` zM3uCli@-Hk&{gX5J<0$jIj+6TOnzU6?)n!yt65*!`Kd*#wjr(6H6a_Nbcej0Laf-S zDebWY_(Q5kqYDmv>a0??ocLvvs6OM8f*Yn0&dHWkR^nE-UxjBqs9oHkT};*2d%GU# z${!Q!g@pBb!nuQLLOi8*Lu1ok59`YATzg^TwB|YJgRRszHG!2}@6qM3Qk7$B+Fbs{ zs#LmoFED?ssqhIM+l{a=04JA645u3z9XV|Ltb6{xrS(1!+g(_9_mkWV#W=aRw*6l1 z;-u<MOmdI#Un1{YniG;cKNY4d8EkKm9I=-TTm%XL3mUN07`fkUzjyW_+2QCTa~&Dk z4XDFT<)I@}JD7K}$q#Yy3DB%9?(k$Qu-V((&&wnr$QoV{*t3nmK01fW1h>(&?YX39 z#+NNGUk8W%M+-0|(zAbrYTd*&!CSeLmuH5*Uy+rD9+IPsQFm%05&TKIC61{$Eziir zw|N{J7$DJ)yWo!0FMTqS=itD0q5vaOHVJX)Pxsvgi&S`IW=4WN*Tx@Qr+GaW6ci5( zc>$hi)H1={;h{uJj~R0<8*4c?Cg-!w-KRuN)#y-8Z0xVKElb`bgRSa(f!lwWY=2<Y zc+jh0NPX~D^xF)YR9`iDEo}NWIhnr&RGKS6b*Jcuz1O|0+EWAV$|vJz!%)lzA7{7o za6GQF&Bo(Tf^D^~i#MVe2_|bz@^6YAj+>lJIrIM9p4Sa&4aUK0#$PvUC<=e{%XaN> z?N@>J#Akem%LJY)bVY{x0@^V#k=*!hv(~vu<cq7zSTP6-s&Q^b6JI?~KEHZfe$qWb z>2Ir9Wr(UE8GQpPQ<L$zK87nsxPk$Aaur)j#mXd91s|IJKy!7#d9nAQ@{Yb$$uHOK z6GM}!az&Geib`}j#&tiM99*u0gKq8}<8Rlx&)<q0%NJ%ydm}toOL-cT*69<TE`sp4 zma5U?T%44U3g*Dfo!^Z%Z~C$!zDs_@D<kclX1`&H<uO%h^FX2Z8zz))ZrZ5h?jkw) zu>W1+Nw4453#A0s*DBKL0o&C(Q4^MzfdUQ&!?KfXu9z;aL#?IY3O`r9yl|R0w-6a# zv4J?4qx^UYyWb?l#}`OBzIu2CDuK6lm<yKeE4-&}LV^UU9f&Do1wyvXraiP)c^wz} zo?e)4BP}UO@gF5jSf0TzuL5pA*}iNoIkse>kz$Y%3v6ZHsvI=cghuTaZ^X@9X0+N~ z#=G|p_>5Lr<W3aR=H|4@QMv_Ab{Lgjw(xMCvlpv2ISTvu2A@M(PU7Kvi{yp@nw$2A zLHe3apEAaj1npA?m=3j-QEQGH);nru#;PcQc}9Z#m{t~+q;AhuMsw0JR*^$)dwZ%} za%yzbZv$BtCQ7F~iwufw^TGA1`h_eMqX_f+Cc552L)>0mXrjWJS%o3?WN#eSaXC3P z5rFOn3JhosW*Ua!5-ehRxI4@<R5(qRk_HR`lJAtsoyN`&r91+r#AS&LB~*iemMdyS zwwCm<L{s%!LZ@2<<K#FS-1fNF`&W`nu3*~e*X;eA$cOINW};nRTy&zut;0w1T0FY~ zk>JPl>AB6Nan7QS=08>pF)<r90_F2Bdh)}>(mB&!Vqdk2)hj)}bfrtrt&a(0yXZ8{ z?Wo6rnBA<vL?E)5b_Q;Ym&CsQ!$);9rq#u1gzje!%yuyX+a*jrcZ1E%)B-+YSazrt zk8L`D!B=&#`XJ<Z&0u-iT);i#B%bK%*eiC_aoKb4JLz&yQ)AZGPYZ%q2b$7Tn-#t~ z<;Ozje1EtaRD{O`jIZJ0I6Ta@kcObXZ#rJ2oCdqW`P=6?vT3GBPfFu+OiW}mSG-Zt zo(wxY(@x&)>qzOKYzMd6<=vrGNUJ&rHEFH$fk2mtgdNs3QctFf<zx1rz>Hh2UyM;S zx?ipX3~8Q}6#is;ooz)n9RoF`RcxJ&@r6!f<4zW6u-D)YX<_0tJk0v~VB{{-W>&SE zY`_~o6vPOnzCh=y&HEvu$n}PzQ<`LaJWuI_`9XvCjDQXESE=?RBA4%BpM5na?Fo@D zht?F#$@m^4yMIo6pd>&|3f=j&5<qD>_Nc+#Hpld2%y_#Drq$se)B+k(QI2%S%@J6j z#LO59i5KBrVI2TNyglj<EX6KS2V#89Y)u7XL~V=b4L*QjD*K?J&9<s?(7vOE%B=hO zy2PY#JD<+IqX=OQtzZ6pUV>7ZfPJvv7*b-=z|YBW;9v@@_in)XmJQZXpsiWQBBssL zxkN7$Zh^L5*2=~Y^W$f@o6LSmCU(4AN^FFsjNg)P1VRa^Z?G@9;-BWaf_r;$eyJM% zQ|j7|T~@?cX5_}jQKIuygS*H6bgl931yU`IDg9bknbO664rk?5Zw^5(tQ#yEHAQyR z6e{I+K_<i}#sI=PC!a=lC={2~B1_pzBTuaq^gz*_=@*EEv<?F^P9i5pu$5rad4rDG zLQ!P*=603p`WTa!tjPm8zVSrut372@J>8si77!jw8&107Xxpr`<%zZG^+83QceXdV zGbdQ*m^WSP^0WYdVX|dkYF%OBYAJx<_ZrequdME@u9&atvblga9#g%=ze0&QZb&^X z1Wp&H^F>#GmqdAzrGs>6L99kv;~6(=(;f|>RXDVyv{l{zk3~bI8Pj7?7e~b1xHc7- zW(Ey+myznTU<F@1D4WzGmg8q=E(VXdq*z_0uvAjxco3L6AM50mwC*<`qeO7zj$v4y zjO1_zKpwzSe2C#&gbj14F1EC4TaMgVG!Fhw^v)BULVndtvJS@Qz&=Ke^M;b$`*0q~ zD5Rp<XCx^^;&KbEAC0AlEcXWK;{L&*%!Hg#?>=udJYY7gajtI5noy>HG|;v%ZJ}i~ zEW&ij)z#G{Tx-U=jEJnOy>Y3-DEs@<dl<Nn^O>mWWQ$^R%uVrOq{)ph^R<miMz<Qn z^!pzd?~zG5FU<iT`eb#gG{Ej7xw^teZ+r8{3vFPdwKuyAdkB6eJ}5IE(@yDlXKRfm zP#)?9b3L9~_Oae=_aOr|WIdFO7zz5RRJmISpSCmBC;7GFM`>OzVaV!Q^5fRZ+m8P6 zv5!T+o-oA5_;?x>OYA9{mt$bj@MM{cZP<}9KWVrMD8G3dr=goQ?ZJbF8^FT3tCW&x zx*wtDYifHFy9vR28v}>lFTxZSq|J~BB)jUGPL%S^rZ$MVU`oh!#9vphC2e?SbDQ^@ z?PxGRvES?7NH>(Njm%8d%Xfe2jRAzN%{-<=u%o_AQWlzr5)71`^iAyzcwL?1joAnC zzh<j?Yb*w>E-r%Xo9%SIM|(X*cQ(`Ei)(w=sS%A0bjQ};ep#5+sA^$K$2+1`Q@o|o zPb|nMChX|w?;8pJ^;5blI&|x(x;d&L;(lKhh9U5DxuO*P3w(u$&f<(gc&R-t<mWR# z5p9M$my{Zev%%+z#8FAUzAR2SH^$DI_O5kxzYSi51$XPEPt{AVF2th23;<EKXP*Zo zE+zWXF?mHH1w#-2;(Yua%5xc0^4yl*uVfwBW>zIp!>cym!teO0E_dDOC6As8E)9vf zGZDO0zPN4Nq-dr={dI=djf7V+URd3jbYA>jo1}lEDb{jALW}Fwn2Fs}%^-muG5brj ztS1@p)t#RHu)fr5Y$x(9HLlzBvPxU>?{>fST1OnHYEJj1dryJMC8YqLH{vEU$06J_ zMABE?f4daH^;OZII_xpszSiXiaT~2Y3_m6!j>;{P3<o{#%z{voFe0H6?t8<U3*Z)r z`8KsIV)gz;jeDyQX!HewD=_<{rPaMozppB>n?3`U1o4C$KH^(&acYjavso9Gq`>&# zjqGq8V2dofH*x%AS1lNhDOf62kp2Kl%5?yMlBsa^>by9d=$(*QIIGPPWKosi(6@;Q zeb6g2=iA)5;0iYfd{K&F-Ek9_v{!B$;rrHJD3<%#tJ>-z-7sCzyurCnW5tg<paT!O z+u?|_SRG_havs)b2K9}P`3PShE0^9^HhoKfi-*6)eMJcB5u8RpJ^iR9CzP#%A({I; zB`1kGFZ%n}Y|!UxJDGpfZH)n%egE!hoXes>er{!{qW1}(>sEc|=}Cy`Hj0Js#nn=Y zZAZ-|xKHyop9{%ny9-kT5`2Kgh_~O|AH}rE9ua*&hVBtxyUWD%6$U}Ui}w-=E76ac zHE%)R;-VHyuGi5+w3~-S`_^qlKCvy#Y*)UO4=NbjL>!<Tc7*J4{*@6g@fH{zX@cWk zA(HWOC61f3GPsX!#JuPLPwvx_;t{37xY`PsV2Za*kY=+(2}$nU&wON*MIXn^*eazl z<_ji*IR%d|a6SBQI(I}wWkyBq&ewQBG1lTZP>uD$jh?%a<+0HlN^ZEpON2-kXphcO zJk<I5(+y1a%A~Ztm5UV6JT}vM=0hgzQ6K>>M>N4IWBg?a3tyD9)JJsZ!FFa&RDzVb z^2P00qH%d35>*OkuV1ih-NWLqVfG7z^v@S-xA+r^1a9N(D0*7Q9T^)Kx7OC2afq!A zVR{=5fSz7fif@;XdYCSLrEoU0E-JY_xLSXwPj5l)k<tFq4C(pi)84P)bDR?b(ls=| z#@r~xh%-25?sK_{`0}8eSI*+j)e6>e<6ScEK1gx>ov{=%a90UCNY#4#^7$ekw={oR zF;}#|eN|-~e}aRRX)FWWU~oZ>+1bh}GxwLB^<1(^po2R^8~XNKJ7zO{>-ua&JFye+ zfSq`hx<Sg#mio?IiwT3CL3pdMBa_Cj360d8TPpB1%$r8^_u?2BT0nm}#iH1&PB<k# z(vU;<B`fVyjVb|kwNJ77YS+mx0-8MomLeS1+c1iZ-D)Y-@?U#j10=^~{WP+P!_OM) z4l#)*aYj4jL7XA#g$8|?>+U8=K~5lnCfVFe94=RzJJU@}2s(8xCCIw>J^qM|Ci78Q z5a4CO1J!K}?6;3IBAUTcgf^y<({&^LK`mF9%7eBX<b)!`^$Q4Czfj(S5A`Dj6st1i z#c(K}CLfQGBOC<CBBM$c!wY&Y=Zp?i$t>nCNdV;Y(NBS?8P1tq&&fF*D1oKs-nG58 z346(6HJX^1L(V8`{F<BPec^-*9qKR#a}2%4ioE>C9ZKjfe25mQ8C2M&_D`rT*`^d^ z)G(ef!MTeZ_UeZ2VUQyA#fmwbcEDYO3D+ZJCPn%B1bBcum_z=D7<yr<oy#39dK<M4 z$_$;153kEyBX6>G%!|({(G+W5{5s$+-JzVl^)@a%Q+Emx&4qmBWSfsorisX3R!~ST zoUpB>7K0HL=ZLsp*GtM!<3T-N%UX!3e8S$3Z`=O-q!rgTV<;mLJ20+fcZ`kIWV`jN zV16v*n09>$QyZzKMyzwDzehr9G1L7pXVc4U-E=%N+G}^HV|d0uzQGDa?+$LgZn_#M zJwG*Evq<(vrU~6gYdRS>P`GNX>y$C9#_lTG_L>SyK0%sqSW{Wzjv$(&m=D{g4jBG) z?Pg!8Dl({7np`x^?}Ejp`X+K{IKaIpvcj*erK43#+SBNF5KZ;wBrl^H#eJ%fQq%d! zeAN2tOTm;<+*_-2Wp~Yo6e^Bh&xE0s;?ME-;@%s$QHlxm$&Sw$G=-E*`Z|7Jg<_EE zXD%-vx;X4*7jzr+6bi<SNRi^8dSFD&R;nRMPtcva3!W%VuHZoWDbj^U%1<;Wz#LQJ z*8%nH2t8C!n0X&as-Z&;ZpUsmDwPrY8+m1z>Aj{}2iApV9-uPhOR@sIm|8g;zgHNa zH9@DP&;Rhd+E^6;PP``{w4%}`X@Q#8bGOnjw`j3LoWPhfGde28cHAO?#O4d!-HBEa zL$>WfOoP$k?a8no7D}S(C^(CY*xZtJ%AYOv8_Gwy>>rEE!k$TWtdT}&!OmDF$RbDB z6VjOPEbAZCAJiDVhJLDJnnD)F5g9qRsNKzAa)o#|BO0-R?Gjr`{2=gZ0_|8#G$>eJ zMQ)nQ71Jz6K)26zgW{!e9tGE@l(52tFwZ;YWIVpHvM1skPX!dbACo~Erw2QsI*6tD zOU(VR_z$}rHYcQRRrEeTuK%7SD{riFXm?!E;1OgR*Jws8>rk9p4#Q}?<wwSKc=zQx z=hL3y;FB;cZnL>w1&KN#4Z-p9jC**qdEOqyiKV-bsd;2E=Bw;xpJYby_2$UlzDFyk zLltp;e2Jfie#^k9{YCy-DgoJc)(KZ=R~ZrRds{BDlap*7DKZP+?+wVYbM&XvH)0~> z<&qyZ?|q1IVZ*^a8F4xur7itrtEgi2-aFmu*GF2eo2&W#4*NTnOPBcqk(kCt0K}v7 zv?}e14+;X|A&5NBnV04lSXcbm?U%~sr~BA8?$`lH%dKFE1J`$}cx)$r+r|G?<Zz~4 zGQX55)F&5eqV2g(JfOY$I`S@GWbgXx7f(spdU=<WM{{#|zeI-!o2#MKDbMYEwB?+8 zYpgi0CQ5u1Q|XPu?PykCmC<e#F_34j<OSZWv)o22QwA%klLTXT7tfB-%FkwiZ@uKs zQHEFh@u4flAN0v*{eL6%C<&ximGq2Mk6u@Oz24!!!+k?qO*PGXe1QE$8V)T3E(q9^ z!m{41y^)xe!Jf>hFKfEF@3D@yzmo|f&P^nJ)WWa9k_V$EB0<64`OF4M*stE-dPZ@| zw`9BfIBXA_z&P{x<eUVT%IC%;-6Jt1j{x0>HHROz&FqI1UboPyH9*g<gHy#%B?AM} zXqm`_`mz%eCH8i6DXxBK7i8T2BYoqk^1P%X;!5eQUt_&iZ|AHgxY0PmhRr5A?ll;x z^7m4LmR+9bgcd!~Tp7hX&u20KizENdn8_IvQ^>cXWxQYa-td#wXPm`)DJlN&%~*A_ zd)%$0rmBPX!Er<~&*d`itXj;zf6;zl)%YkPcYW70u~EQsz#bH6{IHA@Fu{R4V4scs z?D3nZh;kMU6d~fMk_pYL+7%?O3Cfv1c*nV~D1QEC8%D~fsR#$A%e9>2ofLNZHz}Ot zG4-8bpqWGok_tNPV$0)5yAHFv8P?p|Cnh7g;}Jh?T{&7>SxN}HUGb-UF|6&6OS^D^ zW(lqij@hZ`r|&_0QHlxKk?}rpndlw84LlM%rK#ojY8}r}_^cM5<;V7G)omQecS%Y$ zS8%iLG)7L#XJ!Ro@D1w#mtlmh5|o6&!Mc}IPY!ADTD%@x5u0@W-(vv5H$ru(ngWgz zA*9r(LcT`VShqBSOrqrTg-LD10)k~5EUiM@?vnkGAMf{lya>%chm91aKBl3Yt7UCY zanNhkz!kyVIcyG?xhQDe1s*+s&ZS5~*7>|HFGJ~2p{3^vo~cWzM@~#pTrZTr9<%>C z6tm5(&!oY*OZ7HbmR>)I&4fd3@3?>RT|Mx5(WW$1*>79K^_H5erpX&%;_S2nAZ{Z} z1*H@3$AVFo6gHQF1j|D8LfRCaL_2V%*UklaNA3nc7gUTEGc{;TfYW~<mby1z^q^r5 z&GW3hI~wUI1mm{Pi|w`dc{z2c(05s%=iFo*U&}Mt?O#SYxN?<h^%?V1{CNAWaQy3M zMSc0q4<nov#e?J`0B*-at6>Q|+TOK-`Wi3e?;85n_QPCdNTHz;kWa?niscwn%$PIJ z7k9R!10KbTg!uijDi^D-Bv2J{Z;I!dipxq~o_2i`h7!wD@_km;Ci4$~EHKs+Z{Bwn zAm3q~dO6zYfEMlPwNvQ4eFtf!XUpv3;?O<<^Jf7V56W_=iW3TMW<pVW=lSOwZ+2DA zqm^b-eK!NqP#!<oT$zgZL6{o{H(UkrSZ_!C0Txz9WioSFZ9cspj~Be}y1f0;!&;lE z*GAW#_G!pt#$ZJ+_U<Ci-mw=LJRstDoznLza$hFNaU|q$n)ILE4<90I==xx+js)O{ z2X(!N!k3BTFVN1<X-#j?lc+_64rnKZ()uJ8y?DSq)UQ*Rm^}?6?y9!^Nx~4W`b1Jx zb^;may_Ia0!=?q-&bsL~{ahS3afX<d7!H4mai%AXt)ivEX#BklyEN~Jmb<%dEeM5i z#X!J4T2yyWq-bnYOpAebfNypM?c|KA$K=b1BThscynoIjp)7TJ!A^(Tof6Ou4rXwH z(xVoykGHVvZ*Px3Y7pb7RCgg%{mM|6M#$`ZQAM#@25k1tokN()uoIba$hg~nPGhSd zIYl@<KeCYzeVya&_MDVsb&K0fE#7_)L@;{-i|BNG^`^s}ZjL}(n~#!T4%@}gz4)NS z_4E}(=Uh^Lm&A9;v_>%bK+$^|`#MuF3UWhIwU<RQA9e^?sh^Lf<Z(S?xWSWd+H4-j zu3ojZwfROPMI}Wd*I!{~oMYp8IG3Km&4C}>GQ*=TFgiZHTRX8z*;AvgTX?^zz;E&2 zKj_<U;;*-!sjaO*Al{?&v)+FP+-5+(zFDeA#UDh+hAMo1`jw?6HNM;hL+81PCi~D4 z6TREn8pk56LXmWnb9~>#NReJBwfXfijKc0JTKL))H3q3TU@4cbX#AX=O39Ug>D#x& zqPok2q?PiS;XyCpwQHYe6yCgz*;G4YA9=Hf`P;YL8_?1|LuO8Ee9E>Hmk=*!4u7>l zzRf3vam!ST?C;$7o@*Y~UJ6eh5wBNsM*So3bWEjm!cWQ)MW15df=ukW`X=WvFIWAD zJSIKypaxImrghboZrPD?*w3(+<e)99m@bQ>x^U#Z;cg>aGVaju2qHg+LLMBz`wX+D zKB*4?pyR#AAOOjhz0+mDGFzh?&|JX5K&Y>vI_QhaGXb5QojiF!>eu)oNd->1X3Vxw zquXQSjgCsi_vFq@%_hN*H<b;n;5ffNkCW5Q@uxF>9Mm4dG)3_d!|Tqadp$C(Q7Sze zA<N`S2`;XyM`XWjD*VTd>{xaQN9H;>p<sn^Sh^4lKJH6dbK*;6Ec=5vpn#R%EzX6K z2pesZrQNks*^pK&YxbGMbHjy6<#F{UM;EhIswIBYCpwZsndwSI1VkRpxf%~f?#aWQ zZmqP#u#ggr{p*sxl4<w%kSd#6XITk$_lgtdVLS2H)VvG2sjQMc<*?spneWD6EmvZo z?VGNRIDTQX?yI<XPQ$EXP>-i>2L5Z8Qp)s45E{ytl$9=#Ox})}b!m8UJXr}VDk|-V zbrAWKDMuLtO@t3Y0Lcl-TY4i%iPf6U&0!^HKAyH6<Kb0c;xAjCA41N#KQYsDWOO9n zb*NExTGKvl*dW+JJ$qRyD_sc^4^2tOw0bRb911aNowNc#GcF~Dllp+X+ay;gLhf<n zGigh51+(i5D6x`$=nB&wq91enE&v!8VahLnb*>TZ>ABMu)Y()K^NB9y?7iJfvWvj2 z{j~B%PqYkK!^q|Fj@~V>gK$j8OF$a}EV-qt=sj?>x+Ln99Sde+16Dp}h6(RuhR<BM z0odH5pZ`xP>$i8zY&}c2RE!3jn50v2@kK|)uE^n#F0tHVxN&~|5P<c-1a<I~n=&Po zj1T#u_+<_iUJvN*qPvlM2=W~{#?UjirWA-ZeQ#i4WXIsI=Gfq~ez7rlzu5Q?kV4j- z1anh5X?Fk-Cv2{g>wS}+G`gR<_|=fxZK>=^3=nLx&@;X<+*chN&Gsf>QdCF;baEn6 zkJh4R*DbI-_=MEYW{)gc_(R`0MyV93vdoMW=qB3d0yHG<zj=^y<1$F-;`m|wD@#*; zC)1wia8};q1RZZiNq%lc6&w&&7PVgXY_418S0S&6#lV*4CFZ`}A@l-NZdK8C=xA>O ze1W$#k1!`VHiv2E1=z`vW=C^DyE5d#_;z_gS~5-*HKnoqv~0x}mFm}NQ^oKompKPO zC8*f$Lt%IepYIyB5MJ--=SzV&buY_^<pE&Se;U@Ch)YP;jSX0_mD=A2H}HoDD_H#J zV^TMhIKmOc?)Bw73YW5UppP>CYj$yfrqphXZSSfWvKC)&A04*kWD2DXJI=UR?A-$4 zD3XQ3s<XrJGu?9_i<q|+0eO1myLt#J-WR|aP#rg?)ZM!Qbne#AWOo;nkLSSJw*3AF z-7y@LE{Iq&2Pk9#FJUiXp61D7U77iHG|@W+Pgi?pWsk~8hMls_j3m5^g9y_OXWIVH zQFKX-dE?aR^!%uw__&po0ugXeZzy0UXn+TOBRK>qppdn>%3ys%7CFvizyH4C_Mkw# z-$Q<t9Di=5GSea;HW5=2ckWexlJnf&Jnv+BSzpgzYsVn|Eo3nmNQ(%ej^cXjPY0|3 zvE9&X@LIuz0THT`Yl7xmmWP-rds!|)&ZZnLj+=D4=hx>3r4A+67uNPq5*sfvRe<tj zcr$9KwB#M&M714@Rva^`@Fd8|=a1b05%7)o0k%`Dr1vC}zOD4BgU8wVP`~aQ5Fol8 z`=DE-rr$uEyW{AF-9^s!_eYw^zjmZIxLhevVeIK9MndvRPxMkB>o|#hu~HlBuX>ps zyLzkh^z39dqm`lwaOaEi@(&)>oo<uMeZjkfix&uJ%Zh?+rRB%7w;;WvOFf3@FO1Xf z!><knwM_m8py-H@e8E6D4#i+qV2!f9xgZZ(E{i@>dXi`$dO~s6)L$O~RJF-BUVQZ_ zen1d@BF^Xu)d1rv>PLqsLQWA*muT2%PAt~eb{R6m+pAUw*yZ_sTORV%v`4gaAH297 zI|Sl2DgZE|7m(>2P1tkqMKExVitLqfC*e^rRc!iNG1FLLeau!Ml}e~e#Jz_tL3Ja2 zs#klnC0=maFV9rzVerJv$Z?+YZNx&M_3Ji-gI8o#DIm+0@II8zA}v77V#1S~3jG_= zI|BHWcJX|Bt@&};j0k(N{cQQv`OdJa88UQ2><XqdYT<zFWJv@HpQcKo?2Yja9CWw+ zBflrPwh9_93$srFe!p~!?v3y}H$5}}LOzLyDa`l-=&=5>Q+=3JE{STUt=s88T7Ymm zGeF0S9X^Im;*afTYbmbC0GR=dFHkJd4G%Ucp_elY0vOPm=Enm@9<lOBq*(wBE{I!Z zockb$s>%cfGi4c|m;iFlQ(TdL8U!(S^H>+Oe*)%WLjNED2MeZRL0J)#mwi3hQ~m9G z6vMK<icPqzEgm$@?<9-i7i4R86dm@Nu7nXVqBJYkXp?qTp<W@ccI9p5;v#VZYfyJA zKt_r@eEt$&|8<svCM9L5kv4F0Pli>u>$PECHI{n#$S$tx@$8>4J@!~Twk-V1ov97! zyAAUs?9G{bBEJSG4DPcI?k*?lKtk7Q$Q~H^{X0*I5L2eiu;p%u4n1I_1L7+hR6n@Y z0H*mdT4uB{8&UY_<j5FxgF9g5C{#Z=7i=eutGE=ci~+|a@`xPo9O=%xIyXlc`^oA0 zHXWlWl5MVw%^8_qD)mGD$109T$aUL-qZv0&e+y0?0%yr$CCQNjXl?*7hXfXlh~wZD z!gn)1WVm%$Sht$60laJ1b;$=)A?uvH5p%8cy7p@O*ukye!`k+LVd#!61a*tB6|s&< zx>+@>J<8}Mi_bJ*Y&$r$Qc#mggIS<ieHbT8E`5%^RiC-*edFXI9b40a!+SyJO>!V+ zOHgG&f-<93CST&A4i}%y+_r1bhN<Q*D-O@b$Ga;V+Gmq*14CjWXsf`$dv<hQ3ZDkE zxXt4nsV;6ma;KV5qp?+=X%;Z@0$i48g08ltds&&FF+gt9Fa<1akaoDZ=tWjNT~Rv% zE{9J{w~l>z##UmVplF1lswB6fAY;w|`05aM=S|ZPQ*$K!JF7q!2UZe1$l|<#TTE$H ziuZWld#I=IM=nKc3e+~m>5$uWbXK2ya#(T<=$x&RT)@9j#__EmxdAMx=4vB=D^7E< z1jj<5XdKXyhR(#qBvf?V$USRn?&GH)2gV1$Oe~~y_l(u=alTNiBNn;n?=;s2(mv3U zmM-G4DX1=Wxk#tlm{?5+%8~4JuV^%l;ejStD9?3u@WK2-cd&yCP(OE~UQWfi6R}SQ z0fc$xUNt=TYap)LHnPMMBI#GW!xG(Qy-^>&d3tJL+M(tN;hmfgw#I9%_f(7dNY@b? z3516EnF}0$S^1gtSc!AsYdR2SiD~5|CAKdVI%E%|U^+=`k{fLOEHkw(`1!i3=TitQ z6CQL>K9mRQNi49UTKJ~TaM|1fZO*V$=8cVPhCJp3r54NCzc}{}+Ov=EPg<VwA<h-C zh)iz-cn87!t!GV4ZZXPPgyP-p%FC=Tq}+aG8<r(u3Orj-5Ymf(g^BhY?euicMrPH+ zI=P}8)qS#t6ajTEoYBlod;lUkOVT{PuPgTMYaGk{J>71_IXPzA)lPNRhqZ3Wmy#`e z|IiEAS2Qge!e8mV>k7U;5boFm!Tf5<=g<v6ej-7YJsM=%o%HlnkBE8&c2R#p2)=N_ z-BGvAwZRMdGXcI&#a9lnfN5O55CfA3puzsEK8aargtj?3Vs~E9_w^EH$b4owJ4yJN zYFBsv0}YU9f*(D}&V|vD1h)X)2|hv^!qupx>3GJhb5^zc2)Nt%sVv^8H<FsQU+6gd zsotxhmq5Qy$8Z<0b%4kMq5&C&nc0z46|nc)`E&35Z(#%JQ&7th&JbH^84MN^|2>#; z(lJZvYM%0np@)|LF$u60KwU>}`EyYP1MAlFm)^tzPW+fgMtLIZD<86>Sy6y(#)Ed2 z=N3-Zq0P|Mj#YP@mZ%2lsUc6$Ym2L@|CJjVX}2{k(B3W2-uFgBs~aEmsu<w_qmlOA z+O8hk3Sj!~7-J&DaluUV9V8_E0-iH1Zp6TNagxY@IYiJfNWna9@)C&RULs%g1H=w+ zhu~8DY-iSNd0zYa0`CYdIpj8=2!I02m*DM6=(&>@ryG8rFJ_iKo!s%;w;1RU8#}wB zTCL0J-c#2rns}Ea27Ns}WGL<;K1b(F4G0?dn1EwqnLjs8frcRQf^=ZR-M?1JYp=T_ z0XNYS%;?dc6?1P+NLK1shXJ5^PQN@8e=GV@NbQ#A#ij2pETEOM5X)?^VFVm9c&a$O z4hH#lm9R<T+>VyV@*GZAjfFH>sS-j!fom6A`6M?HV48qk4FJ>v*-(*L^)%Q4pTb&2 z6q$vBJc(gC5a}g>2jBKJ)Cx5Nut-Z>4^3%Su^GQg7Aeu?o>?LS(9?UI5a0sB=X|Qs zbI+a{F80><CiU}03hj&Umh{J@P0fKh%}Pfa?Kkakr!hwXFhOTq@P6{vEekcpnILeB z{!py9eMBg2b3z0$>v-=GAIJ38{}zz(h`*I=n45IZ_82dICdf)2Q1E#6bM)6_fae2l z{*h2rgpxi?j&+*Prps98$J}RC8v+BBXJMWA>k5rCaDR}7a<MW&iKG1C^B*LSzyB|z z-wJaibC5UT0W_)><w=-OpZ2@qsQ#!sgeY~Vj8R@*S~xheBk<yqIrxMCQK_j;JGFWy zq{P)lrx?!;xbNPLQ4|PRf%(FJs`jfsAq3{+Hq-6biLH7%^zHPsL0+vajMTX8GPpOf zZ+ZZU@EI6~#YOY4-#xX9EBDZd?w)A;@c^iM8i4*#Sd+cdb3I`xkMp23k^1kFSMZtS zHV}?8TYF5g=9y1O#Wo+w=~wgLB1r~f&(g~^`+pCjzq7$X5Q@hl4D@jUGUmU3|NC>l z?eAM}O|9GKn1#;rKeh+{C4&ARTmSR#|L-O^wB(oL4}{*ML`OXArpi`HN5|KT*j0Z9 zqW=EBv9mRR)q5DLBC#;?U?SBBg{*%vTJIm5a+PQWz2ML5Xc-@4A_=Y78k8tWkBx3D z;bw4jeg6o;BFF<DwONt+B!Yze<8w_-Xknj34GXwM{x@;ZAe#x3w!BQ@!If1T9&s`M z{jwe$bgPamp#w+wyugWYB78NJQT-g`qZTPKXpsHm8L3MkQ2)OW-|pbkL1!~z2kC@X z+uK)L-+RS()(eA=KMdARRT6`x67qoKkTnOK<2X6K&O8`3*sb`PdX!1FkY+!F1BhX0 zb{Iu?XQ1Yl;u6=w*em)-ZA-hy(5$v2b<J@pyyd_Vn0vR=I)ae(4pNfcVf`zfq~1z` z<9fkQO*adzHr+4wqPgU{p!<KEWxpUD5OQ~tm3_Sj0eJ$7Zw+t{l&Du(wfQE|?Pq>M z^r_;=0Dmo-r^&0b9S+I32OJMTvPw(y*LcE!(Cj9bO%QXfk;B4yzk2i?a}Fd3#KGij zLjX#~n-he<!bQ4dkY_Gdw}m;0ZunFNCATw+Oxd=+e;Pd=Mm%7T5m@Ue@n@EZA_15* zx;(#f-=S-vlbtjkscWB>oEE;3ev(&kHjeFGWdzO*NV;*&anJ!nJFFR|W0Ye2Qe`2h zAnHY4V`n@C0jN$%?>E`ns#OPaM~Dubpy$@YtqBupt?BPFcI~ipeSng;$=C1W5<M<a zmVp7DHITUh!bjmH{P<^Y4#^l;yj*vbANQ_<%oGp>RdbR2X$mUFe_MjOxiULp<E@{w z$#N@Ad#;@X0dPmy!z{5kaAxxvbRNjCKR2`|BE5`*#46=yNe>gak50N|C>j41^FR76 z@P`t#{GV$IWv@FMY!?Jq8e1?LcqJ%OK}t$;^bO(dpK+-!&;wn9gO&wO7{ao+3(hG2 z@eBnJVth~rsLF2R+m1BoTf23WuJ-ht<TEaQ5D?rVT+^Z&q=+Di#&J#nDgdGcutYM` zecnk?JT`Xr&XXJrERdVfLnt8)?hCX*;Eug-ZlwY^e^sVY_%J7q^JMZI(D5&(-~93V zO@m%(VofnQppbuUZIW9ck~qLY-Zu#)1A=7<JLpMnj$gN#{RGFOI!Zu910j-uiLtPX zI2+!>ZlIM41UCX4{wX^*E`N13m#P{XH#5oXdO#@To<B)BEfyU3T+fApj)e5Hstoq| zecHkNNpt};6d<_|rN9qT2tZ9a40>X|bK!ae{p4XEoDjN0j2HM^P%}R_BN+uqgtf<j zuL1mlZy{p<q|wn+!K8ZSWtm!bcUXcE8d|g0$#K!|TgS!4<6AsA_W@?V_tyo6(bmrd zpo%%Ym6N+gQDo<IB@T4wAXJ3v4#FSp)}VN#WT}>yn8vDixP-k5ed7wR14MOE_-lZ3 zEyy}jgB)ix{>aatZekETXvWF9M=tBbAt!w&P@u=UKdvw@BxInX0_Y5Y-U_59y{BnO z%+EmqF)>>8Od;NUC;_?8{5X$VZn`Imkyf^QjT0Wwu6^8n>dzT1JviwJ9uiy0ZH;%h z(6a@d=5-)~X=e8-Ri@~6)dGQ>LJtskS{UTMN{DCnyj1TExLQwRAJ`uXF1>c+Ai32R z81hEen;1B?T#B;6V6j{HfB1R}s3_O24S4JXR0O1tQc5e*C88i8pmZZ3ozgIrB47au z(g-3w#7GVeihwY5_keUaL-X%B=l#B;@Av;dYn`)PF!9{aeLp*{eeHdj-g|kRflZA3 z>hmLMW@dK{<T=>YS}M=&L+`>(9$reo3k0I|UqSFO{rRL2C4#X;%sgIyY~SJcsNrWR zp@m9FT`5Jyza*Tww(fNgae$GA#A|r2JgoOE*kdC{`4*wvk>fO_cRRlTIp`u`a<Zai zk(tTrBm%-25sW4MW^CnnVGGG(8JXsp=4W2+E4RdiJn3*lWk<dpcp1j<6Vq1XHtDX| z&ohwGlD}c;9(rkhL#EZTxd3_zfS53{;VT`6cS0;`mRtbH!Vew1<N6=!^*s4k7{JPJ z<m}G6in4gr*7}l6IS+znL2=|h?cSVdObze<P?YD9J-^(FjM_vH%@>Bm#qqbi?C}c^ zUcb385X;K`4UO~iuHtSoTLhGafv$2}ioL%1^0z!MAowk>2Z^SctFhI4dhSy-wmigd zxgF-)6y)xGd(8uRYTQkFQlM2;l)4=={H}Yo2#R-G^;p{*qnPir-y}69p@LG&qwjVc z@%2!NlaSOLv&lHNtWSb_`?K`|RCryd@!D-b+lKChtr|}k_d!zvncoYaN+&)CxY9jf zv)4IQ9{xJkfIQ4u@C2qMDc0h2E-{8H))%Oo<UK__Ce=&B1J6AvxJX>Z2s!%KjTPy8 zh-CmcjG*vfxNl2Wa_VuyRfG>e32n80a&ftbEP32?sX7g!Vy97mxx9%QKuYof;ERsH z7{o>LR-#pWH6BR9z_R#N4wlgaZ;QSvS#lBvz1k!c2`CFx6hGr&X8s}JbqTPtGMByE zdOPbEN=lF?MW)zqAT)HegX50ewcD3+p#SkQU=)^d8B6G(yVqKP!`PIcSYu8)f`Gu4 z;Jm(M(l5AKKo8via^#ucwd<5a58XfT85D#>ys&}4gqM1TjcfGr^L0TTQzJLB^X&T> zMGD=MPhT2<OL#VY1=_dL8vVXs{T}|OmvP+hASpl7*5#0pd2~t+TW&x9`q|B2PB6jQ zM|Eq5Nm^<ILo)RCz9y-NKRJc5e3jy2g|4~ySpmrhz<GPOG*sNi0o?42Jx`-CE%un$ z<T5k_1FQwFiHOcu1!Js~2uvgZMIyuEZcX<}Tl9Uj+FNYf<!0dRBfPKr-m?_$iE?;c z_RO%%gAUbqfenO6l9K*KfggI^Yv)vXfKY>8fz!Yzf1`1@y^Z{684mF8nRa}5wz<JB zb{BIU+$((g3*p_nFXG;<i#>S7JxaJ_0QHAnxFUdKN>o|2#F_kE|8ScqqL2z_7EB4~ zBM`!qULGQzNLk$KZi-4!;h;vTE<SQpdfL#>W9Re$@l*Dl<Wv2T8I8C+drIytUaIRq zFO$+u-rVC~o+@hQ5vbBnCyt~e^#ekcYIY8U(_EQ)V)HHZvbibub4236iZh)~5j7Re z?6sKr;bNnYhA;bzhw~)AeEgR(FuW^6P1GL=%%|<)0#~tiqf<80qFg+*ha1b~Kigma z+7Wl@*z4Pxtc^J(X!IA)FmIiGhJW@~!RXyP10|Z-A5SA7Bc9y!J4B2GN=k>xzBUq6 z6ntQrH}I_POL39)HyU8fBY4}dfL*9CIO0`i9ICxVf_SmNzr4l4Z&+QXX)_1Zgpv5} zEVao}33MIpxhX>l6aU;SO#fTbKiz6UHSn$pC=>!yR8w$O-3v>7?c*0<sD5giBg7sf z=iLY>FnByD??j*elzi|0lj^}J*QsfloFzb5i!4_>a&%Ob1BRx!uHN|m4s6hUjm2{r z5o2~X&(j9O01D+$I$~<ZhR&r5us`?J&hR9&tZD%;^PemGF(sB?el!14z+<jErUqjO z>-&p^1OPdpS3*1A+Zs*M_vka>BKfl?8|&>(SOrax{d#I}X3{vtK+T=i(XNnt|GPYP zWsQIM#E8{UKYi!S{NlHz;oZ}0sq(eIGS47<Qi#tH>ga>82`P+B2)mPRP=!FGJx?3| zdAbuaudaRR_ZJMl0~_FCXPNP)BcUfII4obvo=|?<TVEWwZ<Yy$cwews;Di3V%$FLO zp9G1%d0x#1;J>!}6Ov$VOPh5sUoBScV1A9z(ez{>)@@b~a!4t%YOGt|Sos!=89eEr zuiXi~YEbw&LY_f3H`Q1rnGw!fN8^z3$efC#n~n-$^E2+c-jbNh<FafEi(1Q5v8qhF zmDOIyPDD8hed?7?^}W@jaQQOZl(9?iV+K_}Z0qqRW)`LqAkrD+I2(2BX<j1~0$)Lw z8pP<naXofF4Q~G3f#9CQj%)GRb-8v*ulndQ0*C-*;Obalc|4ROp9|r=+KV16lQj?Y zfQoPg8!87{Sqc5C?l<0Fr{@v8bre@=lz93`&uz>vph;baUY5N^$INIxN}*50=U7ah zjQ%(y5SuYv=d&jE@b#O^*nI~V?!;n}5+o9+7Z+Pdm4W;3HC7h&i#*H5=G*X^p!&SX z#8M|jEHmTm(1|v7S5px1j*H;>fNKzzgZ{)z8?RmRfL%X3?R&-Bh_>M_Kh=(uCsL@j zU3a^hO9T%PW(+j1EpI4GU2TU9oB-Jp_=eC60yc|XEDw@*d0I(~8S@{}?3X!eLYAsc z?|m8ZbtXbluVajA-933$Rc~S>;UjgbqJ-hgy!P;8RiWO85Au)ikNlu4TMp!6NJHPk z0akDku?~3i;VRQF2RK2?z7fM0tQny;v23S*fsLK}g3Je#i&Y=$P9ea`u7s)=CV*p# z2?!dELW^8uE!{XpS||G-w)5wQ|6x1-yn$9KjQMyaxUd3c?Zfji*S!|X|NEVqd(U=l z5LKsGT1Em~tS@Epr=}F4-q$}*DWBpRHPgHLtBDzeB6o9?A<TRMjjz`by`78a^C942 z>pBwCFT7k{S?&)o6vD@8-(s*={R{^nVg?e=%@!XW(_ttl0fTt;g)1>a+<Qz{hdl#< zps8oO1A^qIM;<CVoydl66}^6!2khvmnG!WZb5@P#DfHIOh=&dLEb`f0H+JzZZ;+cx zZe#?rqXB9wfvDOPi5Ac6_Q?+{gVzoS9eNb%=xJdSrePru8aOC&%!0>!nrO*mKfcJQ zTYYQCUU?ev)ooPg;@<4+j6@A$EW^Tryoc-N_sru6oS^&NGs+hAczVR1TaOsQy&|eE z)4Yl?m8Y0<xAG033b4GJnL(v@Uo!Mk_{XLDZwsgau{G38?YJtBI^7QxtEGblUPt_< zAprAx6PCfnwXB{djvCi(LMA7rQ=3Og23(HVHFr={tQb#}hO$YB6&b$P=rPP0(Qc_^ zMDfx!bKH4qcG@IK$TtAeFOic79>c`2Hv#?RBXRF0#SpQo2%uZrpQsu^cn=CRsgkV# z^zxCf&PcT7e3R$;<_FTPx#43CHzCj*wY_~5u@@*cnCJLh!v$h<aj$KT91m_5dhhLi zqtoka5Y3U~Uix)!V7BSp)T;(>Fb;&50LFF{5k0_B<T*;SB4|Xsap_N!?erWFJFH08 z)6yMiKnmk4@KyEdI8x*?b2rDMB<<eubc87xnujU-{bR$IGG!Id`kyB6&w{bK4?aSH zjGV1*mW1-?9e)*~#v>zm`uTh4Cgx#bZ6#K{fa66Na=O5<4rT^<)SE)5I=#QyyAB%x z3J6m+>;Xa^@a7h;GQ~bUu@;2Bew(|RSlv0#tj`nNM&8Kj<1^9W-Mj+$u9r3koAnYG z4~~tH@0~rf>>?ceVek}?WeXpS<_?*1jo9BOJMUh;1>^468pEIPxmm@ttBW2#Niy?p zB9bjtfqW^R<A(BL-&(Tq^oPadFVQ7z+@#5fC;ABMrp9!jvIIc`L*yXENNnsCF4QG2 z`>WDtWa`J4Fli~o#C5F<ohNtv&)%uW>jQ_{`BQlsJKl13+NVay)pB|?q%O^RgIyiL zj#8}*J)S26!dPqTZWrn1XJ?*g>YT05ij3x{h$3*N+#)P(fGSbMeggEdgk^VFFPX6X zFwiq8(ZKI5?oa1Cv*F`(oNhnvcvBRwlb)YfN<Bfua4tG%T<rY-0_$J}?L5EwVE_iJ zDodSv9IXCQWA>D?jWKT=E)Ta*VY4)U*Aus9zCRfC<*q?+lRseeszIjU0u#8#&mm+y zE6;gJ(X)r6u2y)CC#}+msU{u7y(`G#|KluN)TM{PA26<hgfcxtfjAjr>gyr>b{0{R zFYZ4fLj2uNC?Auo41^)46B)OX$3AxR{{`KN9R*q?A1CONsUq37>{HS%cPY&&Ej**z z?UxMdO1h^mJP0jhG}9SEydPgb%U;_XzZ;}|uD4rZLu9uHJJpL*DiS~5Wto?d#5Er= zOd)G!wRFK+W8%sC8jG4#r7EIFXePw%{9?>^ntIRofH*z5anE&Z{l=H?BX{QMzRUKH z7)oqZsh*NXHiE-?7{SW1D1?;gtL^W23u&K}Z-VW4Ba*ZAYrXv)=OFElNy^zg_0=YF z-r|t$)MEZPw~m4Q(AV0(KoHB^<~}mQX?Y=e=~stb@$|g2-(E=4XLW;(<sk9PzIt5! ze#aK4m`+_Pz`fqA*akLwj|M~Mqv*Y2{)Y{h(0Kg@hjZtgA2{UYS4bR}Oa=bofTw3Q zl?VJsVmfjA5w~KT5tP=d&)NeCi~i@4sso=-5KRHi?Z+;(Xk@=!t96e{zxm-ymjI&7 z``7yWDFOND7%AT)&{R9}c>pgiJ(-kxt*S?Jzval29zmxAvnBlVey0D5z{JUcfz9Rc zPT+z)(^J{!1;6^;lXK(LVr8t++T&MWUZRA)1vMFK;jxDX)x#~tXrA#@Un-9kl_&*b zrtZSRk}P_n;-d+LLVb6j*7D{1-K71K;w^-dF8v_=yd@knLI;g|xtX@M77l>mEOZw- zFFJzeO-Qv;vQwZ<LiMXhJ(28cZ0u@y?%oHBzRy`>iIOV19Ih)9ixxUL-%ve=?z}nH zG%9=j23nSg^5o9;>%T5?@A(WpaeSnWXlZ#E0C<0mXM(IaJv|hi+nNi$rjRo^#T|=) z0?VsVRtaMM&({OS{ZU@z0DuUj+Yj7N|3$^^nq1K)`{p(q8OwxEcqRIAy4Q>zZ7Z2g zrnUKf-^)8;brvoH_sGO)eU8uYh>A*IOLn_<idNcd$*m%I0x|N4qp(2Aov<fgE6)1x zKa9Q}7Y2hIwlqlnY3JNn!?b9LW7)5_E&h_C?xk6cv~D(Hez42y;#d^Obc^wxX2qqo z=szL*T5$po9%W4_u;<8Y%=9zi<MV-vqZV>n2-)S6b|**1zs7;;R>V=M{(S_m5AzbW z<yq;^@ob-yi9#s>NUHBTvCBFU7)FDju~Gd7_|%p4Z1!hHyCYM5-a&+M1jG)7(wv!2 zCskp3%okQ&?<+FIV)Y5v1=l<2-+z#og#iq5b5uj!#~4aUE`==zo`~1^N$H5RuBr8s zePI3SP6y;QWaOwabUB`xrG^cwo_KVmUlT@-0|QIw!nDEvZ~^?#S^7lci5EMRF5QoG z_&V!t-uC$YIbY(`kSM;}!kuE~Z69WDCLytxX&70565+S16S97>&^yQ~y|~oBcQ`-f z5=*n;dANdK)LSZ#S8z!k_G7*Oz~@AyO;zueuQ`LyeuW4;i|x(vel{=gjK-*riI20W zmFU(L-|MUojyfgS&$^ThBhjV1yGBcsCWW!tr?ZZur^XWMj7&{UriAlwQ4=dg{PDr~ zo977PTRp0Lf&K=hMqkKod5FtY;2o`=zWg8Yt)jwVg7_9j&ePX+<?-WMQBIlEI<uUG zmU~mrE6J-c=(0xFr9RzVkGmDhqKaz;Xfun)(za+kC;3H#gz(mh#f}=3Ewyl!XuJQA z2Z#2a%I!~<C1~LQ$*#ZWGyVNP9~W^L--Jq>2n%n;`dy$TH%U(#*QITWaq;_}za^l` z8+@`st#MgJi27OPmxiSZbG-z18L0=dt1rJw^*cmM+J+SL$1`%U#o7o?ZW?uOVnU6x zzwnFmo4(_acEc3Q2j<0@-gW$_*1~!_{H;GaxL9}Y0V0c=!E?QQlshE((!jDaEG^tJ zWZcQ~*ENO$3zO$Ld$rF%eG3-3-M>zJei{>lvAk8l#$m13@>tU*x9%Ygv3TIC*RLMo zs?6qks3SOYX{tryS+F`sxNkDc%B`+-cDAMKroIU{=5w{gK09?E-7!Js&>StP>Z_2- z8r@85C$IQQ9fmaLcw|2^dfs!BHAV{k-1gDZo{AFBsmlXMcMcBirk0~EF6~ry`b*(I z{ALcSpHG^;9FIC>(!&vLd)$U;j+dvUyxpI9-(+nQLXF<WOh>H!is0f+ThdRbhB<tu zrc9{g+xok*dWh-Q`b<$%f^D)NBo!ibY%ufHmB>;BGE42Y-fzPfCwKcrdYBa1M(4<z zVp=u+-5A6YaXv!o5p6~$-%$e!SsU4qWYovX?yn}p5;P89*+C;GUZ=8KLrhaQ!?Pwi z#Zy}HzTDax`-1pVv3+veqFTto*9G~p0vCk2=BOjXbxL}&bj2)v(@eH>%PZ=4EJPZw zru7L%iFJ`k5(HI5a7wC~30ac9DJU&A`JOrh%-mayj;+e+`5F4wywXj%RpMsXqw)u+ z*eG8`h9k)@&RgEGcUJQ^WDp%?2Gs|yLHqKXwO3P>g@bneo0vsN9`-Qv+?0qQo7^3; z@v<poYBVOlXpwc$#m~JQM3YxgT9<o}`$A-FW2a`Vz_50D3Ie|R8T&xNpcU>@ZavNM z3^7USBxLE{0-aQ3bSZ2m$o|7cHcr|+rD!)BmD_y5mL7e2)~YQ|*5~R3`~@HNz&y(m zzQZmWmWIJgBDdI8K=Pz|iN&nuUE6N$uCR>atGweCjia0aL)ju74nK65&;?j6re+b6 z)ehy2(F`?8EXX$`6D5B8F58i3xv<w)yKg-Cb)dlcfQF+!eiHAorW7JAuCLT0SV8*t z7Ly@tc~lRPHh8aizR~v1W}eQ`*4rI|L8(gP?_mrnh;M0!b8VFBKD<}7s8v3=TE>m* zp**t^KD9Pw>mCm$J#b>}ao4{iToHEWpO60aV%E$pIq97Ck=6mi%Z4$o&r1R_o)u4Y zx9AO9y}aMt&7TGUwM=zaK3&lyYg1E`8qA;0juyr$y<T+DcGeI>dOu4iSH!=RA_z!f z1H`g9q!q7oF==AuuVz*ohlO{COpeI8=vSWQX<rXj6#eYWWUM8M^nWbhI%7ZMqU{og zvCLWfaf4ypFmydn(fgq^8_MxZu2j_P6)gc#bzeyZIVO&XfvjUp#!_LG#(o_e%Pfl> z2fvgE7U0aX^<W<EwAZ#}kI<zudyq5Buw5<V_uvph?soRJnfEEI=EpeoTJQ9kiltcJ zXW``sv2^)`4~O}d@$iynx5cUGQ}BhI9pX>&O%7&H*>ta<END6K$2IaUk=|zD(d~fg z<XfA%2PB4T#}lMX_H;AU&Gc*v`%6W8#viyP^U+h57lw+OB!e_&9=}e;i4ObAV9}yn z+KV$T1Vt3THw7*0Sk4GNVI9U)EK@4hIR79lDN9;<;E?&A^vqa~p7nNSa>{2dFv1lc zbAh$?4yLJIwr8<B!WE4BV{kn){X!d?$fK{gXhkxWy9#P|a<pa@@=*h>#SbT_tMA@j zZzA!$!&I=LRr(|d)VCZSTKb8vmH#UD(vr2WV)e?>9h#k;Q*X3$U7p=`_;{H*5wt>d zZ<_jFtCkvgr;f?jLfu;wbx`AH*ED;#ks5!H78I^N^VBKJkb&W2ROILF;y&4+z_y-) ztwzC?A?BG%@l6BZDqB4HNqQyQ)|P*AVLS5FzOSUk(u^udK7w>WzQtBlXZKK|ye<8P zaCUmEsh-xG<o#_|w)=~M4r=ro1rI}R^YG}3A2!xG=9kG%1j@?>1}m#6y&zYNXNIRm zd`Z-7e#%q-5MQ_0MO~+8VIoyB5yf)xw^@ij_)7#AB2BmRl5uA9&~@ttZC+-A46IcO z*;w@Rf!zK4$!1Qu<g|ltSNDH~W$pCqVjip>*Ay9;(k|TYOX+bcL)F@6QsC*^OHMch zetm4{m``|Sa+^M^%I=SBN3btNRm%|W_yo^tSbR8&2F+?Jj?2FvfMsQNJ#iEXvc6eS z`~#;s`mOjl8n9hoVCs4dMj>vcZ%G|(-4Qa=arq)St4xEUoT^uJfh_JEl7y=3Fsbc= zK5pbQN?Xe~ukW_#kaB%yNwTV^ukV|{caLW6POv+CuJQ1cot<?mtayxJ*Z(r0rjcQ8 z%^{S);yk~J%mzabOWauqU)b5(#j$_}G*Mgoo(M-%ODN_}LQchViBFlRw!v6-8Krv~ zX~y15+`~_Up?Np$%NtgX$Vu}t5v6Zd<I$Pg+&!nSx?@5=vB#*tchO(bEI6<JnVQDF z;o{^O*#i8!7V2qp<HH`fHAlT{v^-)#ek)tK#tS2?tDCx5;gzVQXZSE*t%=53bieGz z12XbUhQ$$O)k=O|DCIa3CZ~;XK|XPQ?KOwI0(_%pR;1<=oo_j{9m5@ouqj4;G-{4= z;jCUZGTwdo!bRP@eplOX`7|7n;fXxFP6Ua{Y+t<FA{S@ZrV)$N#&X%~;5Y564yH4x zQNHGIqmxBa0a&&P$KrSIbxaIj+#;3E=#J9H#i89=TZa?2t}8N?eVE&x5<Ru2b{I43 z7VZ1fCQzJx=SPsPmS{$65xJ(!>jqib^}g(+>~BgN%Nq=J1Y=C?AR=^4hhMi)gA?Sa z-Y95g<F;cl|GGw>x748I^K{X{);^BtJkbobqDV%Tv|?ICR<+UwD6P!RdT#c4mT2JI z?GtCUva;@c;*3yG>zSqZK1^b2y!Cy;d2TLPJR^dbE_}dRw5NN~Ms%%P&vWhdROc{H zKQS*8XLox;4on`dbYCFqitd-%Tql|CL02a95L3v{kJpV3D2k)&3M(f-eygWHdx0Ro z<?J|%t@L~--N42H@>?)9e0JB{OQv$TZ0K~}y_bGe3vAfgm~rRQuumV;KpEJ_F6r9m zWZBO*bjF6nwr2S8v+$7LjDhfgj~*u2m#w>3t;IHqxNbc9aIi2Ve#)wN5N;^NCf)j( z7tx+e#S|OA4kS_L=Da8(s;OV87Cldcx2r4549~D{kPw@X#T|2>sWSLiersmLtft_| z)U;0jv%QZ@o#VPgi#kXBGKJic8-XlwUCpGaUGVW0-`bWsX6!Yy_4O?5s~W5)ThkrA z*wRHS@t>PJJ1MaY3+eGVWUKwQ2kRv*l(D<|DH@{w?t;SfR9wFa9@xDbwK;939S>@n zZN&=O+V#3|gUGEK^$n~#=49q)O&x8tG-m#htxtCah&k;v$LqCz%QLoEoX`D_;?|S^ z-SbI_#B`#s<53h`^dh$=P31R5n!Y{s?h$(r#=~>MMRAsEcX)H4+x6#6C%oC+FqOA# z5G3=K#C9pL0uZ{bi*s2ixfzA7=q*+GSZHTv&HXmcbxE%<*8Cio$5FP^o8EKO;S=XH zpAkP7JuKj=Hwm@bT})o_?1iDobvJ}>Jl2H)wi&kTX9|vAx=4<iPrAo+PdYs_p<by5 zYc<h$bRRo}p~S}T^x1ZD(^%Yipr{Noo8X?`30vLLBrf$VGE^_yIT-+MZ<N$$odp!~ z`s!uQ<_xGR;YLX9V^A>fSoC0`g%T_7zM^VPX>%jy5=F+~N5(Mz+mu~X!#7}je#3)z z>K;!&_9NXp+q<ki6e+Mb7x-dUm6R{jUd#sPGZvTOI@N2%M`n_AgZY{cONIr9M2(A* z``y^wkV{S}DGIuzWi0RxrC)|&QCHBd?=KWMJ7s|A$t4{x{?oN?{(dj7bBHO-oLR9i ziM3dmRr4&h{i}~%<n}$k8S`0ss`kDT|G$1rKX*aT9yEWZ6Bln;69>ty{4L!|o1u~$ zo(F~21MJv56F1Z+vAr?rl=WiBz>4ll(lj(a5WxGx^Xl4y%ChVjx!}!k6frXNj=bvh zEzDrVqkrVL>W`Q2oIF{l`nUX62ByV6bEPm+gdW^8$RMh8%^wE0KF`OmqsmivXsN<H zw9dt#&6TB7qlGvd>6Zpdkl@uEB!YPRj7kP=<m5Dt$HPGPXIZvR^)6bT+5xiz%oLBD ziibkI7IkG`Jc~OfDM{+pyh%bFsA+upUsJL?d>3&+qN|l|P?n7%@vbskV~G2A?cv5F z^&ghc|NAloVp;DVywEAXOo=asqqn*!?Q-N%8`HYSH<!z6X%OtTR^c5JXMdUf{uZAR z(5U$=q_*8$@TUB7jr4tj_SxcS#ZM-RuM<nj*ThAg)^|E}x71L-zpJX|1>&DLkdYM; zWVSTZMvL2h{59a&<J|%2gA4Ole}6H8;so;RDIa_x!THj;nMr;P`0cpED<f#YHQ#di zdg_mNAtD$FzmBnTM4bHn4?btko!Nw?PKC!@^ZES`2yO$I<*P!p@aY@fpF@6iLSUjY zAxdeGB6;%1TOzp$QGrod*Z=2RWdDx@*GJLbV^zoj1`^M^!6Nxrd#nHWL?1a~n4KIY z44lB<e|+RF5!?Y^-!wwxD%Nz|(pfEqF+C5X&NYwR)pcupQUrtJVJf{`$Q#SKf~kix z@1_43<a`{|#Uv&POD46)<}zt%y=RdTdZffR%B}aRI^pH?b$Ie`G>*P!EO2zm$S&BY z6`oA4vdNqIX4!pRq;pMUZ>alId(>Yfe+Z3TIR=-iDv31x8ems{<L3h&z4$EKD|j!0 zcuy~{WxmNUyPuzi?LN*Hsob*I?=l?hcB5WF;r4g$5EUi-qKM+}D=Z_7k$*(Xf&RE4 z+I?(GQa!7^WZQvB24rG(CPP~Sk+_dV8gRg<ur&o^B<Y^p-PD1sUc<F#H{>TGDU=`w zsW{9*22S9t`m#Mun}d*tl$0~!6Cp0<t$zp^EYT5m`94{fd+@|zzU$6yV<x5tAq`Y9 z%=zeQn+{T8XKE}9%A&SF-#{vwX%FvgUc5;WVbMDCk?|8MTXd<etaY`c<J}yq43YJ7 zZK~Z42>N494_iN%xbHU4ZT-F^pS3_Z=BTtUti6&&pRGbbcPMZokJO4s8`qt{;<6}) z_t#TvV!f@0U&qfOK_ar^+c%f>ND3{9ooOf9D^yCx%Gj5iT&OhnmL}=nKUk-qa3JAX z@U`NbDO?is_y&`&XtP=`1Td!CK6yl2UjF7ZQP=k}8W2F9zNZ>E+x%FR^BTJf*t`Zg z`NwkV7}n@$)sFUAmx0Kir|<ju$%H5w8eJx%Gs(1ESX6@mEN4($AZ;^FD;!zRdA zyEGN_j-aun(lN!^M4xrwf=W?%_V~k_(9|qja6&@zU5m`fhu$GZMk?>)P)WU42xb^m zUwNV30uy|iNL4~A8vb~h`eH)RupUU&&Z@|N0_oxn8f!k7&`*VRu+M$hQ;=mXdowFE z38FSZ-Rw3aKR;H^TS^Cx>zgRsk-;PNuN#le>@}8erCpbolP6pzjdP5UyF08Tr6I+n zxNh*bToWKOKG^A}HpN_a7Bi>lD|=2C?Yp%cDcD$_KFB~ndQ}bjS@uF3i4^)>n`5aS zn}KIZdMIr4&|P_Fjn`&%%jQ&a=-jMhqJ>M@m%LXd=L+mip5t=%7UbtRuw1kPnfhfV zT^eyQp~*{wE*P9A|Dxb$aQ(}roWg>j>AWtzpRFAopDIn)|Abw<z#*6pmt)ybcN=+V z{MHfIrGB07)_2pP`dO|0Wv&>N9w916wg-wG{&U@CHVWY@qLCovOaO)EvXpCTk=y3! zJEQ)=TcTci7H=kKm}Z^_cpIGI8qTqgB80O`2RN@uw*@XvB3G}_DA4ekB!tUixs&#~ z7_&GU=hBuP*h<g2`amIV@f=jh??<V~5wrr|_cfQ-yIrOyGf%fskNlA0=T;nUeV2yV z(|%to{z7;D$EThP+1g=YA4l+cT=Alk5Yq0f+S28zMDt)$L@Ab*yES&>vTV;6abBtW zDAF}k;fi(VU~42PYKonIDENsJi^Q5f#Bb9zw*MMi4->X&7vEcy2|JIG=lpr)P>|2X zd0T~(#_}*ni$~F!?xFD_h-=Q_7R!}8ltPXLu|Zq`f)q!3ez%AtLm<2OqA}|n<x%zr zih1lU*rsksc~GU^cQ9xj6iCa-#Qml1p+bl(7-gJe<n_zfOc>T7ieH~ixTeaBnciVK z7Zx#l#st(I=E5iB*7t^eLqrxF`RPSD2bKl(O6{`Sq6>4=@0UI#TVR~A(@ZulE-a8& ztSnX!`S>X|jcuy&b~ix=Yi5>j6RW7$^@cL>d6}up-!fP#U2zdcvh5Kz<$4ih5BbB{ zVzlxri&S{CvLF-aoX9f)xtxcAdJ+YD>$iEG9f8|RDx|BNftpmi@9#&zvW6-*&&tGE z78^=EzlgA!oxWWgMNXgUbZ+uWJbv{XLwI5BLH{h>jSLkx$vj4LbBQ<;lN7m-eh3)a zyB6?!%)%r|^(~-+wYxeYwS_LulM^4v*GxrOl2MYU%#YvGEwziAd}^wYCd%{sS>W{i z#{p6l8b-M|mEvsr5-R7B+94mWkR}5Jd8?a9DBxWWpo3@->XV84`K#L7ttPE~v;BGX z&KO8rPoD<CD+9f35WFhUarf9YLk`VFuygAz38`j6D#1JHiYJS(z}d0&3#)VSe|LpE z6lG&hRHXm-e%KpU6r&7%=_D%yqPM*(3uimD9YnLX+Q$Prh>()ZP@t{4K6jXx;Q<;c z@z^{c?-}pq5Zpi&J-#`6%CoRSLcKXEeQ$J$<El`DhD%!h-2hoOMj3ui-KWP9kQ#aA zxs{&u_rDzu8Tc(d3X^yKYqGVc1r?m>9)!jtLsB``UPTbo@b#0rY;L9}luO#ibKnPT zD1W~@OE!eNBaLMXoOPwR`~1c<;CyL4B=mXg!De7I6%TzF6+OQrdouaDX<0ci`DPHA z3F+viv-$g4gN%?@@F$QwKJzt@?Dkq6jS^cH#NF6H(@K}sNb2m;epg*kJ&dm?>oeVb zo^ZAN*?dw<1#m+N=VdVVAyZxLbtXQw(S(GMr1h5qMx}Q+Y?{V0tt<phw`?=_%eAis zN6v~wHV#s^b@kYm=~X^`4ziL?Y5CvV4SRJ~F8r|$qW?I+T-~C*c&6!su^;9e#P3dK z*(-;<>oJ|93ha@|xd{-=&2W8DmGQOWPojxg>Zkl;#pcR`Ib<N)CcOf>R`Y#3wKofC zEGu81K-3`{$3fS&Civt=++eZk;E|fWe3c>0=2?#T58ln!&D@mpaQLjNb+2{Rm!6n> z=BrcwbSg9o$>1E%+1(HY+8m%yy+0@Fl9qu{+?8v9M>J7LO_O$c@AvCoUc3)63~zhN z=G|9kNtC4wU*vcUvfWm_@cFDxiaC9~a#pjp?4TKUW?@0o(n?c24pi}K5nc0pui@1u z?b8Ca+Vxz#koHpXJu0$B)zO&06>b}Q3c7SSG5b^kT8W1f(%IgZm0clLb59C1eTOxs zmimR~oxw%~TgD!29p^drk}>rb39~R>%1YcBl)Q3E=2pqhl5B_+8eL<^xA{hsrOho( zji+f%)OOyYh2EBbe}>EdblQ7C^q>ydrDV`dlP~-3wVI*h`m~VpD|WVesy#x&$PQmD zmt1z|NL70NuMNsw0X#lSNZ?>hVLWnp!A85Jq|WJGWw~4V#RF<^V{7V#X22DZI)@9^ za|i=yNhhSUZD0;_VmZI_sh<E%t^H?&{$G>Jy6XCsAR4k~!yo3x-B-+S*gDgxY`fSt znONu4^rBdcH}4Kl-mP~Vm@EyH>2QCBjdI45f7gIOl<oHUiXzH-itC10ol%VvXo*zi zFnNyJT$e}9gNxlrk4ZI5NIuxDOGZ-1bn1?(@Uq|bt7fKBVq2#|-uF=}8ctDivb$Ed zZsQ`%#XlDtzw~v07kk+d3Auc^*H+}kgFG26!Ne+!B{Xj~USP-u(=Z#;>^6UAH@NGX z8%#vZb!gFs6e-Tl5?!%c%CdnE7P|^KXT1Xlm|Bt|eOaAMwMKUC12=W6-y`6v<kx2* z9T+I)7gTIKQU+ZP3?dWd*`;WGC+me;dsT;w2?w<%_D8CDELCAN)QO7O`j(l({}dj? z>VhDGfe+3Z<mcv2$cZ`jbl8aAp>lo2Zy?3JvBAVrz;0nrP)JA3{7lnC3gZoURBa=| z<wDv?f02>j+BrQty^!Zo>-2Vtjo<io8oAk?piJVxItfud@3%YY+okjw4WlZP-=0pz zF%qD?wpCfTcvZl>-A|n)BfZEeGfPWzUSM;Mf~z$kTg#aJ(4&LgX#V$2`NxSDJ0;xp zIYF6TYq`X&`R$78$iGPX(4R=UTz$^X+QQ0#-0H(`*4;eimK$fAuuW=6ka(Q=8)6n@ zmXUoG)Lw@!@6X+BhZ=^{A82vqf_!BFt?j^QI^CL;ZlZ<uz{jX*^HAi%cQ-AFc`yoO z*ctnDZU*@^`@D@Y3Vq&9^O^ZvozRW96w?~U1+xSFPF;hVJJTg>9AjrRC|hoOUb`!~ zQB6euSW`08KQ`|D5SRXdMSiU=H-|JV`^r!kvmCbrlvpN2NFr3tux(@2b@6*5k@JIZ z&!6jnDdL<2E%=S<I+eE0Ob8w)l2goJLqOaOPWQ~L)?tsdl9xNmxH$i+U6{o0cTPu$ z@K93q*Wp5(SwTUN-CD7{+OC`LYqy=s;mCWhl?F9J=)>r?YQknRF4usuTFaA1&$+4w z;>Peq=Vza)22M`8YK=*~^s_KOFso`FyyR+PQqs*4NxG~9(GL59smmwU%~D;c5B^8I zY9kWz^qqQ;cp9KDmUE6_`4Dl1G%F^8qtHrSN87e+k(#D6u7e4{!$%<><1VBg79IN5 z?)YyKV{aY{JbYwcyr@yo`18mlBMT+YNzohHz_H9m17tj_bs{ZMnv~Jz7IGdbh0U&_ zeQw-g#p>_lSRtMfbzO+|89SK4qBF`<`A2q+DkEAaoHO1b{`&21RF%H?CpU!?NEW7E zK2}#RC-<RROlSzit9pN)PLBRtylO#AH`7+M__0$~_hzO-gd9tT<wkI&w-TV3L4y8E zqWCX*gWeB7a7yaFkda7=QS`uOko4#7qRA(H8UvruM&zn0GfUpPFBN(^w==07g$mF` zDq(uorrs6idBkCA8pG6AsM_fZ%hL%Sd3cWcii)*m3@(R;HLKOzdM_jBqdE%eLy`)q z=COg{-Nh#;NktUV#oSSZ<xV-4I+mfBpX^SIg>~(8D^nM2OuzP-x<E~7kZ!Nh(T+O! zmf$n+M<m&9fQ>3_^;~S?^xUo7Ai}OL9In{CmpYnfNzokI#B42QFVZVXNfDFOxg`M7 zkEo1FedCQls@o@;M=nCa5m2-H(o$&!8QQ8%9JAC{&KG$)+kd%5N(y7Z5*kv-iw7z2 zMl*L?d_m#Vn6Vb3S=oyT2^Nd9N=C@KNYz6SaQ~r#*N<%Id_Fz}nW&bQ)?T(g#%AcF znD;=Tb@+s4o{3Bd-N6cj@{SGyaX}~HDzULi*^0c@|8M~qk0S{pgGH~px(m$hUR8q9 z@Uo56xhKa}AJ+)$?=N}SV>_Y?6UrHSC5zJlY*)A*t2Q)<nw{)+vAZ|b;}>@d0x?!g zvy#8+e#bqkl6?Wpf|5u7XMInv{}<GS6>;t7V9C$Y^55TusJj1}5Sf$D{|VAmF})^0 zV-1IY{JQGtqay@pYMAoBFdumNe-I+8{3HK`-!K5;#EMD_58MN_+~0m4ULn8{kMFB~ z4fyT1@XrXw{{fKxf0trk>MQ!kS0Rel0h4&&_d@i~&nseVJ9<SzYFqq|Uq_yY8v>?8 z*jMy-#{(M!tkQpwjX=JtKi={W;sjVk?uWzQ&m_X<%zqYncJq(e4KWh(lmyVL;muFG zi`_1ZrNaLgJ|g=kN;UpJ>R<o4Jq17iYY%=9E{{xA<plD7MU(%&N;{d{Q%HoXEpj}8 zXs2t6|DR*_?*i=V6QG*g$bk{=HTw6r@Gl=Z5(0+B@&Artef+Pb))Q*NsDyH!UdjLZ z6oQHv!5jAdpEK|p<kARdfc(GrK!AY9eR+d=0-CPB|8UA|J|RIYSp(uGQMt3{|Agd^ z`;FifRDqo?o^U>e`~wn2*v$aI`B&ZvBuM)i{ul5j{FCA6g$KY|$d2Q$(-<x?t#scx z^+Mp<zhCT%hkg9ZVb1W(5utf!vZqNhA^oMu&eq|J;}^>@Ni}s4DoBOg9&tn!6^i|2 z_+B#-ZY-Cd|CeHj<L9LLFXs_Z6^pRq1A$dkc9v*w^^q4Q6ODI=942IClyFs_0aIZ6 z$si<d9};?*g7T`&>>~XmHzVagu)oBA930_PRv(+o?mVT&5!x})u1@C}f*3imSyjU3 zv{BX<l0>kV{q*r?R$tlOymDqjw!Lr1|F0m%uUtd!zVP`fPy}k(!`b?Z#y$f*@AfbU zlR(P>o`MZP5qF4#PixAY2|w!|GHzem+22JdyV0UEp;7<Idnp$izm(mA{Dj9g7~xlm zD_m?hB*3RX0wm*Fb+rl@qR=khevfh2sui!9ZfX$;eHm~hvjN_Hj#mSI+Y2MYmJ4a= z-H74XB151fMJ4|(?5+<k?o(K|P7h^r57De!#4aD)yg0gZP`Ah%?ww~`y7@^EsaNY? zzgv6CR$Wc$3#0ke>kfCTUG1@9ekM*eKq_nPpDon5>C>@hJ%YmdtxIFPEG)`UXYdtG zdZsCA=??&lyUxJD&IZ5Z=W$xP3;AW-FmE>rG8M)00)SsdU5`lfdQBpp$PCrER1Slp zt(eQ0Q+P@Bntg7**NO)~FclT}`L|H6&Y2&BU{{o*MuT&-lH}i0qVtrnN00%N&F|@h z^Qf@HZiFPgNih*Ec2KlCwN3}6T~ub$aU-`|M;ZY#z?$A}eZxBq01XF-0$1BaFcvtu zD4KZ(45dKXmM>gUr7N~)<r5dwjvcY9Od&~5Yg2l+j#Rx^?|f#9yy;&&9N0+4wg39{ zyH=L$QY|8D+J4WHt)qb!9#(uYg){(w*p)3BW?U&Y8Mg9V^tU9N78jhHcsg@Xpgx_- zRcYfU&d(&1Kpc?c5sv)#F{`@o{~xq7tqvozvpX=1{`r+#rd?6rOIK3C^ikcqp33`h zi}d4eg*Ly)5KRUtkm#!N6~sp57_6=;g$6Fi-(G3Z+_0u~x1WN#=ar{m7;EQvp%5E^ zwh5cNX5~4XRh0o9y)9$)Dic3`M6pfNqET&7v?Ze;OP}!Djt&bm$Sk#KD|^d{n07AR z=)6z$Ssy}3{fdo~V=gHv$?`2rqG{91+(S9;QNON<hDqTtt`(56YBzn-t*w|``jPb( zLnipY8{>oLB$yNMfPclvmn@W$oSN9Oq-eZ(P~=^dY1r7H3lub|2X{ii=D+JPxOx>r z=3C)0!lmO-E1vi<ZRY3i%6fW(=sYSBqYge_D>5Q6^3~~2X{g6T0<7JBelN|mEOMdN zHSQ?b)!CNZ!RthIh3agPA}|x6x)pYrlmj!66`pMaDg!E(5r-C5&ptp`=D9FNB4WWV z3sgTj)X1g*=?dwX$bHF30M`h3Hg7&ABkhZpLIl>HXy??auHg<#D_i1gL_(iXW)|T? zCLNjc=O>t1pw1^_YB9%A_qESTHt;QP_|*7QO0*?}@`hS0+g>bFl290Uv93avl$xHH zDorNOfwI`77kLP{z;`<ahbngFTX!E<OQ^`e!G3)B`EaSrChrE@jmJP=0X_;UC5RI) zd)-{u+$0q6vZTH~O8eqLl!Z+j;08WDi~#D5CUm=vzyl%7CQ14FjF7VS6#vtx%cNQF zM=dnpuG$CUheF(UPJSe(H!bUdTz>fZk^e=bUH5c(yaCvRo2LSJCE+0PV$w1bZj89a z1tarPEA>H}^UYZj^@mSiDvcSb;<|5w1T;ArUH1A*SEKEM>ih27BOjhEE$!<TIN{Bn zm_2~wY+~ZJIN%>d3^j<=GpgEgHx*J>*x}Z6l?__Sw9iBfbrlwFi#h|SXkwDg#=)sj zU~LWM(_E3%y_-01_(Gt)M93=v`2^6o49F~{Sy7!`1N@7Yb`^dB{?}Oq>otZwQN3FV zac&N1uYLY_6{UyyjGBdOd>^JlqMA%P*7GkX*VVB>32kV9-(qgDJF5TW#yWm?sLn&T zsdmTny+^#u^P)i;z|VJd`9G}fRiTV)1xnp_*AL_R%?5iQj@wz^=y|XzqMe$|tX-@3 z#6nSjpgkq-;D{jTL^stdS$JeBsP?3%Bs(>(y@I3`F1CGaj8JS1iUU~QIXx+RH1@DV zLdCVn#5kD^_H)B}0Ypw!<UkzC+#a8@T|B>pVfiu2JsHR7M8M^rv`+N`mZR)R_rK2# z;x91O4s05JxsXw<SM{?6PNd=ng(o*%vbC~FbPHrdrbuS#cUQOqoh&Dtx&d_OswdUh zS|;(bI772PGKQz}et)<Ycg$jLrfpwc-{5$%f2_j(bd7q!{??7kI)%5v9k{`DF%D1@ z9?CGa2c{PvfbXWmxj~1C;NiN~rZn!_GeD6Q@TIoHgAHCegj~qMOt$uI@2%iPVa3>P z{NY|m&Z6>?cB&<La~Pqp(<Odza06Q*bF*z{s?@flvC(m?ygS=wzX^Tt`OtO5x8dP> z{<P<_!>gjJ{d`8$4t@mTZn&fE;y9-a;GqTL58X$;dTr0D83~GWsEQ9RU-XWUb4$PB z4$)IMp3ZfPV(jeuKxv@K(3PwR=?a>rtk4DtJW@gt>If_d=cVW_txDJDjOpo#%JB!= zwt<2n0QnwzEmyw@UVZrh<nGrC#KjgI2A5keKsHBJZrkPo)irt?WMIhV*e*h9G?)_8 zz&z88Ri9qOMzFDp4CX4TI=uC&Fn^0{usyWLTStHTbVG)~kI)lTN%AgPBd>|92o+!G zPZhU9cGzded+j8O)lq8VE92d(R)@W9_A-Wr+-m=~%F$90lK-sbh-is%0M3aa{&18x z!)a=ELaZkRjET7Cw$rEV^tC=)6n^qmcQ)Nvnex~#&K<-P33pU7+3Y>-J$G+){hbXX zEzFZ38@-AjpcCb4Tu`xDXUe|owb2|?@I)(!(Yz<!P&CIV;$Ws(n}eflD5PThhXX(> z24xYUu}SE`6|ad@O>GKcT~1L9vNF!g0gdB!1XD#Qv>dM@RBQn9-{_;xE@+$ryCAxp zsJ}(TM?k!PB}yL~;R2!b3JKgoilMs}YGT{wKmqtDkcnDsWKxDCWsBiH|9ToH#{hIg zIefO}0>8$zeJSLS&-S;_Xw6}l-i4isDX~Qdb{W>}tR9^B&b=y!{qIe4!09!p+F+1{ zU2>`P99$i~*TQpCNGpO&fj>MR=hAv<R#elP=)g4cMNY^D9-cBi?Af&q5|?*s#LjZ= z^MM!-FJGpX!CiQuOFSoxfu6Oji4zw{(l4)&N7J#cYDNGvjtl4RYhrAwwWykkO(syu z#)O@>KV^g#^H(0`kWe3zRx9ec%cE(<Otu?=nb}r{)-|FzOwiv`a5|RQW5?=Xo7?hR z*qi8qEksa!wBEw`xvb^ZNQD)JsuoOHNn2$rO${Aw9rP+pN$ye-1ztzHQeY~eIV5^{ zwX4#r7Xl;+wA`g<=s0m{@tq%@S|Xm&id%}SDihd;`6tQ2F576kMd6llKX;%^(g|gd z;nj+!Ih|&AzZYk3J)A4kdSL>vE0V<H=cR+tq#u!H)<v5Z#*EC7n;R8gDdcZ$Fb5Nh z1MH*X^=qCJDewH18;t}bCY!U@$Pcgz3Y{c$W$KnwEi2R>nre~gr9r&JeLw9C?fsc7 zPpJ_u2<zaF9~hyCG((Law0U_*B`mbDkQ$FquOc`LdapgPA;&($c%PW@ZH03k9Z+Ea znfUz<UCb<)k9Fz>ENGus4k1%bTs=*pbkre#HKQo)0RYq(?e9t<j`#^S2+><K6ck_K zk+FAbOM*QxM1wE*SVeSjMN`h6Tc|ECbQ9Qe)1&ljS~<@`;JWYYi!*7mOcdg2vV zJZKZfdt2Vj+u?cxFjBLz5pzMRSoR|fGALV&zn4f$WSgfXRNwFiNOptx4-2#MSF^CD zEv>Nb9+o{8x5<N3Xbs9`<f_emQ63&iZ|{LXv9;pFI&W1TpeeTu+6B^;nf(3VVzFV^ zPK(2qV#wK!W0+{C-i7cvwc%c?K9}4UCK-agIT#I!IjTmMKVapR@j*dOeiO+)GsuzH zG$lm7^knvFv%}DL!EjtNFj+Zv9oIFysT&tct@&b%n`@+{XDnTY3|}5Hw&;|5FOWrt zhR*QBRhFBVFX|)xaLe)IXPjI%w$;>iZsy%NTw6i%4zLj}{`&$OS4V_xdE1hy!sPI6 z_1g-sf(ornF@2732y0iV>lCz(epHS^hW_qRz5<N`%6(5xAkdluEw1}J7jd(~!)G~; zRMq;-l^r{GLQf*Vt+>zKU`fIWPcpq3CKp(x0-pL;;um&novEj$vr9ImZAEv%SlY&k zBtqU2M_#N+Sz@?(o(xIL!y@<?HhLG#Xm$q^1SyX#)iEhh7$g*m5A0ekGz}^s+D;^T zVxshdsrQLk%hwB*NZF;ez1dIv)ZbVjOyiIa&L~Ni2SVQiD3F=<b(h&{Jb1;_%MXlR z+fO2i%Dhe`UMok9Sy-s%AZmG6m<KgYsjgb+KY)@!UGL(AuXLxm#e`toX2aOUS-WX% z`W>G(&Kw9MgcakupZ~hm)ZE-kBuDP9RaILvTakhOsv?+aY1sq!Yqo#X%?0eR`&h5c zel;z>xt44$V|uFh9h}!ri`c@$#P8J`X#Ai7s7EE0Dczq?1w2~SOAFQA7?TwuWEnHw zQhDg9C5lxx2H4izTPEF^PCV;nq}fo>(}dhm(uuDF8yNnq9t!V$X`@Og{rLq19f+{U ziOHK<%;wKIzJ|t!&dkj7Mnm!u9Nhz^SSGjcw-|7*o0vV9--OjVpOS4TV~s9W!CCC< z0aW~MKQENjX(BeNR%nSE)#uxzmu&2}UAtPrW9qbQRjk(7*wg-ECbyoaMQppGU<WT= z{=|wu3<)Op=E1-f{fCVPSm5A$yTlxFw?X%Z*z+6pJB<##3tBw3g%(=<j+wc#5YEd& zkno1`gcwd63Pnt(p(0TM0l{XRU`E3vxuAc%CAj8V&lqsA=)nUo2A$6SA?RbEC8Wmk zSaQnIKB!!FW(2%ZneXBp+(qhv%L0Oj<A_z%Y=1u)1!ekuw_=pV3J!G}cyt%57rrv3 zLyEg}Z&b_SdR}%{hefwZp1F;4$}p&*tPDOY(b<83rnXSojr0CXzgY)<Jxlh=qQm!k zqAE$XK?=sqwU!FbDS+%gWZI~}$9K%!TI^}PpqN~G(Ma_pJe=-cOA;-T-+vfjW){2H zE*qW2mU|XjHB7l>&0s1}#Wk0lLq!tA@@hBR!mA+_mqKdQcXaOo^#c;%47RD}+`&`) z`h^-S8B!T%I5~ductrsD!fR*M1WJ`XRqvJiWX@=bG3fJiY5#HvhN*Dfgs=w0q-^I} z;eesQU$L2zPxt$+J<aROcUMbLYl%)6N`1?*t2jAqWwyi}H+M#_XAH`<?<^PXOF6=b zQ*Ysu>P3G`a<>Tiy9M`t!v5U`83iRh6pQ0Tcz$J)RpSC_Vq(~39xbxEy#R-$vl7Fj zca~5ll|#9b1itQ+gV7hqvG)75B@$C+VN9i9;D+t8E*=0;r5hiIY`et$US#2*(STnD zPIU*1*Q#awUz(E002;p1gY89aCbt7udRjW0<1uG>GQ&n1$<oR)%%Xar;lbog-yV)l zyI^L4AtcGy6uZ9czx&P!uz9IhEx4%)CzQrv@d`Rb<Z7jN(HJwff&sAU=|}0Qv?GCX z6qFL@zz5^3h8Hnp(<(zx&yE%`?e7BHbEUyTrag{_X_od%=e{NSJtIeS++5xvkL^Mi zu$zrBeIH{&l9q<?5{VWc;jDSvc(kSFMlcS!Y)nX9uLf^GD0H(01Zfqz?PQfpy??ZN z{02H!7^~rBKV>5qGY5?2o#A8n2dgSS-@bi!8^!3ZuFj51Yv+$2OoPV)XjZBEUN*iL zH*c$3pscMsj0SKa<HdE2N2;dqbgiSgvhfZ)1L`^`=%)!00R|xA$v^z?{l(DG*r)kw z;Yq-vZ)@SV{=iu7xcs%^;M+ifp+5^v(O+D3xl2!%<h>hP0@hTmS3f<i(1&IK$L)Da zFU)|tNB7e1<ogff=J9*G*0x$&@pbp4G+sCyY+5ePw;v*BTUc%L)&6Sa_vFW;X|3xA zy9QEiMGi7o&iAQ%s2#37Q)IJ?NrGMmkE1@rbs|c7=}WdA^{b+gwgBedK)<vvS0;Ao zapU%o%WDYHS6G(Rf#UM(nzS|vo`iU2Duyou<+e^K6gJhK*?4|zdjM+lusb#$0Wi;n zHQll`1rxlJm8sd*X*IY61<uSPcf_B6y9nHCuJbrkhP$-Ho*T#bsYk^zN&02E_iaB> z5n<#fMPPyKEj32f12JyuC#~nN5S?~cXBBZRe0X@!cus0y2IslbA%)<@S{^hu)!)*i zXU%A}43IvQ_T7x5BVZE_Na8f?9DWz#3Shl0h>Gr%O4IWf0&)A^jb}N8xQWqxWqt7G zF`xFW#U^*T6L%~T%bQ^llxP<k@#N@mJ|j0&<?B$l-*T(v`+)2ND%#*sIPA%yBiN&* znOTs5e3z9K7R6}!lZ&Sfq@_}iem2JeJD*TdHFmpa>4E`d^4$a^J9&F;yC2js+u*im zz&tRWzeZ?cn4O;kYq?!wynRX3wTa4eC46pULff`;Aw%jgQk?tt(=*>9tBJv^TJRT0 z-3BfIX9Vj*i2?$RLoYrvo0q`oQ^T2^xel^VnlDZd_iUnfNhs0f16C)`K97<-4i)01 z2U}d%ZmZxUk6LR7(R8HGYQf%);S$>IjXa%|z9?cRVYv$;UJV+2n0I^IDNRzJ+t{JK zia)BKtHORdjSyhIWFm<Mfhq3|GAY-5V3z@$V@5d#nK|$mnlUuWWKv6NNr$`bmQrC4 zWQ3H&gqlHky1sE2Nt<ykQhahLKfj`_y}x%J$c4AE9UyP?+TU@;x;vc60i;R}i>n`w zIf%?Sfb=@B*!ruR`Vh_AO0{f&Zo<C~!ncT)IHgWhgo_xIrx08I96;*rS#_Aie+?er zZe~(s`k65mtcD*fn(|?~<58IXZ8f$*W|L?oYDx);bY5HEnd9H5bWAAS54GJ=Tg`vN zX=`=sfJ}AE|7Qy8kI}EkyPyOb77-2clvZiU#%`AIhM)eSg!Wqnjl!4)hx$P;J|OUs zKy815?t@5A?Ox_`YU><6!Q&`LG6NJ(1CfiZZ-7c6a^xHR{sdXM$MP%VnEKeM2LjeF zT?AA@Ok7Xkn#d64+Qx_D$vuH?i{XwxE?aDRkw>E!UYH9KLc!$k*^KeaIG}8e2|Z{B z0s{);U1cA~K&H+#=b#<ESKfE!FNA=wuyS6WXr;0ZX5bRY%T>N6{XI@w4u&c_0Pq$| zoIVskV&~gNx<+r|TEqAqj0q@2S3zM^w_CumED4si9a<Iz?H89PFEsZF&CwT4MSnM# z2yAj+8;^1bQeIVIEOXefA1d*9eMw%melOk1BIkI<+1kFzqAxj`zSYmaLK@6Ll`X|6 z6Z0^ENJcE{RymtwlsE>+AD2$^22k&uJjD?faMaV^g?ez!*c}>zcqg3RPR^CwU#lCe zn_$V`?2JJc0KnPzkn~WobaRGRd8^S%P0jyew4I#0echr%P#1XcgM2F^K^8$7MehmQ z+Ci395dj^o1R=Cq`7y~vgQ{?aLj%lRW!D1e%DCiDN#Zclsejt~M`mN2^AB4Z;Th6{ z`Q`tIvG<N@GVR*Fv7$I)#X@rw5a}YlTS0mU=^#==51|)3qf(UK5rNP_dJU*3NDVE7 z9ucVlB0>l?d^>Z$_cPA>ynlSIHEX$?aB<}-=ehT>e|sMcgYkIHwei(6P=Y+X$3J9T zP~6vnC-%>-KG!9E=los&{7;&9+UDkXVmG$%`$F~}6vZSwxsNJb99A%07Ji+OFsJw$ zx9CMAa|~>K7SN36k#9TIa1E>8s;i8GuT`==-Fm+wnd9f;;<G^4ExiI60$9+q=risp z15*OjW$GA)@QbRKrfNrIfx?5;{wZ2==3?fXKqG}$K09E7s_jiFMH}W2_p*5(lA)zB z^)rkdf5`ptoNt5)({&m~`NPnpfZ6wu`uIUvsZ!d-MLEp8$N_BU4C-yBTBkWyroHTa zd#ww0?tb9++I%iwURG+SI;qdjrCJeyDafA>V|;&wYF>5yD2j;b6&m-z03t}<gYDUB zNLs)+xV%a}C$~vBIz1l@(Yf_T+R?5S*YCH}ej~cKX$3I`MY4i2kV#_ZNxMJU{sP0P zfo}W56-+({Qfk$$UO*OS!x>(AS8fRx)XiL7c5o637ki6X+G&aKMh50buI0e^SUwOd zG?7x8Rdkv0*6DCz_7&emybagow&V%^mAvs&AhzGrz55~i<~ttnx-4y$X78&l-Mrj* z<6y{`3z$w(HfCOVXJsJ|>m3jj=^1t@g<3#_D}m`Jvg1bibhw6UMcH)_)wU}aSljQ~ zcU~rXdq6$j&II}F{d2}$N(8u0J=);&T}o2ZMNEL}RFjLL<Mu3OLFh{SNeSrzTE7$X zl-`oMEA+aC;>|FD@=Q`f;^WTh(3oO*bC0^}v%6I$^r~$wgTn}mKGc|n$I^RE^qh?2 z+`NH_cLY|v6-^qH`5K=T`Jm>k;J`!ebi<KFER~P}d}Bm0v&&Q<z!$@?PJ!{%hL7Oi zoi+)?Vqsp)(2v9Bv_33ahSn&%#*N#b(;zJ!)VFi3%g)X8L1qJa;@G(@MrcP;NDb`K zY4!a40Nb}6@cPFoYUrUOxP^iqx^LqmT(RV7yY$9+XeYMHF#K87P<V^5yP`VmHim2V z0-aTmFTSXq0Zl~PydslZ(kk=}Q`UWrBcz7>%NjbX_F4kh+rvC6Fb5q&_tvB?AYI@6 zu3AuO)k?Wv-3N!9dYuV@>yOzbaHr2n8E#oPEI2+mqR!-B|3m|T*;uz^sk=ZfI_H*8 zvL#-nr`xA*v{DHQ6W6wPb-~TX094Y6yDtGBv9_QV5SGzUi@SVjR5Z0`CG^E1yeIGx ztY6#K9BbwR<%H72no6C<@m5tPdB`w*Ibp58oQ(4-JO*wz*-qL}<$=3gZ7zwjb|IOG zY5q#a8ZK40>ZJ34Ku&`a7tsSBY=_X3euilbk_N?=&9AnOZRjOlL)MKsGE)~qKkvWu zETS@ZmC;!efG^8ti)WIg;}bsnZg2!FCDCnVbAN8Ny0G|wWcElk(l(KIe`1rBZjA&6 z&^p)p@xa;#9WKs-PyfpTAOeN2Tz%HbJj`vL(xY><Joig>ip!t5?j^BTf0nrK|4`Ne zfzJx9esdx{19ui)>2U!?%#+l!M^+?Rpp3Dy4u}X5x|Z)e^H1$W%yd>Bq{B8LL9n`E zv9qIVEQWXv#CmsI!n0=A8=zhnS=3*Ta2Y%CQzY=_;H1w%?&jOX5z4sD{$zjpgR3NL z{qdi{4Dk!Tmwoj=l3n;3p+y)BsiwZVPgYP|@9SoZIh~z%vwxnoQ%@>$gVNlvg=rpO zu8v<q185;St1HmZ(4~pqhyG?#G$;ECK}0REu8<dX5FcDiDYh9rU)eyr)(W`=nTwMi z!x%*EQ|8#sT;Q2ye@{M?XzdRJk}^uE5|HS>naBw4S1^Qk<S#c>mXGt(Jt}uM=5iAq z7;gE}KkG;j{~Kz{i1`>`LT~cq+4Py0E676UJ^K>kl5Fa|>c%#U!-6ZG`o}V9RP9H1 zq-XCf&a=b`WLRUoCS)@l-%{>bU%JG<HI<#koc<Kft*V&$D5tcUpsFRm1Q*Y@8O7(% zctm)5%DaMdJ_oS<2XO-+Pk)+};ca=najbqU8?$^5TAIk@W8*GQV<6gEHXB7w@h(aR zwUK6yCWf25euJikEcwQb)@<dKga8)`)jfp1GlrcD@r<ukB&4G-tLnnaQ9(5KXTIUn z$qDxQ%{Pm;(4RElEB<okPGGikrX(C^%L3Lt%m!I)&r3nm>JK&t`ogACxHaiV*X~<2 z;JI~$k(Y2MIxl;eDOIakxT^#dIF(j1HM-ATnk0Yde%;l7FTXs2?;XTT;WEc<SVaU4 zHqid>Dzg^Za(~`C_f2LF8tY>-xc^gxj1f6PCU%a5k#z$F!`xJ%<an=6^DH0ql!HL{ zF-NxA(cokJp6hAH*QBQPU=3&pB$>6HD|$YR!xy{CRcPBe2IPl@!?RTBWyGgAot-@g zedL^)TE0JORZ<@gFX#2}mXEK9Ni}csn~LRk_wMy>ao?o`L3$&O3A~*&F8>bNTmmT# z$Cy8E=$A3@@43F>8!Ik4CxIsU$zJw%g}$j=Og7#=D+Q!h$o^l8n(nyHu%`v0r74$J zWdEsdd`sIIO`;=lj{Iyq(gF}wp}**=T~%0M0P={6^2>;DQFB7&{al+A%>y#JIT`Ot zhIGz%)c=Px9GI7!zTUf#tY*Vy)B-Ax{m%D|*l%}S+U%Lo(ELYEdTa>`<Wk)xgY}RM ze_X-?XLXhfQx5yiLC5Riq3SW081YbQdc!zklw?tP7y9RDl%C;|PvfsX#U>G^uuf*t z3Yqe!ln2hr$!RWy-Dj@oMMjAlKg$WW|H^&Zt3fZJA)@2+elvr3l6M_6TGv|5-E8-N zV`a4o^>K+jZGh3|i4i-k=MX?O2&Rejk!BKRZsatj=TC3CREa8JdwHvS`QCaGe`Sr= zots&HBNk^ezQSn351sLP{Gkyq`?Cj%MFwK}#nz9`B;=n_(IH6feKp>3@eFCJ8D=ju zT}w0Q0wNsHR$7h`_Sy!p>C~|b!aao;|GtG^M$Z(P@<9(_<H?tu**Fm8T~P^Ta8OJ( zcV>#iJmEwf&@&yk^JEem@klfLiRt%d&`8bYhVk($auFRvKsS^Lv=4p2>ltgS_L5c4 z%o4o`w%bVx0{)-U+y!Z3Zr`@yy_kYRZIP3c0+da?R8^@~W%)f84w9Y-21g3xADd3r z;seN06MzL8C?DhipT}e??fx1Rv3|ar*_xJ3A@vP!ltByfCD2;wi)vJmNX1(#CgJQ= zPDF~4<hC@({xqQbo_A^OfKH$X$U2{H1(MP#m)OOUcw^Rl%}iFx{9*b+EQ2oxNaX`v zX&GD_ef%WNsqtvp7;dG}z%L9L^FL_&C}H~q2%)_{QhyJGGX7RVkFe22%YIDX#f}Fm zwQ8q2>^9bN&m`N4DrfL>rXM<V{Kmr<m(PW|_e%@-uz69c%)Rj9#Tdp$^1=GL=Hidy z2S*;ZTJj$`eBk!+HfD!tr6^=qO*TQn4~@>N<5ulsAYi5Bv-9)w(z5f?=9fzZ2^6<i z*xC2*g(FbMqQ^?^CwzMHB<AF)!l@dg*ud$^n#c+q+F#PGUPTUkg&nr{HLCZXvY;l1 zN9)h}_{Qkme^)NacWY-KqjRf*V{)IpBc7S{+*?gE<g@Wne=TL`7t3cUu6TMVKhe0~ z+A(A{HEC<OP+~qq*RGsjrmuIpDlhlTNn=SP{ldy6mpjj^AHT_8@j&@%#BT3wo8oGd zH8`$MvpWfcFP4K#iC(2hh|s~&y*y{oQ>R#uzug`F$pcTM{f7w#Pq`YKI%)2q@BK*} zHca#Liz365L0d~Bo(1o8lvK?0r*y2}iOFy&8@*WebD0sGlvSuRBQ$J@XW&ZmaZ@Zb zAz`aUb1v}!G^SB3Dpcw;lGk$HuJ+{K4D?uZ<e1&4Fu@bUW8x65R&Ordx+$t4r+<FA zWV82Fqi~nQ(yX2ps?au@Q#o?UII!kSr%K;MDMN*)Cok7!WB8b{D4&_q=&)dI$Tg3s zQ{+aA%}~Z<o}R>-vM|T^@Q*j-%60;aDQ$APTgSW!XkDDx{1U1#DUALXs<hNNGGB#o zwy3e$W4kn2Z4!0+?)wH*i$JrNwSQge*zzMzd|Az|+6(O|S6`P{_TBuD^5XaR+L2}a zL}JC*7C(-FUU5ns^Pb|JB$Eg`-|E31i~TI(@S2<(&XM+CaSJ=YAkJE--qu%0M0mXL z<?QEtuY@Nt<9qLnvtHrtxrH~i+J3(MGkvRk=d1gH^{u%!U*BeA&-j@2VIP&Ew1Y^p zJcTgx;;VAG!Dm*!QE~k_h)LeZZzakY8{{@T+B4~I0+((7lkCkpTHA(Ej*J06F8uK+ z-YfZ9cdVlx@7*gZA!bA=FtTDMY_cq8k%{~<7M&EI4-?&nt_|ZJ+q;4ONy{VD;<Q@) zNooFqqP|V8SF%gWw@m8HM=*rJ)Oi$pagGkmx>%+J?L^)&7M3ybO6ojRqgpioc6ynU zNXYI=HSbhc?ZGyzpPxD#H&6QlD9MBL<hpbM=Zc(4Xn6nhtpn1!X3(c|hU@knM~4A^ zv)BZy^LQuh+@-Plex}$Xs}wx8aodQEr?C4)o8z6Q)l~nMPobh;?mQ*-5E>syc}ru_ zKN#qykM49<+fK+%?kM=>Qn}S#7nOCleuE6ZvF*9Ou4jg*(`+tuMc_xvPb=%F`OL<* z7>JAIXBS(1d{i`0X!Y?%ZQvIj@+z6HF;h*o)bt_-k`Gv8jvU<F;v3UD+$pymi#UAV zmpVy_-Oi}>`)E430;L<l_Kx>Y>E&hJhdsLdTQuj3aB(d9M@dFypALC=Qpf;%7*5<O zG#bmdVlpr>u|t2pO<cmY>-P+1f&n<k{@EaNL)WyRl`f6IowcM;_mGiI`MSw{a-N+` zzgQUQ!cUa{s#ZX|U7rI0oslVSelkCfMe4(9^}WdkZ}QswvV!w3zwrk!qHBK6S%&<z z#U+~az=3sykrz7F#tvLI8Gi;$p^2f_N8a}3rZrH{#`M?l3N>s`n44iNi}-S)<KOE0 z)(i)3hEA2Wu_Ug3+NvYZA(ZkYY%hN{%Buzt$|O%hxi@&%w~V@SBrUQrEp36;P#z_K z>kF+3FA<br|B8P(G}NY{_P)SIdGia}xlM>?rCvKyLw_Kr4EFzhtf$z~IA4xJAHpE= zgHK8v@Kdj*eFK``f6lq9dSuCr`-s3+aD`1stZnDDRP4g%{i--+Wj`c#kE*0oEq3}n ztclGfP#Rfv`S?ORLe3)oNyOx`0jh7?R9cLD=EEsxxd3Qf4<1i*Eq6S+N}=RjHoy<V zJcP~ITED^@gy_L@&-Nb-4;VPjOP3g&aWF+=a!4*|l&`afkOVIZQ?&lMLbT!3)NG8I zKbQKBw{oN{H+LHWt4VunSmO9srK@17-_8W)%})b+t+y^FC7%6*K@Zc?rhHvUOTwRm zm3!WpgH2Z1N_<7dx?VAjmccHL+9Y$g9@@tU6F2gM1LxFLRZUtq3+e-B|BAK6>S*Y^ zo2oL5q}olMQGJcYx)|Etuiv}9?MYzb!<eUWVxofe{58%RjgJ_@<Xk1qb9?G@y0r>Z z6k6<CWIIf<zRbxcMG|+<2|KNCjTzpPoiCG4so+*$r2G?9J@hW8d#=gGBS6V{C~~S} zchHIPtZ!c*zSzQL+~qKRe^mvMySTw7mvNSQY}8tR^2MRU1~(r(#c#y#eETA?8j^Cs zZ~rOITyzbNgVP-@?{1y@E4Z8jhDU%-hm!nw@6upk!vPznVNkV87Fnf9TS5&*Pjmj# z#zti>9%v!Yk}UdVHk42W^*St+8Dfb-1NzfEbGw|Rj&v_ONI^z<h#LCB=DcoOubgVN z-L>H~RCT#26!Dm^Ry-BRE2QM)NU$XxW15BIE>$cR{$RL-shN2guCE8ny?NQ_NrO#X zEZeZF;|$D4c^inP`??Q-F@(OCCb`WjJhcEEj3NTr#^g5JA2qR);szw<SsJNN)|k%t zFGQI#6?&aceqW9WjR?KUE2UC2Z`wHgt0=3&hW0A%bkz+<T6`lTxeWhYmccf@qeP_X zm?4s~dNZxvx;=I~^eZoa3KXDSLKDs18zHKNh2ANVd5MYSKD@*{-o)E@Z>HVkP`R?= zlx%h;!D-AFp2wO<nHO7u%>t+Sjc&<^bqcUIie<bwd_-4m{q9f4Ymd^PpRy=*xU@;< zqMpaIL<LEAV}jqN6v^sNmF3t2lXr^GpWfSxhzaX74}O)+*P?f$xF$naAjOQm1$GND zbF8|0rCxE;0;%`?ujiMG8+ju6WOsfQVK(Dt%q#T*I#tx-^*YU0%ES^XW)|xb=TR>5 zdT-Mj8nhS3<YFoGtc)1{)u&YK1&ft?Cc+a|v2QJ5XN3!)ffJ1=&s|)Y!wE^a;@3D@ z1i-QKz?_!*P!3iRI%<MS9FkH8%W*_%3t_l`Tf&tRU+gQ`IJTDBlAOKi#F&pjtoV>3 zF8CBvC7kjIt)4-@C6PX*Sy<zMix1AAoe9>25+?$AvL#UTRJ<8zr%vJy#0l%k3jt?n zYdzj#>zz}ih9Pd2l;&$SiUg-4n2GXsbHGbqR6J!%IdL5<ieJ1iP*IBpU0#ncV0-vd z^^v0tdImS)wc63wGm&t7{UNCzdg?yk&d))2>GZhq2Ca7o(n5qtzECp0F~HV1&0GEj znD%+7MZddw6E}>@LWgTa@CMi=sq5U-%j~^x4YfL26T+|OiV@<trJGM4N3*hJt$%ex zk=JOH5jgX)>od_-k~C6X-yoG1r4;dS^Ju5vc*L7mnB@8X0s8i{=T`&-4X9pqUHt<o zF$36)8q~%~fHH`j%EbZYn%MAO#`AXApCn5-4aY<i{h@yT8A-&hjz|n43)ago&qH{w ziQdNS?Buy33}Hv(QVVQIXhRJ<i*vQy<`ENDOp(Lzx;p8!a8kt?+toGn+^#<avm3da zK1-8X&COSMMQ@+D`0?+_9VT_mBQlrEU0~eDcNi6Q5@y8)2g62^mtJTFHH^tr;*o~+ zBp*S&wN3Oj^81Ajdu1KnD9UbX4UF<|2&9Iy$?%ULr>pZ+<*5Wsbs};P-9uLhRd~3h zhVd|Bk?w<UK`r{u&b}Ga?(`8lI&{RD4?lS<^md~%;pJqCjzzfJK8GgB(`Q&kUGC*% zm8sIJ>&M$hTDxg6g{hxnWcMPk`Ra`(<m91k^~J<A*Vk#Bvya>BN_HvR(WdyHR|`!< zv4?h*dqZ3bO@ut*bui~crKoDu@bapQ>-FG9^4|^Dx|`fg<hzUVq}*#xaFS8Bu!o@~ z2*W9<3*5rII%y_V29chy?lcmXKT2IV6}8J&e_DOY+kv-{r$Ic1$m%JrkL!PzhmKu7 z#@=*09|zRuEh5Ts@(<~hv;E$auNq(cv*el{qWhGc>gPinBG7fAGvH41;sNe*Ns(KS zCcUz=na$8WYk1umUC`Fv!-TX$G=<^w;3bCpr4kWQQU0R9#ifU@Zf(;kJpLT=RhNj1 zK!WghL{*WYo8?2eQLCilU7Jyc(0_g(9o-BA#5M7{4Q*WuvVJ$Y`SQ7-_@q~ukT=Am z9BI1fVBOSonuXnV$bv9X6zuOj={q8RhQmXRiSE_qdsFi|lXg|a*3J<wWmpBay?#G% z+9kR}7s|qdze@Fz+`3hM@%wBvVT_X#ii{4szx?Cy8;Am6{J1`07`=0cYdA7kZy#ew zarO&$c)WSVW!1XUZ!aYr0i!ITKdRCX{B~f;3&-i6Mo3MyAO92W+V`=Ews{n1KXQQQ zv9~4omxzVtZ#)$pUDS2D<MQCLyhP;r?I7@A9e{3@fcd))HBREZbpLLbd2oX6sU~dd zFaPgu7Is<;c*E#farVECMR%67u9*9w>WJ<!*Y0BWp>ITofBpXt2SOMg{uItm*08|- z1837dA}G6`Zo*pJLi1mrrxUyjJ8y(G^|zG{K7f7<N6CfBZ5EpU*HP}mQFN75+HJ~u z4$}IL{`qtH6@1IQw*@*scIiTGzbrU)s;j@@tnl_Gc4FuQWjWUO694%y%x9oIe++HB zwgDXwL_y5sGiGRtf4kJsa6a`!z$4VRNLVvp)8PZ{=jL_vbzeo;JwR>!$}*0P0){ad z{UdpQW9i9BCgyWj=C<qUMK1D4>$p!$L}to|+<Jzq=-ZTq1bxGS$DDGsE%y`?E^4zr z;U4|jBR~-NqWvv~`ri!{30~;>t>?u}kajQR$UkY?a*BdqKy!1zLX<b3G=D#_0ZUzI zRlU59%C%;z4%q$ZfBO8%OUi!BPvkb6x{kq@%TNAsdlIGXJSKI1vV?xgK+Pwfb1ve- z!T?gnJ0;4!%Py^P$<a(o2wFP|-l;@Tm%caznj1TX25l#7VV3gkoq9Pm<z;fQNiR@t zC3hoURg7+t<ab~GQa$wB1M}g_OSr@xJlV);#aD-qu!yY!+N=?isrq^2JtO<QI%DFQ zt~gGpvd#Gm)%$g|c%Hp*-ilW0RqNbfDtH+Ys--vkb(<ldTfC7J@LdoV*t?PA3PFw? zTGnvBCjiEKm$=E(wf4#O@L<X_)a#V!tMd(g`ce6Uk~oxGZkt$OT<-?O^tXq;3lRCA z!Xu&K)6u$`PQ#8)!2!4_MXgy+{m#&?0}V*|f+t)?Wzozm0?NF(uJLb#$EK>Em3LLO zIR<$pr3RBYthapb;HqcVw>BJ%G|<}%UdlSEb~EuUGn__EIx{13@rToI+)xP*zgCG= zv@9qs8S-g{fWE<_4^=v3+DOUH<EDhF+pw9obzo5t^uRcfKuMN=9<vWMF!@G)x?k-% zor!ea>e@$+<~2xG9qQ%H<ZANts@*pH*akUmxWk`%b}4?T$h~UFfFLbt!;v(ng%gKk z#W6prN|P7tBNL9>(Jo|%<fDesA8$zM8QGNjI(m_ha)<oH_ddK+fl`e3FbGJ7Yj}D0 z|C|txHJAFEa&s1@(Ej~OrG=%OW^-`h^L0EKLwLMzUvyG*PRCOpkWupr(zW%~J5NbV zfF$6{qs+kg2V}oxP^rU>;b+K$Io-z(9N2$1a+97FTEwH%#)@ikTUEke49v|l!&EJG zpK;w2v!r5J_1e__inH!ce_qL$l9#7V`0ycT27(UwS3?(%cQBJm5Ar!k6QmB(%Y}zQ zEPdDVE$fpfj*cWPD8~0rTBF|Q+=gWqPN4gp(cJunbKMh>9tkpvA^Q*VUg8`aWM_2k zd>Nr@?pVs3l<1jPs`$iuH6gW2`X^;YS3~EqN90M|04}Ta`DJ}kzg_uHw;t2pQ&2|_ z8A47{0wXDOUqJ7Tmuqk%l)JO#rmuq1qFN@xbm4r_cH}jjXq8H-L1U83lnng4`-zFk zuHbum_BoIDng%~MmaglUxN5oahqqiHQ1WZk1n>d<MOlgBq^0Bar09NJpIuEAEmWN8 zWPQvJ&Ojgc?4j)jKfhVBfe4_kN{q)}GlIh^-YtO{N-1atXJIQVhM(SMueQYKH@8fT z4J9hQzY0s{K;GJ^s;RB(pAETec+L0>I_rvz@C_J(AZ=tMkX`VoWMT%F)cy9)PGxl+ zN2gFn6Jvdt0f!DR;p11)fvdCZ_hCXyd2!G=HoKG&QYQYwWa7y1lxN*Bh_V=tv2S3` zH3Y-#oRp;%HgoKrpdc8~W1whS0F;?$X8BFnr|{UnULC@Z_CL7u^m$Hci4i<%^Ydh? zx79tLyYC?f)p^_4xOVzXZbqGwxY53p{dE7V*WbQF-9sLgSw5<B-tjV=qOiG4O4s27 zTo4Pcl1By*oyn#Vz9ea*ob1X4EwEd~BMoP!=HHmOmOt&}%!Qs-P1mtp$d2T?HfFY# z`bS0avIH3~9oGxI-3sH#IuHRvt<A?P3>!z5KUO2t3LxSOTpVDjpal_C2wEJDsG|_G zj#2K7Lrc&P9KsWu$i%Q(MXitS7n_|4_HE&?q*Qs2ziUU9de+t&K*C@QBWpMfC1>b` zFzLH1t^T3@UbJj^YZcjClUD7KwS>8!#cBB05-ByvoZ$b>#pd$o^DV6WytqaTbw;~M zRM&|9<D)%(>#;1JxO!O*A91JMg!?-lD_*$Dd*E+1S(#MME7U@q+374K3XITFy||<* zO@Fmkre9kv{w{_(t9K6xf}le1r|PS&7v|V5Xbt#$=V&7TuyB3Ni3#404%*yo){dx9 z-oy&Y=B$4`M3!OQ+}@SVg5<mt2EiP=P>Ur>6)%n#6I}eUM7y2s_B4Hat=IU#-IXlt zz45JGi>)%6{4!Yi{7)i^k~p=wDrU(1x0Hn)A1+8~(FpgGi#qXbCOeyb+;TrS$vGs6 zv&lLw?9R<7<Uaj+NVyl{u6d)rvcSbpHJiiT#_lS9KU(cpXXU)FaL5lxPJ5yXsdE$| z-~FCVkDsh+QpVHol=X&DzzuOVqS0Tw2JNq9Oqf0KQuW1)fvTlyBV?}*KiQb=$rC>W z;i4R6To6R12)|CG`koK4Mvx;;K4uY*LA^fBmX#K~0g#~~mDH!$jT$73ZwMDArwAzL zIXd>h_GLY!fFpXQktBk5=pokCqz#dv>nrnvoH~L^<!Y~qn|Uxd5iw>NFw+DJHF;r; zQnAr}!uJ)@92&72>Z#HkcNfmF_P5uqIgY%sj<rj-Pkzt!&tm@Vlih{g<KISkuH@4q zBhBX2sK^KPMfOhY6%2&;M$7J-5m<#BzUi(tX5;$%OHP5LM|A>=N?eAA=KApFxk{wE zCXQ|Hn!N46mGC6mxQkc{Bon1-&i6TP-C7;nB9+pX_y#@$M<b2tczB)xnCin)=PwGh zCQiZ1Zff-|I{r$#KkP`GT|3@$Q3$*b`~(l5u(?9OtUQ;J36_P?a*C7d9H8s^Cx`?E zigLRgWHtRxeU#YAflq5KX$=G#^KK)RQ0sbybGGvV{)Vw>D0On>*gVjcvX6Zt%Vi}@ z;Ap2}8G@Ve6530+b+ojtDU3Hm?wZB^ggNA`iCHFbLM32!Rjj|{<AnaI=ej$KyU69> z;`j1<$X-o<%{tyVWotr4&to;^9&Pic;Edp|uc+rC`%UupO>=V1uHem_Yg(v5L7U$< z5!~AwlL=D;?*?Vl{(5bxdc0#NvD4~HWsyrD=;DCjE4QgC_lCs@l-JKd_<ey?GY02x zdXb=MTB9P>no*Tuo)DL@yZz}&BJs>i7V2o7fmxC3n0xy<L;k6(a9Qi@yq4nkQZcA+ z<F!MkJlc^u*4E|suWWNG3z3GcbE73wh@$ik@aWZ2UNUX2&ri|5A}(>-J_;I#aGOgz z-oCUeEGv2USn$HZu?CNXmIj-lgv}%qyh*AzY!1++k&c6TRn~zxbJl+zm8-}cx<hHd z^w%{@4T5CkG_HJsX?7!&QFQ;Hy>ij(7LaoDAm&n6J<F0_*6~zwtl@s{IOu(nl=%Zl z@(Vu0^CK|8bJ)Pm^gMuiuqK^|-GZw{?#UHVoGOBCA>&To4+iIyqP(6Ws8ZN!6ivtH zIga^loMhwYO_?uzA0HR{t`W0xhGYLEJkj*r8bo+2A#$0{yi9DXDbt@l!@sdjMpVdp zb6S>BJl`;$j&ZaxuZ*2~(0bYMNT1NSPa%~&CBao=T*XL_s@>WomsO1qpkRUq{4|#` zuy~sr7UMnKMW$KL&O1b!-bnp4Z>+pIbGqrjEWp6^{(^N$9LPQqB$5F<Wkrc`cKgK? zyf$n$$HI@*8}uf2NFVyS(r0~a)cI+%G_=i7U+4~7+<RB!&|2#|cmLV3XVvVr(<*Wx zcEXZuM|@+gcy|e=nTOGt`reB2O5raLjk3^@UliWAvqK)+QYacsugnSDw~v-#nPD)s z&L9;~H}eIoHR|+pc*MjE{Oy&EWn9CT{ow6xCeBZv!K^>Z&-?MyThgig&!|pYk*<=V z2fhPqX*?y62_Us9(0Oh(E;q^!oOkfE#_j>(Vy;NPJ=D?)Vu5!zZ-M9`HjPq$D#b58 z>j{wZ$3gL8yVeyMVS4k7o45MA2Z}6U|C*9AGES6hACzbp*uRB`iSG_!+fcDdDJbaa zY(In8iF{U?wD-ldu-%uIxwIur6Zl|NmeWk`J<(``{9hiPJKqnK4mlZ%a2q0~I|h`p z3yAkT3Y#Eev-V#fVr$nMxIy^v5TcS$LR9?wtL;=713|G^dytzzw39^O9jF>R3tlw& zIxo=}22kG&TVzuSec9hOBo$jjs9(4iI6u!9x)>FM8}?nugmn>q;WOjNsm%uYx+UH~ zpYP?`M&fdU2D@$)XT`tDOJF+H1!-7_>}gF+@_~yn&359Tg47_l&vgFt0z5pz0tsY4 zWQngkFOO|xwAgu?D%6eXkmo&dgW!ZEXp*xkX_zIDo!PRxTG?~bbCMdcLrt>KAJnpG z_>yp5k**sw<+O%1-bo|_XsB2$#;N=bjGP)c`~2}e?ez4vzaqr;N=|Pm7rp;MG51l2 zP{n+x!cdb+KA2HD;&#=&mKLY`t&kP9&=Bq^_>u)ua&jtJC7>v_cuRkT)9{K76k?j! z&`(0huhd64m06DcAX><~$MyIjwWsegT|>TgQ2OY;C}oxjN*D*-dNzh0!csjxkFqd2 zOJoRN_sO#-Tyhx)M|*OWf+_D{tPGbjrm7Hs^j1taL^!9xNF!DQ@eol;{5CM98v19d zZf|45Haa}UP$kkUO+EuiD~^Xqqk+5M+91@M@mji8>1r(PQ49}u{{^ogpMjQo$Dq{G zlS+>bcUNWvniJ*BwF^n(!Eq(Ub;X)sM`dlk<<k*!2_|q7Wk8*=Fm80Q@8HF3_Q(%8 ziJOTLnCP757JB#Sx}jXHO4iPtQH@-pm05zIr!(IpdIN^moTCWI2@ag33$VrpsmAxF z`0gn8x>hdrn`|*EN8bN*3)NoQ9vZk4UUDn!l$eZfCbPMXbr~1GgZV4q!txwkge#$< zQ>xB%BS~5shOqc+)80Pc)u*W&n{i6hj+-42k&W5=i4){~ZbN#;+e%KR!cDFS@SawA zoo40@R%{jds=-?$Gog-Q7gD4%Af6Fu^*C@W?tzWZQM&2N+{V1@wN-Q!TVCRI5B)u? zjC6^7bg-2WpMT-dKVd<2E6(a%_AC~`JF{ULpdSxvjW(e_Ut1oahcxB!zP+oh`Gzc8 zzhJ1>*o=i(rGl(>j$H%Q=Gnmmyxjx~WS>rGB@U{3E_zhr{36afEm$A4w8+fZaKSN* zZOyV&A0zoUy+rU3O{<Wa^7PAZ_j0k}YBm|}57*!5ygc_YAAfEn<fUrZpD{o3zQ<Td zpS-3L@k-d7@E*X{oq1goFW8fnrSIw8KaY@na7DQW?P#f?yj$k}>L4rQB&I3LrkVKH zaqPe+UH7r?2inB-@Ax~eFh)QZ69e*Shz6%2U;6}|x}7HU?RIIj!#K!44*wx)j7=<F zp4Ae&i;Q=#zWE?=E;SY>QQL(&GPb=mb_^QYIU~LqLMgTdrDn^vpB`#wy46l26B)GJ z0p7)RZ2I>%S4}_!z^}DV=Y{kRUQC$_^&NY6pm{4qwOs&F`L@7x2VJ3OYC@`z{{AC= z@55Vr%9CORd-Lj93qh89oK80bE!r8p6Lm_O_ipOgPLrytD}!z}o?3d;u)J4mnv91E zN?}NZQDumjw^v@i_rgH;DVx*`|9m^-fe+uMiQbWCSggSuYf9@8m}AY6;*6g0a8|kW z$WA8BEfM=%E5l`z;7OBqVE6&4qQ11=8#ibfHkh6|w-r>k7>J^*84aY?%-h$R@O`(M zR>>L*49v4nHtqJjM*J{(aBw?xtlqQ4odl65zdm=ie+ndGDzDf!0;To!GYBrh1Zy*I zPfCu}EM=~eNi~e&*$!h!>S%q_wNwyQl|pVdL`Dm*dSATq!NM>R9I_g=9!`0$Tb7VX zt)3%(zo`&{f9Qcu=X)^I_OVnnNPszm{m=W%oNia2xEGb#8NwhN?m(Is2PG(UfBrAE z$!Iar`P*4yYWM-1_0Uq4-aeMY4L{Dt<u>=%_6H`T)7M`2i75nTvbi_}X2_q*lNL*r z;^Dw=EcKjX7qA?uEyPRJ69U4T1fGT5(t>4ACFE0()UEW-pucAv&6hd{P2c$xwLKE8 zenMQiC1Yhw(+>u27~HS_q<--eth@Gl=U6-6#=Vd9cUxBLoYkk#mbQicOi)DMc+_t_ zXDWW2y631QE5pwfmc*vjCpV`HtX+2>f-*8@pGb70Lo7aiv(`BMAw>pxt|$lYHu5T1 zWI4m!Xid^!OH#utN_d)%H{tGAp{CQTym<+O>yyi6BVk?>ku#`-eJ_>>FScrZx4PfF zscAO4<uHvklL;<b-rSkYmizQL1#Jhm20e$K3ns?6NG-8c5i(szgQDW{J<bcn+XXel zh;()7pK=K(OGY|I`UToKRR+9Rrb0eq^vSmm(^Zh^lYy(|-0|H_cQ1A?nH%~8;tME= z4+%$Hpt2dIMrFOeZb(+h21AMhY{Zt|g+jAy|Lj@czTZ4>eSNUQ5F~e5UCTn+#C#*H znM!B{#-$|gxJtl}yVu_j_g9K=U3UC5Q`3cdw(V4U(4t-+EfR8)I6N%7ruhs!viwn{ zJ+unTUoWqwNUWi})>fGppM*T2RoC(m&QWPV@fHdo?E4=!3HQ(A^*h^HUtSBzf;n@t zH$&Xta3FyT(Kjr%JLhzbXj#r+m*HT)!rmqt!ah>x&#!+3I}o2+(i5xIJLib_dR6qw z*Fz_jPaPW!`*Im^<eR>))XT%ibX&D@u6-p~0AOH0W2|SA-Rnns)ZYE}dR9E|4Gqz^ z_KdAzhCBS6SG9Q1ZO$!fO!&+aKC-&LVn9LG_e`m`OswZD!6(az&5d*P9@K^vb!YLi z_#4@MIp6J~qHQ<TTpKx-(KDY}J(IVGR~o`Q_k373cB)HSkOs~*<2f%~5tLrn3&F3g zTgJs|aLznCODDfCcb}cgnC9{~_CZ$f4ljJX1A4_+T1IaA<b@MfL-H(GvEOdQwi4V3 zJu~9$L^jgFB~dE+n%{_F>u{t&B$p3I&0e?Z_o-5J@s14VYSOrk_SsJ(qrlyXS@dML z$FZo5p~XZ*k)Wg=k83UT9lbDMQhOO5ofgQcI@&M1hGMj^2I1mlhUwy)SM#PfVnWyN zW$=!<ooi(cxEAsbXv&F)p+noNdXp%lz^IlW2M^+(V<#KtdSQtR^{w~+(rgv`dRX!i zIyXGwIFo}fA#hRP>)i^cv{&E{CS<}7m3Y#Pz@17m1H+;2?;V~T9a0A5Mp~8Lx%-9Q zHRQ3*aBmH-`}L?l`i9|FiST|^_uPKrR{Y(L9Z8$`Ts|jnyL9f+?UjaK&)-~i0$FrB zB$c~$B_aIK;mZBrI?@n~xl9IlW8+>w<oiL9^)pP&j<S=Ho{phsM#j~=*nALs0`Ph5 zVH604@Ekv6#)zVXEzrS$OsGq{e**68VY495Jgo`=Yx?Stk@ra?o2a;#=oNJ=YD+7J z`Ja2>w#)$;jI@ri%VA8%)7Kxat8#Hs=Ixh8N2D$*-pPCC&Z$-DQJLR6^ghFe2`Z|d zM{Ja@-PDQXdnz`X+Q;e_Re+;%Isoot(~+W7xagYQW_rifN^$d?Qn;HdGU>Pjrfc@S zR$)RE!s+ZEV;7Kh0~2({E*`yK{cl-us&ZAPPeOz(K;ax%q~3o1)E;FXUb3?!jQuwH z0RL!X97vJ5xk8z2y~f_&X;gBXhc26l?Uij&ep$(Ta)BI$7OqBK2{wPM_@(l~P6I}1 z0-arY0OLSx#mYdpNzB_QT5Amd_)!>NAf<<c6}!M{`yoQdGy2oxC!veWH^Zb{tfM7D zNB3dhjt}K#+A?0L^g@{!S0)A@F(oLk<jmAoadxTyVrLZHRlHk-vh-@QITH4v@Bzkd zx`I|kfHJmJn|_#}kXUP}nPiv9v`Z=R1LnX_pm8Qe5@n<-xOQ_|q+rErHF(MD_6Kdg zci=2(yeR6~u=Z82_ulavHR8pnR-DTE^Y$}pj)MQ(mxr(R2|S$8Jzx`~_@@*4!RHp^ zJQZKWQN%R+XJPvG@0UK2zmW0FBiy|C6;<yCJ(uq0*aO^>wKKB=T}Q)XD!nAH0Lyx> zV}A-@JFh*C1k>`(-c3|<19bMCVz>**%ziNmxi1-;R)A~_2pQSu@*3cK(LuWUh5G0% zS_uqR<p*F|HNV&g%dWD=v99X9>f?W#RyFO(N`3&QRW6RDmu{N=ZCVAU?@_`ndqQrJ z*jD~XQukwvUs6|5D;LCeuKA6^#ZZlJ=a>9oyaQMfDLHg#bjW5X*jEF+><4L)v6TN0 zqzaMw$2nG3B>O2V#$PZNIn^mr`~t5QNh?Q8^oo{Y7ph`+%;cV|ZI<ZD@RfYm<nHa> z(c!#sZ&zf?xhB>e;=-K1`YVcKc$AIHVfK^f-oB;VO{Zj3c&vRzPEu1i?<g7XwU~B` z11VdrkMviKia9c*LM7Rk?EyE}Y!t$fWke%e_X~>S<0p?kSA4~h8D?x;0(=;T^Y!&E z7?~GKh{(JASm8p2t)x`L0_avu=aZegNyxvjxMF`wP@N>bZ+ly`-81Y|?rEuSZaK|* zTx)Ag?e*+u*;zATSnvC7^Y}F4kJ&5jq!o^;@tm)(k6Uj!>5+dM;bwY{CM6`!{Y;aH z81>6=F)h8Datl|T>@okM(MjynB@kpC=V$d6w8RRrrd0+jBE5RJ{(=gaLc-f4SGFkE zZb#zdABf~PwCCiPysIg{eZX19!!%*p-Pnr3YAP<;#8@@)i4fFP+dwGV4Vn{?c0=Dr zOm~Ur9hL_CtYeLW9me?Vt}Fj-SoJwhAsg65X>;=|(4qvo+O&2bHt8rMVA3U3gbNI- z06+5EE@tm-_;eqhu+shOz`tP+1^I$u6>GhRbP8{-vl~XjQwRo;0eRperQuPLL@pay z{cI?o&31rWR6*d5FM91O$TRtCOR4U~f%Pc2%z~Q`1u7z@T?v6nfV9lt%|#r|ZoZB1 zQi+5b9C@_MY@EKN=CM|jb`4zA{>P!B6<)PVtrNW-&T_IIt`OnWnEbh#FJVy(N+i?C zbM{8wz3cjixZ6y>ia=@$bfa^t&}#_#;BOh^Voqm;YrRwnX?{J6YASQPoq)&z=#P6$ zE|h_chh=1hT)@LmbPiD741rlKx%12@O6}giXzAkvn~IX)g4o)q!g+D+C+J^ckEm4W zm-Qy9p$d!4M6o%CW|;eoC$QTE)uc403lfe@jR4J|R#$lguE_dye)4@8cF0g2nO~GF zVRG>ihjTMuQlfzVB}%ejZzo7a$eoQig?x@ICTVS>LXgV<&p^PYL3`<eA7Z8qJ4aG? zkZF4E&fxoD`e<T!z`%MeH4N1~qVN``$=m^&0%F<xkf11#3(DudohV*O>_XXIhCC)s zvs~xLQs13gf3k<Nj=4%?&~glR?ykc#6(URYai(0*tw8zX0>!JCBxRXALp9yqnqlv+ zYtgtOB-Q#W>ECu$s)zrt<lm_Slw5!%m=}dPZr$W(>VXnHf6P0-E&A2=sw!fSziZqN zhSKVAY$fZ;XS6reDBG?LKo;sS_HILQ@XBR=H4xgYq^8{*YN(T8VX>5siA+FGEAD$$ zmYzBly<{-8a5kxu2l}}qy)8XWenrfKjuzJaj@DI>aK4sbq)BqR=~T8{*A`Gv#))F8 zAks%>!nSO~ZJfVKBc-%=G?@=C(^BKoTqE%$btB~>726o~&iOeKEr&Y!oYyj8pTP7M z5>%Nx6=WLwI9AhZtd8*i=q|TAu4G<}DkZ)JLP67YBv(n^D}$2<u628<NCm%)?vmn> zFc7tgx9`M2=YR@iru+D3>Oz)5T7`QBMd)(-*!-{+w*zGp{-rKG0US?f$2Gk2oJueM zguFf1A!o1I?!#L_kBZ*v!Dxsq6<fGL0|JQ>^E0p)8xPw-4P};Gts5gYzc44pJN4yh zhy!Z;E^$sm?MB}9;NbSMAMCMhWSx{>PLjI12qWtwBE97>Q3aqm2OINnclwq@O@v__ z+>=me<h>pqqr7z~t{n%`4LKh&^CSk|nF@P@S^$c!a9-)IKDLCf0en{`BDGuW7V$E# zs2&VF=^0K3w<=+!8l{b_DUUxGnJ?CWM3nV8RIgB^szJ_#__nA*T|2!<#ixm~0%9Eo z+^UvP;8vxfF3Z2U?O#XJFx`bfo`quVr2A+>qO>Zm$(!*)A2+^8c);hL+iMq0zze_; z7q3WK)dbri$9_x9yIlWIVlLgHu)q&vP`kZTgYS$)uo^n6CS}dXa54?_`z5b{>?XJN z36bYeS-BVW2jl#0n+od0&{=+~SS#?Yq)ycsmM>p#XhDG`z&uoqX8o~^c>_gnymFS` zoQO3De}+Q=MCYyV?8q_%4dfP$D@Bz*&Z;ea=l(`7)R3;Qu-%QYM5Al;WiaJ^G;+2o zmHLD+F4kn+TLnrK1DY0u98d%uo*KdZ4_%AlsyGS@qROi<ZMTPf*CkC)bn9?+pDuED zy|DeA-XA;xjhnoEU|}6-QX)695YCgOp@;{&UpK`fAh18S9aZQ|<31z)%o)-&4^(ws zl*t74Cu8`nyMTF~mpZCrce8IK_Ja<jZ?FhkK(Wc>ou6I)-nS-H%_PQ9JyRkwv>=NT zo>KlaaWsD<%&z>kzKM5L!^$?F-|jjO)bU}8$B!+~KNyXdENpL%=ERJ2r0dQt80h$e z8VcI8aAnAdZez*J!zmz-ILr0gJ&PG7PnLsWvbJGyMduRif_-&LN<m4_`MiQi5yeKs z?S3Zy5sei_nl9t=jt4qHGv4tU@t<eUs&J(tbnCy8q_y<k0q>-m@7Bun*Q!_8DdA!1 z9EplOv8KfDLiCIg8%DYq4dm6n5zGa3_+nIQ!r4_&<}j6F>~4~tZ*y*A8(ohI(O6%l z;_cRJSfDI+W|EThj0u+YU}2d(e;Gma`zM_G@TEOg9<khkE)IC`U#u=6UoxZzvpg%o zWhO}o`7h1}^UU)jhy5b7+U;pY^D`_N5WfQ0e=pA`fu@Ei5WKTXcCxsGGHTPcQ~_DN z`D8B*rJH!)ss}mAEvCA6;JWyBvr;^QE>i;HE|piWVj9PaL@H417pvwNjxhEj37ZJ( zEjw4|fy(sQQh4Y<<kWXCd!ik<Wct5YyGeg(i)NV3K`W}m+o54#py^ZieY9lA2{v*) z;J!5U^h_SVoYB$o%!Jp<vo=qWEh^yh{{vqeJ89Z*ZvDG7$mlWWm~t~`uSgwabA)~Y z=X^VGtAb^$M)?Iyl+e;vPZ4~vdy>B6b=$aCT6kK@+@^w(sF;}V7|pKgcg8K{e=%-; z+xwt0?ADrB<e<Gvx2w3H?!y<bs{&L=RwX2*CD}vYG)bi!;=tgWxX&H>S<<!s{MPE_ zUw#aIJIAUA3_dS2W|w2t9_sbDVSV3lTds(KPt*Rxpt3)&OxS4IitQ4t@bv2ZdQX=P z**#ZY{`471Dn*0Iz~3NF7Vl^>tT%G4;^F+;KB*}J=Ew`7qB2)Y%ihK^%+5Y*gY&;p zSEj}^FlZhet{kQUq7jbIe9^H#V`Y%nJtSp+(|qXYOkdJI7#<zlZd>QZOV{<3Rrf=o z{a&VhLSitF6SNy38sw9Y{`0KS(S4Jl(Mu4!U)q(p1PdpS1F!-_W{QXm{-WG`1H6kz zu%m554Dath<ks*f1c1<q@RNMHi?7hkY;#>RXqxDdjHgcL5;pw)Ws3B{_u~@r@VDNz z{w9{yd?oR9zu$5?II7!6n3@~Vk(=&P^!x9id#DV*<U-ko-*2lb?c+Dz9k?10`YZTf zAHK>2dY2}w4_p8K<?wMJ;b=*tVAB5@Hf;1iU;Q^I1r8fUg9P-o3?}{;wbuIo=bP|k z_u-NMI=hEQjzRPh--$m}{jDHArLZQKCo*$w$puqG`F2MNd~~6!|Nf^>oXUV{(MbLX zyWgU1I=ayCzZs{S52KL3;a(4Vtz?506z+sP<At#BQBY81CYr|kR;88+3+)GFk;YdY zI8YsQCT)n?;5pn9^{)%r{12LE>gEx7Dhv-{`zd)L;7il$0L;QzhVR`ejG&gu$ah0p zl}Z*C;&gBqR)o=6UHzuX_`|<_!-ucvY0=f2UXLNCID-Qp=m&}hYM-reDZ_rSIew&A zV|^54bO`p&jXcAh0<S7!xJf8)&=Sq7%B~~fG-MuWK}$ERw<JcqV0z}e!)XdKQmv(d z(=ep-_mlqi{l<UpOs*>bZuajORe#Oz^wiTXC^45m-DNxz=V)P7vdPA%+}qkVUnW1T z)~=x<x|9z@Sm=1~VA5u#*QB&R{U)ww3~4a)ucsi{`9DtwQ$y;f&{Ab+kGNX->hh3n zWo4GSQ2lPtI(@B?95>!)47AO(`d_hrn_Jkqco6|^haU}VNB_vFPj}FnIUB8S>OuUM z-PT!vqkiTB$UqyRx}p?;9gP1QwV_0DLOhmVSZDHYHm6e(H~IfUqRb<X9y@GcZ~2y! zNB)v2urn~PwM&Cb@ecC{z{S90idRCB4d844ozaOJf9t4d%gs@nAr9QGh5_yhAjoe# zD#(jVMBTdF;W53I)ysmHOr?|$)53kEQZ_Gh669>x=9l4QU^<Z=l-n;oeu5hqD|}w* z1s11o`sT{bGdj@#Us(H_`{gay*4ErvMh8X$UwyIV+qbXx9_^uVrV`F$WAk$?3V%u^ zp#DrrsW{8ToCh!#RQrI{LPJqqU#tQym3Egf_V-8r!xtEx3s~RGAK9_g$s@;@_f+A% zNrtM1aq@wkF~2Ct17%R9*jXs-q*Vx8YH0kyrZceuA~q)%%qwrGS3!Xzrv%gViz?w# zrwm2Q`mQNg7c<wP@oEK&#?kt*!PK<WybJQ4X?Uasgd#NL9Uti6Ua|=Z4G~2sT~MQO zkJejIDjq<R78BRvZ7<YqUxT)un3snRuMK)bFtkg~R?l-_KU@ohgJaWCLj-s#fK?R@ zHv}n&Jkfe{5(5$a4*t2OFPnnM#c_|Y$kl|FV28s(K>;`qS}a>Uv->Se0-Dc!`iV(x z(y!4~Yxh4jt>)$zcOQ)tc%3%3RMH68Q3U2^;!8(vL;aJ#y>@hG|HB%tha}&D-8**P ztETk@U|m*H%}}YdFbytLI)nfOj~zo{%xYHj-&p_>!~meI26B?ZJ>Jd)lfLj4xq7jI z8b}{9mR7#RN9Ie9Nw`=PPt^=%u!{%@++l2aJB48?E0b-YFN4b2&Q6OfZkN(=L|UX@ zT#DQGJAQC*d_ud%tzf0au~Qa@x(c_L`E({p!6(A@OG}t^F#vjE<rNXN|C&sH_5zKO z%(lI@KRznje#jh}w<Rd7T6V5!OU4yya5JHLUkME};F+czNh_KLVx1Ld+o2{2r3)IU z2PGc^+sAzIF$u@BM-2IKEdGplJu3Rf{C>nc-NO4o6R{#<7#b-Suj!XZWo}1$w0ohD zuMV9+4g8k{FyFR};N%eyR5a{t7g?kER)MKh7pxB5Z9^Q7>J8<G?GAqfHcp-oe5)i# z)yhEXoFADwsy+-IJ$ci%K#I=3lqzFlX3g=ddTR`fAXHl`pw$oPLIWTaZ|>b!AuFK@ z<zf}(BL5l>uW<0KvPVcvCqO&{?NjH|C~^Bj1f0V#6*xIloub}aMde=TRGi9!Zb%x? z*WWWo-bB|jX66=yZx!h!6ExmJr5kFNc~BT<IQ)km4Pbz211r5cmvO28a%MU!{~xe2 zq43_c`PkB&GigrK|Cq|}_0v6*WO%;x{7eft4IeBoD`1@U97brb#_qHs)0qVZH-WB> ztB);cU6xhIOw1B+AuxmKKXqWq=>W=^GYFCv-?0Bc!PQSba?s7-<j790e_YA{<o4Z2 zdG9e}@U80a$+fF$4Ay9-u}7-wuBt(gf;QH?fDdc-hYqVO8ki(W`EtxFAI2$YR0Vaz z7F6qKo?05xPz9l^H6i``H8x(sD9*9cg=-viv%rl&Em#lWg63ZX4Y!(!0G_&yCkWpR z*EIu|H+<?3$97pKsM}}Ax%+!ZK#|S!eNI23&gS=*#&q<5f~2I63=h$74K*zq$Ds{( zh<#vmD7R=_Ub$%V=`nLm^PqQ5b${<WRQH@-kV8!oD??>g%NHLu8FAT;la?%e_S0cf znFdgbJQ17p)py3D<EVtGb-iGrYd3bc6gRmJ_#3S&r=<qC8I`cGp6%7supINrU%Gi? z52X5;vv((}dyGdDXN<<XMP0zQYGusi(y^o^>G-x`mVur=1lU%2z5!!nR8Dor|F*4) zJ4n09k72l<B^7&e)sM8!gQA4(FTD2M8uoHAax-!8FE{vwEF;i_<rCoIkH1UAHS7s# z38Iv6&8ev`a@x8$Uo_D(QD}Z+ogz^~_w9B|=&M79_xtZ^k)Bb!H6`E1r^LSvDZ=RR z+1f>n{83w;-b36Pcs==JDc}DpvRu5S&x~Hz$RGSr^mCxj6PXFBA<XEE$OrOrt1H@m zC7lE2(@V{h{{b)|;QS7*Rq|q^Xs^ppq2?`hd3aEM`b=Wm`78$0mvgMG`h{I)P}aIy zP+RkbxIT?_1^9U93T~nPFth`yEPR!{Y}_hz@!F?eX0LL$5ziJ@msc`F?vWW8t2>%w z8K729V&KAyRe0yYknV|#A8DlYnr|H?$gA$!sqdFXHC<&NCuD$YRT(3?cJ2A1te?*E zi4y=@#V|0q?Kp*m>_?2f^Q8e!v<&s{ZNc~VAp1Y(PljOjL7B2Qb#@skZ{T(Ran`3~ zDSIYpl#GA>{!JkIxRGOl*g9@-+-hj8Y(yaDm*NpRjclgkmQik>20Prx7ZEZE!eb+2 z;wVoI`_RT3XPRr3o8;=Nsw#(>o+xmw!kSkZfWmZ98OC0(4e#|axS0&S-Jy#;djm3r zLr6fy=#TVHldI<np5zu`te{RzUH|CfEa#y{^P|K0N&z=3zDB6=NHE`Yi;z|?eEj=e za9b|h^4nY8FU38|>s1S`RY4)QU~y}%^#9wnDlq78*D6@G?tfC+YpSG_>llw<2vHZ$ zj3tUwO0|tAYLhf@A6rA`#+STqD9%@>k?g7v;XI!!-Gduw@6yv<r$~d&F5xwQL>N(C zGrKQ0a`?G>3;W`Bi7}_99h(|zu?As}z^h(Z>LDnsJf<#HVPSp0(uxv-g*MF3JmA4o zT2X!1y?F4qh6K8YM@}(8&qn3)F)3AWtt#DA1lOttXxTIbd!1%4Sa`v;YGx|uT@TZ@ zmp}=h#akd2WI&t5Jp00KO;5l7iu|=tgG+P7r2f&)J=Z8T5x(ZVpFcVGv6a>LFf-P} zyb_uKeG>`o=Px7v>i+m$M;X%9=)F5iL62dq4S$+@Q{=O@zb+ik3lra69eiUAo>Zce zt^akc@*Mc6hfk$(*XbOfIyL5j{DGp7`2g38>>nd2%#XSnm)<>AVCL+!d%sWIdg=F- zsoD+NEh41EbT58L{;_|u!atthE|k~pf8=yj)xYKRD}t9sCD#(1Nxm0GZ85$7qceM{ zMuNtJAWmdNX2LQWII)S~&lYNL6*X6Sx}Rv`J$m0sqOyuO#C8EjA-r=A$(FIzR>$Ne znM9wQbd2%`y305=CHI)-85#vN`r|f~6Z?W2D~2Sqb1_XGnoxtu%$SPFb9TTDZy;BP zP=-d+B91n)eZLMf9s)<A^=O#-Ec(su*+S}Q>6m?39Vm71Gol`O>amv7P-1CEO~*w$ z0P%KfQZtbDC_t;r{8n16VN961ANOuf8#6P!IqATY(SWWKRHC;e0QJLLJ8z;>qAiC6 zi&!vifBt^q1X*dZI;!xLtFjCm2;8xi*-KWE2$p*YNf_C7y)nSQ4q_lL<)ZqbwxOZO zQh^rPk~ucE{G4CXL9qCPEa4DTn=j@9jasob5&IW91RkyEM3#ebf_5>NFmG>fkQcu7 zW^oJTTFh2r4hwYOJX;n((%W?jP*Pa$$CQqkzNm+GHd^g}sv0DuNtzFpSDJK&7}A4F z8TyMim$MbD7K#zhWua2T+sFRZ241%WpwDFR@B`L553jX&d_r7efvm2{_dc9hGcmX5 z$y@;@IdlKe^P;&GyoKC+eK0l78$3ni=Bcc@bZ)RYfwcYG)p+>o@fiNphpa{Dt^ysm zYeO>O#q$5h*IR%^xvgQtFCZa}l#&7ph=eHJ4GPi&NQVg0-6co}5{k5R58d4@-Q5Dx zAl={Mob#Q3yZ8COxh^kZhM8IKdRIKp9qajB63XakI{=&tYIidjtmeGmQN}Zjfa41? zV&9p%s&p(Q$ttUCQYN?y^P<as=JvleU(ZcBN&)Z1ZP6-$4Ax$AS33RDe;2Llh|goi z_`z`KC?{B;1Y@VT02$Uc6QfF%#`L5P2v9`Z3?ol~r{b`NoYEL<$IEpI^&UXn<rLoy zcJ!-hQ_nF#gaCVoN#o+P-jcZ?9!@&vujA|GL>a}{870SLeZt`8kd$5hF8ck7|F~lu zoT0F<P(THI7K$r{@a#7LB1xtAt3S&N!=K50On>dvU+eUk|Cqe{SWD1jM)JjnNl;>~ z^Idp3g}~}&woJg^ptGYmL?f$D=vWFsa?~v1Jqm<#f$g;a5_`LW@CqE$achwSfg~1B z|88P>j5aFBhk(6A@z#2Qga`_~C!dd%v*ug_=VVv*R(#Blk<_lf&ykPV{|Q0$e0jwG z|F&6Py3#@r@e6gRCG%a%`TXS1Z#nGdz<5)TX`^kry^)~Il?Ut&z!I=#C1Er!Q{a<u z?E&Dvo=&yD+<vIiY5?)R!0iV0|3X_1YNwz6^<B{SC=eEPnAIoz=UFS^4N5>lrwsnf z2@0O{!U08|1pZOv37z3z*wnN;|6dR*@aL5eZ@pu{zaG^qL8|+o5B>Ll(Tx9zT>f6< zsq2>DKlj|4b+jWLkKx!eg1qYxw(35KM{Lwhe>H<iM;h`L<7>S9-nyS*ek}dH^`(On zN1T~M{Oj+nDrCGnTII{sIU04UuTmylcOMCPKl0ke35&8tD3nGt6l}1y!$x`GQ>D~o zyZ6hz<kgQE{yWrvf23%9ZJ$L->aW-iwP=~Iuj-v`dHDCgp{`yjM0{8kgT)b7(;+1G z_lMo49uzhsV|@Yz{NrKq(hNbyqW!n$-`^xAMgwBepDOIVc{>z{cz=HkGJQf2vdNKd zOP41oN1**ji%6JJpsu{)S3jCADgXXnyum$INXjAtrntI8h5L_JXTP%TP(beWz&P~o z68v+-@%cxye?_+3HZCeqI@ycg>(f78_Y1mhUG7&K`ktGAd;uO7DH3?|o5zO#`^sJ} z?;s4UO&?2EELzUbtnTRjk2cz<A%xBJpv3jg8vKvjar6vaUq+=X^v_<ccvKG2avGco z{-euMzUU%@M#rwIIO2Tx#})mGY=s_HjixUt(wia4{Nr=k%rK#^8io<yMD?yi|M6zy ziTlu_iXRM5Y)^3i@nV3*OA<#MFM;`T!D=kei&c*Q{|<l0F=4htf%K0a9nA9w{r#eC z7U^LMtJ!MhqcllL1W0{)djC4x)`9{L?}(0h#H$VedFx>aex}}Y$7<`pT|uHdXn)+~ zGZhgp^<b2)FN=`ZyVSejR09i&!8K_o`G+D%mk3Zi5yo$ZoLN3<5{$9F=)m_~cOkDA zXW|CWp=c691bTG!*V|bpCJrZ70W<F$Owh|2qp_f0zqXpeY0Xv6V&jr#0SF%i<{&7w z3csz){<dL%eJD`gj#*%lpXI-^*p!Y@Xx)dYmaF1+b2fe-s_mlCtcHT<(vYD1Z;{LU zQFC?&0mh8KuvQR-gzbY#C5IYzb2WS?aFO67ar<Qr0&6>qm~S+*5HOw(`IVYk7_#^M zB%WKqQz)fUgD0UvDshCt=CmUf<%_T0bMsVJ&#+ZDrDyGoH^-_^m~n81w3iu+K2v!s zD<Yys?^esFpgkY3^&5Sw&MAF<-@|B@!F7PR@k6fJ<*uM3IJ^u0uh)Tx74U!OX1fq_ z<JtQ1?Ug`{yd83(lSzX{Z(e=m`32+MI=ZT>+pA%jWy!dy-+d^%LZlg0G}y^+-H#$h zdI)*7sM_xRZb}u^=45*Y3D*ng^Ay;a%|)$YNaK>~3#AF5Jt$J>WX`cW3G;hvF~v30 zV7wC+>F&^<$rbMDgDMss1FEKRzc<}&+?14Cx(YY4T*~s3C5L(nNL)`g;qSxugLy5& zuQ#G`NrMSv@U5r6eLC%(rc9cA`*m#4giQ()hj94p^1|zn@!Ed>Kg&vTCHD<6eo9Bh zSpFRd*a?@*TIgnYllrMF<;YX8n)F>BA@rmLSgpS>nFt)+<||c~k(TvRNkxFz9t5|j z>*OfxZ6q)2pPRgCvnQWFvPsUmV`?Oe3^B%YT}R%9XeB>lIZqbdUp;43RIRmZo9`gi zsW)deiB-4aquZqoHZdj;Z>pD870dF>g?-j!qavSIE32Kqv3W+tL4v~=6PhV7M^i^h zY~m%GLpY3FOZ>-07=ON9j~Q~(dh(`Kq07y4-o@qhyO7hyGXJk~wHcm_{?wm)&*<Tg zjD<({o<i^znfTdR`aIK0W`oo((r6fXi-NkR5hd_A^}VUZWgnJb@7_FKSvpGDfA92e z+(WHHcT-8S3wv}5#f2g?je!m;vD$ksq8Od5_It394rPzbOA&Ruv}niaZ+8utA>)$C zz4QB619E|(ZI0u4_vT*^V!d|S{rTq9*?B3y>ILpEg90`e*Hy7vhf}T%jp^3v4O{(| z33GATKW1>E&h7eR?rBF#fUI`2NjF=3^*H=_Yv=`W;475enU(Eqd@2Me>%9eD0Y5(< z?$+AVj7^Pc-6Hk2(z$*d9voNX<d8n*($b0+jm(yxAJtA>U6)PXAjAFSi~5FJkoNVc zq|h*Y+f0PDq)BZU-~*Ghv%5Tle!5_!K0Cc=dRLO1+#BG%q0UxbmETVEYZ(cQ11KqH z+FJrP${}dU0<H!DVpPc?_$rTqgD&<?pU)&V?h8y2J7|=F9LZLdIQI3nzOy}UcDKIp zOD%r3K=0CMsaD_n^2$p7Ge1n;lLn?dWPBzhW7H}UG!C)?G*~av_x`S<h2&9cZfeXf zyhUTy7<t8UuVR<+rj{_s6VGq64rS!hy>@XLUkusnUHIKq=J7RHDt!RQuP^s0&?)7} zH`J%(<+V0Psuf=&;Nt5GxyU@qRU!ScK?<Io-etY}`{+ZIY&~`<3D!_54PG{mgoR;5 zcUXGUJPrl_XmQ4))=wwqkPLY|8V)+aZdtiwQeBCXj43<G$2+GrWT80*tAQ%1!eIGO zq;46UoDD8MM<Ey;IjTt<U!G%&>3tT{yLa^4yCIab*&9)QcI5d2&(7-Rif_QeL)N+r z5h4KrSL@DA-h>?5)VpB(4ZJUt3ND|oU}s{gRMuQ2fJY{<5(POC`68p}ifCd&4>MEH zLBB9pkpJ8a8u^9x5fvq+IQy>nsQr-b55l7>qvvshV|spw52^SFvK8>2IYe6*rD2+H zlZy(VjK@XwAr(=fu)1HWCveeOQgDAVqP#%Iy!L<|GOZbN^*?48R|vaL5g3s4@c!kM zE?eB-TQ=&7Viekv$rYZBWjM#c3DUx4?PlocJ5ep^oNniq$^Ky5cLCPrWsVE;I`dRJ zn<4qke8n~opo<cA0Y)(r*J3!oyP+t)%&M$0JIUwJU<oyOC_h3qIVIV;@oH~uJq-8u z>x537U6b2JLaN6&eyWaQo+o0v)zyX(k$*7up#bg@`rLeRQNj87#?GDBN4Arrj-mc4 zPxJX9<M)=5l15R(<&rkr!N<;jhGbx(OiwQ4i@Zsopm4J4LS(&a{}PVG-0;3nW~Rmp z8@j;R&^d1~YONK=AKK4je+o??VVqoDKY3zxc;UZGEZEuLx`Y`kL(5m_RFC$`UW4(p z1+~U%?+1I-G&T-;t3i%s$Ip*k#$+zEq`W;7)=QXkd<>yCLDIy!`>mKy9*uYFmn}KT z3S6HqT0HSWh6HO}nP`tMe|emmV0)bGNb1k2TIvKEhIfFCE<$zbrf#pgG#`vP!Kqpb zaO0Nh+Bs+_E~bM{`%!m=zs=31ocIi{6}g`v6n(C4R(xsB-`*jyEa_O_lUNbubkp*J zc&{h_N}uNmALdQXHby=+@x5k|qN_pkAy*uMv%@gNx1x*N*)6G#Gk%~j_7d4KPq<D% zrsK9Fy4P%jF*Dc!5uuT?(xopAe02F=_L77yPef0sI>#xfdkf%A%Pe(^rCKcUs1)k; zXcclXXmU7b`{qUJ*3=bH!|Xnl89eS4LgD*4MzaJ?{CaKeAs)jctkdp3cjl)JS55~m zX&qt+5Vls8pIo2OqJP|2vyQ#&9FGG!3k4Uo`DV6c{jbvaIcLwy4WA*`o3dq5vfe(z z;bnu={hYkG_%UQJa=N~SGk1T@zRj!43!>h(jH(y$A+Hr)lP8=z;ed7O`xxnV-DFNt z@1tX0#%ESNs8BdfbDBz4i~0VhQ-1xyR<|0@6C~4jvJq41+E17|!1X-IyYP8!`s|4S z5oEQcPNB_jhbcHyDr>T6j<i>zI^X1*a&KQ71Tymto3f95yYqsWRG!XpdyrU?aj!qe z+)f_Vzet@HgUl{=kc>IXmN#=ErN?cJ962d2TZWl^UU$>U35DtCK$puehzAE(YG;fe z`T4)>cRb=QnlkIm&T5@0wT8UPvDcE8q!Og-h(hFAu7XypF^Sa8Ikp<?kZ(>FE!N%h zBz%nO_X~&1p@#*<Bsb@mIafQI6=S)L-$%ZAteyM-w+2-H5O=YxyvRN|XgT~Q#(FiE zU80!9S)+-4EeZE7^18hGrUMIp@Z{xbMa?+_>NHe)xvr48tJ~<YZT|fQ66rfRNw3g~ zVK-Y<&g=3u$RWPpCYCrIryXokBI+{V><ZLDXl8ZJr_F8Gvr@+M)%Czpr&{ik&QH+2 zl(dFLGg82IyC>Vp>5RJQN;2^p70z=JvS^%N_eB8bkKH&c)OM06CGOSwnd3oT%$Fzd zR>LS5_Ed<PR(f9%a#Hn`nYd`GGCy7CxFozi{N95Q|462<9*<52O!gxPr8O-a!K}Jm z?AG`abAOlM8fgo5mU3vLE1WZ^d$qOB+~QexK>RjsiFZ@w)$UX53&jOo^j9Iuy|%`8 zNgj}Woab{Y0B?fo8Ys(|bUsVD7n*2wEN7Y&8J8?}#EnZY3O0JwFNs_<KiMe4%&0Hh zuJ*mr7dbq=5<M~KYQ>Cdin{H<(J|MB&Bv-0E}Ore;GJS%VK#pK1n3tX7CF8mLm#x8 z(elzIV$0e!<quCDKPS7n*i*?(NLVMZLfTqmdrYl~eskvHyyWj#&_W!=Z1vzr5Eko# z;LiL<YwR_dRC+08-&{m@_q|~z(zHSX2uvi5;jj3uc4Agx-P?yoNf({Ylh+yp=Pu5R zpO{Fk=9{aSLtpDV(R-BHmnan)m7Zk8RwHVOSuH@)Ay^x0F<^;Scs*M<rs|)<sPc3N z%uC1K7%Jq?P*U|9?5l}HR`*R8<FeBuB#pE}xm}x4c-UC&q4n(*^ZMRE7iFIPmy=fs zbR8-q*$Q7y$B!JjwECH7fky;{WaBDKEu!5-i^+yTg@)H;(FL}rIFKUsxg~qfsBzjd zphj5oc!$>RLAjmZKYG@f+Bd+E*#nn~N#47u1$3Ju_*8sW+1(T(^U0=}>`xDWk+$21 z^k#C1hl%#AMtHVfLxEsD7UTCp+p=Q;;q9%-6DWKu@LWIjd;0-Pj_SgP#|K(|H;`*q zO<qe?^-}K0+spoz6Pj77OVo)1U#ybM<(kbMtFsuID$Y^DV4thYv=tC&u)lcTc9<De zk`Ar>kKrlR4iepW9F<R@O0(a0_FekL*EV=V6w@GG^M(U5B#bU>VgI|<tWGyS-`www zpLpgPizb77c23<nu4=Lzi-+&Ko7W&pMin#~NHba0nU`B$(HR`ldU<HwX*==GEP#SU zyeWGIk*vE*@{KzZ$@J#{9E>KUpf#FoI%9U4$9E~z^Nf-18=^&eV{Kd=9)?XT@$9VO zaOB}N(Z%)pxku$E)h6G~$&_m{SE7~bhL0Z|?uB`~FQ-sjvGEd*Gr$X<+uj2MR$p60 zEz6i!V|<7K&f$lOtiPUySv1pO#F7FV{b5VL9pNvMIl8oVVnMKdFPQutSzljMOf5B7 zo%KgYx{iqoKOjt0JJl=SLTwKcwfowCCu~{_&%~S_+HhQN=Z^;9U?D)!J@Kb)q`N$2 zFOH6WH_KJbJT8l=SJMp4U3w1UN*b^M1<|I_G`zA1zwG6;?3iJ5jbH-ZGJNLC<@Ol0 z>Dr^xVB>A;$6v{##(TGSbGpC&(HNKujnd;MM`1DdLuUdRKtFYWvp&<rB?FyvGL4or zg;^n2wTzSR^ypS#T<TYWY!sWYH#f`TTfelSLAaVAtyn17*Ypz%?!&f|S1?#<9>0`H z{K3>X>8;=M>UDGJPciyJ9V4A8_q!fvV;A~WgEMhRtfw^=27HlOEs?WC81)r%_R+tb zWD}Hh(Zdp*L3Ru-BQ+)YZj^Ml{QQ(3*b;k4qPFbjsE?WyagE0+AAy|pdk>S)dv~N# z{{FI$h4R+(pv#voNOuSpQzTOHYWj8j+DzIu9w>=9IjoFyP1p-yIAd=&llLDCy?kH{ zGPW3RYGrnInt={frF%>AV++-=_n(Dvb`u;XAbB;VAX0@&74jdsCZ!dzFaqRdgA}W^ z&ocWnMQV9YC#?^Pwu}>`=Ms3_mP1zb&u@c+O*bNN>Iz;uj);T|!A|T8q_fe!lf*WC z!jqi77VY)?aUsIT?1A1VvI%8^kCaPEkmJ_+yc-x89rKfnM=q)~kF<1D<{$dbf|(_k zS6)@HVg-`u(oEzn^WK6;*n+YJ0?}u=@Esra;TK=D##CQhsoQv;Y6C+!NU7?$bksig zSzzd6HbrwY-!*+FV_z+~Br3X>S~LD>K;K>oL!j<^@Fm=&NA`95?=Ji#di2$dbX}0p zlJ$3mk5P8jy&0aNPS|Y1?l90k=d$j}<A_sUw_+QocvifI@JHIsZ2;0bxWtj@MK1x! zkVT^T?F^Bucp8iwSB^Y9o}He++7xcAcGRdkS;>B>jc!%B`|tHDt!*W4?gsH@5Q!cU z{$DM?YrKPMMt4{wSRD!q)R~(-gC%Idd9J96jZk65g_8d)l$2hFq;ox7A}d@RyGmqC zh~-i0Ob%Uyo_J_$Q%`)m_e9lONj1qPHzhrRll_S{`sC$N_|=5-4mGr3CXAObQx5Cd z+}a_c5>QQaJyfT-Htq0-wm==N8q=~;i-H5+$6PwbmZ(l0rBA4h^@`N@PwG&$$`Q%) zM&Y<2SdE~}C8g@CZUl(V=3sDc(ib%nL^d)nKijI`^rq4k*$p`v6ChhBqg=Xd@~4=5 z1B1<T`?N8;m>4qC;*<OM94!0^*KY*{xIJI0uLh^miHG49qCO%1EQdb~YGX2&RrTd% zHCs~5AU0}Ku?%!bD!;VL&5wpD`X$ztBY`<FC*XkI?`9B(<_dqx4&&fh1f}^9CU#lv zp}o3rBdg@Bk@xc>vMYp3%Gy+rt57i~G%+~p3r<;#+HCc^FJ@{8-FC%wu`MOEkXk~# z7w*cTJH`c0$5s@{E!~mYeXTmu@4pF3Xh|r}7l1H5I!d5##U}GNx@LU=_5+0D<1Q95 zF6uIYlau{OZ`=H_982?-hK6hAK+_fUk1yf22aR9rBYQw{<Fph}(e~n}vNpo?nx5-Z zE9AzsQ?*PeX_<qCC~C=(SKw=3I7rgK<WeOY?{_@C+<Yu<Kfiu;wdbkh47qp;-Z?)k zqu_9~UuNMwNy)9>eZUjDrl_u*=5*~~=difziW6uXtpoG9gp+LXId&Nu_I|B)v2Mte zko<ulMEs#iTO|%__hiPX&Q6`lqtH4S?Pe0<yXq1ks{=KCNxM8;T%4r(+rR-RIov8J zdFJaFXgn$md>Zl}b?VRRjd`y^Ed{9&vj(xp`%fo~_s`uF?mFoFx(G$-rNz(x23v^7 zHyT*oySi#i#}GR$n0(uO0wm>(wtRGy$sZ6pWj>=qZ)w}H?n8I{94u9&3858e!EbW7 zZBtY=A0%2YWkQd6tsnIx{Q-sAv=cP~WY+~AJ!^*1-W|~fHYFrRCe?R{Kf`psY3Jkq zR7Q|5vye0*KGv*ce0^fVMgjoEz;(lLIw?UH%X$08Czq&@YBxjLGc<^;{K4SV;D<NM zUke>pmHA4|@apRv9@p3GV4Fn`pBQ);IaUyOEBKQGU}GTHBsdEj^G&YGw=8dyxYa&_ zf|Bm1;vj$sgqx;&>07^!ClIsZE2m5lVA19+pWI@(lYx!*ZH#>;Y%j4w)}IM3G+iGQ zWt~@hPd!-Tl2=EKakb<Ap)6C}Q<7M#(;w`tc@_`OqT*e}lN6X<QGOnU9|t9VZ}@o| zGwOAfz)jxZFeb1xr-B6K7Jhl3%S{L~-rcI1(}%(ClWTmr-cOxPdG!d=WZWS&@?!X& zw(6vf3P)QFJpWFlGX5$rcyvdLOOnjU!2d!24mW+Tsw(cm{^2+E>yX1aJ8`X}g8X#z zM#I_OqK#D{%`%&#vGue<O<8fmgn3W3>H-8;wSs(cY-e6=V$Zp%@h4kI6aCz}1$U~P z^mXj}L7F3lu;dLVS?4AsT_Rgj(vhYud2n-aEt?sZ(Pkq4GT!!-sIVfCIX@5orufx& z(YL89$)m4?*)8L-@9HH}Uye__YsI+0S=Q*U54d`xn!X}&ps84qcyv4hVl|9(*E@xj zq(>#q5d{9b{!4nL-;T%D_gW)so;_uM;Kl#&)Zf#?JG5W>TjYZ-k7K`K7j8dM1l{kV zds<ou14XdoM1d)qd|OhlAh>+Va*4dV8C_e4zWC~+>}F;tb5BP?<{K9_w0BwGV$A9I z>S9vEnlLPJy0LS&cgh3NYn@d=DzwN`4x9(^M9hP~9^e0h?@vg7{1)p6aNSH1#=`3_ zc*DfC)$%{ds%_Hpd)_{GOo11@WbbDsqeqP&Il$5C{o+lqfh#K<afx)|1mnuBET@nx zwnZhU(=Cvye7_@;8^=xP0)stQ1+Kj`UD$8jX|kx1vD6$o+|~4h#%~EGVo;$H;S{tm z!Z2L){M)(hQ_{FF*bp%q%%2p%#A!c7uiX6%NM|-5v+^mMymkh#X{Gs(R)q1QYP7sM zkDrf-UQ79>RPW7$EVc%=_@b=zmlR%XA%fHPz`k$?oF1LFy(3^9z|?c6*9J)W!}Io5 z$%S`d*m*9zH5biZSb6y^7Ej=NCiY4}1bz?D?H5L1XnCsY$~wGDax6x?zJeNLh#VVd zG<BTh$fr)yRJt7l(`w<k6b#7Lb6hs}B7*aG^X?H7KEbCEN#8tad9ikZWz3_9+6GW@ z>*~xU15d?NYOyeITC-li_?bXa6U969-(~&<BjdEX1!=MODHt+B->xO=g*8^Bp2)@9 z!qpt>+Wh?j82s~pU0sEdJqW1?O^lqQ+_ue50&b~ZCTjW$k7K*sIDT^Hh*2&#c2rm9 zw^-|Quz6|2qhL{Ny$g_+7-{U>)B9x+gnV-~*TLoRI^TqI=*kWgsz(2s-gd|@3b4Ol z^2q(87xuIbXh+!nyz6f!X#07;g!{A1m*4lQYhJtsRc@0DK)-+_m=N62cyH(Mr4@$s zdF`5e;9v2)yIt+Bgo`D7ntJo<{MtfZ^@jIr{L?EVpUwSvu9?4u3RUfZ%!%OHvVY-w z=T5-*24($4DmDUu=Uye3zx7WFS0Ic8;G9@meS!D}q5rXu&4Mg;dz;_=^LWlM|0tHP z9;K*Tggvpr+rNs{05FEGB{$H@iuvVvqtnPmb^>wUxM=($qfOS_@^-eU7sI0kWhw<i zs8Ug#DpZoaAgj91FbpK90S<ln0yi$!xutB;*YHO1^%aNk+dXS#p~yo}l3Xmu@_ht6 z{)mp6e!#H1@57<r7(wUSql)4m@88(_7RC~dpM(<pAZtIunAnY@hnX&3_ho~<Oig~i zZi|8bKFI{9ih=(d<y5lXx^-i9MQ^9svAIR%FSfbXW~S$JT`yYDjb9N`n{#~cWuef0 z?{5$5II_E5&`YEr<u);Xk<w*sqfRSkA42Z)8AKB6+V^u1QVIOar*&>N51_5>P~zj# z-`ZRPSiG{|zrZK7Lf3{Y=guG<jVc*s7bRUB?F<QV-IlHO)BSGC<dnpX9QS3_Sr$<@ z6x8$6g|!oNf=vep$7R9!Ya#gCDbuuzY!3m*3f<Gibt8;omKfrTiDT(i6~xej;V27Y zn38)pjJ{?%ovoqNn>G(>v*F1j8V<*2<>$uBF?zd1S5V6YQzgIl_%ThkUiW79rzXNP zK6?35lnMl=<<7hB<2S9hu}=O51Logypk)9ElPA!<DoCu&p2ku_mOwGR!NAlEHY<kf zhZ+n#dBP`y-jVGi1|os%p%4RO5prm&;74rg%l#t7(_ImTy9tx_LU+Ep@$v8fc5K+O zsa+KQuy=9{ih)}S0(K`X3mt+Zy<x>>;v^4Ut1Y!2Ds|Dylc0gEkz~2(dr}pjKC7}B zvub%Knl3>3S^^)0!u$)rLtqEc#kJc_{-~lattX`=W2aP`Fw9i9?Ea_&d5+u>uZq8J zJ8EV>FDzEEWYR2a^K47X{h3?c`IIt`A4e%kFhR66jH-`SjB7+lo+a}lBk_pF8!378 z(7xC)w-Fi2hNFMju$nO5c`f;(<MF5Q4%^?Td}9W}#SCUD!+e(;pB32$s!=i>s;};1 zV1_j}M)~7Hp(?15mgWr@2~L~ma26gEh+N|{4+?(=`Vp6DtVXK`-_bsWjGU}jLDbb` z?OTy*GN=~2KOMwHmkYk*taRpNt7(r7983aFnE_v*XSn)^ui-|%A#t6cnWFiH+U~Bu z&WvXT8drs*!%~!G{rs*c`u%ke5;FJ#PkBUQ%-2Wmo?A6e;<XN!vbm-aEe>D+ET<hG z^z}Cbn#_u)09TqWxFgs4Wppe7OF5?i2MLh4aHXQxw`Cu{00>zWYL#|B;SYp{FLQBa z@P`$N6~rJS8|&#Lh!6?Y>J}|(De)*BpOZ>J{exBcNdk!KcN~~Swm<Dt6$nn9j;^u< z)p(^mEm^XIb)DUH9;c-RJWGQ&%ZCV4*=MB!^5VUgj^VSlu_l{B`B@Qb{qHkGg@X7? zDQ%`8U7z1Ml}A76k$U+JQE6j9saO;S&UUXaVou}}R>ra;%W0^nDAiVUibi|<t5h8X zNW@a5YI%yfjLahgyKCo8F4RAgRC{g785Afb!KbBc@I-Y7N1nTtf<CLNLyeyz#d!p% zLcuB{AGD_+j<RM31gsB;^{OswnMWPMX<7i!^`s1L&ppOmb+roUNE~jyto%c?PQrZX zf<4WG$$hWb){2#y3(W(*&|{VJJcDb7^D(nGyO%9*SD{eVtWjYi3&_p_-rH9ivjJc! zg+4mrJADR@(b{3nmRfTCxTGShE!QaCsGqH->l;`m7aKi<{<D0^Q6`RB+tI<1ra~lt zC?h`r*!6jS3VoY+rwe^mJ`pn%9mdMuiyrFdW{u%3+8u)B#&Z)w&v@C9`*-;1S3{4h zM!HcJoMb6N)_w{DoC1J(pMLn*4t+(%gm`=lQL8eVeGvD9E_Nl}%CV1>W54jYKF9v4 z!lg>O%|3KxW)}Wbf>!+FvZD19$W^}Tq!RJiYbv6+o}n~k+%%x!lJR?ZBz0LMzg^o= z-8{%s;@6n<*Q$chjt|-jD&}as55PC2LrE@R9opD)9Ic`V1fysbR8xwZ5`Vf)@BU0h zHvUdh=K1_0zU=1b<0;avgFjhQ&0)-Xw87xC!^;}yTn^IM&+f^B!O!=ON15mm9(MLi z)@loy#<KNidjkcQf}#cs3`ME`g+sK$=p)q*1=O!Y2C2B_VI9fCCPmb?DFn3v7~46` zZ+ABQ-VojyeqVNr%tSk2c8fpwIaVrMf6U<pGA6~&cEHIMX6*W(oA_JLa~q(0U%BCJ ztp)AQ+tYn*zG!~&7}T6pEaUyw>>8$Vk50UkaOxZ*qLt(vjvG@`6EC7SE*-PsCbsUw z%Kx})#Rh*_ztCjr?K(fDoE#rus1<_Y<>`ci&Sy-lW0mqqtA=USmwZR|NuZ5ZwFfrC zU+<-<G^JxBq}#v9<j$u)Ud9MoeYwl+_xxSjqrgC4KxdzB1g7h2d%%LbtrDtDs31Gc zdun!R*hO4(oF?qAnTC$oc-i07j+wBX9#2J3zkUDQacSEiv+WW9G$ugdE=HI$6{(`h z$Uts)Gt*V1t^ruXT7G-xn<^8UykQf(0+&9_%<9zhT5JbR*X$Mt7eT=%R`D_S{dtv7 zrY<u3k|!Ub)=LZrl0e|@eM~gdX1RX-IrPD?5vBydTrnNB^a#T=QYAKg(p=ry`qL+H zeUuuBf8Cvhdrxi0Ysq$JVI7h=5||GxbK+RwEj9ptQPAV87oo+ovGZhj|KfdDtDTdJ zlaK-dU!@sUd&jZw>WNl0HPhzrHxmcyyKDaD6--12#obTSH^LvVD(nq$&kKSLU;`HM zikB=T?|icEt$wvKRY8<WY7+pHZ<n<?!B|)PLe+$=GUsbX1^eG`E$R>B=S}|?5>oYV z&~j!AdZ>$oeN=vmd3-=>^`=8;vN~pXVRt(i3|ep_ULA~>+agqrW*Bf;6~5y4FVMyp z1cdkXWoMLCb{eLt^i$k)oaUdcTz2*vg%{0+MY45pt(=NXY#lW|oZUnoe?ZW=ogF_` z3@8M67&+V_Af&3QLuEc>nfoj{^4r6*vpi$tuOb-Z3=D%qb0I>MuFq^_P0%yw=$b`y z%2YRtC&j#aSSM2Q#Z*Qo9>L0${8_5W5ue-}U0Kc>Ui7SRM-XSX|5ZMLq}9JQhqL@l z<9oFYXcw(*rg7+nPq3*~dM;U1;5KX}<*4aCG2w^SJ^5Ojy=XPLoWTWD((wS5j$@Um z-Q=tcaFqS3?*2zRs4)_`#F~+JJllI{|2yAIg;fZei$J*x@>p+dh>|lh+Tnf^NVHph zN%lqsZ?tlUC*Fx^8?v{Hi$f4cPfW<meb!1fMZXLVnv}z)01S3rMK?xf?our~Ov5xW zzhyZccU+@`pl6)!-?RMQ1Jow;%3q7(X@|`A&2%LScLdCsbGjfdv`@RS?Ds3^n86)~ zMTe0|kcnHk7JF|WFe|fEfR)$SZ~j07ZJn&fTvCH-R1&YK6E1(NeD8bO`uUsK`uUXg zQmOKlIaq$DR?kY>HlqaipRZ2ewENvp(*>^4)rC1^TTN!y{KET!p633C+9FO_qJ)FV zs@saFPqmN(HMs%0kQcP}$*8lS+@k$jS~dA#K;J_GUdf_9&70;$r|Zd<m2<)^kmyg% zt(hOdEnjJ#rZ0-AsMfO|TcfEM(zjz_J@+m%BS3dgDp4A;0@8%roC>wL7|{8CfaG>s zx04DDX$4dqY&t3tPe-dr8GZ>DXuri$>rJXkFLeYb=@PaZE}Lf+e?2QGMtS<2j+;EZ zI#Oke%UVJv)J_n9ib;dU1oJ206+NJ40&0(sGYGEs@<+$e*+tico`j1G!S!AQs&#VV z{eu^ZZ5{w}t(`cKQKU@WTM*jfN%Xz^VWP~&LB&XqtAxMI`j|>~Du1eL1~E6*1gG2C z#c2UhiviMYhMmj>VqT$FyCI*fS<&w9{hR;ey`5*MkdkZt3nIB5+}(zqlyk~w)uuT2 zC;z^%{|j*h6?K@V!SQ0^pjD92?k?{_@d{Qj&^>uqWY*c|fLLR!?|UGSS7_2R2)|3= zPXpPwSSq|YDbpWS9~Ln{)?)cYv9t56V|SLA*<kRa-Tql%ita0s?*tTFvGGsyY=3RA zn?=9SQf8lFbId@q0sDPQUJK?;!dPy|XyI>$m9ZFwb6qn)+5zl>zQB@zN~q%q5bKxj z{ladh+pmgd=gR8=VCD^OyYMtAME1~l#m-H6(Q63--Wboq*scYrdNN(J0AVu6@X60~ zH&w$cE-j+~GO)eCUW#*^1Ihc4v#z=#V#edgTueEj{*?L3b3EgcDYM&%JT<Fb+j&1P zHM7uIq?$jAfWmJw`w7>VI2L!6_gYBWyl#j%jO#gb(YQp^Fl*EImQip{gvJ~9N{pL> zJz}8W5CQ9LaL6}!=BFZTD{%1BG2*)rX%P?x*)btC>NxDQ0LFC<3Hf1WEqXh4i7`^{ z$w|xik$RQd-FUvI+L<8D0AxmH|1Uxc0{XHA0S6|z*qe%3)MxCh+B1nS7xffJUqZL^ z%o8$>Dc6#5Fo}xHJYZM?y+3vwCyPYL-N-)Yz~eS9hWx%%KolmMiy&xqb6WK_9^F`9 zTvUFYn^A?_;Jk(u-D5Mr`6J0cG}CC_C^!i*>HL9V*<@>-D?hhNtSui05NUKWJi*V) zFv_G|23r;M`LgN`v`pQym^`|4-1DiD-!`SYh;VddaYfX9kqNMaxiQ>j^Aq*5IT1T+ zW5?Kd*Fk95c9V)T5k9Iv$ChYj`+;cUUke(J7aG#>kG$M=mU%ZFllK^%CqL-cSoBO3 z`M%OLryH?AmjIkn3<K-lt-J%o#&K)CHdUTb;aamHpd!NNc;i(Ae4<LkA(qZ@VvLT= zPYykGnlN>c8s43_F%T=5J8<PGD4ch-|KGdGzYxJd=`S!%j#KaPnDdTz_LZFxU_|rP znKlq$XPLim1IeEd9Q)TP(uvTh6QWx!9?|^;8$Oc;r)B<Hx4kT-X9y60AmT;tox#{o zhb3$Do_8~;9x&wW7xXtUl<_){S*pBz;E+&5pJC3wdDTI>OU+21G=Bu?dXB;Pu7^k` zY!{#33jb1ppy6QL5zyYRcu=AOFQ!r%0;yr+Hkj&I%E_;{-SqBy)GUi?GBS&c#^KGv zBMXs7%VY_UBn-yS7%#!cR-3tEO!!FcCh`S6H6(<*f^ChY^wJx)1-xFs9TI>lkt+|~ zYo=zv{&6{HXhN%{qg%lF7)PcvNX$=9x5P6~K!M%;Z6lrb^;(fkXRo@HQJ@0M-ZnJW z^~(B*Hj!g{Wqy*WXeu3Eh2Ot(Mo`1@w(3%|kwVICX|%!`NIZbNG3`}2Q4Wm9V}n6M zbkT`v1hB(3{dJ!~TDz%5>J{iG0glED-P@Y;QS>@=nTbPx$gnmEUApf!ZMx*m(m!e8 znmfZz))m6uR%Ykm<~Kc0Jvs21YhZC=|K8X?f9w{xU4tV<D1zXcbtdJ&Tz@h1G`}Sf zyQzAyTny`Q{|ln&%26<LVq0oNE<EXWB?=$>S=s~WuzenW9!0n|=ggX7!B90yR6ju@ zMS{oX#FNXP5fy2H1)mo6THup8^%Z`$+f_WOV0db+mF(3x3W}Jz`X72!w0Q%7Y8j|~ z7VXRdf}WP73%1ULSzBCKu)DblU=_h&5j@tZX2{!ITk!=H$JHDua1-3BK~4|)>X_FA z&zhL|N=zGuokk6uJ?5!0Swj!!wqV0UONVotlA5YFo9sij&tv}v<!~$MFVoGV$M`Dn zULDY-tz+GsrNv2zm;j-LR|@3HqW!>aag+X0BW1t9F(Ex<^Ax^!<yp(|i>Jw>UMdhx z)ZF$dkbGHOK7;|G*X_1Ggqob1Lt4hfq=?(}r67v#UW-Wb!5$EqzHSgkR87Hh0YR~X zJd6g$M)pa^eD*WI0-!CuTuZ*IPzConwR<4QmU74Sc5@pvdk$1_zm$D<U6i1Y$jH>~ zN&YGHS(fIa@3rcb;!GrgASM74Tf{g?5Ukd0r4JNlN4At<)($4mJ!+lnqOUg+Z<vpt za8r}jYbVfW<v(yJ{P_;3(u8FK5GY8ne&?9xOK+}S=O%plRFJ2M0y$lrzONmS<9%E0 z;gaa{<@_NSAE~v;c;&+RSN(Bc_@Y3Tq_=k>npA+(qooBVtvEQwi6Dc*RH8VML|hms zN(WK+Ka;=vHpZD`et$l=4hYv4^M;d?s>hyuT&t`Dnkx{uqwVcWlw^~G(pcb1NQdlm z6bL?|pgep<c_-c<6>tSvrtif|vfT&lXPe09KXHmwP4Y)%yFPw=2MHn}(Y%STvRfZg zaKHY5gqpTq%I0d{MR#L)ktGoIS5e4J5R+F|-iY~uMFyCBZwaIHZA8cvQ>Yi#w%Lu< zvbv0$xnYDEab5alfRoYdY!VHx8qQwolZUafr2qk0XE#eCAHwyV_Jr$tAeSEiZy4jh zQ8jx)RwK#wn|b*F+Io|{DN)>{t?<4w86E6--W##P8Y1wgQe|b1QqvDCcwagK@lNWb zvPVk=J_SJl3zHTaR0+uJC~UH-#p$#~K~%v|iQk$eT|jgVx)0DiK(?7>Y)s;|h=5t9 z9zXhSvr1dCoII!3K{}q)(T(ojU#ZG3<hKI&Y06m?afGp(^HtTiGl>zwU3aYq06yH& zvFOxi^fbw#<dzZz+KUN?i+g}b(c5}P!!h!(>{G6pS@U#<Y?b+EHnt6-_%m##nCyOo z9M#5YC4bOemnSupIO-q1{Ix^D&%Y#YRj)lLj)q3qfWg0wK!r*^!AvDgG?ni_uCD4n z4U|CfH*^Wos!N9sNrQ58#-o=iFo^NKend_`>8<3*VH*`HEqC0T6#fGy5fig$19)o8 z^HXY0si?MQm9OJX8j^B)HX@8mEh4x;4T_UTWDf?6xkVG8wzul79?TL2)%d^kLHm8= z3$$(J31Sx4Oas5i$z7%g{^%*tYr)9>lBO^8;XVwW>$4>;I+zg$5_ySiz;|giocYxF z|GhP0EsdZ#Ffh7n{QuPc-8S1!S|4=820#M{RG>$Ha9_8-kZ}B8iSx4?$-iBunAm@H z{#CAM|9DZX;!$u7s!*aOxU+r@?zVCNqiJGx-Fm=g@PgEg!!h)K*bK&6ZhLZR2jPF1 z9==W>M$dd+x%u0j1;0vo6aH5^|Bow5(YSXz+-}Vpg;>x2Iu8H!^I+kB+#uM#z!kC4 z(PRA*#P5jUMprCfDXq=$QQM$u|A~u<iTw*b1r8F2;R<kC2MVQJe7CbNyFDPxYP)Et z9T)6%qX_U&DC4iV*kWYBys$Y4cx!4T(^mQu9I6v@nL>K+@)afysN6;8Rpg9m;TNzV z^zrlp3F2WQ`Uz7B-8cYhqSI*lsDs=>s+wFIwM54k`9A&V!6^?#?YFu~V+YKhSN+|? zU`O*eNca8p<(WGvKs`2X=7?|hde&%9kDNO;8+UHiRYH`MP$Q|N>=NLvfurG#&D%;R zEqN_l(enL+J`;CPJnbR$QcPIcl~ZJQ7Zq~4>bwhLu?einKDFb4V)5w2FX#Z#SNYJP z<7S|oNNg~$EJ!)CWTOpaJoRTi7%k_uan|H+DuC}!Gq@R6op1N0MuGlx$_V5DTL@=K z)4LjHjp2*4BhqtVp)`z0>;F__MSiPAjg%$BxfN|U^=rGX`B@GtfG7j)20_SUbOK$) z7p%IS6_#$!5u&8?_$OvUrNTH6U|@_I<x}V8<v!j(Nl9>rkEwNKFA-`st;ipVe>~!4 zsnB;CMV53SchgSK>U;d`c*pe5@lsuX+a@K8jWM&r#eUwC!1bDUa>T;PGlB3p9wM7W z&@#X&(@f!FLiF&wnkUnC-?ngvNK7L}fo`OLf`>T+WN(<&A^s{sz#cMS!UlQKrdl_y zgwy;i98u#%;q)npBBu87X+1nb`y4UO8R!Z$Zl_Z}4CM(f4g@l7oK7aBz@2_^<gPV5 z<6VwjLMkcx=S1WDHz+&PgR2`p_))G;>)x;iaX)c^?Nfi%h(HUioqB8n=;fk2Rs5!c zwfUowh-Q%3$`8*hMOq(bR%asvg@eGUH^W^$Dr!JfpZVN5SERn^6V>o{?jiSyYhp!n z;YajB9%ZMNc|b`*-R#-8w_Ef@6E)Fj!z3j4`p+fdaI)h+E6sE{IUX5(SwznRi4{&D zepjS!{(?&s=*L0xYGXrTaDXe#KJ~CkDmc&!;3t3@yOl1x8fA7H`nb6-qz@xN)zwVK zY$QPZ6h=Y*3E=rQPjlqe$DjSQ4*dx7M6iyA;S!+-je1u{a{N?QPA;jbnYRZK3sCcZ z0isBdm46%MOaf2`QO@Z5Nr=+&)XAk8?2pN1STFGw1F+Z^G==d%M=SubFVH~P**h-l zD?Aw?Pj%<x$6Hut%5ZJb*iWVcnV6WfD3Z;O99{CH{zK#Z+oih;PfscYO){wKBRC=P z+h~md<+Z@v-qGP5=p)K$%Xqg^k0~1o9!S43dbPB`z8UHgR|lGwLHqb2+W;kSAjpqS zU<&1Xa8CVj1o|l|glnIW2Gy_vmRh^xf~0@z+lP#}Hhyi1NY`xkvjIbaXbv(Ev;^Sq zPD9Z=Jn070Q*%_amK(Tl_4-+XI{X<o718zFT&23o2YALR!iiy}2;!x<)Sxj(OBQ?} z0|dl<E%huR7hCI#RAu@3mgYWyB?qEiV3{#CW?ypC+xHrG1?l?N<`&>E2r^xXC=|y2 zd^A^(f9m2)#l(XMA|ZHOtb&?WkYD+Sr;La~CU$8~v*txfSuP74-85C$cItT}KdJx* z%HhAfu(@*AbGLp?e0SfLZRX03%yRcAci7|$3Hhf=TqF~9b*t=3Ot9m1_XCVU(#7r( zqMN%sFcf)jkVN<7HxRp=T{sz-==1UM^I1JFfIzAt{}7eu!QVEg^Q~L7;dbBp7B_=Z zsj6=G&B?rE(vRR9pembh#lJuqmz_cgk<~={gB&2KzN~kp+E!6%uXnUUTJHsPD@O)A zL6P7le3(aYu9jk*_1K!C+6F7}dw(+yXP$3EMU>iVo<Zi`(gzx!5ckSkRDEJ&nw6Uh zo5bIp-66VYx%EM<^I_UyJ>o*WxNQ;O)16#8L!(k+d2aciOt0CKvH1_{U7vu^QNr1s zCQ|kXq>Hn5xzu~Iw|ioKuY<7xjxz7MLs+!Ke_*t@<6Htwh}zwp&*Yp=){%nwLLJGi zD*qYOlh<p|iv^Po$k_N?I?UC=zA$(j)d2_B(z@1#!t5i}uNTL$5z+CnTfYyk4Uf>@ zpWo(%hxu2jbF{iRXIECk>SA|Jd>5DrA{LAa>S=uE(cviAhFG*<JObeoDYURRN_LxO zoolHe><Qw`hYmDCc5fJ+euYlodNuZo27#)#mw9{===T%m9XnTy_>Ve?7dKZ{Z00B% z&XW%3fT9Xlvc$Hnl*~J~t-b2SUgOf)(tXGO+5yTuPK>w!$pl<|ukS!NK<jjy-LBs3 zBwyeX-G@N5KJlbBsk$OcMyA7ne>@PYku&iOm14dW8<1>8GQhCraX1twi=YMEGnc=1 z?4t=NpU&lgy#PnY4e1HoKpvbkLJ$}<gbGBhDpX9guUynM{;SBwB#+m++Oe%>fYgA2 zCf`HEs!qa&T<i|&A^^VVGa8P^*Te?O#=+hC1hhF21cKMo)fYEms{nl?@3@Eu`7Mwl zs=csfu!FlE0f!ug=lbjSv*6A;9rjJPa_^3g>9qqv3COCYtq9jNIh^?@-W18)`E)CW z2g-*FX00zfzTU#kk$<k;cANjELc(E+A-O}(E6jMA7({BBb1b(i&~*w<2XHU1lP_3V z+`lUU-Op-zXiNXjEPWXz@)lJZ(71Ih$BlCX5wdH<zr22J_(SO@K({Cci<<z(s!O|W zlw0W$z&?Pi^CLosfMyWgy9FGbxxk)Qr_4P{T^xMzb)U2oU?BnG7OYCkMNRN51oZby zsv4X$&(*+D$zBm;c(l!)UUk%Co}TLh>(S|Aeg@w+Y9I5K7GCwEmP;)PLeY`my?Xhn zgjM}q$$?&V|H6N#17P&B!hBHlm#-gn%<ClKd*d~pqAO~_mTA+N09VA<;JAG!kYsgi zJcv;oEpAd@!ImKZ$?kZhLw*msWq79Wop>Tl3p7zM-9DdVJQu%%T7`LYbi?g_vA(;^ z1VfbxLA%vfzwDS0&1q9rVSMm=4Tlz#Eh}>2LlBr##O<+89Mx+hQsTYUnE_Fg*GLxH zjDTUvVFI8K!0e6ySH=I+6{uvTLbe*nkN!V(G{N{q6_ERP0Q{M?kpd}u(EUVBc4dK( zL(+zvtK33G_0=6Oko&!G1sT-dSW&oQdh6g;CXbXU@Ohln##Ea2Vcz!pD4dl60vae( z!P(-b+b2K*b~{=M9md!)odF|stLl|HsR7NIwKdY0H3=-ut(gkK9}FJk?wqIRG|~EN zBtkO%Z`DsL|DvE!{$(Vu6umeI6q+*F132y=75ei5LxKp1wE%m=C}IRQb2VODhB;nm zmE0O*5uTkGK@AyVm2rKYF&J=>71}BKp>?|(w%r4wQsRgjfM=(OGw9-&uc#<5s>uof zPV?bw7|itOQ0DtndW!Yru(z#Zi>{lyxK#K5tK9aJPyo)OPr%L@wuZ~-Y<wotBejk( z@%?XN;)-WiKena!x+~^TbuDM7NJrl9ZZ%U1oZjiCm1_jLZ^%m`^{$+IE$T^6VlaT6 zp)KKr+8-v6%|iwOwmTrLcDmZT3x-wELmJo}_TBFS$iNJ<RQz?!Djz9cB`9&eM&V;S z$kPARXz%UbwKmt{qnvi6yj^j(>g>cn{*08PU_rD>x5wfFpy*VeZ_1E@<uGvb3C`LO zWAd9T@Yd860a_=z=Ur~hmrwqYEMLpHH&l}0BO^lF$q2gO*k-4?-66vL>f)limSjb$ z5nKHJbzp2h38WrVAdotl0u06bhFp%Pa2RY+k<9xY{*wOQTvy36z~bs1v*9sf{yq{1 z+kEWn41^O?`Vl?W96(#g^04OBCm^iZreN2ioSi4-rxOC2H{e0nr(2e5wT<_qZi97) zO*Z>)K+$MEEocT_RX}`Fv%!T@T;f2CaymG>DTY=FLOCEsm+*kGzssaGIQw~5o&XtC z%X!9WP8PD(InJuvfQ{cQ(q^|?#~TK=5&+K{KaXua5Zhg&>(${jg;$E@#Ku}be0ov6 zoq7J<gq?&jHY_C2k5-eJNz~nx6l{L1rkcfU$FSjy1;Ac@S_e@Am(vQ#6c10K+i$VA zv{U`#z_8IcxTOiIPjR$*-BbX9=a(^HDGon~0?b)ESQMOeyWI9;g3Tq^NKh>YWyC5% z%F8+KWBN4_ZyEhD-p|c$vr-e_9ZI5aJl7F)R;sx5Ou$vE2$B31E#jWz6;T~iYMMg{ zmuqw>kAF!TF)yU=x{-VEN1V~pwSIz<K*Wt2$%va6uKFgJvf+26F%39ID!|{>TTQsW z9*|W5P>7407eC`!$+$z(w0;wS5Ef%B&F~{;U3@;JrYjJ*xsTf5eS6PFvLELtAms2S zy>teUVWr2)=15z~-w0#ETMt3{y&n~S0YQ}UbzX@xCBmh1-@gs0`pS?S^Mu(G(%E9* znhyj)3xaa-Emc5aFZ1#qLSs9JYtrLKjXH4b3BV~Vv($e85Ci1p+>1UlrgXP=yc<K< zqu%)W4}|<hZB(G=34ECF4~g?*L@uR!7l^7vIfMmde6$&=vfI2W9r-J_%Hx6y4j^3? z*LTv{+X$uHAsXKrEq-;o8?YACmEcEU1taZT=#E5C_i7z)^77H+0!FITD2~u+?esl; zpf~dJHbNtaL5*Ndqe{-cToI~h(8Mjz;$d%RpIn=`5A@BSmWfIA!w|gy<3Qv4ggm=I z5IVh>^Eq8ObcVd<=813h4XgHVP_WstM=Lw)O`HJ4s;H*u&J^1dpJifpZy2~&U&8Q8 zfk&3I{uG6$rp9^?I4Ab=B+uL7=RLqeFq2=+Dah@37l=QJy{-h@*LiiK`r@naftowa zxCgPXY29|uRK?2L0kevRg((DBB&X<@`)j~>fA0Y^jL*&tVdsZbK2oDLav>*_l@I;e zT@Ie6J%Ne40Z&qP@4oTLi?&4`7hn&lwOR-$#R9S-r%gKu0s_$!rdXO)EqaC~KwnDA zQ1<q<2-Y8=xz+J4t}lK#jHVwfcNv~}kn%gR%d8#z2`V6&Ag>G#e2%_&DgmRBWNm5^ zTaYvUb@5ic1uAY&XMkyylRmu_N-FWnuW%wa0xMhK`hjm7wG{G1j*}Ms4#tBvzh7;e z)3kD7Qw0|D?m{4K1)0j1(!9AaDkv=r{sBPWfZPDa>{eIeAnDdkh;nVLnWhMsaUNyE zQ_TOZH=bzGtV_mkocmGCDP*wqY<ZF&HGO6DVjbvR)cfHl`!;gyQufhB6(VmxZ$w9q zj7^W*qs`Wyt}EbOBP|eIqVMfHOoc9jc$0^`JgeF8f?4|(AOp_S{arUbooJ@^B*#gC zH(E!y_qozu#F{h5u?g3D7F8-&zbkq5YB0Sz64ZawQjsL1fI)?HUgb6$k8ZKMt&z7f zzwTPe1_Tqq?h4j@XYx%O8Ck0+tagy<zuO@+uZuu`bTmFV>03u!AT?Y^5-btjGoERm z;_^8pFJY7r!Z7`5d(U7%no!s=vH#v;6QF~#BC<tnr0EO;UJTDoernj=uHk&WDyyl4 z{2OTc16>*Jy=xWIQ!y!yKKYN_c08ea!x(79gaWG--@6*o{n+p)W+U&jPqIMDt?y8I z9nTn|_1ZQ_+1{q~Vm)t|s(s+Z?MHT2^T7oUuhuw7MY1-X1@dCJVaoJd#cIGyiZpZ# zzKZ$eqZ`7*{597m>9r4MaFc-D1g@w2{y<|jPnT-G`C80C&d~62?v<M*c3MphX+%Vy zXa8T3r$Hm6r{KT|Zqzgj6npw~Ae>5uV`b8adNrWsA~fb7ypioLjh$-S?Axi=g~3gD zK{?@0<|t1$b5?t)VJ$`W!uo}7-{yPD+3Ha|7MaOM=gRgED5uA<L2)k%Nf)>*7A+Ip zQV{g{_6TBmy4GC(+}VcvmidzzQtyp&HTfC*W9gl{k2y*oh?A<=KkIzUu^h&*fYRA< z58BX(*U-aW;{gXC_%<+zIRSxhO0%wKE_3s%kfydv_;n6;h+Q05QlnGgrIja3hVLH$ zi)1wu(XY~}1lG?2^l5!Ou{G5ok+-Tb$*n`k^~FD*x`87(hK%S{dT&fo1q;s(Re;UQ zoP6~|lxlpCsH*M2+$8buASL8FbhuynRTCI@gUn=Bb1e1`2lu~oX>$Ud`UvM3F88;L z>lxo=Am9h0xA<mniP5?@imEK$$>B=|=_~(I*4G{1R5-3RS;yN~cO-&Cck6c}AHSK4 z;ws0d<FY0qd;Stlx)SNGG>VSys-ON#tf(g&+ROwa&qm^7q@%s%as9%cJwl+p`=<SE zN&JL0+3wfJyT!-u^BNkC^MdL;?y@-=HKSjyu9Ou<GyA!(>URgHv0xsjS3AE;7(#`b z_zoPmY-~4kk>*P#QCGq7fsM>;kHk(aCg0ZHTrMt0TFtqQSMkw|8nZLMys=MtJH>AC z%$>7ERP^Yez)kPRCY^_5IRUe(-N(%HM2(@j=bI-Tjt!_LQJA{xHe6)z{CpKXy~RV~ zIAvAU?nNsZPpbbOA{6<E0iy0CYB*1PL>Px?I-0i~`NO5Y_-pRAea_`adBx>AgeF?0 zX;6IY<AeFNs&V|^C0!(L`>HX0WUtJ&x8v<Rn0pA(+;hT_?~&X~DgDSb?5<Q`t7|-A zOv#70wdshNU6!euOhqLzJvDWV9n2lSoaezmTHBLMZ>t6`&$9(WhR1WfnN5p&SlDvd zKE3ZK@4&5yq+APb<TJPrC)Vy4D>G?kv6h76GbN`<zaINPWu13GQ%kq@u@{bDLj(jY zAcBHQl`fzly#*0MJ5oaLJyaDrDxd}ky(qneUZf--NRTcq0U`;Cp#=yvp$Pc~zkAQC z@6DgE_s(R`%v#Spd-nRhc_%MA0H|1EtRvdLs90Ptnd8rLWz8+?+1flxRCbokN^`Q+ zEOH$Cc|>FZ6j>KFdXnmJxBmhnrDV&*``)t(t$0FjvQUY-q48WwQR9$}W}CX#-RnY^ zzZ&d#divaT`%n&A%$@tCG@wMJmhg*;Wxb^p+H|ELm-<3_=FT>HI+Qo%K-ggQ2u*?z z3}|Inql}rpmfPhlLr44ZrL{pVWvk|UR4f82Ho+;#E$Nd~ne;+paQba8ExHfuUs}nU zj%KN3|4SG=lY;-;+}seJeIrzMV~#>GR8eVNWB<2KvsK6Y{TH7UR>P(kVRdgFk`q+~ z!wDD-9I^^=<0DtcnJ}@)_3nMm&W2#?ltKsRT`^KhQrtCowp1pW>nih!WBo#2J|CAg z0#<EVn0l)UtyCX3DyuY_eDB>Yz)P27M`o_&2>6d(F|G-GA{0>2p=wnB;ub=B!-nO4 zl8Wv^$nK>eZP%LRdeBV+0S>;~7xAYt97D3OUflq+TO0NmU}cGi=hnp}Ay2vmko>5q zp01h;mM@Nn@s2hsA=XyP4Y#(?4QDxcN=|InsU~_A&V?SDbwG|~iWS&QaV4iMrUSqr z<$Nw0bf7ilP0H+s*f(ffpWIY^;{{FoLBH<zf`Fas<+DJ%<!k_|ieZ~{2Yyh!&Aj9I znP9tSUJp?33)%({xC}$1*r#sCd>fXz6S7|!R*leLHQUXW%oDH2-O<a$)yUV{$2WWZ z(xzaR1Y!ZvLCE?3{bx|+1gd4Ro+f>0-{K3&`6<}wY~K4>&Ov&;n;hiC#N4EBgU{TM zps*#zEFd5N$yi)Mmz0#~3=a=imSFy^${v;z!327!IJeh8+WGc9wR?|*1UDb5t&+E2 z=guBmE~G9U?yNyAL1a?gb8CoH^sK_W8|tbLG*+IKT^;jER&hgAk7e+=2%5TbtTuBv zZ4>H5jr*Yq39@bR78n=T!S5)FR#dsucIV~E4?#aS6A9Hi2fw@&6>FqMN4~ugKY}gQ zEF%c_@r_Pzeo|ATU?01|8~u89SbBSWc@s0Dt!?h<F3R7^+log@mJULYDU?L@$!~eb z%Jua*IhSif(C}5&uJcnna>i3s4})TJJll^VbggdWO$c}cs&(z1L^`cWC&8&x-igI1 zS|+W~B|~8%`E6omV*Z0k|9U;^cYWtU@4#+J=hxnfAL`!MmaY_;V_URY+q^0@d)&X& zP4oNvzZl={uDU(@F?z(#&(#ce(3PJeCPqaU;(T}PsNqaS$BXaCwtAY~?(yr!JJZA6 zm?wM!q_HsXb=H}l0kPP{B&rMyD(Klgi|AT-_}SlTdMV;K+FZe>%<su2+=WO%<i#(g zap8LbM++&E(3R8KsZm{9dtFS-(6_<-_T<O)@bG;nSXc_{>P*ngkW2rmn9u86#iXhi zkC)7EED70SX4kWDtl;;YDU~QraytpI@0u@O4JY_6h{yCviO)W|A3tm1mT&K+gaNoM z%g~v_S>q_aoy7$etP_c80QsJ*8j)}iUWI9-NKSqwPvJNYW!tq}cw!o#B2lpQx4(V9 zuZt<HKnOQBUZf9rTU=Uw0wBbbK2SxnlqV*Z{z+F1GDEnzW6#*H7?Zm%1SKE6#%5=F z08vyS#>T#IObWc^6TE|Ih?0(xPLuKX^&D}=Z8xtuS0GON1nY;BC^$0tQHz<K{x{s5 zrOK5n#x~t0;YwYb6z0`ve1jxvu!fD;SK#21Fi1}J<PrP3<ZhMMxZ@}vTHm1L+p=Df zyr{BN=}Hwt{-M5vE#Pet^Ia&3{Xac}#tL=l&aZO!cw1cOIUjn}G8|(n_jp^}r%FCA zl`YfHRJ%mb;gj1^9S@>v4`RB%m3(<~lAIEv)@`&>zlAdT-o2f9@rriFs7IE^yl;ci z@Z5=WxTKH<-x8>8P*b<Eit=7d%#F*sse!A8hK(6F9o&<fUX+e59v~eLqo)*tLLR%z z>Mkugn<z0kaY&bzQ>uE-=i7OPJ-I^VbeHjYdi_ZL1NpMxA~L<@C%RWltL&#j=z2Qq zbp@HRI~M;GrZXvQ1j6Ay%ir(E$HmQjd8Z=dJ@ZCGL&F>V1z0ox`@x?CxiG)eiCyaF zbe}PGvrM7U0eu)-<WWb)O@@v-J-aUiH60#R%>1$JXqwR!9Etlu&M&Xjl*JWSLEgh1 zNlINX-qQSmTypxC2U?Kq5MX>(m(HiI7#da$pKTFBl~h(C#gAAXe*WAjE~z9Vcym=I zpw5(FjJgGIT;?M30C#o>evX>nVD-$*8NtKoY!xa(;p^&EZTb1_TUX?wW2A-StIS+$ zb<9d63x9&JQPRG<4fAPyuK|6DgzgWz$s_H0u<2*DQ`%9Bx^Y*d+A27aEA(7&%%$pe znn_8l+=88oigVykH(nfpJY9WNK(h_txEKK&iCY&`21|nLgY_OlOFw=)l_jyN81&sD z4dte15)EU83Gh4KfA}1kmp7MmAaaNG@#?{MSKoWGI+Jp%1El9TmgHgwC49!<W82Qt zGInXY7uTo?o{_klT}B||+LF`<jW4ANdL3!`8fPPIE`l~O70K)32aj;7cH^^mY>Bj{ z7q@+bmt&y98P%g_A+KJ=3}o@533nD}D1(E!WyMX){Ii6N560{%$>j62gD2^!H-;mg zU!D935%z&Whh1{b0FCR^-+ylr^Az88X$z0lg;eXG>J`haZpqke_zn*-anxuQ3Nha~ zFvrXJaNgg43FlK3e}TPds)T2}F)-r&l|~mVmrTPAqsy-?3WwB62v*(e)0Uf0IvwYH zFz?ho`t>_CG=@N0%K6kbC(BsQbHKaCuH9q}RW%ZJ;pA97_#7G-7!}-ba@)$^TTA{a z3;#$K8wXD=S9@q|{gK1#V+Ep3tI2&btAmEZ3w<zC!IjTB8o}SO!iene#eeO5cjJ9% zqK$SO8;eJtES>*x&&3p@1w_-<YJV&?7(=3j25cyyy=aXu#l&tj1)To9Na+XUNv3;x z^2?uHN1X?D6a$_6vBj<~#>R}WejYI}0Sr!|vPww?f{vhJO+mp;nAPTBgq+g3zV$;$ zC!Wv+VbI4_QR{Qdr^jnTqEAU`ynNArfKY2%B5iJ%7aHvFnk?^i$Dyyoz{OlY^U0bx zc?%-F-R86nF*TR%5;!@Mk^}SZ8Z%P0@3*UTuntL=oSNpqH~Q@kWN(M;OcCl`H$_3V z)kGX07=*lWMGeqbKuzX##SX6TT%6oSDzF4+$rL2aUnoh!+t<O~8v^dN23KjAElX8m zMjv_VoDtxqV^H|nT^F3A>2_D&?C4V}U}8JdmB3F-|LS+wa;Jz@6LGn<wW{u-WeW2O z`MRFHv%L*un!;6mRSJqY%XZ4OjwBT&g}+^7ItH<TmaccnxugmRC2GsX5^$xrmH)vk z*i3iU#?#ARYWTz$XL50S35mCyiJRl_epG044rV)3vtD!{#5GX4F(;VzjhQW^v|;2+ zarnExvkWYNFmb&>t4R;(IGg?QD05{{LQt#0{g6UKk!M{!!btfVk(+810D50D$f;pt z=hSsC++6#Mr4aPV9mz<xaYW8bpxCds>&$+H)^Jf#mdK*@E>E9=a+ChIr?6g2=F`hB zg}Co{S=7c*Qw}zmgIF^Zv%E*+Iv|%dkSqhH(-ppi__+LHKDS{RFA5=I><CI8tx*OS z`lc<{r^qY)t#*qPgm+-M+#s=9HdA?o^_QA3u@Mjul$CZE@JUF43LCMKWP%@NjFyj& zOy1UiTR**}?O8V-*zmKFyea$xbLf8~Bok9m87N(<G=(HAr0-T75*L-sr7CPU(h|}P zHT_EWU|dGxwOaMlJFnQbJWSg_T~xL!dwT(Py>1rPb&VY#n)RFwQi;Xvta%}CbsbC~ zpcp&dt7Bdj-UBiXpvr9?J!THxhsjJ=a+4hz+PI^6z5QkG!=0@jzabk(F6ldR??Xc= z+#rA`G_>_KvobaiA)yoUP2ovkCUY+h>eQlYbzduN!qZ9$DjTWDp^?#?(A`y@oo(U) z)kJ<E^6f26#s`3|N2UJYyB`7H|LhFgK4GK%+TS=yw2z^3-jHdoWbx%^=B~B0bcL*p zg@Ef5GSd~T#A||h*4>TiFyRC!Ja8S1;n*jcc8Ve2jL?CN_oCCxRjZY(g+mH`dwjY9 z!la(ROk7STm;H6>m-I6^$b6!*5z|@+W41b$_|oZ$4%I@&pZ0`*=m&J%RVG~dA(|x; zvpv5WNdJ1jnzrT$N=MMW>&=kU2^q-KWu7V0-a^98{M89D=|eeKyGj4|^6Q#vx~4p& z?3d4wj!Br|eP|^Dc&+9H3zRUAS=#kLdttW;;`-&Q@KFE$0Sg?72%jI80*FM~k>X5~ z{-O7zMcHd=VK@w%w(wRvBgjPHdeLw{-pzqcBw+vBUEG~B;WQ=a>uR!XY3sYDR5^Jv ztj8y9$||=B#`}3`CK0nf<P}IB5o~gaZco)oD=x-WQcYXCp0>7b^{<vbni>_mlh2^9 z02Z5*6wxaxD!*WGte)pTgUEfof-FKP`!HK{QF?cWY8s<R(|u*^!4i&MOLNmOl?i1{ z$*y|lPv#RS2=#w7EbJ1iEF69h6#N&ERtK5FsI~?QxLo6UX8DZug6-(Zn~J+!)iIH# z$HfM0Uq|WLYEq(FuX?d@o))zzzpkW`W$j2=NIM(0Ch(C5l^SOg5%FxsQ<IYYh7i<t z@BUnp8Y9x<C)jB61+$E-C|LFY<=!7^J2e0>mxg*&`E@ZtrDOfR>tNDWhBj}=2J2z} zDj$u@Ko$ZOY;JF#yll}HZ(TVG0Vy5mkhD^_ii2#W*-@YTZ3P5o4Xi7-V4G=sXK?c7 z6=xreh>R#G3cb644n|I_3|~A?i8{(`2qKH<=`%mPrH6+VGm+^X;Wm|@mu|7yW;^*i zYsL4V>aXsqT_}6N`F#6{Oo$R@nsK3jbhPf;B+6{Iz;|n;NxuBr<i9oPCpt3^-FniE zQqO5sX#TnaF-y_>;$&~*t@;bSwZ*N1EVmnb?0M;qxyZ1ecOk~wmvMAlY(}ros+BD{ z{%Z9(NyR}LQK6bH(yK`HWBscTZso3zO{OG*X)|#8+{bAk;`+tw>VL%J2F8n!i*<(} z=C1VAP&yJ}RqSQs?2K!wY|XMZ{1dzdJqomyDf|flZ#~WbJal~3lNoH~o(lVM&;Rg$ zMg}N$eC`y;XYrtVPR%nRCXwgLfV<^+nC(F69(PL{8ks6$d=mCMMS$rbAVM893UGPq z{DbiqSOp@it$+A7@T(`Vmy@Xm`fuJ&1uOKtB58mkCI9(sWL{+YCsU{t#Y#J?pce>O zsLQ+z@sYueyW3-DnwV*4|8wYGz2;|ctaO?1H3B@ND9cbEzp}i4@Aj|bG+Ee~PT9Cd z`+5BqD#3rc_k*S-36Grl{c22M{4dTm9~JFn{Be<HGrfH$m4?R#+2;lSIJ_BgkLje6 z(L+N4E|;)BPO-x6-PBGeE}JWiKZr|Am8yHESU`FI&$Z5;o<BA*M*DQ7VVzRC$U+nU z<GZXn072|Yw{WfO$bWISaw5S(xBJ}uu^ZA*<FocgzDT};zHeW;+I7t1tq-@#LnQ?T zuc{&-Ai7*h5IGW{`ulb7S{>ZGKd1Jmrft`l<@H2tBC^jU6v4Q$%*-c@9!HsjS$+T6 za}9*dk;6k@hrQacX2*e*v(vLsdrkD~YURezu3wI(Qu-gga_i9ku%m^zbc~hm-yMS8 zT2dCqHC4SE7_bWC!R(wHukg*e+)`}0lSfj>o@V8RF5ON*q{i`G`6-~DkW$*~^RLYU zS~@WYa9F?YF+l?CYZ#Pu9de=I9w1CXut!f@Brc;tT+k>}<7#Kq7Go`t-|BCO77D@S z9$)W)b+?`6Vk-y@*-)C?klJRM8OiD7AT?bUYxNA;6#6gf*8l$+3&KT0bv$D*m)sSX zmU>OS(A6np82#>&q&$2ncyhxmcrt47dZ$+HGlq`Q@QnZcc-1r=^?``zxrcbY%GqqP zx%!L{rVR&b#c6q{+P+8AOC$MUS~JTi{(jG`-u;?Lc-#^A@mHN!3ogp{+$l-5O&LWl zTFBEEw+Ag}Cb9ANu@vCF?QCosONh$^-fuT^j^H3p%YeLIPwO=qx3qwU_AIFVe%%{@ z=5-39D^~%POz~#C=7Cn-j(z<2EYCS1bxuwWBakujm)u=G_Zc}u;(CXr3ImeoJoHa} z6Y6|m9AXM;*&Trpi0`nyB29R#s#*unsY~h_(XZm=MO*IRC2nP|J@cRR_xFYX4Lx}W zERY2~z$^WJj~91G_;QjI{Jg?}nu);LwGpz|Zt6lU+du!ar8T@bC6lWNjuh&CVCZR9 zT)%Y$Lh3KT_AZ9u)gmH`Zi$(Lf4+S6(f~9LL^gAKXP{qdO8V^#O@mTB8fByi{^LW# zD9E6+`rHf!ERk1Y*iMyf%-C-ZQrzwBZMMRGIMc$bZozMUbj4Rxoy`&WbY1*YE>S6x zQ?|hfPrO8r^ZR2oIjVrsG=+q}HPmEmwH=8LBV@cz)uT^jD)>=)jx(<xti-13?5qt- zc~8tosME);Tv=a-`#AucXEZ2~ofo6`PJkE$<qqCK(wjV}=JoGBe4(0QeEUSYmVutw zB6ESHCs8-L)!rA<NkxNI-#d`eXXs`+8WkbC@i#Z*Yk?L9T|~IE+uESE*8Q<{m1l6i zw1kx3M+~g|{yyt!nk?x{Hc%?b$qkK4wJlNJ3z*e&sE!`VT^2i_9|Jw9`_O*xTKr2d z%4;i*?z|x_uMQdrJH=)9Dbh4G{g)@Doco{FI@93{R>m44#u#$QjATX&7jHr*05>+$ zwN4$FJw;#MyiuQqALicL(|;AVzDE4N$FDMPFhbvq<~G^v1M4N>;f0r?gVmQ5`#iND z+2>=boTjr+;wpyD22Y2-7Lt|jr@}~8ju92Hv1>DKA#MfYFjs9^ZqgDCLVs9Obx4jq z>NdZwPrcjMT21K7<NGZtWdt;J^14=tIJPc<9q#UdGvC)yuSr>q%^|OPIih6UEw3r3 z`58(Eq|Uu?I}b3o@WHn-(6HB0L##YMvynNu2UCro$eV&py|3^0gflVst9NmapECi} zu5i24s^=OIgq-Jj`rBPcZoqA_`E=h1e{?nOn*c<)Pj-WfK`Rzl*2vy<YpUvXbFwl% zcpt8~jHzRG<h-1jy|qnFmH>ai*zBUP>~+EhCv~I@Yp)H(6AM~%U-}}zLJKDCIyZ;o zW#x|NBWLr?suaD7_A-nZ0&^*9`?%;pl}m)w8~V@fcHw=EUhCS-qPcv*t66@tTP<X) zhdDeC^iDx}k>+TJdc6br_-NMUp{X;F>z^MOL)|ifavyBNUIjuxQ0B5Sa1kh8vTn#9 z0Z78bvz+^y!ECWk2S#SS%Z}sZ>aOQXRSv4Wsir=!hyocLyQDs5mRJf_u<8c%=1kC> zpCxW3+jo<<iLu$b<5j~)89soEyo{&KDXYZ3zj8S)7LhG0Sv)+KT5M7c`#tS94**ak zNPd+c*t&v>2=aB*ObclM0FOKCgdb0l;+$4Zv&K?nrAiE4H7fXYZI;W8Eu;#o7NqqH z85>h1!K<BTCdS@mzz#O0iX@~<Pq>uA@jjGjJa95+=tqbto|tx_LT~3rwgrJ&H;ER1 zm8>ksnfc@XmH{s4PA3Y#Ix7j&dX&kR#yT^*L$!E&+s(AP<@7GRvdV04(G246BpSwY z0jFK`P^+H)Ix;4|zS`V1BjiiGFly_|++(&V#`tOLd2Ah`&@>)0tbtf0HufK70;Ucy zIrl|JMLP(U^4z>_!EPJa8jz58RJzxP_kkA)j>r>UeI_rU5l#EFXVTEt<{-AwB;T&z z1MY|V|4~F7!^`JX-U-e~h>I51YV<vd5%50om%Y3HJw%?uH!vBcdcjveGOeor>Kcz5 znw?s<g1TxTNaeBC);IRm6g;upO;m9NhDB_Pr&t|TBc^V<7aEP1a9P;ew4~|OhuAo4 zQB$QAXNiSKNuXUFv|W(~-yg?wvgdtXa#uG1PY*oIGtbpd1>mavbhvg?=0Zrw&u69@ zSf?uJSJzliaFzO**IF2%T!ab=tE<jS8q56wBCHPIv&tK5lxo_#7$#3Fj`W$wS%2cH z+M_F37)#c2l*Udzjz7)rbfHP#Kw;Kv`!E`1tcFdE?cI(M1}PhAciYQ}d9)K*BUq9; zhZ#M@1e3ATFe@H7)2M`=Cd!LWhCNmaOjc-EwF6$oEtj)Zx#(8v9%XAjy~ypBm|n`{ z=Hk=3dGs-0{C_#o7J<m_21LP(rri%9d&-2=nYzWr&1#veH2+E2ngf(AC5irA-`gWs zuEZt9*<Z+5Kc>xgIDdbFZN1tGq-ZsslX~L0gpbcQHwo;U2mN>`-){OfuvASthymSI z2uqM=awMEH-3dYMsrIjA2_B+n&a6F+R44#BW)l6j{I(D6M1H9KgK}UrX=&Z+-GtMC z{nM$dnba@0lXSNGuak(>K7~XIF~xnN`%n(HZ8jVL(f5=QHy3vfFfnj06k|%;6@fKE z@R6NfuHT1`@y$J%1eB{Vpky-CUYjqM125(V+f=twQTE7r{<cs4eM!nTqaC;jV>Qbr zGRV503<PiLF}W+C`~`Y~pVM_qWbUkbz{GOh8VJ3+;T+M+)o?$KZ%x30ZSoJ!U`egB zs#@A<S&&_8rlAno7Ll#M#J6=2JkESVBIdxMjr{<!wH5h%cwn4Duiu=1TDOQkmIaX9 z?lb?;kZHpU6#NYKyD}RL#yL$T)tH0^Qu7aM{TF0wo%tB;pgYQ|?}O2NP|{NiaQ@tw zY_v5gGqr9UMg7^0a^-g*yj13I3p`*3+YgbrAsW$Y$7OJRB?;~l_V5E{%FxGM(t4|= z!8|2FeqlQD`7`?*0NI+pS3ne!x88$nxjxdjPo?8I@qX#9wa{VVg~1r^ncV_YzCIXl zw-0sGk-9LLL6j|YlV4BW-L38Gob^;+k?RtU=sG}50E;`9wg_x!&~?e*m4KDQ-V?lT z$sK;?PZyetTqw6%3^CKd03QB2ZhZmo=WU`e4SxHupZ|U{pi#C4O46`(t0%N&fDP|3 z4}??>ww<FL`1zH|4bpd~Wa)y`u0)d$E*NW^&!g6GSv=~YgHIa2cme<&4Sl!+h>36c zZ27KUyWG8fW{7gWA_$w7f)l(s%mrZ<XMDAxO0-&Ad-jOxIqnj4jmYi_+g2rTT?Fv# z3W{@eFh!2@^9XAjNV)!71Yi4%eRCbD+5xSAo>ZOOU@u(|n_~HGV1?zp+FKEz+K%r# zXP3)S8r*6VVF(E?a&|C+F~Sh-MGe8bG;Y(_ge)NT79Ld^fZvC$)?JXD33X5L$@$ki zc7K4-!Gpbivto$sPv;vj{_Q9vL5h8ft90^x*4m63RWe3)Yin(d5c!iucCe;(mAkT{ zPFvf2yi;SPssnA^YU(2L84qU{`r%!-w+07>^j57g>DJ=xJf&7H);tAA(K3H(S`V+X z?$HSTR>NvCb*4---C_G)L?lI^f!DytsR5gs{${+C_|>fnYu<Fj7(6eb6CGpu6YE57 zwpa8H%$Y7+mz7o6{Yw96Mz;W#cF59~1CBE@L(m-9o|=upgn(4;I9)%iy5Tl7JJk04 zDx*)$KuI;3{Gm|7JznXz+s1T*`)?nKJbv|nO|GYMY-X=a;dVrXufpY)mK!d*!L9B% z$ugY#5O7&SHn&26_SxnOSg`}y_<>NF+3JRq+pKeN7HK(BRn-TB(RcEcM|osjZmF(o z<|-4bJt)%K`2~c6BW9X=X64TOFSAlJs+<e3w&s{7g4!=|a1Hj+8gqCR*20vX)9>y1 zmy6>S9iHa*4PPw>0s~e}!~#c)zmM2+Fm?u~cT+qt)p>YPyUfi5$neahl<RHJusXpG zEGf|4|IusoO0vg74cj5ZlFB=>hHbeupAwRjqw!wjM^;DS5gZN`(WSF)iy!zW_E=lB zLt-;W{V`w8GI`gH7hYxh9Y<G|O`gutKqx<vV>O!uzB|OiFtn|`Ls!?x{vW@Fl&25( zjA1dO@KttkIOA~yhVk{4<6=b(%%|Q=21r>@H7b=TqNqr|5c0F7C~)2X1(4=ZFTJrr zTGq(~TJOEgU%V{{UU(>xT)n=vEs!zXhMiIe!a@fCvJBF60dK3Z#+cuz8cA2hV%HjK zSsnUbfc+2e-s<m#_B2g(Bh)VS6(a{c>6n}6{gOE7kPJ)7@p1io>IQzcl6|Uzb*hq{ z>YC7tlRE6&6jW29L}IkQ8ng5jncxJH`-Tw<muv&D1<x)0hNx!(<AK3TyJ%sPW_==T PZ=9$DKt+kN)sz1R4<X}U literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 8817b59c08..4f4ce01c71 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,6 @@ "dev": "vite --open --force", "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jrkf": "VITE_APP_PROJECT_ID=jrkf vite --open --force", - "dev:site": "vite --config vite.config.site.mts", "dev:taro:rn:dark": "THEME=dark pnpm dev:taro:rn", "predev:taro": "SKIPDD=1 pnpm run update:taro:entry", "dev:taro": "pnpm --dir ./packages/nutui-taro-demo dev", @@ -90,11 +89,11 @@ "test": "vitest --coverage", "test:ui": "vitest --ui --coverage", "cypress:run": "cypress run --spec 'cypress/e2e/h5/index.cy.js'", - "cypress:open": "cypress open 'cypress/e2e/taro/index.cy.js'", + "cypress:open": "cypress open 'cypress/e2e/h5/index.cy.js'", "cypress:run:taro": "cypress run --env baseUrl=http://localhost:10086/#/ --spec 'cypress/e2e/taro/index.cy.js'", "cypress:open:taro": "cypress open --env baseUrl=http://localhost:10086/#/ 'cypress/e2e/taro/index.cy.js'", - "e2e:run:h5": "start-server-and-test \"vite --force --config vite.config.site.mts\" http://localhost:2021/h5/react/3x/index.react.html#/zh-CN/component/ cypress:run", - "e2e:open:h5": "start-server-and-test dev http://localhost:5173/ cypress:open", + "e2e:run:h5": "start-server-and-test dev http://localhost:5173/react/ cypress:run", + "e2e:open:h5": "start-server-and-test dev http://localhost:5173/react/ cypress:open", "e2e:run:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:run:taro", "e2e:open:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:open:taro", "update:taro:entry": "node ./scripts/harmony/update-taro-entry", From b9f454068f6cbd6e3ef9433bddf71f49a07fc60d Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 20 Feb 2025 15:46:00 +0800 Subject: [PATCH 32/40] fix: remove pics --- ...e Test -- check h5 demos blank (failed).png | Bin 284719 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cypress/screenshots/index.cy.js/All H5 Demos White Page Test -- check h5 demos blank (failed).png diff --git a/cypress/screenshots/index.cy.js/All H5 Demos White Page Test -- check h5 demos blank (failed).png b/cypress/screenshots/index.cy.js/All H5 Demos White Page Test -- check h5 demos blank (failed).png deleted file mode 100644 index 823c0b7181b5f4265f6efcc0973527ace4aa958f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284719 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%0Duf%p$t(mD~cOiqJ1@Q=5YDuU8QL$UM8>DN7j2- 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�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%0DH-_ExsDB+B&ccs}apZ&8WuTK3tro$rpuh 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 PZ=9$DKt+kN)sz1R4<X}U From 0b9facae0650ae481ad092e3d0302ff5ef815fd4 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 20 Feb 2025 16:24:14 +0800 Subject: [PATCH 33/40] fix: remove useless files --- example.file | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 example.file diff --git a/example.file b/example.file deleted file mode 100644 index b41cb0a052..0000000000 --- a/example.file +++ /dev/null @@ -1,28 +0,0 @@ -import Taro from '@tarojs/taro'; - -// 定义一个类型,用于表示设备信息,排除 deviceAbi 和 CPUType 字段 -interface IDeviceInfo extends Omit<Taro.getDeviceInfo.Result, 'deviceAbi' | 'CPUType'> {} - -/** - * 获取设备基础信息,兼容新旧 API - * @returns {IDeviceInfo} 设备基础信息 - */ -export function getDeviceInfo(): IDeviceInfo { - return Taro.canIUse('getDeviceInfo') ? Taro.getDeviceInfo() : Taro.getSystemInfoSync(); -} - -/** - * 获取窗口信息,兼容新旧 API - * @returns {Taro.getWindowInfo.Result} 窗口信息 - */ -export function getWindowInfo(): Taro.getWindowInfo.Result { - return Taro.canIUse('getWindowInfo') ? Taro.getWindowInfo() : Taro.getSystemInfoSync(); -} - -/** - * 获取应用基础信息,兼容新旧 API - * @returns {Taro.getAppBaseInfo.Result} 应用基础信息 - */ -export function getAppBaseInfo(): Taro.getAppBaseInfo.Result { - return Taro.canIUse('getAppBaseInfo') ? Taro.getAppBaseInfo() : Taro.getSystemInfoSync(); -} From acb09d0844da86f5b70dcdb31810a1d9af7c3b2a Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 20 Feb 2025 17:20:52 +0800 Subject: [PATCH 34/40] fix: remove useless files --- src/sites/config/baseConfig.ts | 737 --------------------------------- src/sites/config/index.ts | 30 +- 2 files changed, 1 insertion(+), 766 deletions(-) diff --git a/src/sites/config/baseConfig.ts b/src/sites/config/baseConfig.ts index 049d954e10..082b621b94 100644 --- a/src/sites/config/baseConfig.ts +++ b/src/sites/config/baseConfig.ts @@ -3,7 +3,6 @@ import homefeatures1 from '../assets/images/img-home-features1.png'; import homefeatures2 from '../assets/images/img-home-features2.png'; import homefeatures3 from '../assets/images/img-home-features3.png'; -import homefeatures4 from '../assets/images/img-home-features4.png'; import homefeatures5 from '../assets/images/img-home-features5.png'; // React 官网配置 @@ -50,36 +49,6 @@ export const SiteReact = { path: '/zh-CN/component/button', pathName: '/zh-CN/component/button' } - // { - // name: 'example', - // cName: '示例', - // path: 'demo.html' - // }, - // { - // name: '/zh-CN/case', - // cName: '案例', - // eName: 'Cases', - // path: '/zh-CN/case', - // pathName: 'case' - // }, - // { - // name: 'resource', - // cName: '资源', - // path: '/zh-CN/resource', - // pathName: '/zh-CN/resource' - // }, - // { - // name: 'notice', - // cName: '通知', - // path: '/zh-CN/notice', - // pathName: '/zh-CN/notice' - // }, - // { - // name: 'joinus', - // cName: '加入我们', - // path: '/zh-CN/guide/joinus', - // pathName: '/zh-CN/guide/joinus' - // } ], homePage: { gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react&type=star&count=true&size=large', @@ -104,11 +73,6 @@ export const SiteReact = { desc: '60+ 组件,覆盖多数业务场景', url: homefeatures2 } - // { - // title: '贴心通道', - // desc: '社区维护 高效服务<br />技术支持 经验沉淀', - // url: homefeatures4 - // } ], // 是否展示taro楼层 taroShow: true, @@ -168,36 +132,6 @@ export const SiteReactTaro = { path: '/zh-CN/component/button', pathName: '/zh-CN/component/button' } - // { - // name: 'example', - // cName: '示例', - // path: 'demo.html' - // }, - // { - // name: '/zh-CN/case', - // cName: '案例', - // eName: 'Cases', - // path: '/zh-CN/case', - // pathName: 'case' - // }, - // { - // name: 'resource', - // cName: '资源', - // path: '/zh-CN/resource', - // pathName: '/zh-CN/resource' - // }, - // { - // name: 'notice', - // cName: '通知', - // path: '/zh-CN/notice', - // pathName: '/zh-CN/notice' - // }, - // { - // name: 'joinus', - // cName: '加入我们', - // path: '/zh-CN/guide/joinus', - // pathName: '/zh-CN/guide/joinus' - // } ], homePage: { gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react&type=star&count=true&size=large', @@ -222,11 +156,6 @@ export const SiteReactTaro = { desc: '60+ 组件,覆盖多数业务场景', url: homefeatures2 } - // { - // title: '贴心通道', - // desc: '社区维护 高效服务<br />技术支持 经验沉淀', - // url: homefeatures4 - // } ], // 是否展示taro楼层 taroShow: true, @@ -242,670 +171,4 @@ export const SiteReactTaro = { }, language: 'react' }; -// React 官网配置 -export const SiteReactNative = { - repository: { - git: 'https://github.com/jdf2e/nutui-react-native', - gitee: 'https://gitee.com/jd-platform-opensource/nutui-react-native', - releases: 'https://github.com/jdf2e/nutui-react-native/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react-native&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui-react-native/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - newRepository: { - git: 'https://github.com/jdf2e', - gitee: 'https://gitee.com/jd-platform-opensource', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - versions: [ - { - name: 'nutui-react-native', - link: '/' - } - ], - newHeader: [], - header: [ - { - name: 'intro,theme,start,international,contributing', - cName: '指南', - eName: 'Guide', - path: '/zh-CN/guide/intro', - pathName: 'intro' - }, - { - name: 'component', - cName: '组件', - eName: 'Components', - path: '/zh-CN/component/button', - pathName: '/zh-CN/component/button' - } - ], - homePage: { - gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react-native&type=star&count=true&size=large', - platform: [ - { - title: '京东风格', - desc: '遵循京东 App 10.0 设计规范', - url: homefeatures1 - }, - { - title: '前沿技术', - desc: 'React Vite 2.x TypeScript', - url: homefeatures3 - }, - { - title: '适配多端', - desc: '基于 Taro 轻松开发多端小程序', - url: homefeatures5 - }, - { - title: '组件丰富', - desc: '60+ 组件,覆盖多数业务场景', - url: homefeatures2 - } - ], - // 是否展示taro楼层 - taroShow: true, - bizComponent: [], - cases: { - show: false - }, - // 学习资源 - article: { - show: true, - moreRouter: '#/zh-CN/resource' - } - }, - language: 'react' -}; - -// Vue 官网配置 -export const SiteVue = { - repository: { - git: 'https://github.com/jdf2e/nutui', - gitee: 'https://gitee.com/jd-platform-opensource/nutui', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - newRepository: { - // 本地跑 dev:jdt 报错了,我先注释掉了,😂 - git: 'https://github.com/jdf2e', - gitee: 'https://gitee.com/jd-platform-opensource', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - versions: [ - { - name: '1.x', - link: '/1x/' - }, - { - name: '2.x', - link: '/2x/' - }, - { - name: '3.x', - link: '/' - }, - { - name: 'nutui-jdl', - link: '/jdl/' - }, - { - name: 'nutui-react', - link: 'https://nutui.jd.com/react' - }, - { - name: 'nutui-jdt', - link: 'https://nutui.jd.com/jdt/' - } - ], - header: [ - { - name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing,official-theme,migrate-from-v3', - cName: '指南', - eName: 'Guide', - path: '/zh-CN/guide/intro', - pathName: 'intro' - }, - { - name: 'component', - cName: '组件', - eName: 'Components', - path: '/zh-CN/component/button', - pathName: 'zh-CN/component/button' - } - // { - // name: 'example', - // cName: '示例', - // path: 'demo.html' - // }, - // { - // name: '/zh-CN/case', - // cName: '案例', - // eName: 'Cases', - // path: '/zh-CN/case', - // pathName: 'case' - // }, - // { - // name: 'resource', - // cName: '资源', - // eName: 'Resource', - // path: '/zh-CN/resource', - // pathName: '/zh-CN/resource' - // }, - // { - // name: 'notice', - // cName: '通知', - // eName: 'Notice', - // path: '/zh-CN/notice', - // pathName: '/zh-CN/notice' - // }, - // { - // name: 'joinus', - // cName: '加入我们', - // eName: 'Join us', - // path: '/zh-CN/guide/joinus', - // pathName: '/zh-CN/guide/joinus' - // } - ], - - newHeader: [ - { - name: 'component', - cName: '基础组件', - eName: 'Components', - key: '1', - path: '/zh-CN/component/button', - pathName: 'zh-CN/component/button' - }, - { - name: 'component', - cName: '高级组件', - eName: 'Components', - key: '2', - path: '/zh-CN/component/button', - pathName: 'zh-CN/component/button' - }, - { - name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing', - cName: '资源', - eName: 'Guide', - key: '3', - path: '/zh-CN/resource', - pathName: '/zh-CN/resource', - url: '#/resource' - }, - // { - // name: 'joinus', - // cName: '贡献指南', - // eName: 'Contribution Guidelines', - // key: '4', - // path: '/zh-CN/joinus', - // pathName: '/zh-CN/joinus', - // url: 'https://nutui.jd.com/#/zh-CN/guide/contributing' - // }, - { - name: 'joinus', - cName: '加入我们', - eName: 'Join us', - key: '5', - path: '/zh-CN/joinus', - pathName: '/zh-CN/joinus', - url: '#/joinus' - } - ], - // 官网 首页 - homePage: { - gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui&type=star&count=true&size=large', - // 平台资源楼层 - platform: [ - { - title: '京东风格', - desc: '遵循京东 App 10.0 设计规范', - url: homefeatures1 - }, - { - title: '前沿技术', - desc: 'Vue3 Vite 2.x TypeScript', - url: homefeatures3 - }, - { - title: '适配多端', - desc: '基于 Taro 轻松开发多端小程序', - url: homefeatures5 - }, - { - title: '组件丰富', - desc: '70+ 组件,覆盖多数业务场景', - url: homefeatures2 - } - // { - // title: '贴心通道', - // desc: '社区维护 高效服务<br />技术支持 经验沉淀', - // url: homefeatures4, - // }, - ], - // 是否展示taro楼层 - taroShow: true, - // 是否展示 业务组件 - bizComponent: [ - { - title: 'cat', - desc: '基于 NutUI 的大促组件', - release: true - }, - { - title: 'bingo', - desc: '基于 NutUI 的抽奖组件', - release: false - } - ], - // 应用案例 - cases: { - show: true, - moreRouter: '#/zh-CN/case' - }, - //是否展示二维码 - qrcodeShow: true, - // 学习资源 - article: { - show: true, - moreRouter: '#/zh-CN/resource' - } - }, - language: 'vue' -}; -export const SiteVueTaro = { - repository: { - git: 'https://github.com/jdf2e/nutui', - gitee: 'https://gitee.com/jd-platform-opensource/nutui', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - newRepository: { - // 本地跑 dev:jdt 报错了,我先注释掉了,😂 - git: 'https://github.com/jdf2e', - gitee: 'https://gitee.com/jd-platform-opensource', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - versions: [ - { - name: '1.x', - link: '/1x/' - }, - { - name: '2.x', - link: '/2x/' - }, - { - name: '3.x', - link: '/' - }, - { - name: 'nutui-jdl', - link: '/jdl/' - }, - { - name: 'nutui-react', - link: 'https://nutui.jd.com/react' - }, - { - name: 'nutui-jdt', - link: 'https://nutui.jd.com/jdt/' - } - ], - header: [ - { - name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing,,official-theme,migrate-from-v3', - cName: '指南', - eName: 'Guide', - path: '/zh-CN/guide/intro', - pathName: 'intro' - }, - { - name: 'component', - cName: '组件', - eName: 'Component', - path: '/zh-CN/component/button', - pathName: 'zh-CN/component/button' - } - // { - // name: 'example', - // cName: '示例', - // path: 'demo.html' - // }, - // { - // name: '/zh-CN/case', - // cName: '案例', - // eName: 'Cases', - // path: '/zh-CN/case', - // pathName: 'case' - // }, - // { - // name: 'resource', - // cName: '资源', - // eName: 'Resource', - // path: '/zh-CN/resource', - // pathName: '/zh-CN/resource' - // }, - // { - // name: 'notice', - // cName: '通知', - // eName: 'Notice', - // path: '/zh-CN/notice', - // pathName: '/zh-CN/notice' - // }, - // { - // name: 'joinus', - // cName: '加入我们', - // eName: 'Join us', - // path: '/zh-CN/guide/joinus', - // pathName: '/zh-CN/guide/joinus' - // } - ], - - newHeader: [ - { - name: 'component', - cName: '生态产品', - eName: 'Components', - key: '1', - path: '/zh-CN/component/button', - pathName: 'zh-CN/component/button' - }, - { - name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing,en-intro,en-start,en-starttaro,en-theme,en-international,en-ide,en-contributing', - cName: '资源', - eName: 'Guide', - key: '2', - path: '/zh-CN/guide/intro', - pathName: 'intro', - url: 'https://nutui.jd.com/#/zh-CN/resource' - }, - { - name: '/zh-CN/case', - cName: '案例', - eName: 'Cases', - path: '/zh-CN/case', - pathName: 'case', - key: '3', - url: '/h5/vue/4x/#/zh-CN/case' - }, - { - name: 'joinus', - cName: '加入我们', - eName: 'Join us', - key: '4', - path: '/zh-CN/guide/joinus', - pathName: '/zh-CN/guide/joinus', - url: 'https://nutui.jd.com/#/zh-CN/guide/joinus' - } - ], - // 官网 首页 - homePage: { - gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui&type=star&count=true&size=large', - // 平台资源楼层 - platform: [ - { - title: '京东风格', - desc: '遵循京东 App 10.0 设计规范', - url: homefeatures1 - }, - { - title: '前沿技术', - desc: 'Vue3 Vite 2.x TypeScript', - url: homefeatures3 - }, - { - title: '适配多端', - desc: '基于 Taro 轻松开发多端小程序', - url: homefeatures5 - }, - { - title: '组件丰富', - desc: '70+ 组件,覆盖多数业务场景', - url: homefeatures2 - } - // { - // title: '贴心通道', - // desc: '社区维护 高效服务<br />技术支持 经验沉淀', - // url: homefeatures4, - // }, - ], - // 是否展示taro楼层 - taroShow: true, - // 是否展示 业务组件 - bizComponent: [ - { - title: 'cat', - desc: '基于 NutUI 的大促组件', - release: true - }, - { - title: 'bingo', - desc: '基于 NutUI 的抽奖组件', - release: false - } - ], - // 应用案例 - cases: { - show: true, - moreRouter: '#/zh-CN/case' - }, - //是否展示二维码 - qrcodeShow: true, - // 学习资源 - article: { - show: true, - moreRouter: '#/zh-CN/resource' - } - }, - language: 'vue' -}; - -// Vue JDT 官网配置 -export const SiteJDT = { - repository: { - git: 'https://github.com/jdf2e/nutui', - gitee: 'https://gitee.com/jd-platform-opensource/nutui', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - newRepository: { - git: 'https://github.com/jdf2e', - gitee: 'https://gitee.com/jd-platform-opensource', - releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 - issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', - discussions: 'https://github.com/jdf2e/nutui/discussions', - plan: 'https://github.com/jdf2e/nutui/projects/1' - }, - versions: [ - { - name: '1.x', - link: '/1x/' - }, - { - name: '2.x', - link: '/2x/' - }, - { - name: '3.x', - link: '/' - }, - { - name: 'nutui-jdl', - link: '/jdl/' - }, - { - name: 'nutui-react', - link: 'https://nutui.jd.com/react' - }, - { - name: 'nutui-jdt', - link: 'https://nutui.jd.com/jdt/' - } - ], - - docs: { - name: '指南', - packages: [ - { - name: 'intro-jdt', - cName: '介绍', - eName: 'Introduction', - show: true - }, - { - name: 'start-jdt', - cName: '快速上手', - eName: 'Quickstart', - show: true - }, - { - name: 'starttaro-jdt', - cName: '小程序开发', - eName: 'WeChat', - show: true - }, - { - name: 'theme', - cName: '主题定制', - eName: 'Customize Theme', - show: true - }, - { - name: 'international', - cName: '国际化', - eName: 'Internationalization', - show: true - }, - { - name: 'ide', - cName: '开发工具支持', - eName: 'IDE tool support', - show: true - }, - { - name: 'contributing', - cName: '贡献指南', - eName: 'Contributing', - path: '#/contributing', - show: true - }, - { - name: 'https://github.com/jdf2e/nutui/releases', - cName: '更新日志', - eName: 'Changelog', - show: true, - isLink: true - } - ] - }, - newHeader: [], - header: [ - { - name: 'intro-jdt,intro,theme,start,start-jdt,starttaro,international,ide,contributing', - cName: '指南', - eName: 'Guide', - path: '/zh-CN/guide/intro-jdt', - pathName: 'intro-jdt' - }, - { - name: 'component', - cName: '组件', - eName: 'Components', - path: '/zh-CN/component/button', - pathName: 'zh-CN/component/button' - }, - { - name: '/zh-CN/case', - cName: '案例', - eName: 'Cases', - path: '/zh-CN/case', - pathName: 'case' - }, - { - name: 'resource', - cName: '资源', - eName: 'Resource', - path: '/zh-CN/resource', - pathName: '/zh-CN/resource' - } - ], - // 官网 首页 - homePage: { - gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui&type=star&count=true&size=large', - // 平台资源楼层 - platform: [ - { - title: '京东风格', - desc: '遵循京东 App 10.0 设计规范', - url: homefeatures1 - }, - { - title: '前沿技术', - desc: 'Vue3 Vite 2.x TypeScript', - url: homefeatures3 - }, - { - title: '适配多端', - desc: '基于 Taro 轻松开发多端小程序', - url: homefeatures5 - }, - { - title: '组件丰富', - desc: '70+ 组件,覆盖多数业务场景', - url: homefeatures2 - } - ], - // 是否展示taro楼层 - taroShow: true, - // 是否展示 业务组件 - bizComponent: [ - { - title: 'cat', - desc: '基于 NutUI 的大促组件', - release: true - }, - { - title: 'bingo', - desc: '基于 NutUI 的抽奖组件', - release: false - } - ], - // 应用案例 - cases: { - show: true, - moreRouter: '#/zh-CN/case' - }, - //是否展示二维码 - qrcodeShow: true, - // 学习资源 - article: { - show: true, - moreRouter: '#/zh-CN/resource' - } - }, - language: 'vue', - demoUrl: 'https://nutui.jd.com/jdt/demo.html#' -}; -// Vue JDB 官网配置 -export const SiteJDB = SiteVue; -// Vue JDDKH 官网配置 -export const SiteJDDKH = SiteVue; diff --git a/src/sites/config/index.ts b/src/sites/config/index.ts index 081515718c..bf33471b43 100644 --- a/src/sites/config/index.ts +++ b/src/sites/config/index.ts @@ -2,12 +2,6 @@ import reactConfig from '../../config.json'; import { SiteReact, SiteReactTaro, - SiteVue, - SiteVueTaro, - SiteJDB, - SiteJDT, - SiteJDDKH, - SiteReactNative } from './baseConfig'; import ReactConfig from '../../config.json'; @@ -31,19 +25,6 @@ const guide = [ } ] } - - // { - // type: 'React', - // icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', - // data: [ - // { - // name: '1.x', - // link: 'https://nutui.jd.com/react', - // language: ['React18'], - // app: 'App 10.0' - // } - // ] - // } ]; @@ -298,14 +279,7 @@ if ((import.meta as any).env.BASE_URL.includes('react')) { ...reactConfig, ...SiteReact }; -} else { - let siteconfig = SiteVue; - - - config = { - ...siteconfig - }; -} +} export const { nav, @@ -328,7 +302,5 @@ export { reactNativeGuide, businessGuide, products, - SiteVueTaro, SiteReactTaro, - SiteReactNative, }; From 8f1c2954e9405e725c6835832f177fd473d7f7f3 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Thu, 20 Feb 2025 20:13:42 +0800 Subject: [PATCH 35/40] fix: code highlight --- package.json | 7 +- pnpm-lock.yaml | 481 ++++++++++++++++------------- src/sites/sites-react/doc/main.tsx | 1 - vite.config.mts | 2 + vite.config.site.mts | 2 + vite.config.site.taro.ts | 2 + 6 files changed, 275 insertions(+), 220 deletions(-) diff --git a/package.json b/package.json index 4f4ce01c71..2f9e238117 100644 --- a/package.json +++ b/package.json @@ -114,16 +114,18 @@ "@use-gesture/react": "10.2.20", "async-validator": "^4.2.5", "classnames": "^2.5.1", - "react-fast-compare": "^3.2.2", "lodash.kebabcase": "^4.1.1", "lottie-miniprogram": "^1.0.12", "lottie-react": "^2.4.0", - "react-transition-group": "^4.4.5" + "react-fast-compare": "^3.2.2", + "react-transition-group": "^4.4.5", + "rehype-highlight": "^7.0.2" }, "devDependencies": { "@babel/plugin-proposal-class-properties": "^7.18.6", "@commitlint/cli": "^19.0.3", "@commitlint/config-conventional": "^19.0.3", + "@inquirer/prompts": "^7.2.3", "@loadable/component": "^5.16.3", "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", @@ -158,7 +160,6 @@ "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-v8": "^2.0.4", "@vitest/ui": "^2.0.4", - "@inquirer/prompts": "^7.2.3", "autoprefixer": "^10.4.17", "axios": "^1.6.7", "cypress": "^13.15.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cbf595197..e6a84a8cea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,6 +62,9 @@ importers: react-transition-group: specifier: ^4.4.5 version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-highlight: + specifier: ^7.0.2 + version: 7.0.2 devDependencies: '@babel/plugin-proposal-class-properties': specifier: ^7.18.6 @@ -499,7 +502,7 @@ importers: version: 7.6.8 vitest: specifier: ^1.5.0 - version: 1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + version: 1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) devDependencies: '@types/lodash.kebabcase': specifier: ^4.1.9 @@ -527,7 +530,7 @@ importers: version: 7.26.0 '@nutui/replace-icons': specifier: ^1.0.0 - version: 1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + version: 1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) '@nutui/touch-emulator': specifier: ^1.0.0 version: 1.0.0 @@ -621,7 +624,7 @@ importers: version: 4.0.8-beta.1(@swc/helpers@0.5.15) '@tarojs/plugin-platform-harmony-ets': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))) + version: 4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))) '@tarojs/vite-runner': specifier: 4.0.8-beta.1 version: 4.0.8-beta.1(@swc/helpers@0.5.15)(@tarojs/runtime@4.0.8-beta.1)(@types/babel__core@7.20.5)(jiti@2.4.2)(postcss@8.4.49)(rollup@3.29.5)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.5)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)) @@ -686,7 +689,7 @@ importers: packages: '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==, tarball: https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz} + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} '@adobe/css-tools@4.4.1': resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} @@ -1397,7 +1400,7 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, tarball: https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz} + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} '@commitlint/cli@19.6.1': @@ -1507,433 +1510,433 @@ packages: engines: {node: '>=16'} '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz} + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz} + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz} + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz} + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz} + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz} + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz} + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz} + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz} + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz} + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz} + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz} + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz} + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz} + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz} + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz} + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz} + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz} + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz} + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz} + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz} + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz} + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz} + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz} + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz} + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz} + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz} + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz} + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz} + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz} + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz} + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz} + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz} + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz} + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz} + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz} + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz} + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz} + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz} + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz} + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz} + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz} + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz} + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz} + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz} + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz} + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz} + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz} + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz} + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz} + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz} + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz} + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz} + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz} + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz} + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz} + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz} + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz} + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz} + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz} + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz} + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz} + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz} + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz} + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz} + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz} + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz} + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz} + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz} + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2294,7 +2297,7 @@ packages: resolution: {integrity: sha512-HAPjR3bnCsdXBsATpDIP5WCrw0JcACwhhrwIAQhiR46n+jm+a2F8kBsfseAuWtSyQ+H3Yebt2k43B5dy+04yMA==} '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==, tarball: https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz} + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} @@ -2387,7 +2390,7 @@ packages: resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} '@pkgr/core@0.1.1': @@ -2539,7 +2542,7 @@ packages: optional: true '@rollup/plugin-node-resolve@16.0.0': - resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==, tarball: https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz} + resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -2579,97 +2582,97 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.30.0': - resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.0.tgz} + resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.30.0': - resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.0.tgz} + resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.30.0': - resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.0.tgz} + resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.30.0': - resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.0.tgz} + resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==} cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.30.0': - resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.0.tgz} + resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==} cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.30.0': - resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.0.tgz} + resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==} cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.30.0': - resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.0.tgz} + resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm-musleabihf@4.30.0': - resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.0.tgz} + resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.30.0': - resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-arm64-musl@4.30.0': - resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.0.tgz} + resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-loongarch64-gnu@4.30.0': - resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==} cpu: [loong64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.30.0': - resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.0.tgz} + resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==} cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.30.0': - resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==} cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.30.0': - resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.0.tgz} + resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==} cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.30.0': - resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==} cpu: [x64] os: [linux] '@rollup/rollup-linux-x64-musl@4.30.0': - resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.0.tgz} + resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==} cpu: [x64] os: [linux] '@rollup/rollup-win32-arm64-msvc@4.30.0': - resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.0.tgz} + resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.30.0': - resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.0.tgz} + resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.30.0': - resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.0.tgz} + resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==} cpu: [x64] os: [win32] @@ -2734,121 +2737,121 @@ packages: hasBin: true '@swc/core-darwin-arm64@1.10.4': - resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==, tarball: https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.4.tgz} + resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] '@swc/core-darwin-arm64@1.3.96': - resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==, tarball: https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.96.tgz} + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] '@swc/core-darwin-x64@1.10.4': - resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==, tarball: https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.4.tgz} + resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} engines: {node: '>=10'} cpu: [x64] os: [darwin] '@swc/core-darwin-x64@1.3.96': - resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==, tarball: https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.96.tgz} + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] '@swc/core-linux-arm-gnueabihf@1.10.4': - resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==, tarball: https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.4.tgz} + resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} engines: {node: '>=10'} cpu: [arm] os: [linux] '@swc/core-linux-arm-gnueabihf@1.3.96': - resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==, tarball: https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.96.tgz} + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} engines: {node: '>=10'} cpu: [arm] os: [linux] '@swc/core-linux-arm64-gnu@1.10.4': - resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.4.tgz} + resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-arm64-gnu@1.3.96': - resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.96.tgz} + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-arm64-musl@1.10.4': - resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.4.tgz} + resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-arm64-musl@1.3.96': - resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.96.tgz} + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-x64-gnu@1.10.4': - resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.4.tgz} + resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-linux-x64-gnu@1.3.96': - resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.96.tgz} + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-linux-x64-musl@1.10.4': - resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.4.tgz} + resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-linux-x64-musl@1.3.96': - resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.96.tgz} + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-win32-arm64-msvc@1.10.4': - resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==, tarball: https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.4.tgz} + resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] '@swc/core-win32-arm64-msvc@1.3.96': - resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==, tarball: https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.96.tgz} + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] '@swc/core-win32-ia32-msvc@1.10.4': - resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==, tarball: https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.4.tgz} + resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] '@swc/core-win32-ia32-msvc@1.3.96': - resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==, tarball: https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.96.tgz} + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] '@swc/core-win32-x64-msvc@1.10.4': - resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==, tarball: https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.4.tgz} + resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} engines: {node: '>=10'} cpu: [x64] os: [win32] '@swc/core-win32-x64-msvc@1.3.96': - resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==, tarball: https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.96.tgz} + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -2924,25 +2927,25 @@ packages: '@tarojs/shared': 4.0.8-beta.1 '@tarojs/binding-darwin-arm64@4.0.8-beta.1': - resolution: {integrity: sha512-+uZyAnNzJS7SZDiq2dfz6CpsLfJQbvu2IkSfpvzBbUVkCx1aVBcJyd3KOfj/2XyKtmy7KL6/ErE5dCAlyZHZYQ==, tarball: https://registry.npmjs.org/@tarojs/binding-darwin-arm64/-/binding-darwin-arm64-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-+uZyAnNzJS7SZDiq2dfz6CpsLfJQbvu2IkSfpvzBbUVkCx1aVBcJyd3KOfj/2XyKtmy7KL6/ErE5dCAlyZHZYQ==} engines: {node: '>= 18'} cpu: [arm64] os: [darwin] '@tarojs/binding-darwin-x64@4.0.8-beta.1': - resolution: {integrity: sha512-8PfLles6fInzsX2CFA7ER9W3IxJaCDrzg2QT0Bf9ojK1mhAkM3arPxF1cLcFUh1qy4CcE10ffuFRuLADly9ftQ==, tarball: https://registry.npmjs.org/@tarojs/binding-darwin-x64/-/binding-darwin-x64-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-8PfLles6fInzsX2CFA7ER9W3IxJaCDrzg2QT0Bf9ojK1mhAkM3arPxF1cLcFUh1qy4CcE10ffuFRuLADly9ftQ==} engines: {node: '>= 18'} cpu: [x64] os: [darwin] '@tarojs/binding-linux-x64-gnu@4.0.8-beta.1': - resolution: {integrity: sha512-GOb/Y0Oio+ZWuKV/m/H8B+w/B1TfEMm7XkGUYCaMCh6k1Shib6rNTJU/pFciNnGJmzAH1vkD8/9MIK5SAB/dDQ==, tarball: https://registry.npmjs.org/@tarojs/binding-linux-x64-gnu/-/binding-linux-x64-gnu-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-GOb/Y0Oio+ZWuKV/m/H8B+w/B1TfEMm7XkGUYCaMCh6k1Shib6rNTJU/pFciNnGJmzAH1vkD8/9MIK5SAB/dDQ==} engines: {node: '>= 18'} cpu: [x64] os: [linux] '@tarojs/binding-win32-x64-msvc@4.0.8-beta.1': - resolution: {integrity: sha512-+a7zei9n7lWA2HbHvNgqQ/fwhFapnuGwffeALVpNKNLDtXKXUInmuHdyhBDqMeBov4ilzL26XjZt7phar0lYuQ==, tarball: https://registry.npmjs.org/@tarojs/binding-win32-x64-msvc/-/binding-win32-x64-msvc-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-+a7zei9n7lWA2HbHvNgqQ/fwhFapnuGwffeALVpNKNLDtXKXUInmuHdyhBDqMeBov4ilzL26XjZt7phar0lYuQ==} engines: {node: '>= 18'} cpu: [x64] os: [win32] @@ -2992,66 +2995,66 @@ packages: engines: {node: '>= 18'} '@tarojs/parse-css-to-stylesheet-android-arm-eabi@0.0.69': - resolution: {integrity: sha512-xfn55ehFWjbIzDTu+0QwMkCf8icC7jwAiDm2S7Cv5Og83gSzMUCb76KzEAwgTSTe0wiLrDai2HAhBftpE4V1Qw==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-android-arm-eabi/-/parse-css-to-stylesheet-android-arm-eabi-0.0.69.tgz} + resolution: {integrity: sha512-xfn55ehFWjbIzDTu+0QwMkCf8icC7jwAiDm2S7Cv5Og83gSzMUCb76KzEAwgTSTe0wiLrDai2HAhBftpE4V1Qw==} engines: {node: '>= 10'} cpu: [arm] os: [android] '@tarojs/parse-css-to-stylesheet-android-arm64@0.0.69': - resolution: {integrity: sha512-ojVo41qGp+/NUaGGXuuT2/bc0K4H1vzvindeYpUj6LkGL0gQSitdXnviYEnUFqfrMvn7bx1wKTy3uLtADqxgPQ==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-android-arm64/-/parse-css-to-stylesheet-android-arm64-0.0.69.tgz} + resolution: {integrity: sha512-ojVo41qGp+/NUaGGXuuT2/bc0K4H1vzvindeYpUj6LkGL0gQSitdXnviYEnUFqfrMvn7bx1wKTy3uLtADqxgPQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] '@tarojs/parse-css-to-stylesheet-darwin-arm64@0.0.69': - resolution: {integrity: sha512-xtk3WmfYKvlTxGgxjz6DSqcKmRxXRPG+1bINvvOmcQYbOZtl9cw6X4fC/B204SEv06uC8MYaUZ0z0AbjGzZFrA==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-darwin-arm64/-/parse-css-to-stylesheet-darwin-arm64-0.0.69.tgz} + resolution: {integrity: sha512-xtk3WmfYKvlTxGgxjz6DSqcKmRxXRPG+1bINvvOmcQYbOZtl9cw6X4fC/B204SEv06uC8MYaUZ0z0AbjGzZFrA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@tarojs/parse-css-to-stylesheet-darwin-universal@0.0.69': - resolution: {integrity: sha512-AkXvr4bVy1a8d0xOXxhc05352ubTU2G6h4t1RFuzYJLzMBbQWAI60iHcSaCWhkuV9HUl+3UXv0NoW0NkXq19cw==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-darwin-universal/-/parse-css-to-stylesheet-darwin-universal-0.0.69.tgz} + resolution: {integrity: sha512-AkXvr4bVy1a8d0xOXxhc05352ubTU2G6h4t1RFuzYJLzMBbQWAI60iHcSaCWhkuV9HUl+3UXv0NoW0NkXq19cw==} engines: {node: '>= 10'} os: [darwin] '@tarojs/parse-css-to-stylesheet-darwin-x64@0.0.69': - resolution: {integrity: sha512-3CTu0tXFZ7aLONaIdrZibKqYUD5IyivF6wfE9CYNEbkkxZoJU29dJ2o9kfVpcxFwKq/4BuH1TKWGYCiCOSyo4g==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-darwin-x64/-/parse-css-to-stylesheet-darwin-x64-0.0.69.tgz} + resolution: {integrity: sha512-3CTu0tXFZ7aLONaIdrZibKqYUD5IyivF6wfE9CYNEbkkxZoJU29dJ2o9kfVpcxFwKq/4BuH1TKWGYCiCOSyo4g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@tarojs/parse-css-to-stylesheet-linux-arm-gnueabihf@0.0.69': - resolution: {integrity: sha512-LFx3R8X/JXrBeNnlJOgvOxPTaWF7kUl6NMbOUWQbIfx/opqducTVAqrRF9ev1pYlbkRoQpabls8Z21LXDuYaaw==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-arm-gnueabihf/-/parse-css-to-stylesheet-linux-arm-gnueabihf-0.0.69.tgz} + resolution: {integrity: sha512-LFx3R8X/JXrBeNnlJOgvOxPTaWF7kUl6NMbOUWQbIfx/opqducTVAqrRF9ev1pYlbkRoQpabls8Z21LXDuYaaw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-arm64-gnu@0.0.69': - resolution: {integrity: sha512-nKlCyYz8NUVI7P8qS3j3tq49ZesGKgoXt3WH5iNPT1PEflxuSgA9T6UcPtUy0X/RolOF6p5Gd/UyhxcY2dUg+A==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-arm64-gnu/-/parse-css-to-stylesheet-linux-arm64-gnu-0.0.69.tgz} + resolution: {integrity: sha512-nKlCyYz8NUVI7P8qS3j3tq49ZesGKgoXt3WH5iNPT1PEflxuSgA9T6UcPtUy0X/RolOF6p5Gd/UyhxcY2dUg+A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-arm64-musl@0.0.69': - resolution: {integrity: sha512-bYODGCEx1Ni4EMNuZU95IUPqVZAXsY9gIc5CPSfKQ2j167Vbeo/gskQk/uNVjmnYJ69PplgJ9npylINgLIPIrA==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-arm64-musl/-/parse-css-to-stylesheet-linux-arm64-musl-0.0.69.tgz} + resolution: {integrity: sha512-bYODGCEx1Ni4EMNuZU95IUPqVZAXsY9gIc5CPSfKQ2j167Vbeo/gskQk/uNVjmnYJ69PplgJ9npylINgLIPIrA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-x64-gnu@0.0.69': - resolution: {integrity: sha512-89f03s+txGJ1c8Zc6Ib4qTAP4YhfFbVFq29XExqbC7eGvpQl5DeOtwonO5DBwMc7lA+LG4b1Q4CMXE3qodn2eA==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-x64-gnu/-/parse-css-to-stylesheet-linux-x64-gnu-0.0.69.tgz} + resolution: {integrity: sha512-89f03s+txGJ1c8Zc6Ib4qTAP4YhfFbVFq29XExqbC7eGvpQl5DeOtwonO5DBwMc7lA+LG4b1Q4CMXE3qodn2eA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-x64-musl@0.0.69': - resolution: {integrity: sha512-vyewIf1KysXYNIJdkzc9JSPguTG9zD65Belk3H186mLR18KtsvrqNqlWnP8kKfduF4ixh6qt0F2PkKbeI9PZvg==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-x64-musl/-/parse-css-to-stylesheet-linux-x64-musl-0.0.69.tgz} + resolution: {integrity: sha512-vyewIf1KysXYNIJdkzc9JSPguTG9zD65Belk3H186mLR18KtsvrqNqlWnP8kKfduF4ixh6qt0F2PkKbeI9PZvg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/parse-css-to-stylesheet-win32-x64-msvc@0.0.69': - resolution: {integrity: sha512-CHKlVjAiSAZTFNV8GkfXV88Jy9yyFSvKBAO3++l2KSQUBUWmPX775FbH+god2BOLf5SfAXRPd0HVAEK9qNeHXQ==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-win32-x64-msvc/-/parse-css-to-stylesheet-win32-x64-msvc-0.0.69.tgz} + resolution: {integrity: sha512-CHKlVjAiSAZTFNV8GkfXV88Jy9yyFSvKBAO3++l2KSQUBUWmPX775FbH+god2BOLf5SfAXRPd0HVAEK9qNeHXQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3061,60 +3064,60 @@ packages: engines: {node: '>= 10'} '@tarojs/plugin-doctor-darwin-arm64@0.0.13': - resolution: {integrity: sha512-BRqMB6jOflPIVdQEJ5vJ7j1OcEcgg65IPPY9YVNx5MnYE/SoZj6/yWvmDNc507ZEkWd4H1sJ4Jfk7eKUxm44PQ==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-darwin-arm64/-/plugin-doctor-darwin-arm64-0.0.13.tgz} + resolution: {integrity: sha512-BRqMB6jOflPIVdQEJ5vJ7j1OcEcgg65IPPY9YVNx5MnYE/SoZj6/yWvmDNc507ZEkWd4H1sJ4Jfk7eKUxm44PQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@tarojs/plugin-doctor-darwin-universal@0.0.13': - resolution: {integrity: sha512-qIv94zgybce+Wq6/Bgy+Np+3BM2SYipuuKTg4LU3ALfJ+YxJetYDcbat9GPxulZqyvxKshYaYtusfwzCu+QWEw==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-darwin-universal/-/plugin-doctor-darwin-universal-0.0.13.tgz} + resolution: {integrity: sha512-qIv94zgybce+Wq6/Bgy+Np+3BM2SYipuuKTg4LU3ALfJ+YxJetYDcbat9GPxulZqyvxKshYaYtusfwzCu+QWEw==} engines: {node: '>= 10'} os: [darwin] '@tarojs/plugin-doctor-darwin-x64@0.0.13': - resolution: {integrity: sha512-zjx3OGlcyOTr+VoRcFmQQcsXscwNucpynlhEYS3ZlofVe9qI0LeTMb/jbMriT/W0c1b4nlVaM8sv+HKz4NKUeA==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-darwin-x64/-/plugin-doctor-darwin-x64-0.0.13.tgz} + resolution: {integrity: sha512-zjx3OGlcyOTr+VoRcFmQQcsXscwNucpynlhEYS3ZlofVe9qI0LeTMb/jbMriT/W0c1b4nlVaM8sv+HKz4NKUeA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@tarojs/plugin-doctor-linux-arm-gnueabihf@0.0.13': - resolution: {integrity: sha512-WkViXfZNrB7HRoDySNhm6JG1IaIBmYGWZDwz0BuhkDQPZLfCCy6v01rSo5wfHGdyLnDg6CkENBS1IrdIU9zK+A==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-arm-gnueabihf/-/plugin-doctor-linux-arm-gnueabihf-0.0.13.tgz} + resolution: {integrity: sha512-WkViXfZNrB7HRoDySNhm6JG1IaIBmYGWZDwz0BuhkDQPZLfCCy6v01rSo5wfHGdyLnDg6CkENBS1IrdIU9zK+A==} engines: {node: '>= 10'} cpu: [arm] os: [linux] '@tarojs/plugin-doctor-linux-arm64-gnu@0.0.13': - resolution: {integrity: sha512-C6ZjqhyOqBcI4y+BFXYjBHBZY6441fO5YIoMv3Sc+nAV+LR1vvyGJ95JcC+Vma+sEjxRMP0IO9lvcLRIcrbrsA==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-arm64-gnu/-/plugin-doctor-linux-arm64-gnu-0.0.13.tgz} + resolution: {integrity: sha512-C6ZjqhyOqBcI4y+BFXYjBHBZY6441fO5YIoMv3Sc+nAV+LR1vvyGJ95JcC+Vma+sEjxRMP0IO9lvcLRIcrbrsA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/plugin-doctor-linux-arm64-musl@0.0.13': - resolution: {integrity: sha512-V1HnFITOLgHVyQ+OCa1oPFKOtGFRtP91vlbUGfOwMA4GeOVw9g28W/hfTyucTCkfZWlrssLehgW6L2AGAMXh2w==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-arm64-musl/-/plugin-doctor-linux-arm64-musl-0.0.13.tgz} + resolution: {integrity: sha512-V1HnFITOLgHVyQ+OCa1oPFKOtGFRtP91vlbUGfOwMA4GeOVw9g28W/hfTyucTCkfZWlrssLehgW6L2AGAMXh2w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/plugin-doctor-linux-x64-gnu@0.0.13': - resolution: {integrity: sha512-oetfzBW60uenPBBF4/NE6Mf0Iwkw1YGqIIBiN++aVQynbWrmMzWBsW8kleZ5vN1npxI9aud9EfRU1uM37DrG2A==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-x64-gnu/-/plugin-doctor-linux-x64-gnu-0.0.13.tgz} + resolution: {integrity: sha512-oetfzBW60uenPBBF4/NE6Mf0Iwkw1YGqIIBiN++aVQynbWrmMzWBsW8kleZ5vN1npxI9aud9EfRU1uM37DrG2A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/plugin-doctor-linux-x64-musl@0.0.13': - resolution: {integrity: sha512-OdIF/kFwwM0kQPDnpkanhvfWRaAI6EtDmpM9rQA/Lu2QcJq86w5d7X/WSN0U2xF1nialAUrfl79NyIaEzp4Fcw==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-x64-musl/-/plugin-doctor-linux-x64-musl-0.0.13.tgz} + resolution: {integrity: sha512-OdIF/kFwwM0kQPDnpkanhvfWRaAI6EtDmpM9rQA/Lu2QcJq86w5d7X/WSN0U2xF1nialAUrfl79NyIaEzp4Fcw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.13': - resolution: {integrity: sha512-nIbG2SliRhRwACLa1kNMskcfjsihp+3tZQMAxl+LoYUq6JRaWgP3vH2nHkDyZHTCheBTDtAaupqXWrYF3w+U6g==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-win32-ia32-msvc/-/plugin-doctor-win32-ia32-msvc-0.0.13.tgz} + resolution: {integrity: sha512-nIbG2SliRhRwACLa1kNMskcfjsihp+3tZQMAxl+LoYUq6JRaWgP3vH2nHkDyZHTCheBTDtAaupqXWrYF3w+U6g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] '@tarojs/plugin-doctor-win32-x64-msvc@0.0.13': - resolution: {integrity: sha512-G1mjsGzyeb4TPw7RoqOl4xPPhf5Lfp4BH9hjfBYbGM0RL5UFHmhfzvn2Icrriyk68v2GoQeHroZ2p6qAtbXdBw==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-win32-x64-msvc/-/plugin-doctor-win32-x64-msvc-0.0.13.tgz} + resolution: {integrity: sha512-G1mjsGzyeb4TPw7RoqOl4xPPhf5Lfp4BH9hjfBYbGM0RL5UFHmhfzvn2Icrriyk68v2GoQeHroZ2p6qAtbXdBw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3317,7 +3320,7 @@ packages: optional: true '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==, tarball: https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz} + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} '@testing-library/jest-dom@6.6.3': @@ -3356,7 +3359,7 @@ packages: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==, tarball: https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz} + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3386,7 +3389,7 @@ packages: resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz} + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -3550,7 +3553,7 @@ packages: resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} '@types/react-test-renderer@19.0.0': - resolution: {integrity: sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==, tarball: https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.0.0.tgz} + resolution: {integrity: sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==} '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} @@ -3561,7 +3564,7 @@ packages: resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, tarball: https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz} + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -3629,7 +3632,7 @@ packages: resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==, tarball: https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz} + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -3845,7 +3848,7 @@ packages: resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} '@vitest/expect@3.0.5': - resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz} + resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} '@vitest/mocker@2.1.8': resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} @@ -3859,7 +3862,7 @@ packages: optional: true '@vitest/mocker@3.0.5': - resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz} + resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -3873,7 +3876,7 @@ packages: resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} '@vitest/pretty-format@3.0.5': - resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz} + resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} '@vitest/runner@1.6.0': resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} @@ -3882,7 +3885,7 @@ packages: resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} '@vitest/runner@3.0.5': - resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz} + resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} '@vitest/snapshot@1.6.0': resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} @@ -3891,7 +3894,7 @@ packages: resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} '@vitest/snapshot@3.0.5': - resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz} + resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} '@vitest/spy@1.6.0': resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} @@ -3900,7 +3903,7 @@ packages: resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} '@vitest/spy@3.0.5': - resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz} + resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} '@vitest/ui@2.1.8': resolution: {integrity: sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==} @@ -3914,7 +3917,7 @@ packages: resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} '@vitest/utils@3.0.5': - resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz} + resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} '@volar/language-core@2.4.11': resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} @@ -4185,7 +4188,7 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, tarball: https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz} + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} @@ -4469,7 +4472,7 @@ packages: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} bare-events@2.5.2: - resolution: {integrity: sha512-KSdMqLj1ZERZMP1PTmnLK7SqJu9z9/SbwUUPZly2puMtfVcytC+jl6mb/9XYiqq0PXcx1rNDS+Qvl1g54Lho6A==, tarball: https://registry.npmjs.org/bare-events/-/bare-events-2.5.2.tgz} + resolution: {integrity: sha512-KSdMqLj1ZERZMP1PTmnLK7SqJu9z9/SbwUUPZly2puMtfVcytC+jl6mb/9XYiqq0PXcx1rNDS+Qvl1g54Lho6A==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -4739,7 +4742,7 @@ packages: engines: {node: '>= 0.8.0'} chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chokidar@4.0.3: @@ -5018,7 +5021,7 @@ packages: engines: {node: '>= 0.6'} cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==, tarball: https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz} + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} copy-anything@2.0.6: @@ -5339,7 +5342,7 @@ packages: engines: {node: '>=0.10.0'} deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, tarball: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz} + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} default-browser-id@5.0.0: @@ -5384,7 +5387,7 @@ packages: engines: {node: '>= 14'} del@8.0.0: - resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==, tarball: https://registry.npmjs.org/del/-/del-8.0.0.tgz} + resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==} engines: {node: '>=18'} delayed-stream@1.0.0: @@ -5461,7 +5464,7 @@ packages: engines: {node: '>=6.0.0'} dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, tarball: https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz} + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} @@ -5589,10 +5592,10 @@ packages: engines: {node: '>=8.6'} entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, tarball: https://registry.npmjs.org/entities/-/entities-2.2.0.tgz} + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} env-paths@2.2.1: @@ -5609,7 +5612,7 @@ packages: engines: {node: '>=18'} errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://registry.npmjs.org/errno/-/errno-0.1.8.tgz} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true error-ex@1.3.2: @@ -6409,7 +6412,7 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -6679,11 +6682,11 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} happy-dom@14.12.3: - resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==, tarball: https://registry.npmjs.org/happy-dom/-/happy-dom-14.12.3.tgz} + resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==} engines: {node: '>=16.0.0'} happy-dom@17.1.0: - resolution: {integrity: sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==, tarball: https://registry.npmjs.org/happy-dom/-/happy-dom-17.1.0.tgz} + resolution: {integrity: sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==} engines: {node: '>=18.0.0'} has-bigints@1.1.0: @@ -6719,6 +6722,9 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} @@ -6728,6 +6734,9 @@ packages: hast-util-to-jsx-runtime@2.3.2: resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -6910,7 +6919,7 @@ packages: engines: {node: '>= 4'} image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -7166,7 +7175,7 @@ packages: resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, tarball: https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz} + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} is-natural-number@4.0.1: resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} @@ -7199,7 +7208,7 @@ packages: resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} is-path-cwd@3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==, tarball: https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz} + resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-path-inside@3.0.3: @@ -7790,61 +7799,61 @@ packages: engines: {node: '>=10.13.0'} lightningcss-darwin-arm64@1.28.2: - resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz} + resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.28.2: - resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz} + resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.28.2: - resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz} + resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.28.2: - resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz} + resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.28.2: - resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz} + resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-arm64-musl@1.28.2: - resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz} + resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-x64-gnu@1.28.2: - resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz} + resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-linux-x64-musl@1.28.2: - resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz} + resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-win32-arm64-msvc@1.28.2: - resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz} + resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.28.2: - resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz} + resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -7861,7 +7870,7 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} linguist-languages@7.27.0: - resolution: {integrity: sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==, tarball: https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.27.0.tgz} + resolution: {integrity: sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -8059,6 +8068,9 @@ packages: lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + lowlight@3.3.0: + resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -8081,7 +8093,7 @@ packages: engines: {node: '>=12'} lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, tarball: https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz} + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true lzutf8@0.6.3: @@ -8391,7 +8403,7 @@ packages: engines: {node: '>= 0.6'} mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz} + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true @@ -8474,10 +8486,10 @@ packages: resolution: {integrity: sha512-o7bOfrU28MEMCBWo83nXv0ROQSBFxJcfCl4f2wTYqah64ipC5RGqLJfvWJTWhlQt2ECVwspSzM8LgvnfMo7TEQ==} miniprogram-compiler@0.2.3: - resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==, tarball: https://registry.npmjs.org/miniprogram-compiler/-/miniprogram-compiler-0.2.3.tgz} + resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==} miniprogram-exparser@2.29.1: - resolution: {integrity: sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw==, tarball: https://registry.npmjs.org/miniprogram-exparser/-/miniprogram-exparser-2.29.1.tgz} + resolution: {integrity: sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw==} miniprogram-simulate@1.6.1: resolution: {integrity: sha512-WO+T1A1fYZV6qW4mLNEl/+Rtdpw339mPd8q0KkyGHUFbRCIMzIHVutn2UrhUbn6UWZpkGurKwDUckNkpLhJ9QA==} @@ -8561,7 +8573,7 @@ packages: hasBin: true native-request@1.1.2: - resolution: {integrity: sha512-/etjwrK0J4Ebbcnt35VMWnfiUX/B04uwGJxyJInagxDqf2z5drSt/lsOvEMWGYunz1kaLZAFrV4NDAbOoDKvAQ==, tarball: https://registry.npmjs.org/native-request/-/native-request-1.1.2.tgz} + resolution: {integrity: sha512-/etjwrK0J4Ebbcnt35VMWnfiUX/B04uwGJxyJInagxDqf2z5drSt/lsOvEMWGYunz1kaLZAFrV4NDAbOoDKvAQ==} natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -8823,7 +8835,7 @@ packages: engines: {node: '>=10'} p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==, tarball: https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz} + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} p-retry@4.6.2: @@ -8985,7 +8997,7 @@ packages: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz} + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} @@ -9426,7 +9438,7 @@ packages: engines: {node: '>= 10'} pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz} + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} pretty-format@29.7.0: @@ -9605,14 +9617,14 @@ packages: engines: {node: '>=0.10.0'} react-router-dom@7.1.5: - resolution: {integrity: sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==, tarball: https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.5.tgz} + resolution: {integrity: sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' react-router@7.1.5: - resolution: {integrity: sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==, tarball: https://registry.npmjs.org/react-router/-/react-router-7.1.5.tgz} + resolution: {integrity: sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -9788,6 +9800,9 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + rehype-highlight@7.0.2: + resolution: {integrity: sha512-k158pK7wdC2qL3M5NcZROZ2tR/l7zOzjxXd5VGdcfIyoijjQqpHd3JKtYSBDpDZ38UI2WJWuFAtkMDxmx5kstA==} + rehype-recma@1.0.0: resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} @@ -10044,7 +10059,7 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, tarball: https://registry.npmjs.org/sax/-/sax-1.4.1.tgz} + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -10117,13 +10132,13 @@ packages: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} seroval-plugins@1.1.1: - resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==, tarball: https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.1.1.tgz} + resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 seroval@1.1.1: - resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==, tarball: https://registry.npmjs.org/seroval/-/seroval-1.1.1.tgz} + resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==} engines: {node: '>=10'} serve-index@1.9.1: @@ -10135,7 +10150,7 @@ packages: engines: {node: '>= 0.8.0'} set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==, tarball: https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz} + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -10221,7 +10236,7 @@ packages: engines: {node: '>=8'} slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, tarball: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz} + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} slashes@3.0.12: @@ -10265,7 +10280,7 @@ packages: engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} solid-js@1.9.3: - resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==, tarball: https://registry.npmjs.org/solid-js/-/solid-js-1.9.3.tgz} + resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==} sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} @@ -10439,7 +10454,7 @@ packages: engines: {node: '>=18'} string.fromcodepoint@0.2.1: - resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==, tarball: https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz} + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} @@ -10563,7 +10578,7 @@ packages: optional: true stylus@0.64.0: - resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==, tarball: https://registry.npmjs.org/stylus/-/stylus-0.64.0.tgz} + resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} engines: {node: '>=16'} hasBin: true @@ -10731,7 +10746,7 @@ packages: engines: {node: '>=14.0.0'} tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==, tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz} + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} tinyspy@2.2.1: @@ -10897,7 +10912,7 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} turbo-stream@2.4.0: - resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==, tarball: https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz} + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} turndown-plugin-gfm@1.0.2: resolution: {integrity: sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==} @@ -11028,7 +11043,7 @@ packages: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} unescape-js@1.1.4: - resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==, tarball: https://registry.npmjs.org/unescape-js/-/unescape-js-1.1.4.tgz} + resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -11053,6 +11068,9 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -11097,7 +11115,7 @@ packages: engines: {node: '>= 0.8'} unplugin@2.2.0: - resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==, tarball: https://registry.npmjs.org/unplugin/-/unplugin-2.2.0.tgz} + resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==} engines: {node: '>=18.12.0'} untildify@4.0.0: @@ -11226,7 +11244,7 @@ packages: hasBin: true vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==, tarball: https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz} + resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -11333,7 +11351,7 @@ packages: optional: true vitest@3.0.5: - resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==, tarball: https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz} + resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -11398,10 +11416,10 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz} + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz} + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} webpack-chain@6.5.1: @@ -11478,7 +11496,7 @@ packages: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz} + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} whatwg-mimetype@4.0.0: @@ -13578,7 +13596,7 @@ snapshots: transitivePeerDependencies: - react-dom - '@nutui/replace-icons@1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)': + '@nutui/replace-icons@1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)': dependencies: '@babel/cli': 7.26.4(@babel/core@7.26.0) '@babel/core': 7.26.0 @@ -13587,7 +13605,7 @@ snapshots: '@babel/preset-react': 7.26.3(@babel/core@7.26.0) '@types/babel__core': 7.20.5 '@types/babel__generator': 7.6.8 - vitest: 1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + vitest: 1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) transitivePeerDependencies: - '@edge-runtime/vm' - '@types/node' @@ -14515,7 +14533,7 @@ snapshots: - webpack-chain - webpack-dev-server - '@tarojs/plugin-platform-harmony-ets@4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))': + '@tarojs/plugin-platform-harmony-ets@4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))': dependencies: '@babel/preset-react': 7.26.3(@babel/core@7.26.0) '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) @@ -14535,6 +14553,7 @@ snapshots: - esbuild - html-webpack-plugin - postcss + - react - rollup - supports-color - uglify-js @@ -19218,6 +19237,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-parse-selector@2.2.5: {} hast-util-to-estree@3.1.1: @@ -19261,6 +19284,13 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -20775,6 +20805,12 @@ snapshots: fault: 1.0.4 highlight.js: 10.7.3 + lowlight@3.3.0: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + highlight.js: 11.11.1 + lru-cache@10.4.3: {} lru-cache@11.0.2: {} @@ -22810,6 +22846,14 @@ snapshots: dependencies: jsesc: 3.0.2 + rehype-highlight@7.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-text: 4.0.2 + lowlight: 3.3.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.6 @@ -24269,6 +24313,11 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -24605,7 +24654,7 @@ snapshots: jest-canvas-mock: 2.5.2 vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) - vitest@1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): + vitest@1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -24642,7 +24691,7 @@ snapshots: - supports-color - terser - vitest@1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): + vitest@1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 diff --git a/src/sites/sites-react/doc/main.tsx b/src/sites/sites-react/doc/main.tsx index edbb32b1d5..96ee288930 100644 --- a/src/sites/sites-react/doc/main.tsx +++ b/src/sites/sites-react/doc/main.tsx @@ -4,7 +4,6 @@ import { isMobile } from '../../assets/util' import '@/sites/assets/styles/reset.scss' import '@/sites/assets/styles/md-style.scss' import App from './App' - if (isMobile) { location.replace('demo.html') } diff --git a/vite.config.mts b/vite.config.mts index 4ea541fd80..fdb7935c9a 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -5,6 +5,7 @@ import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' import { readFileSync } from 'node:fs' +import rehypeHighlight from 'rehype-highlight' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -111,6 +112,7 @@ export default defineConfig(async (): Promise<UserConfig> => { mdExtensions: [], mdxExtensions: ['.md'], remarkPlugins: [remarkGfm.default, remarkDirective.default], + rehypePlugins: [rehypeHighlight], }), }, { diff --git a/vite.config.site.mts b/vite.config.site.mts index da354b2202..22b367a462 100644 --- a/vite.config.site.mts +++ b/vite.config.site.mts @@ -4,6 +4,7 @@ import reactRefresh from '@vitejs/plugin-react' import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' +import rehypeHighlight from 'rehype-highlight' import config from './package.json' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -59,6 +60,7 @@ export default defineConfig(async (): Promise<UserConfig> => { mdExtensions: [], mdxExtensions: ['.md'], remarkPlugins: [remarkGfm.default, remarkDirective.default], + rehypePlugins: [rehypeHighlight], }), }, reactRefresh(), diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.ts index 4b1ebf98ef..18f40b9dbd 100644 --- a/vite.config.site.taro.ts +++ b/vite.config.site.taro.ts @@ -4,6 +4,7 @@ import reactRefresh from '@vitejs/plugin-react' import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' +import rehypeHighlight from 'rehype-highlight' import config from './package.json' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -59,6 +60,7 @@ export default defineConfig(async (): Promise<UserConfig> => { mdExtensions: [], mdxExtensions: ['.md'], remarkPlugins: [remarkGfm.default, remarkDirective.default], + rehypePlugins: [rehypeHighlight], }), }, reactRefresh(), From dcb62cc4e85aadb62770663604530d3bc14da1be Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 26 Feb 2025 09:44:09 +0800 Subject: [PATCH 36/40] chore: resolve conflict s --- package.json | 3 +- pnpm-lock.yaml | 376 ++++++++++----- .../actionsheet/actionsheet.harmony.css | 90 ++++ src/packages/address/address.harmony.css | 52 ++ src/packages/animate/animate.harmony.css | 236 +++++++++ .../animatingnumbers.harmony.css | 4 + src/packages/audio/audio.harmony.css | 75 +++ src/packages/avatar/avatar.harmony.css | 64 +++ .../avatarcropper/avatarcropper.harmony.css | 135 ++++++ .../avatargroup/avatargroup.harmony.css | 24 + src/packages/backtop/backtop.harmony.css | 21 + src/packages/badge/badge.harmony.css | 114 +++++ src/packages/barrage/barrage.harmony.css | 84 ++++ src/packages/button/button.harmony.css | 453 ++++++++++++++++++ src/packages/calendar/calendar.harmony.css | 216 +++++++++ .../calendarcard/calendarcard.harmony.css | 186 +++++++ .../calendaritem/calendaritem.harmony.css | 4 + src/packages/card/card.harmony.css | 82 ++++ src/packages/cascader/cascader.harmony.css | 70 +++ src/packages/cell/cell.harmony.css | 91 ++++ src/packages/cellgroup/cellgroup.harmony.css | 31 ++ src/packages/checkbox/checkbox.harmony.css | 165 +++++++ .../checkboxgroup/checkboxgroup.harmony.css | 67 +++ .../circleprogress/circleprogress.harmony.css | 31 ++ src/packages/col/col.harmony.css | 360 ++++++++++++++ src/packages/collapse/collapse.harmony.css | 4 + .../collapseitem/collapseitem.harmony.css | 104 ++++ .../configprovider/configprovider.harmony.css | 4 + src/packages/countdown/countdown.harmony.css | 113 +++++ .../datepicker/datepicker.harmony.css | 4 + src/packages/dialog/dialog.harmony.css | 169 +++++++ src/packages/divider/divider.harmony.css | 72 +++ src/packages/drag/drag.harmony.css | 18 + src/packages/elevator/elevator.harmony.css | 127 +++++ src/packages/ellipsis/ellipsis.harmony.css | 24 + src/packages/empty/empty.harmony.css | 59 +++ src/packages/fixednav/fixednav.harmony.css | 187 ++++++++ src/packages/form/form.harmony.css | 70 +++ src/packages/formitem/formitem.harmony.css | 108 +++++ src/packages/grid/grid.harmony.css | 21 + src/packages/griditem/griditem.harmony.css | 111 +++++ .../hoverbutton/hoverbutton.harmony.css | 25 + .../hoverbuttonitem.harmony.css | 60 +++ src/packages/image/image.harmony.css | 54 +++ .../imagepreview/imagepreview.harmony.css | 101 ++++ src/packages/indicator/indicator.harmony.css | 162 +++++++ .../infiniteloading.harmony.css | 63 +++ src/packages/input/input.harmony.css | 54 +++ .../inputnumber/inputnumber.harmony.css | 61 +++ src/packages/layout/layout.harmony.css | 4 + src/packages/loading/loading.harmony.css | 45 ++ src/packages/lottie/lottie.harmony.css | 4 + src/packages/menu/menu.harmony.css | 56 +++ src/packages/menuitem/menuitem.harmony.css | 122 +++++ src/packages/navbar/navbar.harmony.css | 106 ++++ src/packages/noticebar/noticebar.harmony.css | 194 ++++++++ src/packages/notify/notify.harmony.css | 90 ++++ .../numberkeyboard/numberkeyboard.harmony.css | 129 +++++ src/packages/overlay/overlay.harmony.css | 63 +++ .../pagination/pagination.harmony.css | 139 ++++++ src/packages/picker/picker.harmony.css | 168 +++++++ .../pickerview/pickerview.harmony.css | 83 ++++ src/packages/popover/popover.harmony.css | 294 ++++++++++++ src/packages/popup/popup.harmony.css | 363 ++++++++++++++ src/packages/price/price.harmony.css | 96 ++++ src/packages/progress/progress.harmony.css | 77 +++ .../pulltorefresh/pulltorefresh.harmony.css | 43 ++ src/packages/radio/radio.harmony.css | 93 ++++ .../radiogroup/radiogroup.harmony.css | 49 ++ src/packages/range/range.harmony.css | 271 +++++++++++ src/packages/rate/rate.harmony.css | 168 +++++++ .../resultpage/resultpage.harmony.css | 50 ++ src/packages/row/row.harmony.css | 54 +++ src/packages/safearea/safearea.harmony.css | 14 + src/packages/searchbar/searchbar.harmony.css | 269 +++++++++++ src/packages/segmented/segmented.harmony.css | 42 ++ .../shortpassword/shortpassword.harmony.css | 123 +++++ src/packages/sidebar/sidebar.harmony.css | 63 +++ .../sidebaritem/sidebaritem.harmony.css | 19 + .../sidenavbar/sidenavbar.harmony.css | 74 +++ .../sidenavbaritem/sidenavbaritem.harmony.css | 14 + src/packages/signature/signature.harmony.css | 22 + src/packages/skeleton/skeleton.harmony.css | 79 +++ src/packages/space/space.harmony.css | 83 ++++ src/packages/step/step.harmony.css | 201 ++++++++ src/packages/steps/steps.harmony.css | 12 + src/packages/sticky/sticky.harmony.css | 7 + .../subsidenavbar/subsidenavbar.harmony.css | 20 + src/packages/swipe/swipe.harmony.css | 33 ++ src/packages/swiper/swiper.harmony.css | 68 +++ .../swiperitem/swiperitem.harmony.css | 7 + src/packages/switch/switch.harmony.css | 91 ++++ src/packages/tabbar/tabbar.harmony.css | 50 ++ .../tabbaritem/tabbaritem.harmony.css | 59 +++ src/packages/table/table.harmony.css | 230 +++++++++ src/packages/tabpane/tabpane.harmony.css | 18 + src/packages/tabs/tabs.harmony.css | 325 +++++++++++++ src/packages/tag/tag.harmony.css | 73 +++ src/packages/textarea/textarea.harmony.css | 79 +++ .../timedetail/timedetail.harmony.css | 34 ++ .../timeselect/timeselect.harmony.css | 35 ++ src/packages/toast/toast.harmony.css | 138 ++++++ src/packages/tour/tour.harmony.css | 82 ++++ .../trendarrow/trendarrow.harmony.css | 42 ++ src/packages/uploader/uploader.harmony.css | 241 ++++++++++ src/packages/video/video.harmony.css | 22 + .../virtuallist/virtuallist.harmony.css | 74 +++ src/packages/watermark/watermark.harmony.css | 17 + ....site.taro.ts => vite.config.site.taro.mts | 0 109 files changed, 10213 insertions(+), 117 deletions(-) create mode 100644 src/packages/actionsheet/actionsheet.harmony.css create mode 100644 src/packages/address/address.harmony.css create mode 100644 src/packages/animate/animate.harmony.css create mode 100644 src/packages/animatingnumbers/animatingnumbers.harmony.css create mode 100644 src/packages/audio/audio.harmony.css create mode 100644 src/packages/avatar/avatar.harmony.css create mode 100644 src/packages/avatarcropper/avatarcropper.harmony.css create mode 100644 src/packages/avatargroup/avatargroup.harmony.css create mode 100644 src/packages/backtop/backtop.harmony.css create mode 100644 src/packages/badge/badge.harmony.css create mode 100644 src/packages/barrage/barrage.harmony.css create mode 100644 src/packages/button/button.harmony.css create mode 100644 src/packages/calendar/calendar.harmony.css create mode 100644 src/packages/calendarcard/calendarcard.harmony.css create mode 100644 src/packages/calendaritem/calendaritem.harmony.css create mode 100644 src/packages/card/card.harmony.css create mode 100644 src/packages/cascader/cascader.harmony.css create mode 100644 src/packages/cell/cell.harmony.css create mode 100644 src/packages/cellgroup/cellgroup.harmony.css create mode 100644 src/packages/checkbox/checkbox.harmony.css create mode 100644 src/packages/checkboxgroup/checkboxgroup.harmony.css create mode 100644 src/packages/circleprogress/circleprogress.harmony.css create mode 100644 src/packages/col/col.harmony.css create mode 100644 src/packages/collapse/collapse.harmony.css create mode 100644 src/packages/collapseitem/collapseitem.harmony.css create mode 100644 src/packages/configprovider/configprovider.harmony.css create mode 100644 src/packages/countdown/countdown.harmony.css create mode 100644 src/packages/datepicker/datepicker.harmony.css create mode 100644 src/packages/dialog/dialog.harmony.css create mode 100644 src/packages/divider/divider.harmony.css create mode 100644 src/packages/drag/drag.harmony.css create mode 100644 src/packages/elevator/elevator.harmony.css create mode 100644 src/packages/ellipsis/ellipsis.harmony.css create mode 100644 src/packages/empty/empty.harmony.css create mode 100644 src/packages/fixednav/fixednav.harmony.css create mode 100644 src/packages/form/form.harmony.css create mode 100644 src/packages/formitem/formitem.harmony.css create mode 100644 src/packages/grid/grid.harmony.css create mode 100644 src/packages/griditem/griditem.harmony.css create mode 100644 src/packages/hoverbutton/hoverbutton.harmony.css create mode 100644 src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css create mode 100644 src/packages/image/image.harmony.css create mode 100644 src/packages/imagepreview/imagepreview.harmony.css create mode 100644 src/packages/indicator/indicator.harmony.css create mode 100644 src/packages/infiniteloading/infiniteloading.harmony.css create mode 100644 src/packages/input/input.harmony.css create mode 100644 src/packages/inputnumber/inputnumber.harmony.css create mode 100644 src/packages/layout/layout.harmony.css create mode 100644 src/packages/loading/loading.harmony.css create mode 100644 src/packages/lottie/lottie.harmony.css create mode 100644 src/packages/menu/menu.harmony.css create mode 100644 src/packages/menuitem/menuitem.harmony.css create mode 100644 src/packages/navbar/navbar.harmony.css create mode 100644 src/packages/noticebar/noticebar.harmony.css create mode 100644 src/packages/notify/notify.harmony.css create mode 100644 src/packages/numberkeyboard/numberkeyboard.harmony.css create mode 100644 src/packages/overlay/overlay.harmony.css create mode 100644 src/packages/pagination/pagination.harmony.css create mode 100644 src/packages/picker/picker.harmony.css create mode 100644 src/packages/pickerview/pickerview.harmony.css create mode 100644 src/packages/popover/popover.harmony.css create mode 100644 src/packages/popup/popup.harmony.css create mode 100644 src/packages/price/price.harmony.css create mode 100644 src/packages/progress/progress.harmony.css create mode 100644 src/packages/pulltorefresh/pulltorefresh.harmony.css create mode 100644 src/packages/radio/radio.harmony.css create mode 100644 src/packages/radiogroup/radiogroup.harmony.css create mode 100644 src/packages/range/range.harmony.css create mode 100644 src/packages/rate/rate.harmony.css create mode 100644 src/packages/resultpage/resultpage.harmony.css create mode 100644 src/packages/row/row.harmony.css create mode 100644 src/packages/safearea/safearea.harmony.css create mode 100644 src/packages/searchbar/searchbar.harmony.css create mode 100644 src/packages/segmented/segmented.harmony.css create mode 100644 src/packages/shortpassword/shortpassword.harmony.css create mode 100644 src/packages/sidebar/sidebar.harmony.css create mode 100644 src/packages/sidebaritem/sidebaritem.harmony.css create mode 100644 src/packages/sidenavbar/sidenavbar.harmony.css create mode 100644 src/packages/sidenavbaritem/sidenavbaritem.harmony.css create mode 100644 src/packages/signature/signature.harmony.css create mode 100644 src/packages/skeleton/skeleton.harmony.css create mode 100644 src/packages/space/space.harmony.css create mode 100644 src/packages/step/step.harmony.css create mode 100644 src/packages/steps/steps.harmony.css create mode 100644 src/packages/sticky/sticky.harmony.css create mode 100644 src/packages/subsidenavbar/subsidenavbar.harmony.css create mode 100644 src/packages/swipe/swipe.harmony.css create mode 100644 src/packages/swiper/swiper.harmony.css create mode 100644 src/packages/swiperitem/swiperitem.harmony.css create mode 100644 src/packages/switch/switch.harmony.css create mode 100644 src/packages/tabbar/tabbar.harmony.css create mode 100644 src/packages/tabbaritem/tabbaritem.harmony.css create mode 100644 src/packages/table/table.harmony.css create mode 100644 src/packages/tabpane/tabpane.harmony.css create mode 100644 src/packages/tabs/tabs.harmony.css create mode 100644 src/packages/tag/tag.harmony.css create mode 100644 src/packages/textarea/textarea.harmony.css create mode 100644 src/packages/timedetail/timedetail.harmony.css create mode 100644 src/packages/timeselect/timeselect.harmony.css create mode 100644 src/packages/toast/toast.harmony.css create mode 100644 src/packages/tour/tour.harmony.css create mode 100644 src/packages/trendarrow/trendarrow.harmony.css create mode 100644 src/packages/uploader/uploader.harmony.css create mode 100644 src/packages/video/video.harmony.css create mode 100644 src/packages/virtuallist/virtuallist.harmony.css create mode 100644 src/packages/watermark/watermark.harmony.css rename vite.config.site.taro.ts => vite.config.site.taro.mts (100%) diff --git a/package.json b/package.json index 5b03964510..a6fb4adb79 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "prebuild:taro:demo": "SKIPDD=1 pnpm run update:taro:entry", "build:taro:demo": "npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", "build:site": "vite build --config vite.config.site.mts", - "build:taro:site": "vite build --config vite.config.site.taro.ts && node ./scripts/rename.js", + "build:taro:site": "vite build --config vite.config.site.taro.mts && node ./scripts/rename.js", "build:jdtaro:demo": "npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "build:taro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", "build:jdtaro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", @@ -135,6 +135,7 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "16.0.0", "@rollup/plugin-typescript": "^11.1.6", + "@shikijs/markdown-it": "^3.0.0", "@swc/core": "^1.4.8", "@tarojs/components": "4.0.8-beta.1", "@tarojs/plugin-platform-alipay": "4.0.8-beta.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d2425ed08..c4628b1f06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,6 +105,9 @@ importers: '@rollup/plugin-typescript': specifier: ^11.1.6 version: 11.1.6(rollup@4.30.0)(tslib@2.8.1)(typescript@5.7.2) + '@shikijs/markdown-it': + specifier: ^3.0.0 + version: 3.0.0 '@swc/core': specifier: ^1.4.8 version: 1.10.4(@swc/helpers@0.5.15) @@ -2055,7 +2058,7 @@ packages: engines: {node: '>=18.18'} '@iarna/toml@2.2.5': - resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==, tarball: https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz} + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} '@icons/material@0.2.4': resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} @@ -2338,62 +2341,62 @@ packages: resolution: {integrity: sha512-k2hvI/9LlRA7Ph1Chni27pTuvPmKPt+/I10sWWd2sWzqiCOYRerD79eIwCMRGUF/q6WVDEKVnv00t9CEUL4sPA==} '@octokit/auth-token@5.1.2': - resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==, tarball: https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz} + resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} engines: {node: '>= 18'} '@octokit/core@6.1.4': - resolution: {integrity: sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==, tarball: https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz} + resolution: {integrity: sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==} engines: {node: '>= 18'} '@octokit/endpoint@10.1.3': - resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==, tarball: https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz} + resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==} engines: {node: '>= 18'} '@octokit/graphql@8.2.1': - resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==, tarball: https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz} + resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==} engines: {node: '>= 18'} '@octokit/openapi-types@22.2.0': - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==, tarball: https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz} + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==, tarball: https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz} + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} '@octokit/plugin-paginate-rest@11.3.1': - resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==, tarball: https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz} + resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '5' '@octokit/plugin-request-log@5.3.1': - resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==, tarball: https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz} + resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-rest-endpoint-methods@13.2.2': - resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==, tarball: https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz} + resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': ^5 '@octokit/request-error@6.1.7': - resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==, tarball: https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz} + resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==} engines: {node: '>= 18'} '@octokit/request@9.2.2': - resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==, tarball: https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz} + resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==} engines: {node: '>= 18'} '@octokit/rest@21.0.2': - resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==, tarball: https://registry.npmjs.org/@octokit/rest/-/rest-21.0.2.tgz} + resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==} engines: {node: '>= 18'} '@octokit/types@13.6.2': - resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==, tarball: https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz} + resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} '@octokit/types@13.8.0': - resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==, tarball: https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz} + resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -2456,15 +2459,15 @@ packages: optional: true '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==, tarball: https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz} + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==, tarball: https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz} + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==, tarball: https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz} + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} '@polka/url@1.0.0-next.28': @@ -2708,7 +2711,36 @@ packages: resolution: {integrity: sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==} '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==, tarball: https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz} + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@shikijs/core@3.0.0': + resolution: {integrity: sha512-gSm3JQf2J2psiUn5bWokmZwnu5N0jfBtRps4CQ1B+qrFvmZCRAkMVoaxgl9qZgAFK5KisLAS3//XaMFVytYHKw==} + + '@shikijs/engine-javascript@3.0.0': + resolution: {integrity: sha512-zoB10hTfvk1iZk1ldt6VaF+0iucQL+4TtSvTdTu5MhOeLPLEf5nZ8Wz6uxlp99y627OLalYa2z4W0iTTwb6oyA==} + + '@shikijs/engine-oniguruma@3.0.0': + resolution: {integrity: sha512-uM9lqwMrlPHPVcdpAN/4pAzTJah1pY7mi9f1MxG887SDkjF/tdiQK+5200Y8N5Hg125sewdMQ1K2agoAo8hDiA==} + + '@shikijs/langs@3.0.0': + resolution: {integrity: sha512-HBsZAukiYz7k3hzttPWa0en3PABEwK3cpxcAcERRwvwuKc5pn0Y+yPxAIYZtN9cFdtNqrbFJNhfcEu/xbG1u/A==} + + '@shikijs/markdown-it@3.0.0': + resolution: {integrity: sha512-XCTFyhNgGeKO2Fh/wbsiOel9gOWGbIFL+c9oC2tYAqsSaWaJmFn0ePTrY7AJXyWyyfFruW2T2ISs9uKtR9w02w==} + peerDependencies: + markdown-it-async: ^2.0.0 + peerDependenciesMeta: + markdown-it-async: + optional: true + + '@shikijs/themes@3.0.0': + resolution: {integrity: sha512-mz63nyVB5nXWsv5H2hifDFIThZEJ/cJhMq1/+0JjMdOuuBq2H2D1Fn8UM5yzUtEvap/ipRltv381+hsHZFs4ug==} + + '@shikijs/types@3.0.0': + resolution: {integrity: sha512-kh/xgZHxI6m9trVvPw+C47jyVHx190r0F5gkF+VO5vYB54UtcoPJe66dzZmK7GbJbzmtGEGbOwct/jsoPjjUqg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2735,7 +2767,7 @@ packages: engines: {node: '>=18'} '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==, tarball: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz} + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} '@sinonjs/commons@3.0.1': @@ -3356,7 +3388,7 @@ packages: optional: true '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==, tarball: https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz} + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} @@ -3537,7 +3569,7 @@ packages: resolution: {integrity: sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==} '@types/parse-path@7.0.3': - resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==, tarball: https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz} + resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} '@types/postcss-import@14.0.3': resolution: {integrity: sha512-raZhRVTf6Vw5+QbmQ7LOHSDML71A5rj4+EqDzAbrZPfxfoGzFxMHRCq16VlddGIZpHELw0BG4G0YE2ANkdZiIQ==} @@ -4121,7 +4153,7 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==, tarball: https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz} + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} ansi-colors@1.1.0: resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} @@ -4306,7 +4338,7 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==, tarball: https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz} + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} ast-types@0.16.1: @@ -4326,7 +4358,7 @@ packages: engines: {node: '>= 10.13.0'} async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==, tarball: https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz} + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} async-settle@2.0.0: resolution: {integrity: sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==} @@ -4346,7 +4378,7 @@ packages: engines: {node: '>= 4.0.0'} atomically@2.0.3: - resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==, tarball: https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz} + resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} @@ -4494,7 +4526,7 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==, tarball: https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz} + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} batch@0.6.1: @@ -4504,7 +4536,7 @@ packages: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} before-after-hook@3.0.2: - resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==, tarball: https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz} + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -4543,7 +4575,7 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} boxen@8.0.1: - resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==, tarball: https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz} + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} brace-expansion@1.1.11: @@ -4603,7 +4635,7 @@ packages: hasBin: true bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, tarball: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz} + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} bundle-require@5.1.0: @@ -4670,7 +4702,7 @@ packages: engines: {node: '>=10'} camelcase@8.0.0: - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==, tarball: https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz} + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} caniuse-api@3.0.0: @@ -4778,7 +4810,7 @@ packages: engines: {node: '>=8'} ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==, tarball: https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz} + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} citty@0.1.6: @@ -4807,7 +4839,7 @@ packages: engines: {node: '>=6'} cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==, tarball: https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz} + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} cli-cursor@3.1.0: @@ -4982,7 +5014,7 @@ packages: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} configstore@7.0.0: - resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==, tarball: https://registry.npmjs.org/configstore/-/configstore-7.0.0.tgz} + resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==} engines: {node: '>=18'} confusing-browser-globals@1.0.11: @@ -5242,7 +5274,7 @@ packages: engines: {node: '>=0.10'} data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==, tarball: https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz} + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} data-urls@5.0.0: @@ -5362,11 +5394,11 @@ packages: engines: {node: '>=0.10.0'} default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, tarball: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz} + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, tarball: https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz} + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} default-gateway@6.0.3: @@ -5388,7 +5420,7 @@ packages: engines: {node: '>=8'} define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz} + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} define-properties@1.2.1: @@ -5399,7 +5431,7 @@ packages: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==, tarball: https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz} + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} del@8.0.0: @@ -5519,7 +5551,7 @@ packages: engines: {node: '>=8'} dot-prop@9.0.0: - resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==, tarball: https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz} + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} dotenv-expand@11.0.7: @@ -5572,6 +5604,9 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -5702,7 +5737,7 @@ packages: engines: {node: '>=6'} escape-goat@4.0.0: - resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==, tarball: https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz} + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} engines: {node: '>=12'} escape-html@1.0.3: @@ -5725,7 +5760,7 @@ packages: engines: {node: '>=12'} escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, tarball: https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz} + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true @@ -6097,7 +6132,7 @@ packages: engines: {node: '>=16.17'} execa@9.5.2: - resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==, tarball: https://registry.npmjs.org/execa/-/execa-9.5.2.tgz} + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} engines: {node: ^18.19.0 || >=20.5.0} executable@4.1.1: @@ -6160,7 +6195,7 @@ packages: engines: {node: '>=10.13.0'} fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==, tarball: https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz} + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -6223,7 +6258,7 @@ packages: engines: {node: '>=8'} figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==, tarball: https://registry.npmjs.org/figures/-/figures-6.1.0.tgz} + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} file-entry-cache@6.0.1: @@ -6505,7 +6540,7 @@ packages: engines: {node: '>=16'} get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==, tarball: https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz} + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} get-symbol-description@1.1.0: @@ -6516,7 +6551,7 @@ packages: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} get-uri@6.0.4: - resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==, tarball: https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz} + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} getos@3.2.1: @@ -6538,10 +6573,10 @@ packages: hasBin: true git-up@8.0.1: - resolution: {integrity: sha512-2XFu1uNZMSjkyetaF+8rqn6P0XqpMq/C+2ycjI6YwrIKcszZ5/WR4UubxjN0lILOKqLkLaHDaCr2B6fP1cke6g==, tarball: https://registry.npmjs.org/git-up/-/git-up-8.0.1.tgz} + resolution: {integrity: sha512-2XFu1uNZMSjkyetaF+8rqn6P0XqpMq/C+2ycjI6YwrIKcszZ5/WR4UubxjN0lILOKqLkLaHDaCr2B6fP1cke6g==} git-url-parse@16.0.0: - resolution: {integrity: sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==, tarball: https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.0.0.tgz} + resolution: {integrity: sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -6655,7 +6690,7 @@ packages: engines: {node: '>=8.6'} graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz} + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -6755,6 +6790,9 @@ packages: hast-util-to-estree@3.1.1: resolution: {integrity: sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + hast-util-to-jsx-runtime@2.3.2: resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} @@ -6837,6 +6875,9 @@ packages: html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + html-webpack-plugin@5.6.3: resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} engines: {node: '>=10.13.0'} @@ -6910,7 +6951,7 @@ packages: engines: {node: '>=16.17.0'} human-signals@8.0.0: - resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==, tarball: https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz} + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} engines: {node: '>=18.18.0'} husky@9.1.7: @@ -7006,7 +7047,7 @@ packages: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} inquirer@12.3.0: - resolution: {integrity: sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ==, tarball: https://registry.npmjs.org/inquirer/-/inquirer-12.3.0.tgz} + resolution: {integrity: sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -7032,7 +7073,7 @@ packages: engines: {node: '>=4'} ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==, tarball: https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz} + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -7117,7 +7158,7 @@ packages: hasBin: true is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, tarball: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz} + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true @@ -7168,12 +7209,12 @@ packages: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} is-in-ci@1.0.0: - resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==, tarball: https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz} + resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==} engines: {node: '>=18'} hasBin: true is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, tarball: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz} + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true @@ -7182,7 +7223,7 @@ packages: engines: {node: '>=10'} is-installed-globally@1.0.0: - resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==, tarball: https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz} + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} engines: {node: '>=18'} is-interactive@1.0.0: @@ -7190,7 +7231,7 @@ packages: engines: {node: '>=8'} is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz} + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} is-invalid-path@1.0.2: @@ -7215,7 +7256,7 @@ packages: engines: {node: '>=0.10.0'} is-npm@6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==, tarball: https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz} + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-number-object@1.1.1: @@ -7296,7 +7337,7 @@ packages: engines: {node: '>= 0.4'} is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==, tarball: https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz} + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} @@ -7311,7 +7352,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==, tarball: https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz} + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} is-string@1.1.1: @@ -7342,11 +7383,11 @@ packages: engines: {node: '>=10'} is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz} + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz} + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} is-valid-glob@1.0.0: @@ -7377,7 +7418,7 @@ packages: engines: {node: '>=8'} is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz} + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} isarray@0.0.1: @@ -7404,7 +7445,7 @@ packages: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} issue-parser@7.0.1: - resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==, tarball: https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz} + resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} engines: {node: ^18.17 || >=20.6.1} istanbul-lib-coverage@3.2.2: @@ -7641,7 +7682,7 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==, tarball: https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz} + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} jscodeshift@17.1.1: resolution: {integrity: sha512-4vq5B1sD37aa9qed3zWq2XQPun5XjxebIv+Folr57lt8B4HLGDHEz1UG7pfcxzSaelzPbcY7yZSs033/S0i6wQ==} @@ -7769,7 +7810,7 @@ packages: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} ky@1.7.4: - resolution: {integrity: sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==, tarball: https://registry.npmjs.org/ky/-/ky-1.7.4.tgz} + resolution: {integrity: sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==} engines: {node: '>=18'} language-subtag-registry@0.3.23: @@ -7788,7 +7829,7 @@ packages: engines: {node: '>=8'} latest-version@9.0.0: - resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==, tarball: https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz} + resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} engines: {node: '>=18'} launch-editor@2.9.1: @@ -7974,7 +8015,7 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.capitalize@4.2.1: - resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==, tarball: https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz} + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -7983,7 +8024,7 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.escaperegexp@4.1.2: - resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==, tarball: https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz} + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -7992,7 +8033,7 @@ packages: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==, tarball: https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz} + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} @@ -8025,7 +8066,7 @@ packages: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} lodash.uniqby@4.7.0: - resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==, tarball: https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz} + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} @@ -8038,7 +8079,7 @@ packages: engines: {node: '>=10'} log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz} + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} log-update@4.0.0: @@ -8123,7 +8164,7 @@ packages: engines: {node: '>=10'} lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz} + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} lz-string@1.5.0: @@ -8134,7 +8175,7 @@ packages: resolution: {integrity: sha512-CAkF9HKrM+XpB0f3DepQ2to2iUEo0zrbh+XgBqgNBc1+k8HMM3u/YSfHI3Dr4GmoTIez2Pr/If1XFl3rU26AwA==} macos-release@3.3.0: - resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==, tarball: https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz} + resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} magic-string@0.30.17: @@ -8624,11 +8665,11 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==, tarball: https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz} + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} new-github-release-url@2.0.0: - resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==, tarball: https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz} + resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} no-case@2.3.2: @@ -8690,7 +8731,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} npm-run-path@6.0.0: - resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz} + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} nth-check@2.1.1: @@ -8777,8 +8818,11 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==, tarball: https://registry.npmjs.org/open/-/open-10.1.0.tgz} + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} open@8.4.2: @@ -8794,11 +8838,11 @@ packages: engines: {node: '>=10'} ora@8.1.1: - resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==, tarball: https://registry.npmjs.org/ora/-/ora-8.1.1.tgz} + resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} engines: {node: '>=18'} os-name@6.0.0: - resolution: {integrity: sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==, tarball: https://registry.npmjs.org/os-name/-/os-name-6.0.0.tgz} + resolution: {integrity: sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==} engines: {node: '>=18'} os-tmpdir@1.0.2: @@ -8885,18 +8929,18 @@ packages: engines: {node: '>=6'} pac-proxy-agent@7.1.0: - resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==, tarball: https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz} + resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==} engines: {node: '>= 14'} pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==, tarball: https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz} + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-json@10.0.1: - resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==, tarball: https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz} + resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} engines: {node: '>=18'} package-json@6.5.0: @@ -8932,7 +8976,7 @@ packages: engines: {node: '>=8'} parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==, tarball: https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz} + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} parse-passwd@1.0.0: @@ -8940,10 +8984,10 @@ packages: engines: {node: '>=0.10.0'} parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==, tarball: https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz} + resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} parse-url@9.2.0: - resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==, tarball: https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz} + resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} engines: {node: '>=14.13.0'} parse5-htmlparser2-tree-adapter@6.0.1: @@ -9485,7 +9529,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==, tarball: https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz} + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} pretty-time@1.1.0: @@ -9526,18 +9570,21 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==, tarball: https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz} + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} proxy-agent@6.5.0: - resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==, tarball: https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz} + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} proxy-from-env@1.0.0: @@ -9572,7 +9619,7 @@ packages: engines: {node: '>=6'} pupa@3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==, tarball: https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz} + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} engines: {node: '>=12.20'} pure-rand@6.1.0: @@ -9800,6 +9847,15 @@ packages: regex-parser@2.3.0: resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -9821,7 +9877,7 @@ packages: engines: {node: '>=6.0.0'} registry-auth-token@5.0.3: - resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==, tarball: https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz} + resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} engines: {node: '>=14'} registry-url@5.1.0: @@ -9829,7 +9885,7 @@ packages: engines: {node: '>=8'} registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==, tarball: https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz} + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} regjsgen@0.8.0: @@ -9854,7 +9910,7 @@ packages: engines: {node: '>= 0.10'} release-it@18.1.2: - resolution: {integrity: sha512-HOVRcicehCgoCsPFOu0iCBlEC8GDOoKS5s6ICkWmqomGEoZtRQ88D3RCsI5MciSU8vAQU+aWZW2z57NQNNb74w==, tarball: https://registry.npmjs.org/release-it/-/release-it-18.1.2.tgz} + resolution: {integrity: sha512-HOVRcicehCgoCsPFOu0iCBlEC8GDOoKS5s6ICkWmqomGEoZtRQ88D3RCsI5MciSU8vAQU+aWZW2z57NQNNb74w==} engines: {node: ^20.9.0 || >=22.0.0} hasBin: true @@ -10031,7 +10087,7 @@ packages: hasBin: true run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==, tarball: https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz} + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} run-async@2.4.1: @@ -10039,7 +10095,7 @@ packages: engines: {node: '>=0.12.0'} run-async@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==, tarball: https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz} + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} run-parallel@1.2.0: @@ -10160,7 +10216,7 @@ packages: hasBin: true semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, tarball: https://registry.npmjs.org/semver/-/semver-7.6.3.tgz} + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -10234,6 +10290,9 @@ packages: engines: {node: '>=4'} hasBin: true + shiki@3.0.0: + resolution: {integrity: sha512-x6MMdYN9auPGx7kMFtyKbaj65eCdetfrfkvQZwqisZLnGMnAZsZxOpcWD0ElvLPFWHOSMukVyN9Opm7TxQjnZA==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -10302,7 +10361,7 @@ packages: engines: {node: '>=18'} smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, tarball: https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz} + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} smob@1.5.0: @@ -10315,11 +10374,11 @@ packages: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==, tarball: https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz} + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==, tarball: https://registry.npmjs.org/socks/-/socks-2.8.3.tgz} + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} solid-js@1.9.3: @@ -10413,7 +10472,7 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==, tarball: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz} + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -10450,7 +10509,7 @@ packages: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, tarball: https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz} + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} stream-combiner@0.0.4: @@ -10566,7 +10625,7 @@ packages: engines: {node: '>=12'} strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz} + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} strip-indent@3.0.0: @@ -10589,7 +10648,7 @@ packages: engines: {node: '>=0.10.0'} stubborn-fs@1.2.5: - resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==, tarball: https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz} + resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} style-loader@3.3.4: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} @@ -11003,7 +11062,7 @@ packages: engines: {node: '>=12.20'} type-fest@4.31.0: - resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==, tarball: https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz} + resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} engines: {node: '>=16'} type-is@1.6.18: @@ -11090,7 +11149,7 @@ packages: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} undici@6.21.1: - resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==, tarball: https://registry.npmjs.org/undici/-/undici-6.21.1.tgz} + resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==} engines: {node: '>=18.17'} unescape-js@1.1.4: @@ -11117,7 +11176,7 @@ packages: engines: {node: '>=18'} unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz} + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} unified@11.0.5: @@ -11151,7 +11210,7 @@ packages: resolution: {integrity: sha512-i3XDhyfg0znwCu2Ue1zwWIWgfed+XYDqlUYXgriGnS58tzO3RgKHe4KWtq9HLQOl/Tknnh0C6jEH0+FLTrrBiQ==} universal-user-agent@7.0.2: - resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==, tarball: https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz} + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -11184,7 +11243,7 @@ packages: browserslist: '>= 4.21.0' update-notifier@7.3.1: - resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==, tarball: https://registry.npmjs.org/update-notifier/-/update-notifier-7.3.1.tgz} + resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==} engines: {node: '>=18'} upper-case-first@2.0.2: @@ -11200,7 +11259,7 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} url-join@5.0.0: - resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==, tarball: https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz} + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} url-parse-lax@3.0.0: @@ -11566,7 +11625,7 @@ packages: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} when-exit@2.1.3: - resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==, tarball: https://registry.npmjs.org/when-exit/-/when-exit-2.1.3.tgz} + resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==} which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} @@ -11599,17 +11658,17 @@ packages: hasBin: true widest-line@5.0.0: - resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==, tarball: https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz} + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} wildcard-match@5.1.4: - resolution: {integrity: sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==, tarball: https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz} + resolution: {integrity: sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==} wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} windows-release@6.0.1: - resolution: {integrity: sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==, tarball: https://registry.npmjs.org/windows-release/-/windows-release-6.0.1.tgz} + resolution: {integrity: sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==} engines: {node: '>=18'} word-wrap@1.2.5: @@ -11656,7 +11715,7 @@ packages: optional: true xdg-basedir@5.1.0: - resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==, tarball: https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz} + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} xml-name-validator@4.0.0: @@ -11736,7 +11795,7 @@ packages: engines: {node: '>=18'} yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==, tarball: https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz} + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} yup@1.6.1: @@ -14171,6 +14230,44 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-oniguruma@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + + '@shikijs/markdown-it@3.0.0': + dependencies: + markdown-it: 14.1.0 + shiki: 3.0.0 + + '@shikijs/themes@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + + '@shikijs/types@3.0.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -17668,6 +17765,8 @@ snapshots: emittery@0.13.1: {} + emoji-regex-xs@1.0.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -19450,6 +19549,20 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.2: dependencies: '@types/estree': 1.0.6 @@ -19561,6 +19674,8 @@ snapshots: html-url-attributes@3.0.1: {} + html-void-elements@3.0.0: {} + html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))): dependencies: '@types/html-minifier-terser': 6.1.0 @@ -21920,6 +22035,12 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-es@3.1.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 6.0.1 + regex-recursion: 6.0.2 + open@10.1.0: dependencies: default-browser: 5.2.1 @@ -22635,6 +22756,8 @@ snapshots: property-information@6.5.0: {} + property-information@7.0.0: {} + proto-list@1.2.4: {} protocols@2.0.1: {} @@ -22991,6 +23114,16 @@ snapshots: regex-parser@2.3.0: {} + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + regexp-ast-analysis@0.7.1: dependencies: '@eslint-community/regexpp': 4.12.1 @@ -23542,6 +23675,17 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 + shiki@3.0.0: + dependencies: + '@shikijs/core': 3.0.0 + '@shikijs/engine-javascript': 3.0.0 + '@shikijs/engine-oniguruma': 3.0.0 + '@shikijs/langs': 3.0.0 + '@shikijs/themes': 3.0.0 + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 diff --git a/src/packages/actionsheet/actionsheet.harmony.css b/src/packages/actionsheet/actionsheet.harmony.css new file mode 100644 index 0000000000..f41f16a46c --- /dev/null +++ b/src/packages/actionsheet/actionsheet.harmony.css @@ -0,0 +1,90 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-actionsheet { + text-align: center; +} +.nut-actionsheet.nut-popup { + min-height: 10%; + background-color: #ffffff; +} +.nut-actionsheet .nut-popup-title { + border-bottom: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-actionsheet-list { + display: block; + list-style: none; + padding: 0; + margin: 0; + border-radius: 0; +} +.nut-actionsheet-cancel { + display: block; + padding: 10px; + text-align: center; + line-height: 24px; + font-size: 14px; + color: #1a1a1a; + cursor: pointer; +} +.nut-actionsheet-item { + display: block; + padding: 10px; + text-align: center; + line-height: 24px; + font-size: 14px; + color: #1a1a1a; + cursor: pointer; +} +.nut-actionsheet-cancel-name { + text-align: center; + line-height: 24px; + font-size: 14px; + color: #1a1a1a; +} +.nut-actionsheet-item-name { + text-align: center; + line-height: 24px; + font-size: 14px; + color: #1a1a1a; +} +.nut-actionsheet-cancel-description { + display: block; + font-size: 12px; + color: #505259; + text-align: center; + line-height: 24px; +} +.nut-actionsheet-item-description { + display: block; + font-size: 12px; + color: #505259; + text-align: center; + line-height: 24px; +} +.nut-actionsheet-cancel-danger { + color: #ff0f23; +} +.nut-actionsheet-item-danger { + color: #ff0f23; +} +.nut-actionsheet-cancel-disabled { + color: #c2c4cc !important; + cursor: not-allowed; +} +.nut-actionsheet-item-disabled { + color: #c2c4cc !important; + cursor: not-allowed; +} +.nut-actionsheet-cancel { + margin-top: 5px; + border-top: 1px solid rgba(0, 0, 0, 0.06); + border-radius: 0; +} +.nut-actionsheet-safe-area { + display: block; + width: 100%; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); +} \ No newline at end of file diff --git a/src/packages/address/address.harmony.css b/src/packages/address/address.harmony.css new file mode 100644 index 0000000000..79bb00f713 --- /dev/null +++ b/src/packages/address/address.harmony.css @@ -0,0 +1,52 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-address-elevator { + display: flex; + margin-top: 20px; +} +.nut-address-exist { + display: block; + padding: 15px 20px 0; + height: 279px; + overflow-y: auto; + box-sizing: border-box; +} +.nut-address-exist-item { + display: flex; + align-items: center; + margin-bottom: 20px; + font-size: 12px; + line-height: 14px; + color: #1a1a1a; +} +.nut-address-exist-item.active { + font-weight: 600; +} +.nut-address-exist-item-info { + margin-left: 9px; +} +.nut-address-footer { + width: 100%; + height: 54px; + padding: 6px 0px 0; + border-top: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-address-footer-btn { + width: 90%; + height: 42px; + line-height: 42px; + margin: auto; + text-align: center; + background: linear-gradient(90deg, #ff475d 0%, #ff0f23 100%); + border-radius: 21px; + font-size: 15px; + color: #ffffff; +} + +[dir=rtl] .nut-address-exist-item-info, +.nut-rtl .nut-address-exist-item-info { + margin-left: 0; + margin-right: 9px; +} \ No newline at end of file diff --git a/src/packages/animate/animate.harmony.css b/src/packages/animate/animate.harmony.css new file mode 100644 index 0000000000..11c8b2384d --- /dev/null +++ b/src/packages/animate/animate.harmony.css @@ -0,0 +1,236 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-animate { + /* Animation CSS */ + /* Slide Animations */ + /* Shake Animation */ + /* Ripple Animation */ + /* Breath Animation */ + /* Twinkle Animation */ + /* Flicker Animation */ + /* Jump Animation */ + /* Float Animation */ + /* Loop Animation */ +} +.nut-animate [class*=nut-animate-] { + animation-duration: 0.5s; + animation-timing-function: ease-out; + animation-fill-mode: both; +} +@keyframes slide-right { + 0% { + opacity: 0; + transform: translateX(100%); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} +@keyframes slide-left { + 0% { + opacity: 0; + transform: translateX(-100%); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} +@keyframes slide-top { + 0% { + opacity: 0; + transform: translateY(-100%); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +@keyframes slide-bottom { + 0% { + opacity: 0; + transform: translateY(100%); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +.nut-animate .nut-animate-slide-right { + animation-name: slide-right; +} +.nut-animate .nut-animate-slide-left { + animation-name: slide-left; +} +.nut-animate .nut-animate-slide-top { + animation-name: slide-top; +} +.nut-animate .nut-animate-slide-bottom { + animation-name: slide-bottom; +} +@keyframes shake { + 0%, 100% { + transform: translateX(0); + } + 10% { + transform: translateX(-9px); + } + 20% { + transform: translateX(8px); + } + 30% { + transform: translateX(-7px); + } + 40% { + transform: translateX(6px); + } + 50% { + transform: translateX(-5px); + } + 60% { + transform: translateX(4px); + } + 70% { + transform: translateX(-3px); + } + 80% { + transform: translateX(2px); + } + 90% { + transform: translateX(-1px); + } +} +.nut-animate .nut-animate-shake { + animation-name: shake; +} +@keyframes ripple { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.1); + } +} +.nut-animate .nut-animate-ripple { + animation-name: ripple; +} +@keyframes breath { + 0%, 100% { + transform: scale(1); + } + 50% { + transform: scale(1.1); + } +} +.nut-animate .nut-animate-breath { + animation-name: breath; + animation-duration: 2700ms; + animation-timing-function: ease-in-out; + animation-direction: alternate; +} +.nut-animate .nut-animate-twinkle { + position: relative; +} +.nut-animate .nut-animate-twinkle::after, .nut-animate .nut-animate-twinkle::before { + width: 60px; + height: 60px; + content: ""; + box-sizing: border-box; + border: 4px solid rgba(255, 255, 255, 0.6); + position: absolute; + border-radius: 30px; + right: 50%; + margin-top: -30px; + margin-right: -30px; + z-index: 1; + transform: scale(0); + animation: twinkle 2s ease-out infinite; +} +.nut-animate .nut-animate-twinkle::after { + animation-delay: 0.4s; +} +@keyframes twinkle { + 0% { + transform: scale(0); + } + 20% { + opacity: 1; + } + 50%, 100% { + transform: scale(1.4); + opacity: 0; + } +} +.nut-animate .nut-animate-flicker { + position: relative; + overflow: hidden; +} +.nut-animate .nut-animate-flicker::after { + width: 100px; + height: 60px; + position: absolute; + left: 0; + top: 0; + opacity: 0.73; + content: ""; + background-image: linear-gradient(106deg, rgba(232, 224, 255, 0) 24%, #e8e0ff 91%); + animation: flicker 1.5s linear infinite; + transform: skewX(-20deg); + filter: blur(3px); +} +@keyframes flicker { + 0% { + transform: translateX(-100px) skewX(-20deg); + } + 40%, 100% { + transform: translateX(150px) skewX(-20deg); + } +} +@keyframes jump { + 0% { + transform: rotate(0) translateY(0); + } + 25% { + transform: rotate(10deg) translateY(20px); + } + 50% { + transform: rotate(0) translateY(-10px); + } + 75% { + transform: rotate(-10deg) translateY(20px); + } + 100% { + transform: rotate(0) translateY(0); + } +} +.nut-animate .nut-animate-jump { + transform-origin: center center; + animation: jump 0.7s linear; +} +@keyframes float-pop { + 0% { + top: 0; + } + 25% { + top: 1px; + } + 50% { + top: 4px; + } + 75% { + top: 1px; + } + 100% { + top: 0; + } +} +.nut-animate .nut-animate-float { + position: relative; + animation-name: float-pop; +} +.nut-animate .loop { + animation-iteration-count: infinite; +} \ No newline at end of file diff --git a/src/packages/animatingnumbers/animatingnumbers.harmony.css b/src/packages/animatingnumbers/animatingnumbers.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/animatingnumbers/animatingnumbers.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/audio/audio.harmony.css b/src/packages/audio/audio.harmony.css new file mode 100644 index 0000000000..83d9878f96 --- /dev/null +++ b/src/packages/audio/audio.harmony.css @@ -0,0 +1,75 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-audio-icon { + position: relative; + display: inline-block; +} +.nut-audio-icon-box { + display: flex; + align-items: center; + justify-content: center; + width: 30px; + height: 30px; + background: #ffffff; + border-radius: 50%; + box-shadow: 0 0 8px #c2c4cc; +} +.nut-audio-icon .nut-audio-icon-stop { + position: relative; +} +.nut-audio-icon .nut-audio-icon-stop::after { + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%); + content: ""; + height: 2px; + width: 30px; + background: #c2c4cc; + transform: rotate(45deg); + transform-origin: 8px -18px; +} +.nut-audio-progress { + display: flex; + align-items: center; + width: 100%; + margin: 0px auto; + padding: 10px 0; +} +.nut-audio-progress-bar-wrapper { + flex: 1; + margin: 0 10px; +} +.nut-audio-progress .time { + min-width: 50px; + font-size: 12px; + text-align: center; +} +.nut-audio-progress .nut-range-button { + width: 8px; + height: 8px; +} +.nut-audio .custom-button-group .nut-button-primary { + margin: 0 5px; +} +.nut-audio .custom-button-group-disable .nut-button-primary { + margin: 0 5px; + pointer-events: none; +} +.nut-audio .disable { + color: blue; +} +.nut-audio .nut-audio-none-container .nut-voice { + border: 1px solid #1a1a1a; + align-items: center; +} + +[dir=rtl] .nut-audio-icon .nut-audio-icon-stop::after, +.nut-rtl .nut-audio-icon .nut-audio-icon-stop::after { + left: auto; + right: 50%; + transform: rotate(-45deg); + transform-origin: 20px -18px; +} \ No newline at end of file diff --git a/src/packages/avatar/avatar.harmony.css b/src/packages/avatar/avatar.harmony.css new file mode 100644 index 0000000000..11ac5cf917 --- /dev/null +++ b/src/packages/avatar/avatar.harmony.css @@ -0,0 +1,64 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-avatar { + position: relative; + flex: 0 0 auto; + display: flex; + justify-content: center; + align-items: center; + width: 40px; + height: 40px; +} +.nut-avatar-round { + border-radius: 999px; + overflow: hidden; +} +.nut-avatar-square { + border-radius: 5px; +} +.nut-avatar-first-child { + margin-left: 0; + margin-right: 0; +} +.nut-avatar-img { + width: 100%; + height: 100%; + flex-shrink: 0; + background-size: 100% 100%; + background-repeat: no-repeat; + background-position: center center; +} +.nut-avatar-icon { + background-size: 100% 100%; +} +.nut-avatar-text { + display: flex; + justify-content: center; + align-items: center; +} +.nut-avatar-large { + width: 60px; + height: 60px; +} +.nut-avatar-large-img { + width: 60px; + height: 60px; +} +.nut-avatar-large-icon { + width: 60px; + height: 60px; +} +.nut-avatar-large-text { + width: 60px; + height: 60px; +} +.nut-avatar-small { + width: 32px; + height: 32px; +} +.nut-avatar-small-text { + width: 32px; + height: 32px; +} \ No newline at end of file diff --git a/src/packages/avatarcropper/avatarcropper.harmony.css b/src/packages/avatarcropper/avatarcropper.harmony.css new file mode 100644 index 0000000000..4797f354c6 --- /dev/null +++ b/src/packages/avatarcropper/avatarcropper.harmony.css @@ -0,0 +1,135 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-avatar-cropper { + position: relative; + display: flex; +} +.nut-avatar-cropper-edit-text { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.3); + z-index: 1; + color: #fff; + display: flex; + justify-content: center; + align-items: center; +} +.nut-avatar-cropper-input { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + cursor: pointer; + z-index: 2; +} +.nut-avatar-cropper-popup { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); + z-index: 1000; +} +.nut-avatar-cropper-popup-canvas, .nut-avatar-cropper-popup-cut-canvas { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; +} +.nut-avatar-cropper-popup-cut-canvas { + z-index: 0; +} +.nut-avatar-cropper-popup-toolbar { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + z-index: 2; +} +.nut-avatar-cropper-popup-toolbar.top { + top: 0; + bottom: inherit; +} +.nut-avatar-cropper-popup-toolbar-flex { + width: 100%; + display: flex; + justify-content: space-between; +} +.nut-avatar-cropper-popup-toolbar-item { + color: #fff; + padding: 15px; + cursor: pointer; + display: flex; + align-items: center; +} +.nut-avatar-cropper-popup-toolbar-item .nut-button { + color: #fff; +} +.nut-avatar-cropper-popup-highlight { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1; + background-color: transparent; +} +.nut-avatar-cropper-popup-highlight .highlight { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background-color: transparent; + box-shadow: 0 0 1000px 1000px rgba(0, 0, 0, 0.6); +} +.nut-avatar-cropper.round .nut-avatar-cropper-edit-text { + border-radius: 50%; +} + +[dir=rtl] .nut-avatar-cropper-edit-text, +.nut-rtl .nut-avatar-cropper-edit-text { + left: auto; + right: 0; +} +[dir=rtl] .nut-avatar-cropper-input, +.nut-rtl .nut-avatar-cropper-input { + left: auto; + right: 0; +} +[dir=rtl] .nut-avatar-cropper-popup, +.nut-rtl .nut-avatar-cropper-popup { + left: auto; + right: 0; +} +[dir=rtl] .nut-avatar-cropper-popup-canvas, [dir=rtl] .nut-avatar-cropper-popup-cut-canvas, +.nut-rtl .nut-avatar-cropper-popup-canvas, +.nut-rtl .nut-avatar-cropper-popup-cut-canvas { + left: auto; + right: 0; +} +[dir=rtl] .nut-avatar-cropper-popup-toolbar, +.nut-rtl .nut-avatar-cropper-popup-toolbar { + left: auto; + right: 0; +} +[dir=rtl] .nut-avatar-cropper-popup-highlight, +.nut-rtl .nut-avatar-cropper-popup-highlight { + left: auto; + right: 0; +} +[dir=rtl] .nut-avatar-cropper-popup-highlight .highlight, +.nut-rtl .nut-avatar-cropper-popup-highlight .highlight { + left: auto; + right: 50%; + transform: translate(50%, -50%); +} \ No newline at end of file diff --git a/src/packages/avatargroup/avatargroup.harmony.css b/src/packages/avatargroup/avatargroup.harmony.css new file mode 100644 index 0000000000..494763635f --- /dev/null +++ b/src/packages/avatargroup/avatargroup.harmony.css @@ -0,0 +1,24 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-avatar-group { + display: flex; + flex-direction: row; + flex: 0 0 auto; +} +.nut-avatar-group-avatar, +.nut-avatar-group .nut-avatar { + border: 1px solid #fff; + margin-left: -8px; +} +.nut-avatar-group-avatar:not(:first-of-type), +.nut-avatar-group .nut-avatar:not(:first-of-type) { + margin-left: -8px; +} + +[dir=rtl] .nut-avatar-group .nut-avatar:not(:first-of-type), +.nut-rtl .nut-avatar-group .nut-avatar:not(:first-of-type) { + margin-left: 0; + margin-right: -8px; +} \ No newline at end of file diff --git a/src/packages/backtop/backtop.harmony.css b/src/packages/backtop/backtop.harmony.css new file mode 100644 index 0000000000..854376293c --- /dev/null +++ b/src/packages/backtop/backtop.harmony.css @@ -0,0 +1,21 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-backtop { + display: none; +} +.nut-backtop-show { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + transition: all 0.2s ease-in-out; +} +.nut-backtop-show .nut-hoverbutton-item-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} \ No newline at end of file diff --git a/src/packages/badge/badge.harmony.css b/src/packages/badge/badge.harmony.css new file mode 100644 index 0000000000..0ba97fb364 --- /dev/null +++ b/src/packages/badge/badge.harmony.css @@ -0,0 +1,114 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-badge { + position: relative; + display: inline-flex; + width: auto; +} +.nut-badge-icon { + display: flex; + justify-content: center; + align-items: center; + background: #ff0f23; + padding: 2px; + text-align: center; + z-index: 1; +} +.nut-badge-icon .nut-icon { + width: 10px; + height: 10px; + font-size: 10px; +} +.nut-badge-sup { + border-radius: 14px; +} +.nut-badge-icon { + border-radius: 14px; +} +.nut-badge-sup::after { + content: ""; + position: absolute; + top: -50%; + bottom: -50%; + left: -50%; + right: -50%; + transform: scale(0.5); + border: 1px solid #ffffff; + border-radius: 14px; +} +.nut-badge-icon::after { + content: ""; + position: absolute; + top: -50%; + bottom: -50%; + left: -50%; + right: -50%; + transform: scale(0.5); + border: 1px solid #ffffff; + border-radius: 14px; +} +.nut-badge-sup { + display: inline-flex; + justify-content: center; + height: 14px; + min-width: 6px; + padding: 1px 4px; + box-sizing: border-box; + color: #ffffff; + font-size: 10px; + line-height: 12px; + white-space: nowrap; + font-weight: normal; + vertical-align: middle; + background: #ff0f23; + z-index: 1; +} +.nut-badge-number { + font-family: "JD"; + /* #ifdef harmony */ + line-height: 12px; + /* #endif */ + /* #ifndef harmony */ + line-height: 13px; + /* #endif */ +} +.nut-badge-one { + height: 14px; + width: 14px; +} +.nut-badge-content { + position: absolute; + transform: translate(50%, -50%); +} +.nut-badge-dot { + padding: 0; + border-radius: 50%; +} +.nut-badge-dot::after { + border: 1px solid #ffffff; + border-radius: 50%; +} +.nut-badge-dot-normal { + min-width: 6px; + width: 6px; + height: 6px; +} +.nut-badge-dot-small { + min-width: 4px; + width: 4px; + height: 4px; +} +.nut-badge-dot-large { + min-width: 8px; + width: 8px; + height: 8px; +} +.nut-badge-outline { + background: #ffffff; + color: #ff0f23; +} +.nut-badge-outline::after { + border: 1px solid #ff0f23; +} \ No newline at end of file diff --git a/src/packages/barrage/barrage.harmony.css b/src/packages/barrage/barrage.harmony.css new file mode 100644 index 0000000000..8abd2d7a6b --- /dev/null +++ b/src/packages/barrage/barrage.harmony.css @@ -0,0 +1,84 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-barrage { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + box-sizing: border-box; + background-color: #f2f3f5; + color: #1a1a1a; +} +.nut-barrage .barrage-item { + display: block; + position: absolute; + right: 0; + padding: 4px 16px; + border-radius: 16px; + font-size: 12px; + text-align: center; + white-space: pre; + transform: translateX(100%); + background: linear-gradient(to right, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0)); + box-sizing: border-box; +} +.nut-barrage .barrage-item.move { + will-change: transform; + animation-name: moving; + animation-timing-function: linear; + animation-play-state: running; +} +@keyframes moving { + from { + transform: translateX(100%); + } + to { + transform: undefined; + } +} +@-webkit-keyframes moving { + from { + -webkit-transform: translateX(100%); + } + to { + -webkit-transform: undefined; + } +} + +[dir=rtl] .nut-barrage, +.nut-rtl .nut-barrage { + left: auto; + right: 0; +} +[dir=rtl] .nut-barrage .barrage-item { + transform: translateX(-100%); + background: linear-gradient(to left, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0)); +} +.nut-rtl .nut-barrage .barrage-item { + transform: translateX(-100%); + background: linear-gradient(to left, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0)); +} +[dir=rtl] .nut-barrage .barrage-item.move, +.nut-rtl .nut-barrage .barrage-item.move { + animation-name: moving-rtl; +} +@keyframes moving-rtl { + from { + transform: undefined; + } + to { + transform: translateX(100%); + } +} +@-webkit-keyframes moving-rtl { + from { + transform: undefined; + } + to { + transform: translateX(100%); + } +} \ No newline at end of file diff --git a/src/packages/button/button.harmony.css b/src/packages/button/button.harmony.css new file mode 100644 index 0000000000..195782d137 --- /dev/null +++ b/src/packages/button/button.harmony.css @@ -0,0 +1,453 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-button { + position: relative; + display: flex; + display: inline-block; + /* #ifdef harmony*/ + width: 80px; + /* #endif */ + /* #ifndef harmony*/ + width: auto; + /* #endif */ + flex-direction: row; + justify-content: center; + align-items: center; + flex-shrink: 0; + box-sizing: border-box; + margin: 0; + padding: 0; + height: 32px; + font-size: 14px; + font-weight: 400; + text-align: center; + cursor: pointer; + transition: opacity 0.2s; + user-select: none; + touch-action: manipulation; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + color: #1a1a1a; + background: transparent; + border-width: 0.5px; +} +.nut-button-text { + margin-left: 4px; +} +.nut-button-text-right { + margin-right: 4px; +} +.nut-button-children { + display: flex; + flex-direction: row; + background: transparent; +} +.nut-button::before { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + border: inherit; + border-color: rgba(0, 0, 0, 0.7); + border-radius: inherit; + transform: translate(-50%, -50%); + opacity: 0; + content: " "; +} +.nut-button::after { + border: none; +} +.nut-button:active::before { + opacity: 0.1; +} +.nut-button-wrap { + height: 100%; + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + /* #ifndef harmony */ + background: initial; + /* #endif */ +} +.nut-button-wrap .nut-icon { + font-size: 14px; + width: 14px; + height: 14px; +} +.nut-button-loading::before, .nut-button-disabled::before { + display: none; +} +.nut-button-disabled { + cursor: not-allowed; + color: #ffffff; +} +.nut-button.nut-button-icononly { + width: 32px; + padding: 0; +} +.nut-button-round { + border-radius: 6px; +} +.nut-button-round-xlarge { + border-radius: 8px; +} +.nut-button-round-large { + border-radius: 8px; +} +.nut-button-round-small { + border-radius: 6px; +} +.nut-button-round-mini { + border-radius: 4px; +} +.nut-button-default { + padding: 0px 12px; + border-style: solid; + border-color: #c2c4cc; +} +.nut-button-default-disabled { + color: #ffffff; + background: #c2c4cc; + border-color: #c2c4cc; +} +.nut-button-default-solid-disabled { + color: #ffffff; + background: #c2c4cc; + border-color: #c2c4cc; +} +.nut-button-default-none-disabled { + color: #888b94; +} +.nut-button-default-outline-disabled { + background: transparent; + color: #c2c4cc; + border-color: #c2c4cc; +} +.nut-button-default-dashed-disabled { + background: transparent; + color: #c2c4cc; + border-color: #c2c4cc; +} +.nut-button-normal { + padding: 0px 12px; +} +.nut-button-xlarge { + height: 48px; + padding: 0px 24px; + font-size: 18px; + border-radius: 8px; +} +.nut-button-xlarge .nut-button-text { + margin-left: 6px; +} +.nut-button-xlarge .nut-button-text-right { + margin-right: 6px; +} +.nut-button-xlarge .nut-icon { + font-size: 18px; + width: 18px; + height: 18px; +} +.nut-button-xlarge-children { + font-size: 18px; +} +.nut-button-large { + height: 40px; + padding: 0px 16px; + font-size: 16px; + border-radius: 6px; +} +.nut-button-large .nut-button-text { + margin-left: 6px; +} +.nut-button-large .nut-button-text-right { + margin-right: 6px; +} +.nut-button-large .nut-icon { + font-size: 16px; + width: 16px; + height: 16px; +} +.nut-button-large-children { + font-size: 16px; +} +.nut-button-small { + height: 28px; + padding: 0px 8px; + font-size: 12px; + border-radius: 4px; +} +.nut-button-small .nut-icon { + font-size: 12px; + width: 12px; + height: 12px; +} +.nut-button-small-children { + font-size: 12px; +} +.nut-button-mini { + height: 24px; + padding: 0px 8px; + font-size: 11px; + border-radius: 4px; +} +.nut-button-mini .nut-icon { + font-size: 11px; + width: 11px; + height: 11px; +} +.nut-button-mini-children { + font-size: 11px; +} +.nut-button-primary { + color: #ffffff; + background-origin: border-box; + border-color: transparent; +} +.nut-button-primary-children { + color: #ffffff; +} +.nut-button-primary-solid { + background: linear-gradient(90deg, #ff475d 0%, #ff0f23 100%); + color: #ffffff; + border-color: transparent; + font-weight: 600; +} +.nut-button-primary-solid.nut-button-small { + font-weight: 400; +} +.nut-button-primary-solid.nut-button-mini { + font-weight: 400; +} +.nut-button-primary-disabled { + color: #ffffff; + background: #ffadbe; + border-color: #ffadbe; +} +.nut-button-primary-solid-disabled { + color: #ffffff; + background: #ffadbe; + border-color: #ffadbe; +} +.nut-button-primary-none { + color: #ff0f23; +} +.nut-button-primary-none-disabled { + color: #ffadbe; +} +.nut-button-primary-outline { + color: #ff0f23; + border-color: #ff0f23; +} +.nut-button-primary-outline-disabled { + color: #ffadbe; + border-color: #ffadbe; +} +.nut-button-primary-dashed { + color: #ff0f23; + border-color: #ff0f23; +} +.nut-button-primary-dashed-disabled { + color: #ffadbe; + border-color: #ffadbe; +} +.nut-button-primary.nut-button-solid.nut-button-normal { + font-weight: 600; +} +.nut-button-success { + color: #ffffff; + background: #00d900; + background-origin: border-box; + border-color: transparent; +} +.nut-button-success-children { + color: #ffffff; +} +.nut-button-success-solid-disabled { + background: #b2f0ae; + border-color: #b2f0ae; +} +.nut-button-success-outline { + color: #00d900; + border-color: #00d900; +} +.nut-button-success-dashed { + color: #00d900; + border-color: #00d900; +} +.nut-button-success-outline-disabled { + color: #ffadbe; + border-color: #ffadbe; +} +.nut-button-success-dashed-disabled { + color: #ffadbe; + border-color: #ffadbe; +} +.nut-button-success-none { + color: #00d900; +} +.nut-button-success-none-disabled { + color: #b2f0ae; +} +.nut-button-info { + color: #ffffff; + background: #0073ff; + background-origin: border-box; + border-color: transparent; +} +.nut-button-info-children { + color: #ffffff; +} +.nut-button-info-solid-disabled { + background: #89a6f8; + border-color: #89a6f8; +} +.nut-button-info-outline { + color: #0073ff; + border-color: #0073ff; +} +.nut-button-info-dashed { + color: #0073ff; + border-color: #0073ff; +} +.nut-button-info-outline-disabled { + color: #89a6f8; + border-color: #89a6f8; +} +.nut-button-info-dashed-disabled { + color: #89a6f8; + border-color: #89a6f8; +} +.nut-button-info-none { + color: #0073ff; +} +.nut-button-info-none-disabled { + color: #89a6f8; +} +.nut-button-danger { + color: #ffffff; + background: #ff0f23; + background-origin: border-box; + border-color: transparent; +} +.nut-button-danger-children { + color: #ffffff; +} +.nut-button-danger-solid-disabled { + background: #ffadbe; + border-color: #ffadbe; +} +.nut-button-danger-outline { + color: #ff0f23; + border-color: #ff0f23; +} +.nut-button-danger-dashed { + color: #ff0f23; + border-color: #ff0f23; +} +.nut-button-danger-outline-disabled { + color: #ffadbe; + border-color: #ffadbe; +} +.nut-button-danger-dashed-disabled { + color: #ffadbe; + border-color: #ffadbe; +} +.nut-button-danger-none { + color: #ff0f23; +} +.nut-button-danger-none-disabled { + color: #ffadbe; +} +.nut-button-warning { + color: #ffffff; + background: #ffbf00; + background-origin: border-box; + border-color: transparent; +} +.nut-button-warning-children { + color: #ffffff; +} +.nut-button-warning-disabled { + color: #ffffff; + background: #fdd3b9; + border-color: #fdd3b9; +} +.nut-button-warning-solid-disabled { + color: #ffffff; + background: #fdd3b9; + border-color: #fdd3b9; +} +.nut-button-warning-outline { + color: #ffbf00; + border-color: #ffbf00; +} +.nut-button-warning-dashed { + color: #ffbf00; + border-color: #ffbf00; +} +.nut-button-warning-outline-disabled { + color: #fdd3b9; + border-color: #fdd3b9; +} +.nut-button-warning-dashed-disabled { + color: #fdd3b9; + border-color: #fdd3b9; +} +.nut-button-warning-none { + color: #ffbf00; +} +.nut-button-warning-none-disabled { + color: #fdd3b9; +} +.nut-button-block { + display: block; + width: 100%; +} +.nut-button-outline { + background: transparent; + border-style: solid; +} +.nut-button-dashed { + background: transparent; + border-style: dashed; +} +.nut-button-none { + background: transparent; + border-color: transparent; +} +.nut-button-loading { + cursor: default; + opacity: 0.9; +} +.nut-button-square { + border-radius: 0; +} + +[dir=rtl] .nut-button-text { + margin-left: 0; + margin-right: 4px; +} + +.nut-rtl .nut-button-text { + margin-left: 0; + margin-right: 4px; +} +[dir=rtl] .nut-button-text.right { + margin-left: 4px; +} +.nut-rtl .nut-button-text.right { + margin-left: 4px; +} +[dir=rtl] .nut-button::before, +.nut-rtl .nut-button::before { + left: auto; + right: 50%; + transform: translate(50%, -50%); +} \ No newline at end of file diff --git a/src/packages/calendar/calendar.harmony.css b/src/packages/calendar/calendar.harmony.css new file mode 100644 index 0000000000..2c176b695d --- /dev/null +++ b/src/packages/calendar/calendar.harmony.css @@ -0,0 +1,216 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-calendar { + position: relative; + display: flex; + flex-direction: column; + flex: 1; + font-size: 16px; + background-color: #ffffff; + color: #1a1a1a; + overflow: hidden; + height: 100%; +} +.nut-calendar.nut-calendar-title .nut-calendar-header .calendar-title { + font-size: 16px; +} +.nut-calendar .nut-calendar-taro { + height: 60vh; +} +.nut-calendar .popup-box { + height: 100%; +} +.nut-calendar ::-webkit-scrollbar { + display: none; +} +.nut-calendar-header { + display: flex; + flex-direction: column; + text-align: center; +} +.nut-calendar-header-buttons { + height: 24px; +} +.nut-calendar-title { + color: #1a1a1a; + font-size: 18px; + font-weight: 600; + line-height: 50px; +} +.nut-calendar-sub-title { + padding: 7px 0; + line-height: 22px; + font-size: 14px; +} +.nut-calendar-weeks { + display: flex; + align-items: center; + justify-content: space-around; + height: 36px; + border-radius: 0px 0px 12px 12px; + box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.06); +} +.nut-calendar-week-item:first-of-type { + color: #ff0f23; +} +.nut-calendar-week-item:last-of-type { + color: #ff0f23; +} +.nut-calendar-content { + flex: 1; + width: 100%; + display: block; + overflow-y: auto; +} +.nut-calendar-pannel { + position: relative; + width: 100%; + height: auto; + display: block; + box-sizing: border-box; +} +.nut-calendar-pannel .calendar-loading-tip { + height: 50px; + line-height: 50px; + text-align: center; + position: absolute; + top: -50px; + left: 0; + right: 0; + font-size: 12px; + color: #505259; +} +.nut-calendar-month { + display: flex; + flex-direction: column; + text-align: center; +} +.nut-calendar-month-title { + height: 23px; + line-height: 23px; + margin: 8px 0; +} +.nut-calendar-days { + overflow: hidden; +} +.nut-calendar-day { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: relative; + float: left; + width: 14.28%; + height: 60px; + font-weight: 600; + margin-bottom: 4px; +} +.nut-calendar-day:nth-child(7n+0) { + color: #ff0f23; +} +.nut-calendar-day:nth-child(7n+1) { + color: #ff0f23; +} +.nut-calendar-day-info, .nut-calendar-day-info-curr { + position: absolute; + bottom: 5px; + width: 100%; + font-size: 12px; + line-height: 14px; +} +.nut-calendar-day-info-top { + position: absolute; + width: 100%; + top: 5px; +} +.nut-calendar-day-info-bottom { + position: absolute; + width: 100%; + bottom: 5px; +} +.nut-calendar-day-active { + background-color: #ff0f23; + color: #ffffff !important; + border-radius: 4px; +} +.nut-calendar-day-active.active-start { + border-radius: 0px; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.nut-calendar-day-active.active-end { + border-radius: 0px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.nut-calendar-day-active .nut-calendar-day-info { + color: #ffffff; +} +.nut-calendar-day-disabled { + color: #c2c4cc !important; +} +.nut-calendar-day-disabled .nut-calendar-day-info-curr { + display: none; +} +.nut-calendar-day-choose { + background-color: #ffebf1; + color: #ff0f23; +} +.nut-calendar-day-choose-disabled { + background-color: rgba(191, 191, 191, 0.09); + color: #c2c4cc !important; +} +.nut-calendar-day-choose-disabled .nut-calendar-day-info-curr { + display: none; +} +.nut-calendar-footer { + display: flex; + width: 100%; + flex-direction: column; + background-color: #ffffff; +} +.nut-calendar-footer .calendar-confirm-btn { + height: 40px; + line-height: 40px; + margin: 6px 16px; + text-align: center; + border-radius: 8px; + background: linear-gradient(90deg, #ff475d 0%, #ff0f23 100%); + color: #ffffff; + font-weight: 600; +} + +.nut-calendar-popup .nut-popup-title-right { + top: 7px !important; +} + +[dir=rtl] .nut-calendar-day, +.nut-rtl .nut-calendar-day { + float: right; +} +[dir=rtl] .nut-calendar-day-active.active-start { + border-top-left-radius: 0; + border-top-right-radius: 4px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 4px; +} +.nut-rtl .nut-calendar-day-active.active-start { + border-top-left-radius: 0; + border-top-right-radius: 4px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 4px; +} +[dir=rtl] .nut-calendar-day-active.active-end { + border-top-right-radius: 0; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 4px; +} +.nut-rtl .nut-calendar-day-active.active-end { + border-top-right-radius: 0; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 4px; +} \ No newline at end of file diff --git a/src/packages/calendarcard/calendarcard.harmony.css b/src/packages/calendarcard/calendarcard.harmony.css new file mode 100644 index 0000000000..c3fe789229 --- /dev/null +++ b/src/packages/calendarcard/calendarcard.harmony.css @@ -0,0 +1,186 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-calendarcard { + background: #ffffff; + border-radius: 12px; + overflow: hidden; + font-size: 16px; + color: #1a1a1a; +} +.nut-calendarcard-header { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + font-weight: normal; +} +.nut-calendarcard-header-left, .nut-calendarcard-header-right { + display: flex; + flex-direction: row; + cursor: pointer; + margin: 16px; + line-height: 1; +} +.nut-calendarcard-header-left .left, .nut-calendarcard-header-right .left { + margin-left: 8px; +} +.nut-calendarcard-header-left .right, .nut-calendarcard-header-right .right { + margin-right: 8px; +} +.nut-calendarcard-days { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} +.nut-calendarcard-day { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: relative; + width: 14.28%; + height: 48px; + cursor: pointer; + margin-bottom: 4px; + text-align: center; +} +.nut-calendarcard-day.header { + cursor: auto; +} +.nut-calendarcard-day-top, .nut-calendarcard-day-bottom { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 12px; + font-size: 12px; + line-height: 12px; +} +.nut-calendarcard-day.weekend { + color: #ff0f23; +} +.nut-calendarcard-day.active { + background-color: #ff0f23; + border-radius: 4px; +} +.nut-calendarcard-day.active .nut-calendarcard-day-top, +.nut-calendarcard-day.active .nut-calendarcard-day-inner, +.nut-calendarcard-day.active .nut-calendarcard-day-bottom { + color: #ffffff; +} +.nut-calendarcard-day.start { + background-color: #ff0f23; +} +.nut-calendarcard-day.end { + background-color: #ff0f23; +} +.nut-calendarcard-day.start .nut-calendarcard-day-top, +.nut-calendarcard-day.start .nut-calendarcard-day-inner, +.nut-calendarcard-day.start .nut-calendarcard-day-bottom, .nut-calendarcard-day.end .nut-calendarcard-day-top, +.nut-calendarcard-day.end .nut-calendarcard-day-inner, +.nut-calendarcard-day.end .nut-calendarcard-day-bottom { + color: #ffffff; +} +.nut-calendarcard-day.start { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.nut-calendarcard-day.end { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.nut-calendarcard-day.mid { + background-color: #ffebf1; +} +.nut-calendarcard-day.mid .nut-calendarcard-day-top { + color: #ff0f23; +} +.nut-calendarcard-day.mid .nut-calendarcard-day-inner { + color: #ff0f23; +} +.nut-calendarcard-day.mid .nut-calendarcard-day-bottom { + color: #ff0f23; +} +.nut-calendarcard-day .nut-calendar-day-info { + color: #ffffff; +} +.nut-calendarcard-day.prev, .nut-calendarcard-day.next, .nut-calendarcard-day.disabled { + cursor: not-allowed; +} +.nut-calendarcard-day.prev .nut-calendarcard-day-top { + color: #c2c4cc; +} +.nut-calendarcard-day.prev .nut-calendarcard-day-inner { + color: #c2c4cc; +} +.nut-calendarcard-day.prev .nut-calendarcard-day-bottom { + color: #c2c4cc; +} +.nut-calendarcard-day.next .nut-calendarcard-day-top { + color: #c2c4cc; +} +.nut-calendarcard-day.next .nut-calendarcard-day-inner { + color: #c2c4cc; +} +.nut-calendarcard-day.next .nut-calendarcard-day-bottom { + color: #c2c4cc; +} +.nut-calendarcard-day.disabled .nut-calendarcard-day-top { + color: #c2c4cc; +} +.nut-calendarcard-day.disabled .nut-calendarcard-day-inner { + color: #c2c4cc; +} +.nut-calendarcard-day.disabled .nut-calendarcard-day-bottom { + color: #c2c4cc; +} + +[dir=rtl] .nut-calendarcard-header-left .left, [dir=rtl] .nut-calendarcard-header-right .left, +.nut-rtl .nut-calendarcard-header-left .left, +.nut-rtl .nut-calendarcard-header-right .left { + margin-left: 0; + margin-right: 8px; +} +[dir=rtl] .nut-calendarcard-header-left .right, [dir=rtl] .nut-calendarcard-header-right .right, +.nut-rtl .nut-calendarcard-header-left .right, +.nut-rtl .nut-calendarcard-header-right .right { + margin-right: 0; + margin-left: 8px; +} +[dir=rtl] .nut-calendarcard-header-left .nut-icon-ArrowLeft, +[dir=rtl] .nut-calendarcard-header-left .nut-icon-ArrowRight, +[dir=rtl] .nut-calendarcard-header-left svg, [dir=rtl] .nut-calendarcard-header-right .nut-icon-ArrowLeft, +[dir=rtl] .nut-calendarcard-header-right .nut-icon-ArrowRight, +[dir=rtl] .nut-calendarcard-header-right svg, +.nut-rtl .nut-calendarcard-header-left .nut-icon-ArrowLeft, +.nut-rtl .nut-calendarcard-header-left .nut-icon-ArrowRight, +.nut-rtl .nut-calendarcard-header-left svg, +.nut-rtl .nut-calendarcard-header-right .nut-icon-ArrowLeft, +.nut-rtl .nut-calendarcard-header-right .nut-icon-ArrowRight, +.nut-rtl .nut-calendarcard-header-right svg { + transform: rotate(180deg); +} +[dir=rtl] .nut-calendarcard-day.start, [dir=rtl] .nut-calendarcard-day.end, +.nut-rtl .nut-calendarcard-day.start, +.nut-rtl .nut-calendarcard-day.end { + border-radius: 0; +} +[dir=rtl] .nut-calendarcard-day.start { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.nut-rtl .nut-calendarcard-day.start { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +[dir=rtl] .nut-calendarcard-day.end { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.nut-rtl .nut-calendarcard-day.end { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} \ No newline at end of file diff --git a/src/packages/calendaritem/calendaritem.harmony.css b/src/packages/calendaritem/calendaritem.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/calendaritem/calendaritem.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/card/card.harmony.css b/src/packages/card/card.harmony.css new file mode 100644 index 0000000000..f722a5286a --- /dev/null +++ b/src/packages/card/card.harmony.css @@ -0,0 +1,82 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-card { + width: 100%; + display: flex; + background-color: inherit; + border-radius: 4px; +} +.nut-card-left { + width: 120px; + height: 120px; + flex-shrink: 0; +} +.nut-card-left > img { + display: block; + width: 100%; + height: 100%; + border-radius: 4px; +} +.nut-card-right { + flex: 1; + padding: 0 10px 8px; +} +.nut-card-right-title { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + word-break: break-all; + line-height: 1.5; + font-size: 14px; + color: #1a1a1a; +} +.nut-card-right-price { + display: flex; + align-items: center; + height: 18px; + line-height: 18px; + margin-top: 9px; +} +.nut-card-right-price-origin.nut-price { + margin-left: 2px; +} +.nut-card-right-price-origin.nut-price .nut-price-symbol, +.nut-card-right-price-origin.nut-price .nut-price-integer, +.nut-card-right-price-origin.nut-price .nut-price-decimal { + color: #d2a448; +} +.nut-card-right-other { + display: flex; + align-items: center; + padding: 5px 0 2px; +} +.nut-card-right-other .nut-tag { + padding: 0 2px; + margin-right: 5px; + font-size: 11px; +} +.nut-card-right-shop { + display: flex; + justify-content: space-between; + align-items: center; +} +.nut-card-right-shop-name { + line-height: 1.5; + color: #505259; + font-size: 12px; + padding-top: 4px; +} + +[dir=rtl] .nut-card-right-price-origin.nut-price, +.nut-rtl .nut-card-right-price-origin.nut-price { + margin-left: 0; + margin-right: 2px; +} +[dir=rtl] .nut-card-right-other .nut-tag, +.nut-rtl .nut-card-right-other .nut-tag { + margin-right: 0; + margin-left: 5px; +} \ No newline at end of file diff --git a/src/packages/cascader/cascader.harmony.css b/src/packages/cascader/cascader.harmony.css new file mode 100644 index 0000000000..40cd052d46 --- /dev/null +++ b/src/packages/cascader/cascader.harmony.css @@ -0,0 +1,70 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-cascader { + width: 100%; + font-size: 14px; +} +.nut-cascader .nut-tabs-titles { + padding: 0 10px; + background: #ffffff; +} +.nut-cascader .nut-tabs-titles-item { + flex: initial; + min-width: auto; + width: auto; + padding: 0 10px; + white-space: nowrap; +} +.nut-cascader .nut-tabpane { + padding: 0; + background: #ffffff; +} +.nut-cascader-pane { + display: block; + width: 100%; + padding-top: 10px; + height: 342px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.nut-cascader-item { + display: flex; + align-items: center; + justify-content: center; + padding: 10px 20px; + margin: 0px; + border-bottom: 0px solid rgba(0, 0, 0, 0.06); + font-size: 14px; + color: #1a1a1a; + cursor: pointer; +} +.nut-cascader-item.disabled { + opacity: 0.6; + cursor: not-allowed; +} +.nut-cascader-item.active:not(.disabled) { + color: #ff0f23; +} +.nut-cascader-item.active .nut-cascader-item-icon-check { + visibility: visible; + color: inherit; +} +.nut-cascader-item-title { + flex: 1; +} +.nut-cascader .nut-icon-checklist { + margin-left: 10px; + visibility: hidden; +} + +[dir=rtl] .nut-cascader .nut-icon-checklist { + margin-left: 0; + margin-right: 10px; +} + +.nut-rtl .nut-cascader .nut-icon-checklist { + margin-left: 0; + margin-right: 10px; +} \ No newline at end of file diff --git a/src/packages/cell/cell.harmony.css b/src/packages/cell/cell.harmony.css new file mode 100644 index 0000000000..9d9e9d9357 --- /dev/null +++ b/src/packages/cell/cell.harmony.css @@ -0,0 +1,91 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-cell { + position: relative; + display: flex; + flex-direction: row; + width: 100%; + line-height: 20px; + padding: 13px 16px; + background-color: #ffffff; + border-radius: 6px; + box-shadow: 0px 1px 7px 0px rgb(237, 238, 241); + font-size: 14px; + color: #1a1a1a; + margin-bottom: 10px; + box-sizing: border-box; +} +.nut-cell-group-item { + border-radius: 0; + box-shadow: 0 0 transparent; + margin: 0; +} +.nut-cell-left { + display: flex; + flex-direction: column; + align-items: flex-start; + flex: 1; +} +.nut-cell-title { + line-height: 20px; +} +.nut-cell-description { + line-height: 20px; +} +.nut-cell-extra { + line-height: 20px; +} +.nut-cell-description { + font-size: 12px; + color: #505259; +} +.nut-cell-extra { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + flex: 1; + flex-shrink: 0; + min-width: 0; + word-break: break-all; + font-size: 14px; + color: #505259; +} +.nut-cell:active::before { + opacity: 0.1; +} +.nut-cell-clickable { + cursor: pointer; +} +.nut-cell-clickable::before { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + background-color: #000000; + border: inherit; + border-color: #000000; + border-radius: inherit; + transform: translate(-50%, -50%); + opacity: 0; + content: " "; +} +.nut-cell-divider { + display: flex; + min-height: 1px; + padding-left: 16px; + padding-right: 16px; +} +.nut-cell-divider-inner { + display: flex; + height: 1px; + width: 100%; + border-top: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-cell-divider-rtl { + padding-left: 16px; + padding-right: 16px; +} \ No newline at end of file diff --git a/src/packages/cellgroup/cellgroup.harmony.css b/src/packages/cellgroup/cellgroup.harmony.css new file mode 100644 index 0000000000..334d18ffdb --- /dev/null +++ b/src/packages/cellgroup/cellgroup.harmony.css @@ -0,0 +1,31 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-cell-group { + display: block; +} +.nut-cell-group-title { + display: inherit; + padding: 0 10px; + color: #1a1a1a; + font-size: 14px; + line-height: 20px; + margin-top: 30px; + margin-bottom: 10px; +} +.nut-cell-group-description { + display: inherit; + padding: 0 10px; + color: #505259; + font-size: 12px; + line-height: 16px; + margin-top: 10px; + margin-bottom: 10px; +} +.nut-cell-group-wrap { + border-radius: 6px; + overflow: hidden; + background-color: #ffffff; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/src/packages/checkbox/checkbox.harmony.css b/src/packages/checkbox/checkbox.harmony.css new file mode 100644 index 0000000000..7cccf9a764 --- /dev/null +++ b/src/packages/checkbox/checkbox.harmony.css @@ -0,0 +1,165 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-checkbox { + display: flex; + align-items: center; +} +.nut-checkbox-icon { + color: #c2c4cc; + font-size: 16px; +} +.nut-checkbox-icon-checked { + color: #ff0f23; + transition-duration: 0.3s; + transition-property: color, border-color, background-color; + box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); + border-radius: 50%; +} +.nut-checkbox-icon-checked.nut-checkbox-icon-disabled { + color: #ffadbe; +} +.nut-checkbox-label { + margin-left: 4px; + font-size: 12px; + color: #1a1a1a; +} +.nut-checkbox-label-disabled { + color: #c2c4cc; +} +.nut-checkbox-icon-indeterminate { + color: #ff0f23; + box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); + border-radius: 50%; +} +.nut-checkbox-icon-indeterminate.nut-checkbox-icon-disabled { + color: #ffadbe; +} +.nut-checkbox-icon-disabled { + color: #c2c4cc; + box-shadow: none; +} +.nut-checkbox-reverse { + flex-direction: row-reverse; +} +.nut-checkbox-reverse .nut-checkbox-label { + margin-right: 4px; + margin-left: 0; +} +.nut-checkbox-button { + position: relative; + display: inline-flex; + align-items: center; + padding: 5px 18px; + font-size: 12px; + background: #f2f3f5; + border-radius: 15px; + color: #1a1a1a; + box-sizing: border-box; + border: 1px solid #f2f3f5; + overflow: hidden; +} +.nut-checkbox-button-active { + background: #ffebf1; + color: #ff0f23; + border: 1px solid #ff0f23; +} +.nut-checkbox-button-disabled { + color: #c2c4cc; + border: 1px solid #f2f3f5; +} +.nut-checkbox-button-icon { + position: absolute; + right: 0; + bottom: 0; + width: 0; + height: 0; + border-top: 10px solid transparent; + border-left: 10px solid transparent; + border-bottom: 10px solid #ff0f23; + border-right: 10px solid #ff0f23; + display: flex; + align-items: flex-end; + justify-content: flex-end; +} +.nut-checkbox-button-icon-checked { + width: 12px; + height: 12px; + position: absolute; + color: #ffffff; + top: 50%; + left: 50%; + transform: translate(-3px, -3px); +} +.nut-checkbox-button-icon .nut-icon { + position: absolute; + font-size: 12px; + width: 12px; + height: 12px; +} +.nut-checkbox-button-icon .nut-icon:before { + top: auto; + bottom: -22px; + margin-left: 6px; +} +.nut-checkbox .nut-checkbox-button-active.nut-checkbox-button-disabled { + background: #c2c4cc; + color: #ffffff; + border: 1px solid #c2c4cc; +} +.nut-checkbox-list-item { + width: 100%; + display: flex; + justify-content: flex-start; + align-items: center; + padding: 12px 12px 12px 0; + border-top: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-checkbox-list-item .nut-checkbox-label { + flex: auto; +} +.nut-checkbox-list-item .nut-icon { + flex: none; +} + +[dir=rtl] .nut-checkbox-label { + margin-left: 0; + margin-right: 4px; +} + +.nut-rtl .nut-checkbox-label { + margin-left: 0; + margin-right: 4px; +} +[dir=rtl] .nut-checkbox-reverse .nut-checkbox-label { + margin-left: 4px; + margin-right: 0; +} +.nut-rtl .nut-checkbox-reverse .nut-checkbox-label { + margin-left: 4px; + margin-right: 0; +} +[dir=rtl] .nut-checkbox-button-icon { + right: auto; + left: 0; + border-right: 10px solid transparent; + border-left: 10px solid #ff0f23; +} +.nut-rtl .nut-checkbox-button-icon { + right: auto; + left: 0; + border-right: 10px solid transparent; + border-left: 10px solid #ff0f23; +} +[dir=rtl] .nut-checkbox-button-icon-checked, +.nut-rtl .nut-checkbox-button-icon-checked { + left: auto; + right: 50%; + transform: translate(3px, -3px); +} +[dir=rtl] .nut-checkbox-button-icon .nut-icon:before, +.nut-rtl .nut-checkbox-button-icon .nut-icon:before { + margin-left: 0; + margin-right: 6px; +} \ No newline at end of file diff --git a/src/packages/checkboxgroup/checkboxgroup.harmony.css b/src/packages/checkboxgroup/checkboxgroup.harmony.css new file mode 100644 index 0000000000..67ab528364 --- /dev/null +++ b/src/packages/checkboxgroup/checkboxgroup.harmony.css @@ -0,0 +1,67 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-checkboxgroup .nut-checkbox-button { + background-color: #f2f3f5; +} +.nut-checkboxgroup-vertical { + display: flex; + flex-direction: column; +} +.nut-checkboxgroup-vertical .nut-checkbox { + margin-bottom: 5px; +} +.nut-checkboxgroup-vertical .nut-checkbox.nut-checkbox-reverse { + width: 100%; + justify-content: space-between; +} +.nut-checkboxgroup-vertical .nut-checkbox-button-active { + border: 1px solid #ff0f23; + background-color: #ffebf1; +} +.nut-checkboxgroup-horizontal { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} +.nut-checkboxgroup-horizontal .nut-checkbox { + display: inline-flex; + flex: 1; + margin-right: 20px; +} +.nut-checkboxgroup-horizontal .nut-checkbox-button-active { + border: 1px solid #ff0f23; + background-color: #ffebf1; +} +.nut-checkboxgroup-list { + width: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.06); + border-top: 1px solid rgba(0, 0, 0, 0.06); + padding: 0 0 0 12px; + background: #ffffff; +} +.nut-checkboxgroup-list .nut-checkbox { + margin-bottom: 5px; +} +.nut-checkboxgroup-list .nut-checkbox:first-child .nut-checkbox-list-item { + border-top: none; +} +.nut-checkboxgroup-list .nut-checkbox.nut-checkbox-reverse { + width: 100%; + justify-content: space-between; +} + +[dir=rtl] .nut-checkboxgroup .nut-checkbox-label, +.nut-rtl .nut-checkboxgroup .nut-checkbox-label { + margin-right: 5px; +} +[dir=rtl] .nut-checkboxgroup-vertical .nut-checkbox-label, +.nut-rtl .nut-checkboxgroup-vertical .nut-checkbox-label { + margin-right: 5px; +} +[dir=rtl] .nut-checkboxgroup-horizontal .nut-checkbox, +.nut-rtl .nut-checkboxgroup-horizontal .nut-checkbox { + margin-right: 0; + margin-left: 20px; +} \ No newline at end of file diff --git a/src/packages/circleprogress/circleprogress.harmony.css b/src/packages/circleprogress/circleprogress.harmony.css new file mode 100644 index 0000000000..b57f52413c --- /dev/null +++ b/src/packages/circleprogress/circleprogress.harmony.css @@ -0,0 +1,31 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-circleprogress { + position: relative; +} +.nut-circleprogress-hover { + stroke: #ff0f23; + transition: stroke-dasharray 0.2s ease-in-out 0s, stroke 0.2s ease 0s; +} +.nut-circleprogress-path { + stroke: #f2f3f5; +} +.nut-circleprogress-text { + position: absolute; + top: 50%; + left: 0; + box-sizing: border-box; + width: 100%; + transform: translateY(-50%); + text-align: center; + color: #1a1a1a; + font-size: 16px; +} + +[dir=rtl] .nut-circleprogress-text, +.nut-rtl .nut-circleprogress-text { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/col/col.harmony.css b/src/packages/col/col.harmony.css new file mode 100644 index 0000000000..13fa567e5e --- /dev/null +++ b/src/packages/col/col.harmony.css @@ -0,0 +1,360 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-col { + box-sizing: border-box; + word-break: break-all; + margin-bottom: 15px; +} + +[dir=rtl] .nut-col, +.nut-rtl .nut-col { + float: right; +} +[dir=rtl] .nut-col.nut-col-gutter:last-child, +.nut-rtl .nut-col.nut-col-gutter:last-child { + padding-right: 0 !important; + padding-left: 0 !important; +} +[dir=rtl] .nut-col.nut-col-gutter:first-child, +.nut-rtl .nut-col.nut-col-gutter:first-child { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.nut-col-offset-1 { + margin-left: 4.166666666%; +} + +[dir=rtl] .nut-col-offset-1, +.nut-rtl .nut-col-offset-1 { + margin-left: 0; + margin-right: 4.166666666%; +} + +.nut-col-1 { + width: 4.166666666%; +} + +.nut-col-offset-2 { + margin-left: 8.333333332%; +} + +[dir=rtl] .nut-col-offset-2, +.nut-rtl .nut-col-offset-2 { + margin-left: 0; + margin-right: 8.333333332%; +} + +.nut-col-2 { + width: 8.333333332%; +} + +.nut-col-offset-3 { + margin-left: 12.499999998%; +} + +[dir=rtl] .nut-col-offset-3, +.nut-rtl .nut-col-offset-3 { + margin-left: 0; + margin-right: 12.499999998%; +} + +.nut-col-3 { + width: 12.499999998%; +} + +.nut-col-offset-4 { + margin-left: 16.666666664%; +} + +[dir=rtl] .nut-col-offset-4, +.nut-rtl .nut-col-offset-4 { + margin-left: 0; + margin-right: 16.666666664%; +} + +.nut-col-4 { + width: 16.666666664%; +} + +.nut-col-offset-5 { + margin-left: 20.83333333%; +} + +[dir=rtl] .nut-col-offset-5, +.nut-rtl .nut-col-offset-5 { + margin-left: 0; + margin-right: 20.83333333%; +} + +.nut-col-5 { + width: 20.83333333%; +} + +.nut-col-offset-6 { + margin-left: 24.999999996%; +} + +[dir=rtl] .nut-col-offset-6, +.nut-rtl .nut-col-offset-6 { + margin-left: 0; + margin-right: 24.999999996%; +} + +.nut-col-6 { + width: 24.999999996%; +} + +.nut-col-offset-7 { + margin-left: 29.166666662%; +} + +[dir=rtl] .nut-col-offset-7, +.nut-rtl .nut-col-offset-7 { + margin-left: 0; + margin-right: 29.166666662%; +} + +.nut-col-7 { + width: 29.166666662%; +} + +.nut-col-offset-8 { + margin-left: 33.333333328%; +} + +[dir=rtl] .nut-col-offset-8, +.nut-rtl .nut-col-offset-8 { + margin-left: 0; + margin-right: 33.333333328%; +} + +.nut-col-8 { + width: 33.333333328%; +} + +.nut-col-offset-9 { + margin-left: 37.499999994%; +} + +[dir=rtl] .nut-col-offset-9, +.nut-rtl .nut-col-offset-9 { + margin-left: 0; + margin-right: 37.499999994%; +} + +.nut-col-9 { + width: 37.499999994%; +} + +.nut-col-offset-10 { + margin-left: 41.66666666%; +} + +[dir=rtl] .nut-col-offset-10, +.nut-rtl .nut-col-offset-10 { + margin-left: 0; + margin-right: 41.66666666%; +} + +.nut-col-10 { + width: 41.66666666%; +} + +.nut-col-offset-11 { + margin-left: 45.833333326%; +} + +[dir=rtl] .nut-col-offset-11, +.nut-rtl .nut-col-offset-11 { + margin-left: 0; + margin-right: 45.833333326%; +} + +.nut-col-11 { + width: 45.833333326%; +} + +.nut-col-offset-12 { + margin-left: 49.999999992%; +} + +[dir=rtl] .nut-col-offset-12, +.nut-rtl .nut-col-offset-12 { + margin-left: 0; + margin-right: 49.999999992%; +} + +.nut-col-12 { + width: 49.999999992%; +} + +.nut-col-offset-13 { + margin-left: 54.166666658%; +} + +[dir=rtl] .nut-col-offset-13, +.nut-rtl .nut-col-offset-13 { + margin-left: 0; + margin-right: 54.166666658%; +} + +.nut-col-13 { + width: 54.166666658%; +} + +.nut-col-offset-14 { + margin-left: 58.333333324%; +} + +[dir=rtl] .nut-col-offset-14, +.nut-rtl .nut-col-offset-14 { + margin-left: 0; + margin-right: 58.333333324%; +} + +.nut-col-14 { + width: 58.333333324%; +} + +.nut-col-offset-15 { + margin-left: 62.49999999%; +} + +[dir=rtl] .nut-col-offset-15, +.nut-rtl .nut-col-offset-15 { + margin-left: 0; + margin-right: 62.49999999%; +} + +.nut-col-15 { + width: 62.49999999%; +} + +.nut-col-offset-16 { + margin-left: 66.666666656%; +} + +[dir=rtl] .nut-col-offset-16, +.nut-rtl .nut-col-offset-16 { + margin-left: 0; + margin-right: 66.666666656%; +} + +.nut-col-16 { + width: 66.666666656%; +} + +.nut-col-offset-17 { + margin-left: 70.833333322%; +} + +[dir=rtl] .nut-col-offset-17, +.nut-rtl .nut-col-offset-17 { + margin-left: 0; + margin-right: 70.833333322%; +} + +.nut-col-17 { + width: 70.833333322%; +} + +.nut-col-offset-18 { + margin-left: 74.999999988%; +} + +[dir=rtl] .nut-col-offset-18, +.nut-rtl .nut-col-offset-18 { + margin-left: 0; + margin-right: 74.999999988%; +} + +.nut-col-18 { + width: 74.999999988%; +} + +.nut-col-offset-19 { + margin-left: 79.166666654%; +} + +[dir=rtl] .nut-col-offset-19, +.nut-rtl .nut-col-offset-19 { + margin-left: 0; + margin-right: 79.166666654%; +} + +.nut-col-19 { + width: 79.166666654%; +} + +.nut-col-offset-20 { + margin-left: 83.33333332%; +} + +[dir=rtl] .nut-col-offset-20, +.nut-rtl .nut-col-offset-20 { + margin-left: 0; + margin-right: 83.33333332%; +} + +.nut-col-20 { + width: 83.33333332%; +} + +.nut-col-offset-21 { + margin-left: 87.499999986%; +} + +[dir=rtl] .nut-col-offset-21, +.nut-rtl .nut-col-offset-21 { + margin-left: 0; + margin-right: 87.499999986%; +} + +.nut-col-21 { + width: 87.499999986%; +} + +.nut-col-offset-22 { + margin-left: 91.666666652%; +} + +[dir=rtl] .nut-col-offset-22, +.nut-rtl .nut-col-offset-22 { + margin-left: 0; + margin-right: 91.666666652%; +} + +.nut-col-22 { + width: 91.666666652%; +} + +.nut-col-offset-23 { + margin-left: 95.833333318%; +} + +[dir=rtl] .nut-col-offset-23, +.nut-rtl .nut-col-offset-23 { + margin-left: 0; + margin-right: 95.833333318%; +} + +.nut-col-23 { + width: 95.833333318%; +} + +.nut-col-offset-24 { + margin-left: 99.999999984%; +} + +[dir=rtl] .nut-col-offset-24, +.nut-rtl .nut-col-offset-24 { + margin-left: 0; + margin-right: 99.999999984%; +} + +.nut-col-24 { + width: 99.999999984%; +} \ No newline at end of file diff --git a/src/packages/collapse/collapse.harmony.css b/src/packages/collapse/collapse.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/collapse/collapse.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/collapseitem/collapseitem.harmony.css b/src/packages/collapseitem/collapseitem.harmony.css new file mode 100644 index 0000000000..87e610a609 --- /dev/null +++ b/src/packages/collapseitem/collapseitem.harmony.css @@ -0,0 +1,104 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-collapse-item { + position: relative; +} +.nut-collapse-item::after { + position: absolute; + box-sizing: border-box; + content: " "; + pointer-events: none; + right: 16px; + left: 16px; + bottom: 0; + border-bottom: none; + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); +} +.nut-collapse-item:last-child::after { + display: none; +} +.nut-collapse-item-header { + position: relative; + display: flex; + width: 100%; + overflow: hidden; + padding: 13px 26px; + font-size: 14px; + line-height: 24px; + background-color: #ffffff; + box-sizing: border-box; +} +.nut-collapse-item-header::after { + position: absolute; + box-sizing: border-box; + content: " "; + pointer-events: none; + right: 16px; + left: 16px; + bottom: 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.06); + -webkit-transform: scaleY(0.5); + transform: scaleY(0.5); +} +.nut-collapse-item-title { + color: #1a1a1a; + display: flex; + align-items: center; +} +.nut-collapse-item-extra { + flex: 1; + display: flex; + justify-content: flex-end; + padding: 0px 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #505259; +} +.nut-collapse-item-icon-box { + display: flex; + width: 24px; + position: relative; + color: #505259; +} +.nut-collapse-item-icon { + display: flex; + align-items: center; + position: absolute; + top: 50%; + left: 5px; + transform: translateY(-50%); + transform-origin: center; + transition: transform 0.3s; +} +.nut-collapse-item-header.disabled { + color: #c2c4cc; +} +.nut-collapse-item-header.disabled .nut-collapse-item-title { + color: #c2c4cc; +} +.nut-collapse-item-header.disabled .nut-collapse-item-icon { + color: #c2c4cc; +} +.nut-collapse-item-content { + overflow: hidden; + display: block; + color: #505259; + font-size: 14px; + line-height: 1.5; + background-color: #ffffff; + transition: all 0.3s linear; +} +.nut-collapse-item-content-text { + color: #505259; + padding: 12px 26px; +} + +[dir=rtl] .nut-collapse-item-icon, +.nut-rtl .nut-collapse-item-icon { + left: auto; + right: 5px; +} \ No newline at end of file diff --git a/src/packages/configprovider/configprovider.harmony.css b/src/packages/configprovider/configprovider.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/configprovider/configprovider.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/countdown/countdown.harmony.css b/src/packages/countdown/countdown.harmony.css new file mode 100644 index 0000000000..7578a03b9a --- /dev/null +++ b/src/packages/countdown/countdown.harmony.css @@ -0,0 +1,113 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-countdown { + display: flex; + flex-direction: row; + align-items: center; + color: #ff0f23; + font-size: 11px; +} +.nut-countdown-number-primary { + display: flex; + align-items: center; + justify-content: center; + height: 16px; + box-sizing: border-box; + font-weight: 400; + font-size: 11px; + line-height: calc(11px + 2px); + font-family: "JD"; +} +.nut-countdown-number { + display: flex; + align-items: center; + justify-content: center; + height: 16px; + box-sizing: border-box; + font-weight: 400; + font-size: 11px; + line-height: calc(11px + 2px); + font-family: "JD"; +} +.nut-countdown-number-text { + display: flex; + align-items: center; + justify-content: center; + height: 16px; + box-sizing: border-box; + font-weight: 400; + font-size: 11px; + line-height: calc(11px + 2px); + font-family: "JD"; +} +.nut-countdown-unit { + display: flex; + align-items: center; + justify-content: center; + height: 16px; + box-sizing: border-box; + font-weight: 400; + font-size: 11px; + line-height: calc(11px + 2px); + font-family: "JD"; +} +.nut-countdown-number { + position: relative; + min-width: 16px; + padding: 0 0; + border-radius: 2px; + margin: 0 1px; + text-align: center; +} +.nut-countdown-number-primary { + position: relative; + min-width: 16px; + padding: 0 0; + border-radius: 2px; + margin: 0 1px; + text-align: center; +} +.nut-countdown-number::after { + content: ""; + position: absolute; + top: -50%; + bottom: -50%; + left: -50%; + right: -50%; + transform: scale(0.5); + border-radius: calc(2px * 2); +} +.nut-countdown-number-primary::after { + content: ""; + position: absolute; + top: -50%; + bottom: -50%; + left: -50%; + right: -50%; + transform: scale(0.5); + border-radius: calc(2px * 2); +} +.nut-countdown-number { + background-color: #ffffff; + color: #ff0f23; +} +.nut-countdown-number::after { + border: 1px solid #ffadbe; +} +.nut-countdown-number-primary { + background-color: #ff0f23; + color: #ffffff; +} +.nut-countdown-number-primary::after { + border: 1px solid #ff0f23; +} +.nut-countdown-number-text { + border: 0; + background-color: transparent; + color: #ff0f23; +} +.nut-countdown-unit { + color: #ff0f23; +} \ No newline at end of file diff --git a/src/packages/datepicker/datepicker.harmony.css b/src/packages/datepicker/datepicker.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/datepicker/datepicker.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/dialog/dialog.harmony.css b/src/packages/dialog/dialog.harmony.css new file mode 100644 index 0000000000..4ce2263e80 --- /dev/null +++ b/src/packages/dialog/dialog.harmony.css @@ -0,0 +1,169 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-dialog { + display: flex; + flex-direction: column; + align-items: center; + width: 295px; + min-width: 240px; + max-height: 67%; + min-height: 124px; + padding: 24px; + box-sizing: border-box; +} +.nut-dialog-outer { + position: fixed; + max-height: 100%; + background-color: #ffffff; + transition: transform 0.2s, -webkit-transform 0.2s; + -webkit-overflow-scrolling: touch; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + border-radius: 12px; + z-index: 1200; + animation-duration: 0.3s; +} +.nut-dialog-close { + position: absolute !important; + z-index: 1; + cursor: pointer; + width: 16px; + height: 16px; + display: flex; + justify-content: center; + align-items: center; + color: #ffffff; +} +.nut-dialog-close .nut-icon { + font-size: 16px; + width: 16px; + height: 16px; +} +.nut-dialog-close-top-right { + top: 16px; + right: 16px; +} +.nut-dialog-close-top-left { + top: 16px; + left: 16px; +} +.nut-dialog-close-bottom { + bottom: -64px; + width: 24px; + height: 24px; + left: 50%; + transform: translateX(-50%); +} +.nut-dialog-close-bottom .nut-icon { + color: #c2c4cc; + background-color: rgba(0, 0, 0, 0.4); + border-radius: 50%; + width: 24px; + height: 24px; +} +.nut-dialog-close:active { + opacity: 0.7; +} +.nut-dialog-header { + display: block; + text-align: center; + font-size: 16px; + font-weight: 600; + color: #1a1a1a; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.nut-dialog-content { + width: 100%; + margin: 12px 0 16px 0; + max-height: 268px; + line-height: 20px; + font-size: 14px; + color: #1a1a1a; + word-wrap: break-word; + word-break: break-all; + white-space: pre-wrap; + text-align: left; + overflow-y: auto; +} +.nut-dialog-footer { + display: flex; + align-items: center; + width: 100%; + justify-content: space-around; +} +.nut-dialog-footer.vertical { + flex-direction: column; +} +.nut-dialog-footer.vertical .nut-button { + min-width: 100%; +} +.nut-dialog-footer.vertical .nut-dialog-footer-ok { + order: 1; +} +.nut-dialog-footer.vertical .nut-dialog-footer-cancel { + margin: 0; + color: #505259; + font-size: 14px; + order: 2; + display: flex; + justify-content: center; + margin-top: 16px; +} +.nut-dialog-footer .nut-button { + min-width: 117px; +} +.nut-dialog-footer-cancel.nut-dialog-footer-cancel { + margin-right: 12px; +} +.nut-dialog-footer-ok { + max-width: 128px; + font-weight: 600; +} +.nut-dialog-footer-block.nut-button { + min-width: 100%; +} + +[dir=rtl] .nut-dialog-outer, +.nut-rtl .nut-dialog-outer { + left: auto; + right: 50%; + -webkit-transform: translate(50%, -50%); + transform: translate(50%, -50%); +} +[dir=rtl] .nut-dialog-close-top-right { + right: auto; + left: 16px; +} +.nut-rtl .nut-dialog-close-top-right { + right: auto; + left: 16px; +} +[dir=rtl] .nut-dialog-close-top-left { + left: auto; + right: 16px; +} +.nut-rtl .nut-dialog-close-top-left { + left: auto; + right: 16px; +} +[dir=rtl] .nut-dialog-footer-cancel.nut-dialog-footer-cancel { + margin-right: 0; + margin-left: 12px; +} +.nut-rtl .nut-dialog-footer-cancel.nut-dialog-footer-cancel { + margin-right: 0; + margin-left: 12px; +} +[dir=rtl] .nut-dialog-content { + text-align: right; +} +.nut-rtl .nut-dialog-content { + text-align: right; +} \ No newline at end of file diff --git a/src/packages/divider/divider.harmony.css b/src/packages/divider/divider.harmony.css new file mode 100644 index 0000000000..a8bfe1fb04 --- /dev/null +++ b/src/packages/divider/divider.harmony.css @@ -0,0 +1,72 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-divider { + display: flex; + align-items: center; + flex-direction: row; + font-size: 14px; + color: #505259; + margin: 16px 0; + width: 100%; + border: 0 solid rgba(0, 0, 0, 0.06); +} +.nut-divider-before { + display: flex; + border-style: solid; + border-color: rgba(0, 0, 0, 0.06); + border-width: 1px 0 0; + height: 1px; + flex: 1; +} +.nut-divider-after { + display: flex; + border-style: solid; + border-color: rgba(0, 0, 0, 0.06); + border-width: 1px 0 0; + height: 1px; + flex: 1; +} +.nut-divider-center-before { + margin-right: 8px; +} +.nut-divider-left-before { + margin-right: 8px; +} +.nut-divider-right-before { + margin-right: 8px; +} +.nut-divider-center-after { + margin-left: 8px; +} +.nut-divider-left-after { + margin-left: 8px; +} +.nut-divider-right-after { + margin-left: 8px; +} +.nut-divider-left-before { + width: 10%; + flex: none; +} +.nut-divider-right-after { + width: 10%; + flex: none; +} +.nut-divider-vertical { + display: inline-flex; + width: 0px; + height: 12px; + border-left: 1px solid rgba(0, 0, 0, 0.06); + margin: 0 8px; + vertical-align: middle; +} +.nut-divider-rtl-before { + margin-right: 0; + margin-left: 8px; +} +.nut-divider-rtl-after { + margin-left: 0; + margin-right: 8px; +} \ No newline at end of file diff --git a/src/packages/drag/drag.harmony.css b/src/packages/drag/drag.harmony.css new file mode 100644 index 0000000000..6e4d800be9 --- /dev/null +++ b/src/packages/drag/drag.harmony.css @@ -0,0 +1,18 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-drag { + position: fixed; + z-index: 9997 !important; + width: 0; + height: 0; + touch-action: none; + user-select: none; + font-size: 0; +} +.nut-drag-inner { + display: inline-flex; + width: fit-content; + height: fit-content; +} \ No newline at end of file diff --git a/src/packages/elevator/elevator.harmony.css b/src/packages/elevator/elevator.harmony.css new file mode 100644 index 0000000000..172af6bebd --- /dev/null +++ b/src/packages/elevator/elevator.harmony.css @@ -0,0 +1,127 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-elevator { + width: 100%; + display: block; + position: relative; + overflow: hidden; +} +.nut-elevator-list { + display: block; + position: relative; + top: 0; + overflow: hidden; + font-size: 12px; + color: #1a1a1a; +} +.nut-elevator-list-inner { + height: 100%; + width: 100%; + display: block; + background-color: #ffffff; + overflow: auto; +} +.nut-elevator-list-item { + display: block; +} +.nut-elevator-list-item-code { + display: flex; + position: relative; + height: 35px; + line-height: 35px; + font-size: 14px; + color: #1a1a1a; + padding: 0 20px; + font-weight: 600; + box-sizing: border-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.06); + background-color: inherit; +} +.nut-elevator-list-item-name { + display: flex; + align-items: center; + padding: 0 20px; + height: 30px; + line-height: 30px; +} +.nut-elevator-list-item-name-highcolor { + color: #ff0f23; +} +.nut-elevator-list-fixed { + display: flex; + align-items: center; + width: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 1; + padding: 0 20px; + height: 35px; + background-color: #ffffff; + box-sizing: border-box; + box-shadow: 0 0 10px #eee; +} +.nut-elevator-list-fixed-title { + font-size: 14px; + color: #ff0f23; + font-weight: 600; +} +.nut-elevator-code-current { + position: absolute; + right: 60px; + top: 50%; + transform: translateY(-50%); + width: 45px; + height: 45px; + line-height: 45px; + border-radius: 50%; + background: #fff; + box-shadow: 0 3px 3px 1px rgb(240, 240, 240); + text-align: center; +} +.nut-elevator-bars { + position: absolute; + right: 10px; + top: 50%; + color: #888b94; + font-size: 12px; + transform: translateY(-50%); + padding: 15px 0; + background-color: #f2f3f5; + border-radius: 6px; + text-align: center; + z-index: 1; +} +.nut-elevator-bars-inner-item { + display: block; + padding: 3px; + cursor: pointer; +} +.nut-elevator-bars-inner-item-active { + font-weight: 600; + color: #ff0f23; +} + +[dir=rtl] .nut-elevator-list-fixed, +.nut-rtl .nut-elevator-list-fixed { + left: auto; + right: 0; +} +[dir=rtl] .nut-elevator-code-current { + right: auto; + left: 60px; +} +.nut-rtl .nut-elevator-code-current { + right: auto; + left: 60px; +} +[dir=rtl] .nut-elevator-bars { + right: auto; + left: 10px; +} +.nut-rtl .nut-elevator-bars { + right: auto; + left: 10px; +} \ No newline at end of file diff --git a/src/packages/ellipsis/ellipsis.harmony.css b/src/packages/ellipsis/ellipsis.harmony.css new file mode 100644 index 0000000000..94c0ddea8d --- /dev/null +++ b/src/packages/ellipsis/ellipsis.harmony.css @@ -0,0 +1,24 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-ellipsis { + display: flex; +} +.nut-ellipsis .nut-ellipsis-text { + cursor: pointer; + color: #0073ff; + display: inline-block; +} +.nut-ellipsis .nut-ellipsis-wordbreak { + word-break: break-all; +} + +.nut-ellipsis-copy { + position: absolute; + top: -999999px; +} + +.nut-ellipsis-width { + width: fit-content; +} \ No newline at end of file diff --git a/src/packages/empty/empty.harmony.css b/src/packages/empty/empty.harmony.css new file mode 100644 index 0000000000..c50c7e3ca2 --- /dev/null +++ b/src/packages/empty/empty.harmony.css @@ -0,0 +1,59 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-empty { + box-sizing: border-box; + width: 100%; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + padding: 32px 40px; + background-color: #ffffff; +} +.nut-empty-base { + width: 160px; + height: 160px; +} +.nut-empty-base img, +.nut-empty-base image { + width: 100%; + height: 100%; +} +.nut-empty-small { + width: 120px; + height: 120px; +} +.nut-empty-small img, +.nut-empty-small image { + width: 100%; + height: 100%; +} +.nut-empty-title { + margin-top: 0px; + font-weight: 600; + margin-bottom: 12px; + color: #1a1a1a; + font-size: 16px; + line-height: 16px; +} +.nut-empty-description { + color: #505259; + font-size: 12px; + line-height: 1; +} +.nut-empty-actions-base { + display: flex; + flex-direction: row; + margin-top: 24px; +} +.nut-empty-actions-small { + display: flex; + flex-direction: row; + margin-top: 16px; +} +.nut-empty-action { + margin-right: 6px; + margin-left: 6px; +} \ No newline at end of file diff --git a/src/packages/fixednav/fixednav.harmony.css b/src/packages/fixednav/fixednav.harmony.css new file mode 100644 index 0000000000..95c509f38c --- /dev/null +++ b/src/packages/fixednav/fixednav.harmony.css @@ -0,0 +1,187 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-fixednav { + position: fixed; + z-index: 900; + display: inline-block; + height: 50px; + right: 0; +} +.nut-fixednav.active .nut-fixednav-btn .nut-icon { + transform: rotate(180deg); +} +.nut-fixednav.active .nut-fixednav-list { + transform: translateX(0%) !important; +} +.nut-fixednav.active.left .nut-icon { + transform: rotate(0deg) !important; +} +.nut-fixednav-btn { + box-sizing: border-box; + position: absolute; + right: 0; + z-index: 900; + width: 70px; + height: 100%; + background: #ff0f23; + border-radius: 45px 0px 0px 45px; + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.2); + display: flex; + align-items: center; + justify-content: center; +} +.nut-fixednav-btn .text { + width: 24px; + line-height: 13px; + font-size: 12px; + color: #fff; + flex-shrink: 0; +} +.nut-fixednav-btn .nut-icon { + margin-right: 5px; + transition: all 0.3s; + transform: rotate(0deg); + transition: all 0.3s; +} +.nut-fixednav-list { + position: absolute; + right: 0; + transform: translateX(100%); + transition: all 0.5s; + z-index: 900; + flex-shrink: 0; + height: 100%; + background: #ffffff; + display: flex; + justify-content: space-between; + border-radius: 25px 0px 0px 25px; + box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, 0.2); + padding-left: 20px; + padding-right: 80px; +} +.nut-fixednav-list-item { + position: relative; + flex: 1; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + min-width: 50px; + flex-shrink: 0; + color: #1a1a1a; +} +.nut-fixednav-list-item img { + width: 20px; + height: 20px; + margin-bottom: 2px; +} +.nut-fixednav-list-item .nut-fixednav-list-text { + font-size: 10px; +} +.nut-fixednav-list-item .b { + position: absolute; + right: 0; + top: 1px; + height: 14px; + line-height: 14px; + font-size: 10px; + padding: 0 3px; + color: white; + background: #ff0f23; + border-radius: 7px; + text-align: center; + min-width: 12px; +} +.nut-fixednav.left { + right: auto; + left: 0; +} +.nut-fixednav.left .nut-fixednav-btn { + flex-direction: row-reverse; + right: auto; + left: 0; + border-radius: 0 45px 45px 0; +} +.nut-fixednav.left .nut-fixednav-btn .nut-icon { + transform: rotate(180deg); + margin-right: 0px; + margin-left: 5px; +} +.nut-fixednav.left .nut-fixednav-list { + transform: translateX(-100%); + right: auto; + border-radius: 0px 25px 25px 0px; + padding-left: 80px; + padding-right: 20px; + margin: 0; +} + +[dir=rtl] .nut-fixednav, +.nut-rtl .nut-fixednav { + right: auto; + left: 0; +} +[dir=rtl] .nut-fixednav.active .nut-icon, +.nut-rtl .nut-fixednav.active .nut-icon { + transform: rotate(-180deg); +} +[dir=rtl] .nut-fixednav-btn, +.nut-rtl .nut-fixednav-btn { + right: auto; + left: 0; + border-radius: 0px 45px 45px 0px; +} +[dir=rtl] .nut-fixednav-btn .nut-icon, +.nut-rtl .nut-fixednav-btn .nut-icon { + margin-right: 0px; + margin-left: 5px; + transform: rotate(180deg); +} +[dir=rtl] .nut-fixednav-list, +.nut-rtl .nut-fixednav-list { + right: auto; + left: 0; + transform: translateX(-100%); + border-radius: 0px 25px 25px 0px; + box-shadow: -2px 2px 8px 0px rgba(0, 0, 0, 0.2); + padding-right: 20px; + padding-left: 80px; +} +[dir=rtl] .nut-fixednav-list-item .b, +.nut-rtl .nut-fixednav-list-item .b { + right: auto; + left: 0; +} +[dir=rtl] .nut-fixednav.left, +.nut-rtl .nut-fixednav.left { + left: auto; + right: 0; +} +[dir=rtl] .nut-fixednav.left .nut-fixednav-btn, +.nut-rtl .nut-fixednav.left .nut-fixednav-btn { + left: auto; + right: 0; + border-radius: 45px 0 0 45px; +} +[dir=rtl] .nut-fixednav.left .nut-fixednav-btn .nut-icon, +.nut-rtl .nut-fixednav.left .nut-fixednav-btn .nut-icon { + transform: rotate(0deg); + margin-right: 5px; + margin-left: 0px; +} +[dir=rtl] .nut-fixednav.left .nut-fixednav-list, +.nut-rtl .nut-fixednav.left .nut-fixednav-list { + transform: translateX(100%); + right: auto; + left: auto; + border-radius: 25px 0px 0px 25px; + padding-right: 80px; + padding-left: 20px; +} + +.nut-drag .nut-fixednav { + position: relative; +} \ No newline at end of file diff --git a/src/packages/form/form.harmony.css b/src/packages/form/form.harmony.css new file mode 100644 index 0000000000..e47f72c4b6 --- /dev/null +++ b/src/packages/form/form.harmony.css @@ -0,0 +1,70 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.form-layout-right .nut-form-item-label { + text-align: right; + padding-right: 24px; + white-space: nowrap; +} + +.form-layout-left .nut-form-item-label { + position: relative; + text-align: left; + padding-left: 12px; + white-space: nowrap; +} +.form-layout-left .nut-form-item-label .required { + display: block; + line-height: 1.5; + position: absolute; + left: 0.1em; +} + +.form-layout-top .nut-form-item { + flex-direction: column; + align-items: flex-start; + white-space: nowrap; +} + +.form-layout-top .nut-form-item-label { + padding-bottom: 4px; + display: block; + padding-right: 24px; +} + +.form-layout-top .nut-form-item-body { + margin-left: 0; + width: 100%; +} + +[dir=rtl] .form-layout-right .nut-form-item-label, +.nut-rtl .form-layout-right .nut-form-item-label { + text-align: left; + padding-right: 0; + padding-left: 24px; +} + +[dir=rtl] .form-layout-left .nut-form-item-label, +.nut-rtl .form-layout-left .nut-form-item-label { + text-align: right; + padding-left: 0; + padding-right: 12px; +} +[dir=rtl] .form-layout-left .nut-form-item-label .required, +.nut-rtl .form-layout-left .nut-form-item-label .required { + left: auto; + right: 0.1em; +} + +[dir=rtl] .form-layout-top .nut-form-item-label, +.nut-rtl .form-layout-top .nut-form-item-label { + padding-right: 0; + padding-left: 24px; +} + +[dir=rtl] .form-layout-top .nut-form-item-body, +.nut-rtl .form-layout-top .nut-form-item-body { + margin-left: 0; + margin-right: 0; +} \ No newline at end of file diff --git a/src/packages/formitem/formitem.harmony.css b/src/packages/formitem/formitem.harmony.css new file mode 100644 index 0000000000..5c1d192d38 --- /dev/null +++ b/src/packages/formitem/formitem.harmony.css @@ -0,0 +1,108 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-form-item { + display: flex; + align-items: center; + padding: 4px 12px; +} +.nut-form-item.error.line::before { + border-bottom: 1px solid #ff0f23; + transform: scaleX(1); + transition: transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; +} +.nut-form-item-label { + font-size: 14px; + font-weight: normal; + width: 90px; + margin-right: 10px; + flex: none !important; + display: inline-block !important; + word-wrap: break-word; + text-align: left; +} +.nut-form-item-label .required::before { + content: "*"; + color: #ff0f23; + margin-right: 4px; +} +.nut-form-item-body { + flex: 1; + display: flex !important; + flex-direction: column; +} +.nut-form-item-body-slots { + text-align: left; +} +.nut-form-item-body-slots .nut-input { + padding: 0; + border: 0; +} +.nut-form-item-body-slots .nut-input-text { + font-size: 14px; + text-align: left; + color: #1a1a1a; + width: 100%; + outline: 0 none; + border: 0; + text-decoration: none; + background: transparent; +} +.nut-form-item-body-slots .nut-range-container { + min-height: 24px; +} +.nut-form-item-body-slots .nut-textarea { + padding: 0 !important; +} +.nut-form-item-body-slots .nut-textarea .nut-textarea-textarea { + font: inherit; + text-align: left; +} +.nut-form-item-body-tips { + text-align: left; + font-size: 11px; + color: #ff0f23; +} + +[dir=rtl] .nut-form-item-label { + text-align: right; + margin-right: 0; + margin-left: 10px; +} + +.nut-rtl .nut-form-item-label { + text-align: right; + margin-right: 0; + margin-left: 10px; +} +[dir=rtl] .nut-form-item-label .required::before { + margin-right: 0; + margin-left: 4px; +} +.nut-rtl .nut-form-item-label .required::before { + margin-right: 0; + margin-left: 4px; +} +[dir=rtl] .nut-form-item-body-slots, +.nut-rtl .nut-form-item-body-slots { + text-align: right; +} +[dir=rtl] .nut-form-item-body-slots .nut-icon-ArrowRight, +[dir=rtl] .nut-form-item-body-slots .nut-icon-ArrowLeft, +.nut-rtl .nut-form-item-body-slots .nut-icon-ArrowRight, +.nut-rtl .nut-form-item-body-slots .nut-icon-ArrowLeft { + transform: rotateY(180deg); +} +[dir=rtl] .nut-form-item-body-slots .nut-input-text, +.nut-rtl .nut-form-item-body-slots .nut-input-text { + text-align: right; +} +[dir=rtl] .nut-form-item-body-slots .nut-textarea-textarea, +.nut-rtl .nut-form-item-body-slots .nut-textarea-textarea { + text-align: right; +} +[dir=rtl] .nut-form-item-tips, +.nut-rtl .nut-form-item-tips { + text-align: right; +} \ No newline at end of file diff --git a/src/packages/grid/grid.harmony.css b/src/packages/grid/grid.harmony.css new file mode 100644 index 0000000000..882a807beb --- /dev/null +++ b/src/packages/grid/grid.harmony.css @@ -0,0 +1,21 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-grid { + display: flex; + flex-direction: row; + align-items: stretch; + flex-wrap: wrap; + border: 0 solid rgba(0, 0, 0, 0.06); +} +.nut-grid-border { + border-top-width: 0px; + border-left-width: 0px; +} + +[dir=rtl] .nut-grid-border, +.nut-rtl .nut-grid-border { + border-left-width: 0; + border-right-width: 1px; +} \ No newline at end of file diff --git a/src/packages/griditem/griditem.harmony.css b/src/packages/griditem/griditem.harmony.css new file mode 100644 index 0000000000..f21703cbb8 --- /dev/null +++ b/src/packages/griditem/griditem.harmony.css @@ -0,0 +1,111 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-grid-item { + display: flex; + flex-direction: column; + position: relative; + box-sizing: border-box; + color: #1a1a1a; + overflow: hidden; +} +.nut-grid-item-text { + color: #1a1a1a; + font-size: 12px; + word-break: break-all; + margin: 8px 0 0 0; +} +.nut-grid-item-text-reverse { + margin: 0 0 8px 0; +} +.nut-grid-item-text-horizontal { + margin: 0 0 0 8px; +} +.nut-grid-item-text-horizontal-reverse { + margin: 0 8px 0 0; +} +.nut-grid-item-content { + display: flex; + box-sizing: border-box; + flex: 1; + flex-direction: column; + width: 100%; + padding: 16px 8px; + background: #ffffff; + border: 0 solid rgba(0, 0, 0, 0.06); +} +.nut-grid-item-content-border { + border-right-width: 0px; + border-bottom-width: 0px; +} +.nut-grid-item-content-surround { + border-top-width: 0px; + border-left-width: 0px; + border-radius: 8px; +} +.nut-grid-item-content-center { + align-items: center; + justify-content: center; +} +.nut-grid-item-content-square { + margin-top: -100%; +} +.nut-grid-item-content-reverse { + flex-direction: column-reverse; +} +.nut-grid-item-content-horizontal { + flex-direction: row; +} +.nut-grid-item-content-horizontal-reverse { + flex-direction: row-reverse; +} +.nut-grid-item-content-clickable { + cursor: pointer; +} +.nut-grid-item-content-clickable::before { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + border: inherit; + border-color: rgba(0, 0, 0, 0.7); + border-radius: inherit; + transform: translate(-50%, -50%); + opacity: 0; + content: " "; +} +.nut-grid-item-content-clickable:active::before { + opacity: 0.1; +} + +[dir=rtl] .nut-grid-item-content-border, +.nut-rtl .nut-grid-item-content-border { + border-right-width: 0; + border-left-width: 1px; +} +[dir=rtl] .nut-grid-item-content-surround, +.nut-rtl .nut-grid-item-content-surround { + border-left-width: 0; + border-right-width: 1px; +} +[dir=rtl] .nut-grid-item-content-horizontal .nut-grid-item-text { + margin: 0 8px 0 0; +} +.nut-rtl .nut-grid-item-content-horizontal .nut-grid-item-text { + margin: 0 8px 0 0; +} +[dir=rtl] .nut-grid-item-content-horizontal.nut-grid-item-content-reverse .nut-grid-item-text { + margin: 0 0 0 8px; +} +.nut-rtl .nut-grid-item-content-horizontal.nut-grid-item-content-reverse .nut-grid-item-text { + margin: 0 0 0 8px; +} +[dir=rtl] .nut-grid-item-content-clickable::before, +.nut-rtl .nut-grid-item-content-clickable::before { + left: auto; + right: 50%; + transform: translate(50%, -50%); +} \ No newline at end of file diff --git a/src/packages/hoverbutton/hoverbutton.harmony.css b/src/packages/hoverbutton/hoverbutton.harmony.css new file mode 100644 index 0000000000..6ecdaca086 --- /dev/null +++ b/src/packages/hoverbutton/hoverbutton.harmony.css @@ -0,0 +1,25 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-hoverbutton { + display: flex; + flex-direction: column; + gap: 8px; +} +.nut-hoverbutton-container { + position: fixed; + right: 8px; + bottom: 60px; + z-index: 10; +} + +[dir=rtl] .nut-hoverbutton-container { + right: auto; + left: 8px; +} + +.nut-hoverbutton-container-rtl { + right: auto; + left: 8px; +} \ No newline at end of file diff --git a/src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css b/src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css new file mode 100644 index 0000000000..8c55180997 --- /dev/null +++ b/src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css @@ -0,0 +1,60 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-hoverbutton-item-container { + width: 40px; + height: 40px; + border-radius: 40px; + border: 1px solid rgba(0, 0, 0, 0.12); + background-color: rgba(255, 255, 255, 0.9); +} +.nut-hoverbutton-item-container:active { + background-color: rgba(247, 248, 252, 0.9); +} +.nut-hoverbutton-item-container-active { + background-color: rgba(247, 248, 252, 0.9); +} +.nut-hoverbutton-item-container-harmony { + margin-bottom: 8px; +} +.nut-hoverbutton-item-container-harmony:last-child { + margin-bottom: 0; +} +.nut-hoverbutton-item-container-icontext { + display: flex; + flex-direction: column; + align-items: center; +} +.nut-hoverbutton-item-container-icontext .nut-icon { + display: block; + width: 14px; + height: 14px; + font-size: 14px; +} +.nut-hoverbutton-item-icon { + width: 20px; + height: 20px; + margin: 9px; + color: #1a1a1a; + fill: #1a1a1a; +} +.nut-hoverbutton-item-icon .nut-icon { + display: block; + width: 20px; + height: 20px; + font-size: 20px; +} +.nut-hoverbutton-item-container:active .nut-hoverbutton-item-icon { + color: #1a1a1a; + fill: #1a1a1a; +} +.nut-hoverbutton-item-text-icon { + width: 14px; + height: 5px; +} +.nut-hoverbutton-item-text { + font-size: 10px; + margin-top: 5px; + line-height: 9px; +} \ No newline at end of file diff --git a/src/packages/image/image.harmony.css b/src/packages/image/image.harmony.css new file mode 100644 index 0000000000..482289e698 --- /dev/null +++ b/src/packages/image/image.harmony.css @@ -0,0 +1,54 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-image { + display: block; + position: relative; +} +.nut-image-default { + display: block; + width: 100%; + height: 100%; +} +.nut-image.nut-image-round { + border-radius: 50%; + overflow: hidden; +} +.nut-image-loading { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background: #f2f3f5; + background-size: 100% 100%; +} +.nut-image-error { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background: #f2f3f5; + background-size: 100% 100%; +} + +[dir=rtl] .nut-image .nut-img-loading, +.nut-rtl .nut-image .nut-img-loading { + left: auto; + right: 0; +} +[dir=rtl] .nut-image .nut-img-error, +.nut-rtl .nut-image .nut-img-error { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/imagepreview/imagepreview.harmony.css b/src/packages/imagepreview/imagepreview.harmony.css new file mode 100644 index 0000000000..62d62e626d --- /dev/null +++ b/src/packages/imagepreview/imagepreview.harmony.css @@ -0,0 +1,101 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-imagepreview { + width: 100%; + height: 100%; +} +.nut-imagepreview-swiper { + height: 100%; + width: 100vw; + background-color: transparent; +} +.nut-imagepreview-index { + position: fixed; + z-index: 2002; + top: 50px; + text-align: center; + left: 0; + right: 0; + background: transparent; + color: #ffffff; +} +.nut-imagepreview-index .arrow { + position: absolute; + left: 15px; + transform: rotateZ(180deg); +} +.nut-imagepreview-close { + position: fixed; + display: flex; + align-items: center; + justify-content: center; + z-index: 2002; + background: transparent; + color: #ffffff; +} +.nut-imagepreview-close .nut-icon { + color: #ffffff; +} +.nut-imagepreview-close.top-right { + top: 50px; + right: 20px; +} +.nut-imagepreview-close.top-left { + top: 50px; + left: 20px; +} +.nut-imagepreview-close.bottom { + bottom: 50px; + left: 0; + right: 0; + text-align: center; +} +.nut-imagepreview-pop { + height: 100%; + background: transparent !important; + display: flex; + align-items: center; + width: 100%; +} +.nut-imagepreview-swiper .nut-imagepreview-swiper-item, +.nut-imagepreview-swiper .nut-swiper-item { + display: flex; + align-items: center; + justify-content: center; + height: 100%; +} +.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-image, +.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-video, +.nut-imagepreview-swiper .nut-swiper-item .nut-image, +.nut-imagepreview-swiper .nut-swiper-item .nut-video { + display: flex; + justify-content: center; + align-items: center; +} +.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-image-preview-box, +.nut-imagepreview-swiper .nut-swiper-item .nut-image-preview-box { + width: 100%; +} +.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-video video, +.nut-imagepreview-swiper .nut-swiper-item .nut-video video { + object-fit: contain; +} + +[dir=rtl] .nut-imagepreview-index .arrow, +.nut-rtl .nut-imagepreview-index .arrow { + left: auto; + right: 15px; + transform: rotateZ(-180deg); +} +[dir=rtl] .nut-imagepreview-close.top-right, +.nut-rtl .nut-imagepreview-close.top-right { + right: auto; + left: 20px; +} +[dir=rtl] .nut-imagepreview-close.top-left, +.nut-rtl .nut-imagepreview-close.top-left { + left: auto; + right: 20px; +} \ No newline at end of file diff --git a/src/packages/indicator/indicator.harmony.css b/src/packages/indicator/indicator.harmony.css new file mode 100644 index 0000000000..7098699181 --- /dev/null +++ b/src/packages/indicator/indicator.harmony.css @@ -0,0 +1,162 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-indicator { + display: flex; + width: auto; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; +} +.nut-indicator-fixed-width { + width: 21px; +} +.nut-indicator-dot { + display: inline-block; + vertical-align: middle; + width: 3px; + height: 3px; + border-radius: 50%; + background-color: #c2c4cc; + margin: 0 2px; + opacity: 0.4; +} +.nut-indicator-line { + display: inline-block; + vertical-align: middle; + width: 3px; + height: 3px; + border-radius: 50%; + background-color: #c2c4cc; + margin: 0 2px; + opacity: 0.4; +} +.nut-indicator-dot:first-child, .nut-indicator-line:first-child { + margin-left: 0px; +} +.nut-indicator-dot:last-child, .nut-indicator-line:last-child { + margin-right: 0px; +} +.nut-indicator-dot-active { + width: 6px; + border-radius: 2px; + background: #ff0f23; + opacity: 1; +} +.nut-indicator-line-active { + width: 6px; + border-radius: 2px; + background: #ff0f23; + opacity: 1; +} +.nut-indicator-fixed-width .nut-indicator-dot { + width: 12px; + border-radius: 2px; +} +.nut-indicator-fixed-width .nut-indicator-dot-active { + width: 6px; +} +.nut-indicator-vertical.nut-indicator-fixed-width { + justify-content: flex-start; + height: 21px; + width: auto; +} +.nut-indicator-vertical.nut-indicator-fixed-width .nut-indicator-dot { + width: 3px; + height: 12px; + border-radius: 2px; +} +.nut-indicator-vertical.nut-indicator-fixed-width .nut-indicator-dot-active { + height: 6px; +} +.nut-indicator-line { + width: 6px; + margin: 0; + border-radius: 2px; + background-color: transparent; +} +.nut-indicator-line-active { + transition: transform 0.3s ease-in-out; + background: #ff0f23; +} + +.nut-indicator-track { + position: relative; +} +.nut-indicator-track:after { + display: block; + content: " "; + position: absolute; + width: 100%; + height: 100%; + box-sizing: border-box; + border-radius: 2px; + background-color: #c2c4cc; + opacity: 0.4; +} + +.nut-indicator-white .nut-indicator-dot, .nut-indicator-white .nut-indicator-line { + position: relative; + box-sizing: content-box; + background: rgba(255, 255, 255, 0.4); + border: 1px solid rgba(0, 0, 0, 0.06); + opacity: 1; +} +.nut-indicator-white .nut-indicator-line { + opacity: 0; +} +.nut-indicator-white .nut-indicator-line-active { + opacity: 1; + background: rgb(255, 255, 255); +} +.nut-indicator-white .nut-indicator-dot-active { + background: rgb(255, 255, 255); +} + +.nut-indicator-track.nut-indicator-white:after { + border: 1px solid rgba(0, 0, 0, 0.06); + background: rgba(255, 255, 255, 0.4); +} + +.nut-indicator-vertical { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.nut-indicator-vertical .nut-indicator-dot { + margin: 2px 0; +} +.nut-indicator-vertical .nut-indicator-dot:first-child { + margin-top: 0px; +} +.nut-indicator-vertical .nut-indicator-dot:last-child { + margin-bottom: 0px; +} +.nut-indicator-vertical .nut-indicator-dot-active { + width: 3px; + height: 6px; +} +.nut-indicator-vertical.nut-indicator-track .nut-indicator-line { + width: 3px; + height: 6px; +} + +[dir=rtl] .nut-indicator-dot:first-child { + margin-left: 2px; + margin-right: 0px; +} + +.nut-rtl .nut-indicator-dot:first-child { + margin-left: 2px; + margin-right: 0px; +} +[dir=rtl] .nut-indicator-dot:last-child { + margin-right: 2px; + margin-left: 0px; +} +.nut-rtl .nut-indicator-dot:last-child { + margin-right: 2px; + margin-left: 0px; +} \ No newline at end of file diff --git a/src/packages/infiniteloading/infiniteloading.harmony.css b/src/packages/infiniteloading/infiniteloading.harmony.css new file mode 100644 index 0000000000..97d37e002c --- /dev/null +++ b/src/packages/infiniteloading/infiniteloading.harmony.css @@ -0,0 +1,63 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-infiniteloading { + display: block; + width: 100%; +} +.nut-infiniteloading .nut-infinite-top { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + overflow: hidden; + font-size: 12px; + color: #888b94; +} +.nut-infiniteloading .nut-infinite-top-tips { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.nut-infiniteloading .nut-infinite-top-tips-icons { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 4px; +} +.nut-infiniteloading .nut-infinite-bottom { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding-top: 6px; + color: #888b94; + text-align: center; +} +.nut-infiniteloading .nut-infinite-bottom-tips { + display: flex; + justify-content: center; + align-items: center; + font-size: 10px; +} +.nut-infiniteloading .nut-infinite-bottom-tips-icons { + margin-right: 8px; +} +.nut-infiniteloading-primary { + background-color: #ff0f23; +} +.nut-infiniteloading-primary .nut-infinite-bottom { + color: rgba(255, 255, 255, 0.9); +} +.nut-infiniteloading-primary .nut-infinite-top { + color: rgba(255, 255, 255, 0.9); +} + +[dir=rtl] .nut-infiniteloading .nut-infinite-bottom-tips-icons, +.nut-rtl .nut-infiniteloading .nut-infinite-bottom-tips-icons { + margin-right: 0; + margin-left: 8px; +} \ No newline at end of file diff --git a/src/packages/input/input.harmony.css b/src/packages/input/input.harmony.css new file mode 100644 index 0000000000..53cda70813 --- /dev/null +++ b/src/packages/input/input.harmony.css @@ -0,0 +1,54 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-input { + position: relative; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + flex: 1; + align-items: center; + font-size: 14px; + box-sizing: border-box; +} +.nut-input .nut-icon { + color: #c2c4cc; + width: 14px; + height: 14px; + font-size: 14px; +} +.nut-input-container { + height: 38px; + padding: 12px; + background-color: #ffffff; + border-radius: 6px; + border-bottom: 0px solid rgba(0, 0, 0, 0.06); +} + +.nut-input-native { + flex: 1; + color: #1a1a1a; + font-size: 14px; + line-height: 14px; + padding: 0; + border: 0; + outline: 0 none; + text-decoration: none; + background-color: transparent; +} + +.nut-input-readonly .nut-input-native { + color: #888b94; +} + +.nut-input-disabled { + color: #c2c4cc !important; +} +.nut-input-disabled input:disabled { + color: #c2c4cc; + cursor: not-allowed; + background: none; + opacity: 1; + -webkit-text-fill-color: #c2c4cc; +} \ No newline at end of file diff --git a/src/packages/inputnumber/inputnumber.harmony.css b/src/packages/inputnumber/inputnumber.harmony.css new file mode 100644 index 0000000000..b4d7d37f1b --- /dev/null +++ b/src/packages/inputnumber/inputnumber.harmony.css @@ -0,0 +1,61 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-inputnumber { + display: inline-flex; + width: calc(2 * 0px + 2 * 20px + 26px); + flex-direction: row; + align-items: center; + background-color: #f2f3f5; + border-radius: 4px; + overflow: hidden; +} +.nut-inputnumber-minus { + display: flex; + justify-content: center; + align-items: center; + width: 20px; + height: 20px; + background-color: transparent; +} +.nut-inputnumber-add { + display: flex; + justify-content: center; + align-items: center; + width: 20px; + height: 20px; + background-color: transparent; +} +.nut-inputnumber-icon { + color: #505259; + cursor: pointer; +} +.nut-inputnumber-icon-disabled { + color: #c2c4cc; + cursor: not-allowed; +} +.nut-inputnumber-input { + display: flex; + justify-content: center; + align-items: center; + width: 26px; + font-size: 12px; + height: 20px; + text-align: center; + outline: none; + border: 0; + margin-left: 0px; + margin-right: 0px; + color: #505259; + background-color: #f2f3f5; +} +.nut-inputnumber-input-disabled { + color: #c2c4cc; +} +.nut-inputnumber-input::-webkit-outer-spin-button, .nut-inputnumber-input::-webkit-inner-spin-button { + appearance: none; +} +.nut-inputnumber-input-disabled { + color: #c2c4cc; +} \ No newline at end of file diff --git a/src/packages/layout/layout.harmony.css b/src/packages/layout/layout.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/layout/layout.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/loading/loading.harmony.css b/src/packages/loading/loading.harmony.css new file mode 100644 index 0000000000..690e34b566 --- /dev/null +++ b/src/packages/loading/loading.harmony.css @@ -0,0 +1,45 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-loading { + display: inline-flex; + flex-direction: row; + align-items: center; + justify-content: center; +} +.nut-loading.nut-loading-vertical { + flex-direction: column; +} +.nut-loading .nut-loading-icon-box { + display: inline-block; + font-size: 0; + line-height: 0; + animation: nut-loading-rotation 1s infinite linear; +} +.nut-loading .nut-loading-icon-box .nut-loading-icon { + color: #888b94; + width: 12px; + height: 12px; + font-size: 12px; +} +.nut-loading .nut-loading-lottie-box { + width: 56px; + height: 56px; + border-radius: 8px; + background: rgba(0, 0, 0, 0.06); +} +.nut-loading .nut-loading-text { + padding-top: 8px; + color: #888b94; + font-size: 12px; +} + +@keyframes nut-loading-rotation { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/src/packages/lottie/lottie.harmony.css b/src/packages/lottie/lottie.harmony.css new file mode 100644 index 0000000000..f52f190c3c --- /dev/null +++ b/src/packages/lottie/lottie.harmony.css @@ -0,0 +1,4 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ \ No newline at end of file diff --git a/src/packages/menu/menu.harmony.css b/src/packages/menu/menu.harmony.css new file mode 100644 index 0000000000..499b3a794a --- /dev/null +++ b/src/packages/menu/menu.harmony.css @@ -0,0 +1,56 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-menu { + position: relative; +} +.nut-menu.scroll-fixed { + position: fixed; + top: 0; + z-index: 1000; + width: 100%; +} + +.nut-menu-bar { + position: relative; + display: flex; + line-height: 48px; + background-color: #ffffff; + box-shadow: 0 2px 12px rgba(89, 89, 89, 0.12); +} +.nut-menu-bar.opened { + z-index: 1000; +} + +.nut-menu-title { + flex: 1; + text-align: center; + font-size: 14px; + color: #1a1a1a; + min-width: 0; + display: flex; + align-items: center; + justify-content: center; + max-width: 100%; +} +.nut-menu-title-text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + padding: 0 8px; +} +.nut-menu-title-icon { + flex-shrink: 0; + transition: all 0.2s linear; +} +.nut-menu-title.active { + color: #ff0f23; +} +.nut-menu-title.disabled { + color: #c2c4cc; +} +.nut-menu-title.active .nut-menu-title-icon { + transform: rotate(180deg); +} \ No newline at end of file diff --git a/src/packages/menuitem/menuitem.harmony.css b/src/packages/menuitem/menuitem.harmony.css new file mode 100644 index 0000000000..ffc260c4a1 --- /dev/null +++ b/src/packages/menuitem/menuitem.harmony.css @@ -0,0 +1,122 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-menu-container-content { + padding: 12px 24px; + max-height: 214px; + overflow-y: auto; + display: flex; + flex-wrap: wrap; + background: #ffffff; +} +.nut-menu-container-content_fixed { + width: 100%; + opacity: 0; + position: fixed; +} +.nut-menu-container-item { + display: flex; + align-items: center; + color: #1a1a1a; + font-size: 14px; + padding: 12px 0; +} +.nut-menu-container-item.active { + font-weight: 600; + color: #ff0f23; +} +.nut-menu-container-item .nut-icon { + display: inline-flex; + align-items: center; + margin-right: 8px; + flex-shrink: 0; +} +.nut-menu-container-wrap { + position: absolute; + width: 100%; + z-index: 1000; + overflow: hidden; +} +.nut-menu-container-wrap-up { + position: absolute; + width: 100%; + z-index: 1000; + overflow: hidden; +} +.nut-menu-container-wrap-up { + bottom: 48px; +} + +.overlay-fade-enter-active.nut-menu-container-overlay { + top: auto; + z-index: 1000; +} + +.nut-menu-placeholder-element { + position: fixed; + top: -var(--nutui-menu-bar-line-height, 48px); + left: 0; + right: 0; + z-index: 1000; + background-color: transparent; +} +.nut-menu-placeholder-element.up { + bottom: -var(--nutui-menu-bar-line-height, 48px); +} + +.nut-menu-container-down-enter { + opacity: 0; + transform: translate(0, -30px); +} + +.nut-menu-container-down-enter-done { + opacity: 1; + transform: translate(0, 0); + transition: all 100ms; +} + +.nut-menu-container-down-exit { + opacity: 1; + transition: all 100ms; +} + +.nut-menu-container-down-exit-done { + opacity: 0; + transition: all 100ms; +} + +.nut-menu-container-up-enter { + opacity: 0; + transform: translate(0, 30px); +} + +.nut-menu-container-up-enter-done { + opacity: 1; + transform: translate(0, 0); + transition: all 100ms; +} + +.nut-menu-container-up-exit { + opacity: 1; + transition: all 100ms; +} + +.nut-menu-container-up-exit-done { + opacity: 0; + transition: all 100ms; +} + +[dir=rtl] .nut-menu-container-item .nut-icon { + margin-right: 0; + margin-left: 8px; +} + +.nut-rtl .nut-menu-container-item .nut-icon { + margin-right: 0; + margin-left: 8px; +} +[dir=rtl] .nut-menu-container .nut-icon, +.nut-rtl .nut-menu-container .nut-icon { + transform: rotateY(180deg); +} \ No newline at end of file diff --git a/src/packages/navbar/navbar.harmony.css b/src/packages/navbar/navbar.harmony.css new file mode 100644 index 0000000000..680cb131e1 --- /dev/null +++ b/src/packages/navbar/navbar.harmony.css @@ -0,0 +1,106 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-navbar { + width: 100%; + position: relative; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 44px; + box-sizing: border-box; + font-size: 14px; + color: #1a1a1a; + overflow: hidden; + padding: 0 16px; +} +.nut-navbar-fixed { + position: fixed; + top: 0; + left: 0; + right: 0; + width: 100%; +} +.nut-navbar-placeholder { + display: inline-block; + width: 100%; +} +.nut-navbar-safe-area-inset-top { + padding-top: constant(safe-area-inset-top); + padding-top: env(safe-area-inset-top); +} +.nut-navbar-title-wrapper { + justify-content: space-between; +} +.nut-navbar-title { + height: 100%; + text-align: center; + display: flex; + flex: 1; + flex-direction: row; + align-items: center; + font-size: 18px; + font-weight: 600; + color: #1a1a1a; +} +.nut-navbar-title-center { + max-width: 129px; + justify-content: center; +} +.nut-navbar-title ::-webkit-scrollbar { + display: none; +} +.nut-navbar-left, .nut-navbar-right { + display: flex; + align-items: center; + flex-direction: row; + max-width: 124px; + height: 100%; + cursor: pointer; + /* #ifndef harmony jd h5 weapp*/ + /* #endif */ +} +.nut-navbar-left .nut-icon, +.nut-navbar-left .nutui-iconfont, .nut-navbar-right .nut-icon, +.nut-navbar-right .nutui-iconfont { + width: 20px; + height: 20px; + font-size: 20px; +} +.nut-navbar-left-maxwidth, .nut-navbar-right-maxwidth { + box-sizing: border-box; + width: 108px; +} +.nut-navbar-left { + padding-right: 16px; + gap: 16px; +} +.nut-navbar-left-rtl { + padding-right: 0; + padding-left: 16px; +} +.nut-navbar-left-back { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 16px; +} +.nut-navbar-left-hidden { + padding-left: 0; + padding-right: 0; +} +.nut-navbar-right { + padding-left: 16px; + justify-content: flex-end; + gap: 16px; +} +.nut-navbar-right-rtl { + padding-right: 16px; + padding-left: 0; +} +.nut-navbar-rtl .nut-icon-ArrowLeft { + transform: rotateY(180deg); +} \ No newline at end of file diff --git a/src/packages/noticebar/noticebar.harmony.css b/src/packages/noticebar/noticebar.harmony.css new file mode 100644 index 0000000000..6777164b2c --- /dev/null +++ b/src/packages/noticebar/noticebar.harmony.css @@ -0,0 +1,194 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-noticebar { + width: 100%; +} +.nut-noticebar .nut-noticebar-box { + position: relative; + display: flex; + align-items: center; + height: 36px; + padding: 0 16px; + font-size: 12px; + background: rgb(251, 248, 220); + color: #d9500b; + border-radius: 0; +} +.nut-noticebar .nut-noticebar-box-wrapable { + height: auto; + padding: 8px 16px; +} +.nut-noticebar .nut-noticebar-box-center { + height: auto; + padding: 8px 16px; +} +.nut-noticebar .nut-noticebar-box-wrapable .nut-noticebar-box-wrap, .nut-noticebar .nut-noticebar-box-center .nut-noticebar-box-wrap { + height: auto; +} +.nut-noticebar .nut-noticebar-box-wrapable .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content { + position: relative; + white-space: normal; + word-wrap: break-word; +} +.nut-noticebar .nut-noticebar-box-center { + justify-content: center; +} +.nut-noticebar .nut-noticebar-box-center .nut-noticebar-box-wrap { + flex: initial; +} +.nut-noticebar .nut-noticebar-box-center .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content { + position: relative; + display: initial; +} +.nut-noticebar .nut-noticebar-box-left-icon { + display: flex; + height: 16px; + min-width: 16px; + margin-right: 4px; + background-size: 100% 100%; +} +.nut-noticebar .nut-noticebar-box-right-icon { + display: flex; + align-items: center; + justify-content: center; + width: 16px; + margin-left: 4px; +} +.nut-noticebar .nut-noticebar-box-right-icon .nut-icon { + width: 12px; + height: 12px; +} +.nut-noticebar .nut-noticebar-box-wrap { + display: flex; + flex: 1; + height: 24px; + line-height: 24px; + overflow: hidden; + position: relative; +} +.nut-noticebar .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content { + position: absolute; + white-space: nowrap; +} +.nut-noticebar .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content.nut-ellipsis { + max-width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.nut-noticebar .nut-noticebar-box .play { + animation: nut-notice-bar-play linear both running; +} +.nut-noticebar .nut-noticebar-box .play-infinite { + animation: nut-notice-bar-play-infinite linear infinite both running; +} +.nut-noticebar .nut-noticebar-box .play-vertical { + animation: nut-notice-bar-play-vertical linear infinite both running; +} +.nut-noticebar .nut-noticebar-vertical { + position: relative; + display: flex; + justify-content: space-between; + height: 36px; + font-size: 12px; + overflow: hidden; + padding: 0 16px; + background: rgb(251, 248, 220); + color: #d9500b; +} +.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-left-icon { + height: 16px; + min-width: 16px; + margin: 4px; + background-size: 100% 100%; + display: flex; + align-self: center; +} +.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-horseLamp-list { + margin: 0; + padding: 0; + display: block; + flex: 1; +} +.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-horseLamp-list-item { + display: flex; + align-items: center; + height: 36px; + width: 100%; +} +.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-wrap { + display: flex; + height: 100%; + width: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; +} +.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-right-icon { + align-self: center; + display: flex; + justify-content: center; + width: 16px; + margin-left: 4px; +} +@keyframes nut-notice-bar-play { + to { + transform: translate3d(-100%, 0, 0); + } +} +@keyframes nut-notice-bar-play-infinite { + to { + transform: translate3d(-100%, 0, 0); + } +} +@keyframes nut-notice-bar-play-vertical { + to { + transform: translateY(36px); + } +} + +[dir=rtl] .nut-noticebar .nut-noticebar-box-left-icon { + margin-right: 0; + margin-left: 4px; +} + +.nut-rtl .nut-noticebar .nut-noticebar-box-left-icon { + margin-right: 0; + margin-left: 4px; +} +[dir=rtl] .nut-noticebar .nut-noticebar-box-right-icon { + margin-left: 0; + margin-right: 4px; +} +.nut-rtl .nut-noticebar .nut-noticebar-box-right-icon { + margin-left: 0; + margin-right: 4px; +} +[dir=rtl] .nut-noticebar .nut-noticebar-box .play, +.nut-rtl .nut-noticebar .nut-noticebar-box .play { + animation: nut-notice-bar-play-rtl linear both running; +} +[dir=rtl] .nut-noticebar .nut-noticebar-box .play-infinite, +.nut-rtl .nut-noticebar .nut-noticebar-box .play-infinite { + animation: nut-notice-bar-play-infinite-rtl linear infinite both running; +} +@keyframes nut-notice-bar-play-rtl { + to { + transform: translate3d(100%, 0, 0); + } +} +@keyframes nut-notice-bar-play-infinite-rtl { + to { + transform: translate3d(100%, 0, 0); + } +} +[dir=rtl] .nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-right-icon { + margin-left: 0; + margin-right: 4px; +} +.nut-rtl .nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-right-icon { + margin-left: 0; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/packages/notify/notify.harmony.css b/src/packages/notify/notify.harmony.css new file mode 100644 index 0000000000..4aa4e3b272 --- /dev/null +++ b/src/packages/notify/notify.harmony.css @@ -0,0 +1,90 @@ +@charset "UTF-8"; + +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +/*入场动画开始*/ +.fade-enter { + opacity: 0; +} + +/*入场动画过程*/ +.fade-enter-active { + opacity: 1; + transition: opacity 1s; +} + +/*入场动画结束*/ +.fade-enter-done { + opacity: 1; +} + +/*离场动画开始*/ +.fade-exit { + opacity: 1; +} + +/*离场动画过程*/ +.fade-exit-active { + opacity: 0; + transition: opacity 1s; +} + +/*离场动画结束*/ +.fade-exit-done { + opacity: 0; +} + +/*页面第一次加载时的开始状态*/ +.fade-appear { + opacity: 0; +} + +/*页面第一次加载时的动画过程*/ +.fade-appear-active { + opacity: 1; + transition: opacity 1s; +} + +.nut-notify { + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; + padding: 0px 10px; + color: #ffffff; + font-size: 14px; + white-space: pre-wrap; + word-wrap: break-word; + height: 40px; +} +.nut-notify-popup-top, .nut-notify-popup-bottom { + position: fixed; + left: 0; + right: 0; + overflow-y: auto; + transition: transform 0.3s; + z-index: 9999; +} +.nut-notify-popup-top { + top: 0; +} +.nut-notify-popup-bottom { + bottom: 0; +} +.nut-notify-base { + background: #ff0f23; +} +.nut-notify-primary { + background: #0073ff; +} +.nut-notify-success { + background: #00d900; +} +.nut-notify-danger { + background: #ff0f23; +} +.nut-notify-warning { + background: #ffbf00; +} \ No newline at end of file diff --git a/src/packages/numberkeyboard/numberkeyboard.harmony.css b/src/packages/numberkeyboard/numberkeyboard.harmony.css new file mode 100644 index 0000000000..21931acefb --- /dev/null +++ b/src/packages/numberkeyboard/numberkeyboard.harmony.css @@ -0,0 +1,129 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-numberkeyboard { + width: 100%; + padding: 0 0 22px 0; + user-select: none; + background-color: #f2f3f5; +} +.nut-numberkeyboard-header { + position: relative; + display: flex; + align-items: center; + justify-content: center; + box-sizing: content-box; + padding: 16px; + color: #1a1a1a; + font-size: 16px; +} +.nut-numberkeyboard-header-title { + color: #1a1a1a; + display: inline-block; + font-size: 16px; +} +.nut-numberkeyboard-header-close { + position: absolute; + display: block; + right: 0; + top: 50%; + transform: translateY(-50%); + padding: 0 16px; + color: #505259; + font-size: 14px; + background-color: transparent; + border: none; + cursor: pointer; +} +.nut-numberkeyboard-body { + display: flex; + padding: 6px 0 0 6px; +} +.nut-numberkeyboard-body-keys { + display: flex; + flex: 3; + flex-wrap: wrap; +} +.nut-numberkeyboard-body-wrapper { + position: relative; + flex: 1; + /* #ifdef harmony */ + width: 33%; + /* #endif */ + /* #ifndef harmony */ + flex-basis: 33%; + /* #endif */ + box-sizing: border-box; + padding: 0 6px 6px 0; + background-color: #f7f8fc; +} +.nut-numberkeyboard-body-wrapper .key { + display: flex; + align-items: center; + justify-content: center; + height: 48px; + font-size: 18px; + line-height: 1.5; + background-color: #ffffff; + color: #505259; + border-radius: 8px; + border: none; + font-weight: 600; + cursor: pointer; +} +.nut-numberkeyboard-body-wrapper .key.active { + background-color: #ebedf0; +} +.nut-numberkeyboard-sidebar { + display: flex; + flex: 1; + flex-basis: 33%; + flex-direction: column; +} +.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper { + width: 100%; +} +.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key { + position: absolute; + top: 0; + right: 6px; + bottom: 6px; + left: 0; + height: auto; +} +.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .confirm { + font-size: 16px; + color: #fff; + background-color: #ff0f23; +} +.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .confirm.active { + background-color: rgba(255, 0, 0, 0.7); +} + +[dir=rtl] .nut-popup .nut-numberkeyboard-header-close, +.nut-rtl .nut-popup .nut-numberkeyboard-header-close { + right: auto; + left: 0; +} +[dir=rtl] .nut-popup .nut-numberkeyboard-body, +.nut-rtl .nut-popup .nut-numberkeyboard-body { + padding: 6px 6px 0 0; +} +[dir=rtl] .nut-popup .nut-numberkeyboard-body-wrapper, +.nut-rtl .nut-popup .nut-numberkeyboard-body-wrapper { + padding: 0 0 6px 6px; +} +[dir=rtl] .nut-popup .nut-numberkeyboard-body-wrapper .delete, +.nut-rtl .nut-popup .nut-numberkeyboard-body-wrapper .delete { + transform: rotate(-180deg); +} +[dir=rtl] .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key, +.nut-rtl .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key { + left: 6px; + right: 0; +} +[dir=rtl] .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key.delete, +.nut-rtl .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key.delete { + transform: rotate(-180deg); +} \ No newline at end of file diff --git a/src/packages/overlay/overlay.harmony.css b/src/packages/overlay/overlay.harmony.css new file mode 100644 index 0000000000..5e9c6e3ce7 --- /dev/null +++ b/src/packages/overlay/overlay.harmony.css @@ -0,0 +1,63 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-overlay { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + z-index: 1000; +} + +.nut-overflow-hidden { + overflow: hidden !important; +} + +@keyframes nut-fade-in { + 0% { + opacity: 0; + } + 1% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes nut-fade-out { + 0% { + opacity: 1; + } + 1% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +.nut-overlay-slide-enter-active { + animation-fill-mode: both; + animation-name: nut-fade-in; + animation-duration: 0.3s; +} +.nut-overlay-slide-appear-active { + animation-fill-mode: both; + animation-name: nut-fade-in; + animation-duration: 0.3s; +} +.nut-overlay-slide-exit-active { + animation-fill-mode: both; + animation-name: nut-fade-out; + animation-duration: 0.3s; +} + +[dir=rtl] .nut-overlay, +.nut-rtl .nut-overlay { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/pagination/pagination.harmony.css b/src/packages/pagination/pagination.harmony.css new file mode 100644 index 0000000000..c11bcf0c83 --- /dev/null +++ b/src/packages/pagination/pagination.harmony.css @@ -0,0 +1,139 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-pagination { + display: flex; + flex-direction: row; + font-size: 14px; + color: #ff0f23; +} + +.nut-pagination-prev { + height: 39px; + min-width: 39px; + flex-shrink: 0; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + color: #ff0f23; + background: #ffffff; + border-radius: 2px; + border: 1px solid rgba(0, 0, 0, 0.06); + cursor: pointer; +} + +.nut-pagination-item { + height: 39px; + min-width: 39px; + flex-shrink: 0; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + color: #ff0f23; + background: #ffffff; + border-radius: 2px; + border: 1px solid rgba(0, 0, 0, 0.06); + cursor: pointer; +} + +.nut-pagination-next { + height: 39px; + min-width: 39px; + flex-shrink: 0; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + color: #ff0f23; + background: #ffffff; + border-radius: 2px; + border: 1px solid rgba(0, 0, 0, 0.06); + cursor: pointer; +} + +.nut-pagination-prev, +.nut-pagination-item { + border-right-width: 0; +} + +.nut-pagination-prev { + padding: 0 12px; +} + +.nut-pagination-next { + padding: 0 12px; +} + +.nut-pagination-contain { + display: flex; + flex-direction: row; +} + +.nut-pagination-item-active { + color: #ffffff; + border-width: 0; + background-color: #ff0f23; +} + +.nut-pagination-item-disabled { + color: #c2c4cc; + background-color: #f7f8fa; + cursor: not-allowed; +} + +.nut-pagination-next-disabled { + color: #c2c4cc; + background-color: #f7f8fa; + cursor: not-allowed; +} + +.nut-pagination-prev-disabled { + color: #c2c4cc; + background-color: #f7f8fa; + cursor: not-allowed; +} + +.nut-pagination-simple { + height: 39px; + width: 124px; + line-height: 39px; + text-align: center; + font-size: 14px; + color: #ff0f23; +} + +.nut-pagination-simple-border { + border-right: 1px solid rgba(0, 0, 0, 0.06); +} + +.nut-pagination-lite { + height: 20px; + padding: 0 6px; + display: flex; + flex-direction: row; + align-items: center; + color: #ffffff; + background-color: rgba(0, 0, 0, 0.45); + border-radius: 4px; +} + +.nut-pagination-lite-active { + font-size: 11px; + color: #ffffff; +} + +.nut-pagination-lite-default { + font-size: 11px; + color: #ffffff; +} + +.nut-pagination-lite-spliterator { + font-size: 11px; + color: #ffffff; +} \ No newline at end of file diff --git a/src/packages/picker/picker.harmony.css b/src/packages/picker/picker.harmony.css new file mode 100644 index 0000000000..f4c62ea90b --- /dev/null +++ b/src/packages/picker/picker.harmony.css @@ -0,0 +1,168 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-picker { + background-color: #ffffff; + width: 100%; +} +.nut-picker-control { + display: flex; + height: 50px; + font-size: 16px; + align-items: center; + justify-content: space-between; + padding: 16px; +} +.nut-picker-cancel-btn { + color: #505259; + font-size: 14px; +} +.nut-picker-confirm-btn { + color: #ff0f23; + font-size: 14px; +} +.nut-picker-title { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: center; + color: #1a1a1a; + font-size: 16px; + font-weight: 600; +} +.nut-picker-panel { + display: flex; + position: relative; +} +.nut-picker-indicator { + position: absolute; + top: 108px; + height: 36px; + width: 100%; + border: 1px solid rgba(0, 0, 0, 0.06); + border-left: 0; + border-right: 0; + color: #1a1a1a; + font-size: 14px; + z-index: 3; +} +.nut-picker-indicator-taro { + height: 36px; + border: 0; +} +.nut-picker-indicator-taro::before { + border: 1px solid rgba(0, 0, 0, 0.06); + border-left: 0; + border-right: 0; +} +.nut-picker-indicator-taro::after { + border: 1px solid rgba(0, 0, 0, 0.06); + border-left: 0; + border-right: 0; +} +.nut-picker-list { + flex: 1; + position: relative; + height: calc(36px * 7); + overflow: hidden; + text-align: center; +} +.nut-picker-list-panel { + transform-style: preserve-3d; +} +.nut-picker-mask { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); + background-position: top, bottom; + background-size: 100% 108px; + background-repeat: no-repeat; + transform: translateZ(0); + z-index: 3; +} +.nut-picker-view-panel { + height: calc(36px * 7); + flex-grow: 1; +} +.nut-picker-content { + position: absolute; + top: 108px; + width: 100%; + height: 36px; +} +.nut-picker-roller { + position: absolute; + top: 108px; + width: 100%; + height: 36px; +} +.nut-picker-content { + background: #fff; + z-index: 2; + overflow: hidden; +} +.nut-picker-item { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + height: 36px; + line-height: 36px; + color: #1a1a1a; + font-size: 14px; + text-align: center; +} +.nut-picker-roller-item { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + height: 36px; + line-height: 36px; + color: #1a1a1a; + font-size: 14px; + text-align: center; +} +.nut-picker-item { + font-size: 16px; + background: #fff; +} +.nut-picker-roller { + z-index: 1; + transform-style: preserve-3d; +} +.nut-picker-roller-item { + backface-visibility: hidden; + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + position: absolute; + top: 0; + width: 100%; +} +.nut-picker-roller-item-title { + display: block; + width: 100%; + height: 36px; + line-height: 36px; + text-align: center; + color: #1a1a1a; + font-size: 14px; +} +.nut-picker-roller-item-hidden { + visibility: hidden; + opacity: 0; +} +.nut-picker-placeholder { + height: 1px; +} + +[dir=rtl] .nut-picker-mask { + background-image: linear-gradient(-180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); +} + +.nut-rtl .nut-picker-mask { + background-image: linear-gradient(-180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); +} \ No newline at end of file diff --git a/src/packages/pickerview/pickerview.harmony.css b/src/packages/pickerview/pickerview.harmony.css new file mode 100644 index 0000000000..3c16c85d8b --- /dev/null +++ b/src/packages/pickerview/pickerview.harmony.css @@ -0,0 +1,83 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-pickerview { + position: relative; + display: flex; + width: 100%; + height: calc(36px * 7); + overflow: hidden; +} +.nut-pickerview-mask, .nut-pickerview-indicator { + position: absolute; + left: 0; + right: 0; + z-index: 3; + pointer-events: none; +} +.nut-pickerview-mask { + top: 0; + bottom: 0; + background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); + background-position: top, bottom; + background-size: 100% calc((36px * 7 - 36px) / 2); + background-repeat: no-repeat; + transform: translateZ(0); +} +.nut-pickerview-indicator { + top: calc((36px * 7 - 36px) / 2); + height: 36px; + border: 1px solid rgba(0, 0, 0, 0.06); + border-left: 0; + border-right: 0; + box-sizing: border-box; +} +.nut-pickerview-list { + position: relative; + flex: 1; + height: calc(36px * 7); + overflow: hidden; + touch-action: none; +} +.nut-pickerview-roller { + position: absolute; + top: calc((36px * 7 - 36px) / 2); + width: 100%; + height: 36px; + z-index: 1; + transform-style: preserve-3d; +} +.nut-pickerview-roller-item { + position: absolute; + top: 0; + backface-visibility: hidden; + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; +} +.nut-pickerview-roller-item-hidden { + visibility: hidden; + opacity: 0; +} +.nut-pickerview-roller-item { + width: 100%; + height: 36px; + line-height: 36px; + color: #1a1a1a; + font-size: 14px; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.nut-pickerview-roller-item-tiled { + width: 100%; + height: 36px; + line-height: 36px; + color: #1a1a1a; + font-size: 14px; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} \ No newline at end of file diff --git a/src/packages/popover/popover.harmony.css b/src/packages/popover/popover.harmony.css new file mode 100644 index 0000000000..593fe6356f --- /dev/null +++ b/src/packages/popover/popover.harmony.css @@ -0,0 +1,294 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-popover { + position: absolute; + display: inline-block; + word-break: normal; +} +.nut-popover-arrow { + position: absolute; + width: 8px; + height: 4px; +} +.nut-popover-arrow .nut-icon-ArrowRadius { + position: absolute; + color: #ffffff; +} +.nut-popover-arrow-top { + bottom: -4px; +} +.nut-popover-arrow-bottom { + top: -4px; +} +.nut-popover-arrow-left { + right: -6px; + transform-origin: center top; +} +.nut-popover-arrow-left.nut-popover-arrow-left { + top: 50%; + transform: rotate(90deg) translateY(-50%); +} +.nut-popover-arrow-left.nut-popover-arrow-left-start { + top: 16px; + right: -8px; + transform: rotate(90deg) translateY(0%); +} +.nut-popover-arrow-left.nut-popover-arrow-left-end { + bottom: 16px; + right: -8px; + transform: rotate(90deg) translateY(0%); +} +.nut-popover-arrow-right { + transform-origin: center top; +} +.nut-popover-arrow-right.nut-popover-arrow-right { + top: 50%; + left: -6px; + transform: rotate(-90deg) translateY(-50%); +} +.nut-popover-arrow-right.nut-popover-arrow-right-start { + top: 16px; + left: -8px; + transform: rotate(-90deg) translateY(0%); +} +.nut-popover-arrow-right.nut-popover-arrow-right-end { + bottom: 16px; + left: -8px; + transform: rotate(-90deg) translateY(0%); +} +.nut-popover .nut-popover-content { + position: absolute; + background: #ffffff; + border-radius: 4px; + font-size: 12px; + color: rgba(0, 0, 0, 0.7); + line-height: 28px; + max-height: initial; + overflow-y: initial; +} +.nut-popover .nut-popover-content .nut-popover-menu-item { + display: flex; + align-items: center; + justify-content: center; + padding: 0 8px; + border-bottom: 1px solid rgba(0, 0, 0, 0.06); + max-width: 160px; + word-wrap: break-word; +} +.nut-popover .nut-popover-content .nut-popover-menu-item:last-child { + margin-bottom: 0px; + border-bottom: none; +} +.nut-popover .nut-popover-content .nut-popover-menu-item-icon { + display: flex; + justify-content: center; + align-items: center; + width: 12px; + height: 12px; + font-size: 12px; +} +.nut-popover .nut-popover-content .nut-popover-menu-item-icon .nut-icon { + width: 12px; + height: 12px; + font-size: 12px; +} +.nut-popover .nut-popover-content .nut-popover-menu-item-name { + width: calc(100% - 34px); + word-break: keep-all; + margin: 0 8px 0 4px; + flex: 1; +} +.nut-popover .nut-popover-content .nut-popover-menu-item-action-icon { + display: flex; + justify-content: center; + align-items: center; + width: 12px; + height: 12px; + font-size: 12px; + color: #505259; +} +.nut-popover .nut-popover-content .nut-popover-menu-item-action-icon .nut-icon { + width: 12px; + height: 12px; + font-size: 12px; +} +.nut-popover .nut-popover-content .nut-popover-menu-item.nut-popover-menu-disabled { + color: #c2c4cc; + cursor: not-allowed; +} +.nut-popover .nut-popover-content .nut-popover-menu-item.nut-popover-menu-taroitem { + display: flex; +} +.nut-popover .nut-popover-content-top .nut-popover-arrow-top { + left: 50%; + transform-origin: center left; + transform: rotate(180deg) translateX(-50%); +} +.nut-popover .nut-popover-content-top-end { + right: 0; +} +.nut-popover .nut-popover-content-top-end .nut-popover-arrow-top-end { + right: 16px; + bottom: -3.5px; + transform: rotate(180deg) translateX(0%); +} +.nut-popover .nut-popover-content-top-start { + left: 0; +} +.nut-popover .nut-popover-content-top-start .nut-popover-arrow-top-start { + left: 16px; + bottom: -3.5px; + transform: rotate(180deg) translateX(0%); +} +.nut-popover .nut-popover-content-bottom .nut-popover-arrow-bottom { + left: 50%; + transform: translateX(-50%); +} +.nut-popover .nut-popover-content-bottom-end { + right: 0; +} +.nut-popover .nut-popover-content-bottom-end .nut-popover-arrow-bottom-end { + right: 16px; + transform: translateX(0%); +} +.nut-popover .nut-popover-content-bottom-start { + left: 0; +} +.nut-popover .nut-popover-content-bottom-start .nut-popover-arrow-bottom-start { + left: 16px; + transform: translateX(0%); +} +.nut-popover .nut-popover-content-left-end { + bottom: 0; +} +.nut-popover .nut-popover-content-left-start { + top: 0; +} +.nut-popover .nut-popover-content-right-end { + bottom: 0; +} +.nut-popover .nut-popover-content-right-start { + top: 0; +} + +.nut-popover-dark { + background: rgba(0, 0, 0, 0.7); + color: #ffffff; +} +.nut-popover-dark .nut-popover-arrow .nut-icon-ArrowRadius { + color: rgba(0, 0, 0, 0.7); +} +.nut-popover-dark .nut-popover-content { + background: rgba(0, 0, 0, 0.7) !important; + color: #ffffff !important; +} +.nut-popover-dark .nut-popover-content .nut-popover-menu-item-action-icon { + color: rgba(255, 255, 255, 0.8); +} + +[dir=rtl] .nut-popover .nut-popover-content .nut-popover-menu-item-name, +.nut-rtl .nut-popover .nut-popover-content .nut-popover-menu-item-name { + margin-left: 0; + margin-right: 4px; +} +[dir=rtl] .nut-popover .nut-popover-content .nut-popover-menu-item-action-icon { + right: auto; + left: 8px; +} +.nut-rtl .nut-popover .nut-popover-content .nut-popover-menu-item-action-icon { + right: auto; + left: 8px; +} +[dir=rtl] .nut-popover .nut-popover-content-top .nut-popover-arrow-top, +.nut-rtl .nut-popover .nut-popover-content-top .nut-popover-arrow-top { + left: auto; + right: 50%; + transform: translateX(50%); +} +[dir=rtl] .nut-popover .nut-popover-content-top-end, +.nut-rtl .nut-popover .nut-popover-content-top-end { + right: auto; + left: 0; +} +[dir=rtl] .nut-popover .nut-popover-content-top-end .nut-popover-arrow-top-end, +.nut-rtl .nut-popover .nut-popover-content-top-end .nut-popover-arrow-top-end { + right: auto; + left: 16px; +} +[dir=rtl] .nut-popover .nut-popover-content-top-start, +.nut-rtl .nut-popover .nut-popover-content-top-start { + left: auto; + right: 0; +} +[dir=rtl] .nut-popover .nut-popover-content-top-start .nut-popover-arrow-top-start, +.nut-rtl .nut-popover .nut-popover-content-top-start .nut-popover-arrow-top-start { + left: auto; + right: 16px; +} +[dir=rtl] .nut-popover .nut-popover-content-bottom .nut-popover-arrow-bottom, +.nut-rtl .nut-popover .nut-popover-content-bottom .nut-popover-arrow-bottom { + left: auto; + right: 50%; + transform: translateX(50%); +} +[dir=rtl] .nut-popover .nut-popover-content-bottom-end, +.nut-rtl .nut-popover .nut-popover-content-bottom-end { + right: auto; + left: 0; +} +[dir=rtl] .nut-popover .nut-popover-content-bottom-end .nut-popover-arrow-bottom-end, +.nut-rtl .nut-popover .nut-popover-content-bottom-end .nut-popover-arrow-bottom-end { + right: auto; + left: 16px; +} +[dir=rtl] .nut-popover .nut-popover-content-bottom-start, +.nut-rtl .nut-popover .nut-popover-content-bottom-start { + left: auto; + right: 0; +} +[dir=rtl] .nut-popover .nut-popover-content-bottom-start .nut-popover-arrow-bottom-start, +.nut-rtl .nut-popover .nut-popover-content-bottom-start .nut-popover-arrow-bottom-start { + left: auto; + right: 16px; +} + +.nut-popover-enter-from, +.nut-popover-leave-active { + transform: scale(0.8); + opacity: 0; +} + +.nut-popover-enter-active { + transition-timing-function: ease-out; +} + +.nut-popover-leave-active { + transition-timing-function: ease-in; +} + +.nut-popover-content-bg { + position: fixed; + height: 100%; + width: 100%; + top: 0; + left: 0; + background: transparent; + z-index: 999; +} + +[dir=rtl] .nut-popover-content-bg, +.nut-rtl .nut-popover-content-bg { + left: auto; + right: 0; +} + +.nut-popover-wrapper { + display: inline-block; +} + +.nut-popover-content-copy { + position: absolute; + top: -99999px; +} \ No newline at end of file diff --git a/src/packages/popup/popup.harmony.css b/src/packages/popup/popup.harmony.css new file mode 100644 index 0000000000..cfe41e7fd6 --- /dev/null +++ b/src/packages/popup/popup.harmony.css @@ -0,0 +1,363 @@ +@charset "UTF-8"; + +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-popup { + position: fixed; + min-height: 46%; + max-height: 100%; + background-color: #ffffff; + -webkit-overflow-scrolling: touch; + font-size: 14px; +} +.nut-popup-title { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + border-bottom: 0; + padding: 16px; + position: relative; +} +.nut-popup-title-wrapper { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.nut-popup-title-title { + color: #1a1a1a; + font-weight: 600; + font-size: 16px; + line-height: 16px; +} +.nut-popup-title-description { + color: #505259; + font-size: 14px; + font-weight: 400; +} +.nut-popup-title-description-gap { + margin-top: 8px; +} +.nut-popup-title-left { + position: absolute; + top: 16px; + left: 16px; +} +.nut-popup-title-right { + position: absolute; + top: 16px; + right: 16px; + z-index: 1; + width: 20px; + height: 20px; + color: #1a1a1a; + cursor: pointer; +} +.nut-popup-title-right:active { + opacity: 0.7; +} +.nut-popup-title-right-top-left { + top: 16px; + left: 16px; +} +.nut-popup-title-right-bottom-left { + bottom: 16px; + left: 16px; +} +.nut-popup-title-right-bottom-right { + right: 16px; + bottom: 16px; +} +.nut-popup-center { + top: 50%; + left: 50%; + min-height: 10%; + max-width: 295px; + transform: translate(-50%, -50%); +} +.nut-popup-center.nut-popup-round { + border-radius: 12px; +} +.nut-popup-bottom, .nut-popup-top { + max-height: 87%; +} +.nut-popup-bottom { + bottom: 0; + left: 0; + width: 100%; +} +.nut-popup-bottom.nut-popup-round { + border-radius: 12px 12px 0 0; +} +.nut-popup-right { + top: 0; + right: 0; + width: 100px; + height: 100%; +} +.nut-popup-right.nut-popup-round { + border-radius: 12px 0 0 12px; +} +.nut-popup-left { + top: 0; + left: 0; + width: 100px; + height: 100%; +} +.nut-popup-left.nut-popup-round { + border-radius: 0 12px 12px 0; +} +.nut-popup-top { + top: 0; + left: 0; + width: 100%; +} +.nut-popup-top.nut-popup-round { + border-radius: 0 0 12px 12px; +} +.nut-popup-slide { + /* 从顶部滑出 */ + /* 从右侧滑出 */ + /* 从底部滑出 */ + /* 从左侧滑出 */ +} +@keyframes popup-scale-fade-in { + from { + opacity: 0; + transform: scale(0.8); + } + to { + opacity: 1; + transform: scale(1); + } +} +@keyframes popup-scale-fade-out { + from { + opacity: 1; + transform: scale(1); + } + to { + opacity: 0; + transform: scale(0.8); + } +} +.nut-popup-slide-default-enter-active { + animation-fill-mode: both; + animation-name: popup-scale-fade-in; + animation-duration: 0.3s; +} +.nut-popup-slide-default-exit-active { + animation-fill-mode: both; + animation-name: popup-scale-fade-out; + animation-duration: 0.3s; +} +@keyframes popup-fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes popup-fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +.nut-popup-slide-center-enter-active { + animation-fill-mode: both; + animation-name: popup-fade-in; + animation-duration: 0.3s; +} +.nut-popup-slide-center-exit-active { + animation-fill-mode: both; + animation-name: popup-fade-out; + animation-duration: 0.3s; +} +@keyframes popup-slide-top-enter { + from { + transform: translate3d(0, -100%, 0); + } +} +@keyframes popup-slide-top-exit { + to { + transform: translate3d(0, -100%, 0); + } +} +.nut-popup-slide-top-enter-active { + transform: translate3d(0, 0%, 0); + animation-fill-mode: both; + animation-name: popup-slide-top-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-top-appear-active { + transform: translate3d(0, 0%, 0); + animation-fill-mode: both; + animation-name: popup-slide-top-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-top-exit-active { + animation-fill-mode: both; + animation-name: popup-slide-top-exit; + animation-duration: 0.3s; +} +@keyframes popup-slide-right-enter { + from { + transform: translate3d(100%, 0, 0); + } +} +@keyframes popup-slide-right-exit { + to { + transform: translate3d(100%, 0, 0); + } +} +.nut-popup-slide-right-enter-active { + transform: translate3d(0, 0, 0); + animation-fill-mode: both; + animation-name: popup-slide-right-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-right-appear-active { + transform: translate3d(0, 0, 0); + animation-fill-mode: both; + animation-name: popup-slide-right-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-right-exit { + animation-fill-mode: both; + animation-name: popup-slide-right-exit; + animation-duration: 0.3s; +} +@keyframes popup-slide-bottom-enter { + from { + transform: translate3d(0, 100%, 0); + } +} +@keyframes slide-bottom-exit { + to { + transform: translate3d(0, 100%, 0); + } +} +.nut-popup-slide-bottom-enter-active { + transform: translate(0, 0); + animation-fill-mode: both; + animation-name: popup-slide-bottom-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-bottom-appear-active { + transform: translate(0, 0); + animation-fill-mode: both; + animation-name: popup-slide-bottom-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-bottom-exit { + animation-fill-mode: both; + animation-name: slide-bottom-exit; + animation-duration: 0.3s; +} +@keyframes popup-slide-left-enter { + from { + transform: translate3d(-100%, 0, 0); + } +} +@keyframes popup-slide-left-exit { + to { + transform: translate3d(-100%, 0, 0); + } +} +.nut-popup-slide-left-enter-active { + transform: translate(0, 0); + animation-fill-mode: both; + animation-name: popup-slide-left-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-left-appear-active { + transform: translate(0, 0); + animation-fill-mode: both; + animation-name: popup-slide-left-enter; + animation-duration: 0.3s; +} +.nut-popup-slide-left-exit-active { + animation-fill-mode: both; + animation-name: popup-slide-left-exit; + animation-duration: 0.3s; +} +.nut-popup-slide-left-exit-done { + animation-fill-mode: both; + animation-name: popup-slide-left-exit; + animation-duration: 0.3s; +} +.nut-popup-slide-default-exit-done.nut-popup, .nut-popup-slide-center-exit-done.nut-popup, .nut-popup-slide-left-exit-done.nut-popup, .nut-popup-slide-right-exit-done.nut-popup, .nut-popup-slide-top-exit-done.nut-popup, .nut-popup-slide-bottom-exit-done.nut-popup { + display: none; +} +.nut-popup .nut-overflow-hidden { + overflow: hidden; +} + +[dir=rtl] .nut-popup-title-left { + left: auto; + right: 16px; +} + +.nut-rtl .nut-popup-title-left { + left: auto; + right: 16px; +} +[dir=rtl] .nut-popup-title-right { + right: auto; + left: 16px; +} +.nut-rtl .nut-popup-title-right { + right: auto; + left: 16px; +} +[dir=rtl] .nut-popup-title-right-top-left { + left: auto; + right: 16px; +} +.nut-rtl .nut-popup-title-right-top-left { + left: auto; + right: 16px; +} +[dir=rtl] .nut-popup-title-right-bottom-left { + left: auto; + right: 16px; +} +.nut-rtl .nut-popup-title-right-bottom-left { + left: auto; + right: 16px; +} +[dir=rtl] .nut-popup-title-right-bottom-right { + right: auto; + left: 16px; +} +.nut-rtl .nut-popup-title-right-bottom-right { + right: auto; + left: 16px; +} +[dir=rtl] .nut-popup-title .nut-icon-ArrowLeft, +.nut-rtl .nut-popup-title .nut-icon-ArrowLeft { + transform: rotate(180deg); +} +[dir=rtl] .nut-popup-center, +.nut-rtl .nut-popup-center { + left: auto; + right: 50%; + transform: translate(50%, -50%); +} +[dir=rtl] .nut-popup-bottom, +.nut-rtl .nut-popup-bottom { + left: auto; + right: 0; +} +[dir=rtl] .nut-popup-top, +.nut-rtl .nut-popup-top { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/price/price.harmony.css b/src/packages/price/price.harmony.css new file mode 100644 index 0000000000..62010fc182 --- /dev/null +++ b/src/packages/price/price.harmony.css @@ -0,0 +1,96 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-price { + direction: ltr; + font-size: 16px; + display: flex; + flex-direction: row; + align-items: baseline; +} +.nut-price-symbol { + color: #888b94; + font-family: "JD"; + line-height: 1; +} +.nut-price-integer { + color: #888b94; + font-family: "JD"; + line-height: 1; +} +.nut-price-decimal { + color: #888b94; + font-family: "JD"; + line-height: 1; +} +.nut-price-darkgray .nut-price-symbol { + font-family: "JD-Bold"; + color: #1a1a1a; +} +.nut-price-darkgray .nut-price-integer { + font-family: "JD-Bold"; + color: #1a1a1a; +} +.nut-price-darkgray .nut-price-decimal { + font-family: "JD-Bold"; + color: #1a1a1a; +} +.nut-price-primary .nut-price-symbol { + font-family: "JD-Bold"; + color: #ff0f23; +} +.nut-price-primary .nut-price-integer { + font-family: "JD-Bold"; + color: #ff0f23; +} +.nut-price-primary .nut-price-decimal { + font-family: "JD-Bold"; + color: #ff0f23; +} +.nut-price-symbol { + padding-right: 0px; +} +.nut-price-symbol-xlarge { + font-size: 12px; +} +.nut-price-symbol-large { + font-size: 12px; +} +.nut-price-symbol-normal { + font-size: 12px; +} +.nut-price-symbol-small { + font-size: 12px; +} +.nut-price-symbol-rtl { + padding-right: 0; + padding-left: 0px; +} +.nut-price-integer-xlarge { + font-size: 24px; +} +.nut-price-integer-large { + font-size: 18px; +} +.nut-price-integer-normal { + font-size: 16px; +} +.nut-price-integer-small { + font-size: 12px; +} +.nut-price-decimal-xlarge { + font-size: 12px; +} +.nut-price-decimal-large { + font-size: 12px; +} +.nut-price-decimal-normal { + font-size: 12px; +} +.nut-price-decimal-small { + font-size: 12px; +} +.nut-price-line { + text-decoration: line-through #888b94; +} \ No newline at end of file diff --git a/src/packages/progress/progress.harmony.css b/src/packages/progress/progress.harmony.css new file mode 100644 index 0000000000..6e6c6789c3 --- /dev/null +++ b/src/packages/progress/progress.harmony.css @@ -0,0 +1,77 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-progress { + display: flex; + align-items: center; + position: relative; + width: 100%; +} +.nut-progress-outer { + flex: auto; + border-radius: 12px; + height: 10px; + background: #f2f3f5; +} +.nut-progress-outer .nut-progress-active:before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: 12px; + animation: progressActive 2s ease-in-out infinite; +} +.nut-progress-inner { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + transition: all 0.4s; + border-radius: 12px; + background: linear-gradient(135deg, #ff475d 0%, #ff0f23 100%); +} +.nut-progress-text { + display: flex; + align-items: center; + position: absolute; + top: -4px; + bottom: -4px; + transition: all 0.4s; + transform: translate(-50%); +} +.nut-progress-text-inner { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + height: 100%; + width: 100%; + color: #ffffff; + padding: 0 5px; + border-radius: 5px; + font-size: 9px; + line-height: 1; + background: linear-gradient(135deg, #ff475d 0%, #ff0f23 100%); +} +@keyframes progressActive { + 0% { + background: rgba(255, 255, 255, 0.1); + width: 0; + } + 20% { + background: rgba(255, 255, 255, 0.5); + width: 0; + } + to { + background: rgba(255, 255, 255, 0); + width: 100%; + } +} + +[dir=rtl] .nut-progress-text, +.nut-rtl .nut-progress-text { + transform: translate(50%); +} \ No newline at end of file diff --git a/src/packages/pulltorefresh/pulltorefresh.harmony.css b/src/packages/pulltorefresh/pulltorefresh.harmony.css new file mode 100644 index 0000000000..e8f50273c9 --- /dev/null +++ b/src/packages/pulltorefresh/pulltorefresh.harmony.css @@ -0,0 +1,43 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-pulltorefresh-head { + overflow: hidden; + position: relative; + font-size: 12px; +} +.nut-pulltorefresh-head-content { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + color: #888b94; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.nut-pulltorefresh-head-content-icons { + width: 36px; + height: 26px; + margin-bottom: 4px; +} +.nut-pulltorefresh-primary { + background: #ff0f23; +} +.nut-pulltorefresh-primary-content { + color: rgba(255, 255, 255, 0.9); +} +.nut-pulltorefresh-primary-head-content { + color: rgba(255, 255, 255, 0.9); +} +.nut-pulltorefresh-primary-status-text { + color: #ffffff; +} + +[dir=rtl] .nut-pulltorefresh-head-content, +.nut-rtl .nut-pulltorefresh-head-content { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/radio/radio.harmony.css b/src/packages/radio/radio.harmony.css new file mode 100644 index 0000000000..51b62fec67 --- /dev/null +++ b/src/packages/radio/radio.harmony.css @@ -0,0 +1,93 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-radio { + display: flex; + align-items: center; + flex-shrink: 0; +} +.nut-radio:last-child { + margin-bottom: 0 !important; + margin-right: 0 !important; +} +.nut-radio.nut-radio-reverse { + flex-direction: row-reverse; +} +.nut-radio.nut-radio-reverse .nut-radio-label { + margin-right: 4px; + margin-left: 0; +} +.nut-radio-label { + margin-left: 4px; + font-size: 12px; + color: #1a1a1a; +} +.nut-radio-label-disabled { + color: #c2c4cc; +} +.nut-radio-icon { + color: #c2c4cc; + transition-duration: 0.3s; + transition-property: color, border-color, background-color; + font-size: 16px; +} +.nut-radio-icon-checked { + color: #ff0f23; + box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); + border-radius: 50%; +} +.nut-radio-icon-checked.nut-radio-icon-disabled { + color: #ffadbe; + box-shadow: none; +} +.nut-radio-icon-disabled { + color: #c2c4cc; +} +.nut-radio-button { + display: inline-flex; + align-items: center; + padding: 5px 18px; + font-size: 12px; + background: rgba(250, 44, 25, 0.05); + border-radius: 15px; + color: #1a1a1a; + box-sizing: border-box; + border: 1px solid rgba(250, 44, 25, 0.05); +} +.nut-radio-button-active { + background: #ffebf1; + color: #ff0f23; + border: 1px solid #ff0f23; +} +.nut-radio-button-disabled { + color: #c2c4cc; + border: 1px solid rgba(250, 44, 25, 0.05); +} +.nut-radio .nut-radio-button-active.nut-radio-button-disabled { + background: #c2c4cc; + color: #ffffff; + border: 1px solid #c2c4cc; +} + +[dir=rtl] .nut-radio:last-child, +.nut-rtl .nut-radio:last-child { + margin-right: 0 !important; + margin-left: 0 !important; +} +[dir=rtl] .nut-radio.nut-radio-reverse .nut-radio-label { + margin-left: 4px; + margin-right: 0; +} +.nut-rtl .nut-radio.nut-radio-reverse .nut-radio-label { + margin-left: 4px; + margin-right: 0; +} +[dir=rtl] .nut-radio-label { + margin-left: 0; + margin-right: 4px; +} +.nut-rtl .nut-radio-label { + margin-left: 0; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/packages/radiogroup/radiogroup.harmony.css b/src/packages/radiogroup/radiogroup.harmony.css new file mode 100644 index 0000000000..5369d36b81 --- /dev/null +++ b/src/packages/radiogroup/radiogroup.harmony.css @@ -0,0 +1,49 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-radiogroup .nut-radio { + margin: 0 20px 5px 0; +} +.nut-radiogroup .nut-radio-label { + margin: 0 5px; +} +.nut-radiogroup .nut-radio-button { + background-color: rgba(250, 44, 25, 0.05); +} +.nut-radiogroup-vertical .nut-radio.nut-radio-reverse { + width: 100%; + justify-content: space-between; +} +.nut-radiogroup-vertical .nut-radio-button { + border: 1px solid rgba(250, 44, 25, 0.05); +} +.nut-radiogroup-vertical .nut-radio-button-active { + border: 1px solid #ff0f23; + background-color: #ffebf1; +} +.nut-radiogroup-horizontal .nut-radio { + display: inline-flex; +} +.nut-radiogroup-horizontal .nut-radio-button { + border: 1px solid #ffffff; +} +.nut-radiogroup-horizontal .nut-radio-button-active { + border: 1px solid #ff0f23; + background-color: #ffebf1; +} +.nut-radiogroup .nut-radio-button-active.nut-radio-button-disabled { + background: #c2c4cc; + color: #ffffff; + border: 1px solid #c2c4cc; +} + +[dir=rtl] .nut-radiogroup .nut-radio { + margin-left: 20px; + margin-right: 0; +} + +.nut-rtl .nut-radiogroup .nut-radio { + margin-left: 20px; + margin-right: 0; +} \ No newline at end of file diff --git a/src/packages/range/range.harmony.css b/src/packages/range/range.harmony.css new file mode 100644 index 0000000000..1ca2f1649b --- /dev/null +++ b/src/packages/range/range.harmony.css @@ -0,0 +1,271 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-range-container { + display: flex; + flex-direction: row; + position: relative; + width: 100%; + height: 4px; + align-items: center; + justify-content: space-between; +} +.nut-range-container-native { + height: auto; +} + +.nut-range { + display: block; + position: relative; + height: 4px; + margin: 0 15px; + background-color: #ffebf1; + border-radius: 2px; + flex: 1; + cursor: pointer; +} +.nut-range::before { + position: absolute; + inset-block: -8px; + inset-inline: 0; + content: ""; +} +.nut-range-min { + font-size: 12px; + color: #1a1a1a; + user-select: none; +} +.nut-range-max { + font-size: 12px; + color: #1a1a1a; + user-select: none; +} +.nut-range-bar { + display: block; + position: relative; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + background: #ff0f23; + border-radius: 2px; + transition: all 0.2s; +} +.nut-range-button { + position: absolute; + display: flex; + width: 24px; + height: 24px; + background: #ffffff; + border-radius: 50%; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.15); + border: 1px solid #ff0f23; + outline: none; + align-items: center; + top: 50%; + left: 50%; +} +.nut-range-button-wrapper { + width: 24px; + height: 24px; +} +.nut-range-button-wrapper-right { + width: 24px; + height: 24px; +} +.nut-range-button-wrapper-left { + width: 24px; + height: 24px; +} +.nut-range-button-wrapper, .nut-range-button-wrapper-right { + touch-action: none; + position: absolute; + top: 50%; + left: 100%; + cursor: grab; + outline: none; +} +.nut-range-button-wrapper-left { + position: absolute; + top: 50%; + left: 0; + cursor: grab; + outline: none; + touch-action: none; +} +.nut-range-button-number { + position: relative; + width: 200%; + height: 24px; + line-height: 14px; + padding: 5px 0; + left: 50%; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + font-size: 12px; + color: #1a1a1a; + text-align: center; + vertical-align: center; + box-sizing: border-box; +} +.nut-range-disabled { + cursor: not-allowed; + opacity: 0.54; +} +.nut-range-disabled .nut-range-button-wrapper, +.nut-range-disabled .nut-range-button-wrapper-left, +.nut-range-disabled .nut-range-button-wrapper-right { + cursor: not-allowed; +} +.nut-range-mark { + position: absolute; + width: 100%; + height: 14px; + overflow: visible; + top: 50%; +} +.nut-range-mark-text-wrapper { + position: absolute; + height: 100%; + top: 14px; + display: inline-block; + transform: translateX(-10px); +} +.nut-range-mark-text { + position: absolute; + line-height: 16px; + font-size: 12px; + color: #999; + text-align: center; + word-break: keep-all; + user-select: none; +} +.nut-range-tick { + position: absolute; + top: -20px; + width: 11px; + height: 11px; + left: 0px; + border-radius: 6px; + background: #ffebf1; +} +.nut-range-tick-active { + background: #ff0f23; +} + +.nut-range-vertical-container { + height: 100%; + flex-direction: column; + padding: 0px 15px; +} + +.nut-range-vertical { + width: 4px; + margin: 15px 0px; +} +.nut-range-vertical-button-wrapper, .nut-range-vertical-button-wrapper-right { + position: absolute; + top: initial; + top: 100%; + left: 50%; + right: initial; +} +.nut-range-vertical-button-wrapper-left { + top: 0px; + left: 50%; + right: initial; +} +.nut-range-vertical-button-number { + left: 0px; + top: 50%; +} +.nut-range-vertical-mark { + position: absolute; + width: 36px; + height: 100%; + top: initial; + right: 50%; + overflow: visible; + font-size: 12px; + padding: 0px; +} +.nut-range-vertical-mark-hm { + left: -34px; +} +.nut-range-vertical-mark-text-wrapper { + height: 16px; + position: absolute; + display: inline-block; + user-select: none; + transform: translateY(-11px); +} +.nut-range-vertical-mark-text { + height: 100%; + line-height: 16px; + color: #999; + text-align: center; + word-break: keep-all; +} +.nut-range-vertical-tick { + position: absolute; + top: 2px; + left: 31px; + width: 10px; + height: 10px; + border-radius: 5px; + background: #ffebf1; +} +.nut-range-vertical-tick-active { + background: #ff0f23; +} + +[dir=rtl] .nut-range-button-wrapper, [dir=rtl] .nut-range-button-wrapper-right, +.rtl-nut-range-button-wrapper, +.rtl-nut-range-button-wrapper-right { + left: 0; + right: initial; +} +[dir=rtl] .nut-range-button-wrapper-left, +.rtl-nut-range-button-wrapper-left { + right: 0; + left: initial; +} +[dir=rtl] .nut-range-tick, +.rtl-nut-range-tick { + right: 0px; + left: initial; +} +[dir=rtl] .nut-range-mark-text, +.rtl-nut-range-mark-text { + transform: translateX(10px); +} +[dir=rtl] .nut-range-vertical-button-wrapper, [dir=rtl] .nut-range-vertical-button-wrapper-right, +.rtl-nut-range-vertical-button-wrapper, +.rtl-nut-range-vertical-button-wrapper-right { + right: 50%; + left: initial; +} +[dir=rtl] .nut-range-vertical-button-wrapper-left, +.rtl-nut-range-vertical-button-wrapper-left { + right: 50%; + left: initial; +} +[dir=rtl] .nut-range-vertical-mark, +.rtl-nut-range-vertical-mark { + right: auto; + left: 50%; +} +[dir=rtl] .nut-range-vertical-tick, +.rtl-nut-range-vertical-tick { + left: auto; + right: 30px; + margin-left: 0; + margin-right: 0px; +} +[dir=rtl] .nut-range-vertical-mark-text-wrapper, +.rtl-nut-range-vertical-mark-text-wrapper { + transform: translateY(-11px); +} \ No newline at end of file diff --git a/src/packages/rate/rate.harmony.css b/src/packages/rate/rate.harmony.css new file mode 100644 index 0000000000..ab1d8affa0 --- /dev/null +++ b/src/packages/rate/rate.harmony.css @@ -0,0 +1,168 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-rate { + display: flex; + touch-action: pan-x; +} +.nut-rate.disabled .nut-rate-item-icon { + cursor: not-allowed; +} +.nut-rate.readonly .nut-rate-item-icon { + cursor: default; +} +.nut-rate-item { + display: flex; + align-items: center; + flex-shrink: 0; + position: relative; +} +.nut-rate-item-half { + position: absolute; + height: 100%; + width: 50% !important; + left: 0; + top: 0; + overflow: hidden; +} +.nut-rate-item-half .nut-icon { + flex-shrink: 0; +} +.nut-rate-item-normal { + margin-left: 4px; +} +.nut-rate-item-normal .nut-icon { + height: 12px; + width: 12px; +} +.nut-rate-item-large { + margin-left: calc(4px * 2); +} +.nut-rate-item-large .nut-icon { + height: calc(12px + 8px); + width: calc(12px + 8px); +} +.nut-rate-item-small { + margin-left: calc(4px / 2); +} +.nut-rate-item-small .nut-icon { + height: calc(12px - 4px); + width: calc(12px - 4px); +} +.nut-rate-item-normal:first-child, .nut-rate-item-large:first-child, .nut-rate-item-small:first-child { + margin-left: 0; +} +.nut-rate-item-icon { + display: flex; + align-items: center; + cursor: pointer; +} +.nut-rate-item-icon .nut-icon { + color: #ff3333; +} +.nut-rate-item-icon-disabled .nut-icon { + color: #dadce0; +} +.nut-rate-item-icon.nut-rate-item-icon.nut-rate-item-icon-half { + position: absolute; + left: 0; + top: 0; + overflow: hidden; +} +.nut-rate-item-icon.nut-rate-item-icon::before { + position: relative; + top: auto; + left: auto; + transform: none; +} +.nut-rate-score { + display: inline-flex; + align-items: center; + color: #ff3333; + font-family: "JD"; + line-height: 1; +} +.nut-rate-score-normal { + padding-left: 4px; + font-size: 12px; +} +.nut-rate-score-large { + font-size: calc(12px + 6px); + padding-left: calc(4px * 2); +} +.nut-rate-score-small { + font-size: calc(12px - 2px); + padding-left: calc(4px / 2); +} +.nut-rate-score-disabled { + color: #dadce0; +} + +[dir=rtl] .nut-rate-item, +.nut-rtl .nut-rate-item { + margin-left: 0; +} +[dir=rtl] .nut-rate-item:first-child, +.nut-rtl .nut-rate-item:first-child { + margin-right: 0; +} +[dir=rtl] .nut-rate-item-normal { + margin-right: 4px; +} +.nut-rtl .nut-rate-item-normal { + margin-right: 4px; +} +[dir=rtl] .nut-rate-item-large { + margin-right: calc(4px * 2); +} +.nut-rtl .nut-rate-item-large { + margin-right: calc(4px * 2); +} +[dir=rtl] .nut-rate-item-small { + margin-right: calc(4px - 2px); +} +.nut-rtl .nut-rate-item-small { + margin-right: calc(4px - 2px); +} +[dir=rtl] .nut-rate-item:last-child, +.nut-rtl .nut-rate-item:last-child { + margin-left: 0; +} +[dir=rtl] .nut-rate-item-half, +.nut-rtl .nut-rate-item-half { + left: auto; + right: 0; +} +[dir=rtl] .nut-rate-item-icon.nut-rate-item-icon.nut-rate-item-icon-half, +.nut-rtl .nut-rate-item-icon.nut-rate-item-icon.nut-rate-item-icon-half { + left: auto; + right: 0; +} +[dir=rtl] .nut-rate-item-icon.nut-rate-item-icon::before, +.nut-rtl .nut-rate-item-icon.nut-rate-item-icon::before { + left: auto; + right: auto; +} +[dir=rtl] .nut-rate-score, +.nut-rtl .nut-rate-score { + padding-left: 0; +} +[dir=rtl] .nut-rate-score-large { + padding-right: calc(4px * 2); +} +.nut-rtl .nut-rate-score-large { + padding-right: calc(4px * 2); +} +[dir=rtl] .nut-rate-score-normal { + padding-right: 4px; +} +.nut-rtl .nut-rate-score-normal { + padding-right: 4px; +} +[dir=rtl] .nut-rate-score-small { + padding-right: calc(4px - 2px); +} +.nut-rtl .nut-rate-score-small { + padding-right: calc(4px - 2px); +} \ No newline at end of file diff --git a/src/packages/resultpage/resultpage.harmony.css b/src/packages/resultpage/resultpage.harmony.css new file mode 100644 index 0000000000..9153d18817 --- /dev/null +++ b/src/packages/resultpage/resultpage.harmony.css @@ -0,0 +1,50 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-resultpage { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + margin: 0 auto; +} +.nut-resultpage-icon { + display: inline-flex; + margin-bottom: 12px; +} +.nut-resultpage-icon .nut-icon { + height: 36px; + width: 36px; +} +.nut-resultpage-title { + width: 240px; + margin-bottom: 12px; + font-size: 18px; + color: #1a1a1a; + font-weight: 600; + text-align: center; +} +.nut-resultpage-description { + width: 240px; + line-height: 20px; + font-size: 14px; + color: #505259; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + word-break: break-all; +} +.nut-resultpage-actions { + display: flex; + flex-direction: row; + margin-top: 16px; +} +.nut-resultpage-actions .nut-button-children { + white-space: nowrap; +} +.nut-resultpage-action { + margin-left: 6px; + margin-right: 6px; +} \ No newline at end of file diff --git a/src/packages/row/row.harmony.css b/src/packages/row/row.harmony.css new file mode 100644 index 0000000000..a4fa4940c1 --- /dev/null +++ b/src/packages/row/row.harmony.css @@ -0,0 +1,54 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-row { + display: flex; + flex-direction: row; + width: 100%; + overflow: hidden; +} +.nut-row:after { + display: block; + height: 0; + clear: both; + visibility: hidden; + content: ""; +} +.nut-row-flex { + display: flex; +} +.nut-row-flex:after { + display: none; +} +.nut-row-justify-center { + justify-content: center; +} +.nut-row-justify-end { + justify-content: flex-end; +} +.nut-row-justify-space-between { + justify-content: space-between; + align-items: center; +} +.nut-row-justify-space-around { + justify-content: space-around; +} +.nut-row-align-flex-start { + align-items: flex-start; +} +.nut-row-align-center { + align-items: center; +} +.nut-row-align-flex-end { + align-items: flex-end; +} +.nut-row-flex-wrap { + flex-wrap: wrap; +} +.nut-row-flex-nowrap { + flex-wrap: nowrap; +} +.nut-row-flex-reverse { + flex-wrap: wrap-reverse; +} \ No newline at end of file diff --git a/src/packages/safearea/safearea.harmony.css b/src/packages/safearea/safearea.harmony.css new file mode 100644 index 0000000000..3695da3e98 --- /dev/null +++ b/src/packages/safearea/safearea.harmony.css @@ -0,0 +1,14 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-safe-area { + display: flex; + width: 100%; +} +.nut-safe-area-position-top { + padding-top: calc(env(safe-area-inset-top) * 1); +} +.nut-safe-area-position-bottom { + padding-bottom: calc(env(safe-area-inset-bottom) * 1); +} \ No newline at end of file diff --git a/src/packages/searchbar/searchbar.harmony.css b/src/packages/searchbar/searchbar.harmony.css new file mode 100644 index 0000000000..f9cee95772 --- /dev/null +++ b/src/packages/searchbar/searchbar.harmony.css @@ -0,0 +1,269 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-searchbar { + display: flex; + align-items: center; + width: 100%; + padding: 6px 16px; + background: #f2f3f5; + color: #1a1a1a; + font-size: 14px; + box-sizing: border-box; + justify-content: center; +} +.nut-searchbar-content { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + padding: 0 12px; + height: 32px; + background: #ffffff; + border-radius: 4px; +} +.nut-searchbar-icon { + display: flex; + justify-content: center; + align-items: center; +} +.nut-searchbar-clear { + width: 16px; + height: 16px; + color: rgba(0, 0, 0, 0.2); +} +.nut-searchbar-rightin { + width: 16px; + height: 16px; + color: rgba(0, 0, 0, 0.2); +} +.nut-searchbar-left, .nut-searchbar-right { + display: inline-flex; + align-items: center; +} +.nut-searchbar-left.nut-icon, .nut-searchbar-right.nut-icon { + width: 20px; + height: 20px; +} +.nut-searchbar-left { + margin-right: 16px; +} +.nut-searchbar-left > div { + margin-right: 16px; +} +.nut-searchbar-left > span { + margin-right: 16px; +} +.nut-searchbar-left > i { + margin-right: 16px; +} +.nut-searchbar-left > svg { + margin-right: 16px; +} +.nut-searchbar-left .nut-icon { + margin-right: 16px; +} +.nut-searchbar-left > div:last-child, .nut-searchbar-left > span:last-child, .nut-searchbar-left > i:last-child, .nut-searchbar-left > svg:last-child, +.nut-searchbar-left .nut-icon:last-child { + margin-right: 0; +} +.nut-searchbar-right { + margin-left: 16px; +} +.nut-searchbar-right > div { + margin-left: 16px; +} +.nut-searchbar-right > span { + margin-left: 16px; +} +.nut-searchbar-right > i { + margin-left: 16px; +} +.nut-searchbar-right > svg { + margin-left: 16px; +} +.nut-searchbar-right .nut-icon { + margin-left: 16px; +} +.nut-searchbar-right > div:first-child, .nut-searchbar-right > span:first-child, .nut-searchbar-right > i:first-child, .nut-searchbar-right > svg:first-child, +.nut-searchbar-right .nut-icon:first-child { + margin-left: 0; +} +.nut-searchbar-left > text { + margin-right: 16px; +} +.nut-searchbar-left > view { + margin-right: 16px; +} +.nut-searchbar-left > text:last-child, .nut-searchbar-left > view:last-child { + margin-right: 0; +} +.nut-searchbar-right > text { + margin-left: 16px; +} +.nut-searchbar-right > view { + margin-left: 16px; +} +.nut-searchbar-right > text:first-child, .nut-searchbar-right > view:first-child { + margin-left: 0; +} +.nut-searchbar-input-box, .nut-searchbar-input { + display: flex; + align-items: center; + flex: 1; +} +.nut-searchbar-input { + border: 0; + outline: 0; + box-sizing: border-box; + width: 100%; + padding: 0 4px; + font-size: 14px; + color: #1a1a1a; + caret-color: #1a1a1a; + background: transparent; + text-align: left; +} +.nut-searchbar-round { + border-radius: 18px; +} +.nut-searchbar-disabled { + cursor: not-allowed; +} + +[dir=rtl] .nut-searchbar-left { + margin-right: 0; + margin-left: 16px; +} + +.nut-rtl .nut-searchbar-left { + margin-right: 0; + margin-left: 16px; +} +[dir=rtl] .nut-searchbar-left > div { + margin-right: 0; + margin-left: 16px; +} +[dir=rtl] .nut-searchbar-left > span { + margin-right: 0; + margin-left: 16px; +} +[dir=rtl] .nut-searchbar-left > svg { + margin-right: 0; + margin-left: 16px; +} +.nut-rtl .nut-searchbar-left > div { + margin-right: 0; + margin-left: 16px; +} +.nut-rtl .nut-searchbar-left > span { + margin-right: 0; + margin-left: 16px; +} +.nut-rtl .nut-searchbar-left > svg { + margin-right: 0; + margin-left: 16px; +} +[dir=rtl] .nut-searchbar-left > div.nut-icon, [dir=rtl] .nut-searchbar-left > span.nut-icon, [dir=rtl] .nut-searchbar-left > svg.nut-icon, +.nut-rtl .nut-searchbar-left > div.nut-icon, +.nut-rtl .nut-searchbar-left > span.nut-icon, +.nut-rtl .nut-searchbar-left > svg.nut-icon { + transform: rotate(180deg); +} +[dir=rtl] .nut-searchbar-left > div:last-child, [dir=rtl] .nut-searchbar-left > span:last-child, [dir=rtl] .nut-searchbar-left > svg:last-child, +.nut-rtl .nut-searchbar-left > div:last-child, +.nut-rtl .nut-searchbar-left > span:last-child, +.nut-rtl .nut-searchbar-left > svg:last-child { + margin-right: 0; + margin-left: 0; +} +[dir=rtl] .nut-searchbar-right { + margin-left: 0; + margin-right: 16px; +} +.nut-rtl .nut-searchbar-right { + margin-left: 0; + margin-right: 16px; +} +[dir=rtl] .nut-searchbar-right > div { + margin-left: 0; + margin-right: 16px; +} +[dir=rtl] .nut-searchbar-right > span { + margin-left: 0; + margin-right: 16px; +} +[dir=rtl] .nut-searchbar-right > svg { + margin-left: 0; + margin-right: 16px; +} +.nut-rtl .nut-searchbar-right > div { + margin-left: 0; + margin-right: 16px; +} +.nut-rtl .nut-searchbar-right > span { + margin-left: 0; + margin-right: 16px; +} +.nut-rtl .nut-searchbar-right > svg { + margin-left: 0; + margin-right: 16px; +} +[dir=rtl] .nut-searchbar-right > div:first-child, [dir=rtl] .nut-searchbar-right > span:first-child, [dir=rtl] .nut-searchbar-right > svg:first-child, +.nut-rtl .nut-searchbar-right > div:first-child, +.nut-rtl .nut-searchbar-right > span:first-child, +.nut-rtl .nut-searchbar-right > svg:first-child { + margin-left: 0; + margin-right: 0; +} +[dir=rtl] .nut-searchbar-left > text { + margin-right: 0; + margin-left: 16px; +} +[dir=rtl] .nut-searchbar-left > view { + margin-right: 0; + margin-left: 16px; +} +.nut-rtl .nut-searchbar-left > text { + margin-right: 0; + margin-left: 16px; +} +.nut-rtl .nut-searchbar-left > view { + margin-right: 0; + margin-left: 16px; +} +[dir=rtl] .nut-searchbar-left > text:last-child, [dir=rtl] .nut-searchbar-left > view:last-child, +.nut-rtl .nut-searchbar-left > text:last-child, +.nut-rtl .nut-searchbar-left > view:last-child { + margin-right: 0; + margin-left: 0; +} +[dir=rtl] .nut-searchbar-right > text { + margin-left: 0; + margin-right: 16px; +} +[dir=rtl] .nut-searchbar-right > view { + margin-left: 0; + margin-right: 16px; +} +.nut-rtl .nut-searchbar-right > text { + margin-left: 0; + margin-right: 16px; +} +.nut-rtl .nut-searchbar-right > view { + margin-left: 0; + margin-right: 16px; +} +[dir=rtl] .nut-searchbar-right > text:first-child, [dir=rtl] .nut-searchbar-right > view:first-child, +.nut-rtl .nut-searchbar-right > text:first-child, +.nut-rtl .nut-searchbar-right > view:first-child { + margin-left: 0; + margin-right: 0; +} +[dir=rtl] .nut-searchbar-input { + text-align: right; +} +.nut-rtl .nut-searchbar-input { + text-align: right; +} \ No newline at end of file diff --git a/src/packages/segmented/segmented.harmony.css b/src/packages/segmented/segmented.harmony.css new file mode 100644 index 0000000000..4fefddc4b0 --- /dev/null +++ b/src/packages/segmented/segmented.harmony.css @@ -0,0 +1,42 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-segmented { + display: inline-flex; + height: 24px; + min-width: 24px; + padding: 2px; + align-items: center; + border-radius: 4px; + background: rgba(0, 0, 0, 0.4); + box-sizing: border-box; +} + +.nut-segmented-item { + display: flex; + height: 20px; + align-items: center; + justify-content: center; + padding: 0 6px; + border-radius: 4px; + color: #ffffff; + font-size: 12px; + line-height: 1; + box-sizing: border-box; +} + +.nut-segmented-item-active { + background: rgba(0, 0, 0, 0.4); +} + +.nut-segmented-icon { + height: 10px; + width: 10px; + margin-right: 2px; +} +.nut-segmented-icon .nut-icon { + height: 10px; + width: 10px; + font-size: 10px; +} \ No newline at end of file diff --git a/src/packages/shortpassword/shortpassword.harmony.css b/src/packages/shortpassword/shortpassword.harmony.css new file mode 100644 index 0000000000..f8e305a63f --- /dev/null +++ b/src/packages/shortpassword/shortpassword.harmony.css @@ -0,0 +1,123 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-shortpassword-title { + line-height: 1; + font-size: 16px; + color: #1a1a1a; +} +.nut-shortpassword-description { + margin-top: 12px; + margin-bottom: 24px; + line-height: 1; + font-size: 12px; + color: #505259; +} +.nut-shortpassword-input { + padding: 0 0 10px; + text-align: center; + position: relative; + overflow: hidden; +} +.nut-shortpassword-input-real { + position: absolute; + right: 0; + width: 247px; + height: 41px; + outline: 0 none; + border: 0; + text-decoration: none; + z-index: -99; +} +.nut-shortpassword-input-site { + width: 247px; + height: 41px; + border-radius: 4px; +} +.nut-shortpassword-input-fake { + top: 5%; + width: 100%; + height: 41px; + margin: 0 auto; + box-sizing: border-box; + background: #f2f3f5; + border-radius: 4px; + border: 1px solid #f2f3f5; + display: flex; + position: absolute; + left: 0; +} +.nut-shortpassword-input-fake-li { + flex: 1; + display: flex; + justify-content: center; + align-items: center; +} +.nut-shortpassword-input-fake-li-icon { + height: 6px; + width: 6px; + border-radius: 50%; + background: #000; + display: inline-block; +} +.nut-shortpassword-message { + margin-top: 9px; + display: flex; + justify-content: space-between; + width: 247px; +} +.nut-shortpassword-message-error { + line-height: 1; + font-size: 11px; + color: #ff0f23; +} +.nut-shortpassword-message-forget { + line-height: 1; + font-size: 12px; + color: #888b94; + display: flex; + align-items: center; +} +.nut-shortpassword-message-forget .nut-icon { + margin-right: 3px; +} +.nut-shortpassword-footer { + display: flex; + justify-content: space-between; + margin-top: 20px; +} +.nut-shortpassword-footer-cancel { + background: #ffffff; + border: 1px solid #ff0f23; + border-radius: 15px; + padding: 8px 38px; + line-height: 1; + font-size: 14px; + color: #ff0f23; +} +.nut-shortpassword-footer-sure { + background: linear-gradient(135deg, #ff0f23 0%, #ff0f23 100%); + border-radius: 15px; + padding: 8px 38px; + line-height: 1; + font-size: 14px; + color: #ffffff; +} + +[dir=rtl] .nut-shortpassword-input-real, +.nut-rtl .nut-shortpassword-input-real { + right: auto; + left: 0; +} +[dir=rtl] .nut-shortpassword-input-fake, +.nut-rtl .nut-shortpassword-input-fake { + left: auto; + right: 0; +} +[dir=rtl] .nut-shortpassword-footer-sure { + background: linear-gradient(-135deg, #ff0f23 0%, #ff0f23 100%); +} +.nut-rtl .nut-shortpassword-footer-sure { + background: linear-gradient(-135deg, #ff0f23 0%, #ff0f23 100%); +} \ No newline at end of file diff --git a/src/packages/sidebar/sidebar.harmony.css b/src/packages/sidebar/sidebar.harmony.css new file mode 100644 index 0000000000..6a3a9ef6e1 --- /dev/null +++ b/src/packages/sidebar/sidebar.harmony.css @@ -0,0 +1,63 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-sidebar { + display: flex; +} +.nut-sidebar-content { + flex-direction: column; + height: 100%; +} +.nut-sidebar-content-wrap { + flex: 1; + overflow: hidden; +} +.nut-sidebar-titles { + background: #f2f3f5; + flex-direction: column; + border-radius: 0; + height: 100%; + width: 104px; + max-width: 128px; + flex-shrink: 0; +} +.nut-sidebar-titles::-webkit-scrollbar { + display: none; + width: 0; + background: transparent; +} +.nut-sidebar-titles .nut-sidebar-list { + width: 100%; + display: flex; + flex-direction: column; + flex-shrink: 0; +} +.nut-sidebar-titles-scrollable { + overflow-x: hidden; + overflow-y: auto; +} +.nut-sidebar-titles-item { + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + height: 52px; + font-size: 14px; + color: #505259; +} +.nut-sidebar-titles-item-text { + text-align: center; + white-space: normal; + width: 104px; +} +.nut-sidebar-titles-item-active .nut-sidebar-titles-item-text { + font-family: PingFangSC-Semibold; + color: #ff0f23; + font-weight: 600; + font-size: 16px; +} +.nut-sidebar-titles-item-disabled { + color: #c2c4cc; + cursor: not-allowed; +} \ No newline at end of file diff --git a/src/packages/sidebaritem/sidebaritem.harmony.css b/src/packages/sidebaritem/sidebaritem.harmony.css new file mode 100644 index 0000000000..9d249c2289 --- /dev/null +++ b/src/packages/sidebaritem/sidebaritem.harmony.css @@ -0,0 +1,19 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-sidebaritem { + width: 100%; + height: 100%; + flex-shrink: 0; + display: block; + background-color: #ffffff; + color: #1a1a1a; + padding: 24px 20px; + box-sizing: border-box; + overflow: auto; +} +.nut-sidebaritem.inactive { + overflow: visible; + height: 0; +} \ No newline at end of file diff --git a/src/packages/sidenavbar/sidenavbar.harmony.css b/src/packages/sidenavbar/sidenavbar.harmony.css new file mode 100644 index 0000000000..ca5c2a28a4 --- /dev/null +++ b/src/packages/sidenavbar/sidenavbar.harmony.css @@ -0,0 +1,74 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-sidenavbar { + color: #1d1d21; + font-size: 14px; + height: 100%; + overflow: auto; + display: block; + background-color: #ffffff; +} +.nut-sidenavbar .arrow-icon { + position: absolute; + width: 0; + height: 0; + right: 16px; + top: 18px; + cursor: pointer; +} +.nut-sidenavbar .arrow-down { + border-top: 4px solid #888b94; + border-left: 4px solid transparent; + border-right: 4px solid transparent; +} +.nut-sidenavbar .arrow-up { + border-bottom: 4px solid #888b94; + border-left: 4px solid transparent; + border-right: 4px solid transparent; +} +.nut-sidenavbar-title { + height: 40px; + padding: 10px 8px 10px 20px; + background: #f2f3f5; + color: #1a1a1a; + box-sizing: border-box; + transition: transform 0.5s; +} +.nut-sidenavbar-content { + position: relative; + display: block; +} +.nut-sidenavbar-list.sidenavbar-show .nut-sidenavbar-content { + height: auto; + overflow: inherit; +} +.nut-sidenavbar-list.sidenavbar-hide .nut-sidenavbar-content { + height: 0; + overflow: hidden; +} +.nut-sidenavbar .nut-subsidenavbar-border-bt { + position: relative; +} +.nut-sidenavbar .nut-subsidenavbar-border-bt:after { + content: ""; + position: absolute; + width: 100%; + height: 1px; + background: #eeeff2; + transform: scale(1, 0.5); + left: 0; + bottom: 0; +} + +[dir=rtl] .nut-sidenavbar .arrow-icon, +.nut-rtl .nut-sidenavbar .arrow-icon { + right: auto; + left: 16px; +} +[dir=rtl] .nut-sidenavbar .nut-subsidenavbar-border-bt:after, +.nut-rtl .nut-sidenavbar .nut-subsidenavbar-border-bt:after { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/sidenavbaritem/sidenavbaritem.harmony.css b/src/packages/sidenavbaritem/sidenavbaritem.harmony.css new file mode 100644 index 0000000000..2cc1f0732c --- /dev/null +++ b/src/packages/sidenavbaritem/sidenavbaritem.harmony.css @@ -0,0 +1,14 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-subsidenavbar-item { + height: 40px; + color: #505259; + padding: 10px 8px 10px 55px; + box-sizing: border-box; +} +.nut-subsidenavbar-list { + background-color: #ffffff; + color: #505259; +} \ No newline at end of file diff --git a/src/packages/signature/signature.harmony.css b/src/packages/signature/signature.harmony.css new file mode 100644 index 0000000000..7c94568bcd --- /dev/null +++ b/src/packages/signature/signature.harmony.css @@ -0,0 +1,22 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-signature .spcanvas_WEAPP { + width: 100%; + height: 100%; +} +.nut-signature .spcanvas_WEAPP Canvas { + width: 100%; +} +.nut-signature-inner { + display: flex; + justify-content: center; + align-items: center; + height: 10rem; + border: 1px solid rgba(0, 0, 0, 0.06); + background-color: #ffffff; +} +.nut-signature-unsupport { + font-size: 14px; +} \ No newline at end of file diff --git a/src/packages/skeleton/skeleton.harmony.css b/src/packages/skeleton/skeleton.harmony.css new file mode 100644 index 0000000000..7633042def --- /dev/null +++ b/src/packages/skeleton/skeleton.harmony.css @@ -0,0 +1,79 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-skeleton { + display: inline-block; + position: relative; + overflow: hidden; + vertical-align: middle; + width: 100%; +} +.nut-skeleton-content { + display: flex; + flex-direction: row; +} +.nut-skeleton-content-avatar { + margin-right: 20px; + background: #f2f3f5 !important; +} +.nut-skeleton-content-block { + width: 100%; + height: 15px; + background: #f2f3f5; + margin-top: 10px; + border-radius: 0; +} +.nut-skeleton-content-line { + width: 100%; + display: flex; + flex-direction: column; +} +.nut-skeleton-content-line .nut-skeleton-content-block:last-child { + width: 70%; +} +.nut-skeleton-content-title { + width: 30%; + height: 15px; + background: #f2f3f5; +} +.nut-skeleton-content-block-last-child { + width: 55%; +} +.nut-skeleton-animation { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + animation: nut-skeleton 2s ease-in-out 0s infinite; +} +@keyframes nut-skeleton { + 0% { + background-position-x: -500px; + } + to { + background-position-x: calc(500px + 100%); + } +} + +[dir=rtl] .nut-skeleton-content .nut-avatar, +.nut-rtl .nut-skeleton-content .nut-avatar { + margin-right: 0; + margin-left: 20px; +} +[dir=rtl] .nut-skeleton-animation, +.nut-rtl .nut-skeleton-animation { + left: auto; + right: 0; + animation: nut-skeleton-rtl 2s ease-in-out 0s infinite; +} +@keyframes nut-skeleton-rtl { + 0% { + background-position-x: calc(500px + 100%); + } + to { + background-position-x: -500px; + } +} \ No newline at end of file diff --git a/src/packages/space/space.harmony.css b/src/packages/space/space.harmony.css new file mode 100644 index 0000000000..12be3390eb --- /dev/null +++ b/src/packages/space/space.harmony.css @@ -0,0 +1,83 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-space { + display: flex; +} +.nut-space-item { + flex: none; +} +.nut-space-vertical { + flex-direction: column; +} +.nut-space-vertical-item { + margin-bottom: 8px; +} +.nut-space-vertical-item-last { + margin-bottom: 0; +} +.nut-space-horizontal { + flex-direction: row; +} +.nut-space-horizontal-item { + margin-right: 8px; +} +.nut-space-horizontal-item-last { + margin-right: 0; +} +.nut-space-horizontal-wrap { + flex-wrap: wrap; + margin-bottom: calc(8px * -1); +} +.nut-space-horizontal-wrap-item { + padding-bottom: 8px; +} +.nut-space-align-center { + align-items: center; +} +.nut-space-align-start { + align-items: flex-start; +} +.nut-space-align-end { + align-items: flex-end; +} +.nut-space-align-baseline { + align-items: baseline; +} +.nut-space-justify-center { + justify-content: center; +} +.nut-space-justify-start { + justify-content: flex-start; +} +.nut-space-justify-end { + justify-content: flex-end; +} +.nut-space-justify-between { + justify-content: space-between; +} +.nut-space-justify-around { + justify-content: space-around; +} +.nut-space-justify-evenly { + justify-content: space-evenly; +} +.nut-space-justify-stretch { + justify-content: stretch; +} + +[dir=rtl] .nut-space-horizontal > .nut-space-item { + margin-right: 0; + margin-left: 8px; +} + +.nut-rtl .nut-space-horizontal > .nut-space-item { + margin-right: 0; + margin-left: 8px; +} +[dir=rtl] .nut-space-horizontal > .nut-space-item:last-child, +.nut-rtl .nut-space-horizontal > .nut-space-item:last-child { + margin-right: 0; + margin-left: 0; +} \ No newline at end of file diff --git a/src/packages/step/step.harmony.css b/src/packages/step/step.harmony.css new file mode 100644 index 0000000000..b69c5162a5 --- /dev/null +++ b/src/packages/step/step.harmony.css @@ -0,0 +1,201 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-step { + flex-grow: 0; + flex-shrink: 0; + flex: 1; + text-align: center; + font-size: 0; +} +.nut-step-head { + position: relative; + display: flex; + justify-content: center; + margin-bottom: 12px; +} +.nut-step-line { + position: absolute; + top: calc(25px / 2); + left: calc(50% + (100% - 70%) / 2); + height: 1px; + width: 70%; + background: #888b94; +} +.nut-step-icon { + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 25px; + height: 25px; + line-height: 25px; + font-size: 12px; + background-color: #888b94; + border-color: #888b94; + color: #ffffff; + z-index: 1; +} +.nut-step-icon .nut-icon { + width: 100%; + height: 100%; +} +.nut-step-icon.is-text { + border-radius: 50%; + border-width: 1px; + border-style: solid; +} +.nut-step-icon.is-icon { + border-radius: 50%; + border-width: 1px; + border-style: solid; +} +.nut-step-main { + padding: 0 10%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.nut-step-title { + display: block; + margin-bottom: 10px; + font-size: 14px; + color: #1a1a1a; +} +.nut-step-description { + display: block; + font-size: 12px; + color: #505259; +} +.nut-step:last-child .nut-step-line { + display: none; +} +.nut-step.nut-step-process .nut-step-icon { + background-color: #ff0f23; + border-color: #ff0f23; + color: #ffffff; +} +.nut-step.nut-step-process .nut-step-title { + color: #ff0f23; + font-size: 14px; + font-weight: 600; +} +.nut-step.nut-step-process .nut-step-description { + color: #505259; +} +.nut-step.nut-step-wait .nut-step-title { + color: #1a1a1a; +} +.nut-step.nut-step-wait .nut-step-description { + color: #505259; +} +.nut-step.nut-step-finish .nut-step-icon { + background-color: #ffffff; + border-color: #ff0f23; + color: #ff0f23; +} +.nut-step.nut-step-finish .nut-step-line { + background: #ff0f23; +} +.nut-step.nut-step-finish .nut-step-title { + color: #ff0f23; +} +.nut-step.nut-step-finish .nut-step-description { + color: #505259; +} + +.nut-steps-dot .nut-step-head { + margin: 10px 0; +} +.nut-steps-dot .nut-step-line { + top: 7px; +} +.nut-steps-dot .nut-step-icon { + width: 6px; + height: 6px; + border: 2px solid #ffffff; + border-radius: 50%; + box-sizing: content-box; +} +.nut-steps-dot .nut-step-wait .nut-step-icon { + background-color: #888b94; +} +.nut-steps-dot .nut-step-finish .nut-step-icon { + background-color: #ffffff; + border-color: #ff0f23; +} +.nut-steps-dot .nut-step-process .nut-step-icon { + position: relative; +} +.nut-steps-dot .nut-step-process .nut-step-icon:before { + content: ""; + display: inline-block; + position: absolute; + left: 50%; + top: 50%; + margin-left: -7px; + margin-top: -7px; + width: 14px; + height: 14px; + background-color: #ff0f23; + border-radius: 50%; + opacity: 0.23; +} + +.nut-steps-horizontal.nut-steps-dot .nut-step-line { + top: 50%; + bottom: -50%; +} + +.nut-steps-vertical .nut-step { + display: flex; + height: 33.34%; +} +.nut-steps-vertical .nut-step-line { + position: absolute; + display: inline-block; + width: 1px; + height: 70%; + background: #888b94; + top: calc(25px + (100% - 70% - 12px) / 2); + left: calc(50% - 1px); +} +.nut-steps-vertical.nut-steps-dot .nut-step-line { + top: calc(6px + (100% - 70%) / 2); +} +.nut-steps-vertical .nut-step-main { + display: inline-block; + padding-left: 6%; + text-align: start; +} + +[dir=rtl] .nut-step-line { + left: auto; + right: calc(50% + (100% - 70%) / 2); +} + +.nut-rtl .nut-step-line { + left: auto; + right: calc(50% + (100% - 70%) / 2); +} + +[dir=rtl] .nut-steps-dot .nut-step-process .nut-step-icon:before, +.nut-rtl .nut-steps-dot .nut-step-process .nut-step-icon:before { + left: auto; + right: 50%; + margin-left: 0; + margin-right: -7px; +} + +[dir=rtl] .nut-steps-vertical .nut-step-line, +.nut-rtl .nut-steps-vertical .nut-step-line { + left: auto; + right: calc(50% - 1px); +} +[dir=rtl] .nut-steps-vertical .nut-step-main, +.nut-rtl .nut-steps-vertical .nut-step-main { + padding-left: 0; + padding-right: 6%; +} \ No newline at end of file diff --git a/src/packages/steps/steps.harmony.css b/src/packages/steps/steps.harmony.css new file mode 100644 index 0000000000..0ea0a1d383 --- /dev/null +++ b/src/packages/steps/steps.harmony.css @@ -0,0 +1,12 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-steps { + display: flex; +} + +.nut-steps-vertical { + height: 100%; + flex-flow: column; +} \ No newline at end of file diff --git a/src/packages/sticky/sticky.harmony.css b/src/packages/sticky/sticky.harmony.css new file mode 100644 index 0000000000..79248ac326 --- /dev/null +++ b/src/packages/sticky/sticky.harmony.css @@ -0,0 +1,7 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-sticky-fixed { + position: fixed; +} \ No newline at end of file diff --git a/src/packages/subsidenavbar/subsidenavbar.harmony.css b/src/packages/subsidenavbar/subsidenavbar.harmony.css new file mode 100644 index 0000000000..ac40f8649d --- /dev/null +++ b/src/packages/subsidenavbar/subsidenavbar.harmony.css @@ -0,0 +1,20 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-subsidenavbar-title { + height: 40px; + padding: 10px 8px 10px 35px; + box-sizing: border-box; + background-color: #f7f8fc; + color: #1a1a1a; + box-sizing: border-box; +} +.nut-subsidenavbar-list.sidenavbar-show .nut-subsidenavbar-content { + height: auto; + overflow: inherit; +} +.nut-subsidenavbar-list.sidenavbar-hide .nut-subsidenavbar-content { + height: 0; + overflow: hidden; +} \ No newline at end of file diff --git a/src/packages/swipe/swipe.harmony.css b/src/packages/swipe/swipe.harmony.css new file mode 100644 index 0000000000..e7968eb11e --- /dev/null +++ b/src/packages/swipe/swipe.harmony.css @@ -0,0 +1,33 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-swipe { + display: flex; + flex-direction: row; + position: relative; + overflow: hidden; + cursor: grab; + background-color: #ffffff; +} +.nut-swipe-wrapper { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-self: stretch; + width: 100%; + transition-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1); + transition-property: transform; +} +.nut-swipe-left, .nut-swipe-right { + position: absolute; + top: 0; + display: flex; + flex-direction: row; +} +.nut-swipe-left { + left: 0; +} +.nut-swipe-right { + left: 100%; +} \ No newline at end of file diff --git a/src/packages/swiper/swiper.harmony.css b/src/packages/swiper/swiper.harmony.css new file mode 100644 index 0000000000..fc619d1edc --- /dev/null +++ b/src/packages/swiper/swiper.harmony.css @@ -0,0 +1,68 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-swiper { + width: 100%; + height: 100%; + overflow: hidden; + position: relative; +} +.nut-swiper-canmove-horizontal { + touch-action: pan-y; +} +.nut-swiper-canmove-vertical { + touch-action: pan-x; +} +.nut-swiper-indicator { + display: flex; + flex-direction: row; + justify-content: center; + position: absolute; + height: 4px; + width: 100%; + top: 89.33%; + z-index: 10; +} +.nut-swiper-indicator-vertical { + width: 8px; + height: 100%; + top: 0; + left: 12px; + flex-direction: column; + justify-content: center; + z-index: 1; +} + +.nut-swiper-inner { + width: 100%; + height: 100%; + display: flex; + position: relative; +} +.nut-swiper-inner-vertical { + flex-direction: column; +} + +.nut-swiper-slide { + width: 100%; + height: 100%; + position: relative; + flex-shrink: 0; +} + +.nut-swiper-item { + width: 100%; + height: 100%; +} + +[dir=rtl] .nut-swiper-indicator, +.nut-rtl .nut-swiper-indicator { + left: auto; + right: 50%; +} +[dir=rtl] .nut-swiper-indicator-vertical, +.nut-rtl .nut-swiper-indicator-vertical { + left: auto; + right: 12px; +} \ No newline at end of file diff --git a/src/packages/swiperitem/swiperitem.harmony.css b/src/packages/swiperitem/swiperitem.harmony.css new file mode 100644 index 0000000000..d1a391a1e6 --- /dev/null +++ b/src/packages/swiperitem/swiperitem.harmony.css @@ -0,0 +1,7 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-swiper-item { + height: 100%; +} \ No newline at end of file diff --git a/src/packages/switch/switch.harmony.css b/src/packages/switch/switch.harmony.css new file mode 100644 index 0000000000..e05a3dc293 --- /dev/null +++ b/src/packages/switch/switch.harmony.css @@ -0,0 +1,91 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-switch { + cursor: pointer; + position: relative; + display: inline-flex; + flex-direction: row; + align-items: center; + min-width: 46px; + height: 28px; + line-height: 28px; + background-color: #ff0f23; + border-radius: 50px; + background-size: 100% 100%; + background-repeat: no-repeat; + background-position: center center; + flex: 0 0 auto; +} +.nut-switch-button { + position: absolute; + top: 50%; + transform: translateY(-50%); + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + height: calc(28px - 2px * 2); + width: calc(28px - 2px * 2); + border-radius: 50%; + background: #ffffff; + transition: left 0.3s linear; + box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1); +} +.nut-switch-button-open { + left: calc(100% - 28px + 2px); +} +.nut-switch-button-open-rtl { + left: 2px; +} +.nut-switch-button-close { + left: 2px; +} +.nut-switch-button-close-rtl { + left: calc(100% - 28px + 2px); +} +.nut-switch-close { + background-color: #c2c4cc; +} +.nut-switch-close-line { + width: calc((28px - 2px * 2) / 2); + height: 2px; + background: #ffffff; + border-radius: 2px; +} +.nut-switch-label { + display: inline-flex; + align-items: center; + height: 100%; + white-space: nowrap; + color: #ffffff; + font-size: 12px; +} +.nut-switch-label .nut-icon { + color: #ffffff; +} +.nut-switch-label-open { + margin: 0 calc(28px - 2px + 3px) 0 7px; +} +.nut-switch-label-open-rtl { + margin: 0 7px 0 calc(28px - 2px + 3px); +} +.nut-switch-label-close { + margin: 0 7px 0 calc(28px - 2px + 3px); +} +.nut-switch-label-close-rtl { + margin: 0 calc(28px - 2px + 3px) 0 7px; +} +.nut-switch-label-close-disabled { + color: #c2c4cc; +} +.nut-switch-label-close-disabled .nut-icon { + color: #c2c4cc; +} +.nut-switch-disabled { + background-color: #ffadbe; +} +.nut-switch-disabled-close { + background-color: #f2f3f5; +} \ No newline at end of file diff --git a/src/packages/tabbar/tabbar.harmony.css b/src/packages/tabbar/tabbar.harmony.css new file mode 100644 index 0000000000..ad224744d7 --- /dev/null +++ b/src/packages/tabbar/tabbar.harmony.css @@ -0,0 +1,50 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-tabbar { + border: 0px; + box-shadow: none; + border-bottom: 1px solid #eee; + border-top: 1px solid #eee; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + box-sizing: border-box; + background: #ffffff; +} +.nut-tabbar-wrap { + width: 100%; + height: 50px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} +.nut-tabbar:last-child { + border-right: 0; +} +.nut-tabbar-fixed { + position: fixed; + bottom: 0px; + left: 0px; +} +.nut-tabbar-safe-area { + display: block; + width: 100%; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); +} + +[dir=rtl] .nut-tabbar:last-child, +.nut-rtl .nut-tabbar:last-child { + border-right: none; + border-left: 0; +} +[dir=rtl] .nut-tabbar-fixed, +.nut-rtl .nut-tabbar-fixed { + left: auto; + right: 0px; +} \ No newline at end of file diff --git a/src/packages/tabbaritem/tabbaritem.harmony.css b/src/packages/tabbaritem/tabbaritem.harmony.css new file mode 100644 index 0000000000..f7dceace35 --- /dev/null +++ b/src/packages/tabbaritem/tabbaritem.harmony.css @@ -0,0 +1,59 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-tabbar-item { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + flex: 1; + text-align: center; + text-decoration: none; + color: #1a1a1a; + height: 100%; +} +.nut-tabbar-item-icon-box { + padding: 0px; + display: flex; + flex-direction: column; + align-items: center; + position: relative; +} +.nut-tabbar-item-icon-box .nut-icon { + width: 22px; + height: 22px; + font-size: 22px; +} +.nut-tabbar-item-icon-box-nav { + display: block; + color: #505259; + font-size: 11px; + line-height: 11px; + margin-top: 3px; +} +.nut-tabbar-item-icon-box-large { + font-size: 16px; + margin-top: 0; + line-height: 20px; + font-weight: 400; +} +.nut-tabbar-item-active { + color: #ff0f23; +} +.nut-tabbar-item-active .nut-tabbar-item-icon-box { + /* #ifdef harmony*/ + color: #ff0f23; + /* #endif*/ + /* #ifndef harmony*/ + color: inherit; + /* #endif*/ +} +.nut-tabbar-item-active .nut-icon { + /* #ifdef harmony*/ + color: #ff0f23; + /* #endif*/ + /* #ifndef harmony*/ + color: inherit; + /* #endif*/ +} \ No newline at end of file diff --git a/src/packages/table/table.harmony.css b/src/packages/table/table.harmony.css new file mode 100644 index 0000000000..a7df92ed86 --- /dev/null +++ b/src/packages/table/table.harmony.css @@ -0,0 +1,230 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-table { + overflow: hidden; + position: relative; + word-wrap: break-word; + word-break: break-all; +} +.nut-table-wrapper { + display: flex; + width: 100%; + flex-direction: column; + font-size: 14px; + color: #1a1a1a; + overflow-y: auto; + overflow-x: hidden; + position: relative; + border: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-table-wrapper-sticky { + overflow-x: auto; +} +.nut-table-main { + display: table; + overflow-x: auto; + color: #1a1a1a; + background-color: #ffffff; + table-layout: fixed; + width: max-content; + min-width: 100%; + position: relative; +} +.nut-table-main-striped .nut-table-main-head-tr { + background-color: #f2f3f5; +} +.nut-table-main-striped .nut-table-main-body-tr:nth-child(odd) { + background-color: #ffffff; +} +.nut-table-main-striped .nut-table-main-body-tr:nth-child(even) { + background-color: #f2f3f5; +} +.nut-table-main-head, .nut-table-main-body { + background: inherit; +} +.nut-table-main-head-tr, .nut-table-main-body-tr { + display: table-row; + background: inherit; +} +.nut-table-main-head-tr:last-child .nut-table-main-body-tr-td, .nut-table-main-body-tr:last-child .nut-table-main-body-tr-td { + border-bottom: none; +} +.nut-table-main-head-tr-th { + display: table-cell; + padding: 10px; + table-layout: fixed; + background: inherit; + position: sticky; + top: 0; +} +.nut-table-main-body-tr-th { + display: table-cell; + padding: 10px; + table-layout: fixed; + background: inherit; + position: sticky; + top: 0; +} +.nut-table-main-head-tr-th.nut-table-fixed-left, .nut-table-main-head-tr-th.nut-table-fixed-right, .nut-table-main-body-tr-th.nut-table-fixed-left, .nut-table-main-body-tr-th.nut-table-fixed-right { + z-index: 4; +} +.nut-table-main-head-tr-th:last-child, .nut-table-main-body-tr-th:last-child { + border-right: none; +} +.nut-table-main-head-tr-td { + display: table-cell; + padding: 10px; + table-layout: fixed; + background: inherit; +} +.nut-table-main-body-tr-td { + display: table-cell; + padding: 10px; + table-layout: fixed; + background: inherit; +} +.nut-table-main-head-tr-td:last-child, .nut-table-main-body-tr-td:last-child { + border-right: none; +} +.nut-table-main-head-tr-td-nodata, .nut-table-main-body-tr-td-nodata { + display: flex; + height: 50px; + align-items: center; + justify-content: center; +} +.nut-table-main-head-tr-border { + border-right: 1px solid rgba(0, 0, 0, 0.06); + border-bottom: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-table-main-body-tr-border { + border-right: 1px solid rgba(0, 0, 0, 0.06); + border-bottom: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-table-main-head-tr-alignleft, .nut-table-main-head-tr-align, .nut-table-main-body-tr-alignleft, .nut-table-main-body-tr-align { + text-align: start; +} +.nut-table-main-head-tr-aligncenter, .nut-table-main-body-tr-aligncenter { + text-align: center; +} +.nut-table-main-head-tr-alignright, .nut-table-main-body-tr-alignright { + text-align: end; +} +.nut-table-main-head { + display: table-header-group; +} +.nut-table-main-body { + display: table-row-group; +} +.nut-table-sticky-left, .nut-table-sticky-right { + position: absolute; + top: 0px; + width: 8px; + bottom: -1px; + overflow-x: hidden; + overflow-y: hidden; + box-shadow: none; + touch-action: none; + pointer-events: none; + z-index: 3; + background: transparent; +} +.nut-table-sticky-left { + left: 1px; + box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.1); +} +.nut-table-sticky-right { + right: 1px; + box-shadow: -4px 0 8px 0 rgba(0, 0, 0, 0.1); +} +.nut-table-fixed-left, .nut-table-fixed-right { + position: sticky; + z-index: 2; +} +.nut-table-fixed-left.h5-div { + padding: 10px 0; +} +.nut-table-fixed-right.h5-div { + padding: 10px 0; +} +.nut-table-fixed-left-last { + border-right: none; +} +.nut-table-summary { + color: #1a1a1a; + background-color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + height: 30px; + padding: 10px; + position: relative; + z-index: 5; +} + +[dir=rtl] .nut-table-main-head-tr-th:last-child, [dir=rtl] .nut-table-main-body-tr-th:last-child, +.nut-rtl .nut-table-main-head-tr-th:last-child, +.nut-rtl .nut-table-main-body-tr-th:last-child { + border-right: none; + border-left: none; +} +[dir=rtl] .nut-table-main-head-tr-td:last-child, [dir=rtl] .nut-table-main-body-tr-td:last-child, +.nut-rtl .nut-table-main-head-tr-td:last-child, +.nut-rtl .nut-table-main-body-tr-td:last-child { + border-right: none; + border-left: none; +} +[dir=rtl] .nut-table-main-head-tr-border { + border-right: none; + border-left: 1px solid rgba(0, 0, 0, 0.06); +} +[dir=rtl] .nut-table-main-body-tr-border { + border-right: none; + border-left: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-rtl .nut-table-main-head-tr-border { + border-right: none; + border-left: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-rtl .nut-table-main-body-tr-border { + border-right: none; + border-left: 1px solid rgba(0, 0, 0, 0.06); +} +[dir=rtl] .nut-table-main-head-tr-alignleft, [dir=rtl] .nut-table-main-head-tr-align, [dir=rtl] .nut-table-main-body-tr-alignleft, [dir=rtl] .nut-table-main-body-tr-align, +.nut-rtl .nut-table-main-head-tr-alignleft, +.nut-rtl .nut-table-main-head-tr-align, +.nut-rtl .nut-table-main-body-tr-alignleft, +.nut-rtl .nut-table-main-body-tr-align { + text-align: right; +} +[dir=rtl] .nut-table-main-head-tr-alignright, [dir=rtl] .nut-table-main-body-tr-alignright, +.nut-rtl .nut-table-main-head-tr-alignright, +.nut-rtl .nut-table-main-body-tr-alignright { + text-align: left; +} +[dir=rtl] .nut-table-sticky-left { + left: auto; + right: 1px; + box-shadow: -4px 0 8px 0 rgba(0, 0, 0, 0.1); +} +.nut-rtl .nut-table-sticky-left { + left: auto; + right: 1px; + box-shadow: -4px 0 8px 0 rgba(0, 0, 0, 0.1); +} +[dir=rtl] .nut-table-sticky-right { + right: auto; + left: 1px; + box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.1); +} +.nut-rtl .nut-table-sticky-right { + right: auto; + left: 1px; + box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.1); +} +[dir=rtl] .nut-table-fixed-left-last, +.nut-rtl .nut-table-fixed-left-last { + border-right: none; + border-left: none; +} \ No newline at end of file diff --git a/src/packages/tabpane/tabpane.harmony.css b/src/packages/tabpane/tabpane.harmony.css new file mode 100644 index 0000000000..c52b789dd4 --- /dev/null +++ b/src/packages/tabpane/tabpane.harmony.css @@ -0,0 +1,18 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-tabpane { + width: 100%; + flex-shrink: 0; + display: block; + background-color: #fff; + color: #1a1a1a; + padding: 24px 20px; + box-sizing: border-box; + overflow: auto; +} +.nut-tabpane.inactive { + overflow: visible; + height: 0; +} \ No newline at end of file diff --git a/src/packages/tabs/tabs.harmony.css b/src/packages/tabs/tabs.harmony.css new file mode 100644 index 0000000000..0220609c56 --- /dev/null +++ b/src/packages/tabs/tabs.harmony.css @@ -0,0 +1,325 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-tabs { + display: flex; +} + +.nut-tabs-horizontal { + flex-direction: column; +} + +.nut-tabs-titles { + display: flex; + box-sizing: border-box; + height: 44px; + user-select: none; + overflow-x: auto; + overflow-y: hidden; + background: #f2f3f5; + scrollbar-width: none; +} +.nut-tabs-titles::-webkit-scrollbar { + display: none; + width: 0; + background: transparent; +} +.nut-tabs-titles .nut-tabs-list { + width: 100%; + display: flex; + flex-shrink: 0; +} +.nut-tabs-titles-left { + justify-content: flex-start; +} +.nut-tabs-titles-left .nut-tabs-titles-item { + padding: 0 22px; +} +.nut-tabs-titles-right { + justify-content: flex-end; +} +.nut-tabs-titles-right .nut-tabs-titles-item { + padding: 0 22px; +} +.nut-tabs-titles-item { + position: relative; + display: flex; + align-items: center; + justify-content: center; + flex: 1 0 auto; + padding: 0 12px; + height: 44px; + line-height: 44px; + min-width: 50px; + font-size: 14px; + color: #1a1a1a; + text-overflow: ellipsis; + white-space: nowrap; +} +.nut-tabs-titles-item .nut-icon { + color: #1a1a1a; +} +.nut-tabs-titles-item-left, .nut-tabs-titles-item-right { + flex: none; +} +.nut-tabs-titles-item-text { + color: #1a1a1a; +} +.nut-tabs-titles-item-smile { + position: absolute; + transition: width 0.3s ease; + width: 0; + height: 0; + content: " "; + left: 50%; + transform: translate(-50%, 0); + bottom: 15%; + border-radius: 2px; + opacity: 1; + overflow: hidden; +} +.nut-tabs-titles-item-line { + position: absolute; + transition: width 0.3s ease; + width: 0; + height: 0; + content: " "; + left: 50%; + transform: translate(-50%, 0); + bottom: 15%; + border-radius: 2px; + opacity: 1; + overflow: hidden; +} +.nut-tabs-titles-item-smile { + bottom: -10%; +} +.nut-tabs-titles-item-smile .nut-icon { + position: absolute; + font-size: 20px; + width: 100%; + height: 100%; +} +.nut-tabs-titles-item-active .nut-icon { + color: #ff0f23; +} +.nut-tabs-titles-item-active .nut-tabs-titles-item-text { + color: #ff0f23; + font-weight: 600; +} +.nut-tabs-titles-item-active .nut-tabs-titles-item-line { + overflow: unset; + content: " "; + width: 12px; + height: 2px; + background: #ff0f23; +} +.nut-tabs-titles-item-active .nut-tabs-titles-item-smile { + overflow: unset; + width: 40px; + height: 20px; +} +.nut-tabs-titles-item-active .nut-tabs-titles-item-smile .nut-icon { + color: #ff0f23; +} +.nut-tabs-titles-item-disabled { + color: #c2c4cc; +} +.nut-tabs-titles-item-disabled .nut-icon { + color: #c2c4cc; +} +.nut-tabs-titles-item-disabled .nut-tabs-titles-item-text { + color: #c2c4cc; +} +.nut-tabs-titles-simple .nut-tabs-titles-item-active .nut-tabs-titles-item-text { + color: #1a1a1a; + font-size: 16px; +} +.nut-tabs-titles-simple .nut-tabs-titles-item-active .nut-icon { + color: #1a1a1a; + font-size: 16px; +} +.nut-tabs-titles-card .nut-tabs-titles-item-active { + font-weight: 600; + background-color: #ffffff; + border-radius: 8px 8px 0 0; +} +.nut-tabs-titles-button .nut-tabs-titles-item { + padding: 0 10px; +} +.nut-tabs-titles-button .nut-tabs-titles-item .nut-tabs-titles-item-text { + flex: 1; + height: 28px; + display: flex; + align-items: center; + justify-content: center; + padding: 0 8px; +} +.nut-tabs-titles-button .nut-tabs-titles-item-active .nut-tabs-titles-item-text { + background: undefined; + color: #ff0f23; + border-radius: 50px; + font-weight: 600; + background-color: #ffebf1; + border: 1px solid #ff0f23; +} +.nut-tabs-titles-divider { + border-bottom: 1px solid rgba(0, 0, 0, 0.06); +} +.nut-tabs-titles-divider .nut-tabs-titles-item { + position: relative; +} +.nut-tabs-titles-divider .nut-tabs-titles-item::after { + content: ""; + position: absolute; + right: 0; + top: 50%; + height: 50%; + width: 1px; + background: rgba(0, 0, 0, 0.06); + transform: translateY(-50%); +} +.nut-tabs-titles-divider .nut-tabs-titles-item:last-child::after { + display: none; +} + +.nut-tabs-vertical .nut-tabs-ellipsis { + white-space: break-spaces; + /* #ifdef harmony */ + padding-left: 12px; + /* #endif */ + /* #ifndef harmony */ + padding-left: 6px; + /* #endif */ + width: 90px; + line-height: 14px; +} +.nut-tabs-vertical .nut-tabs-titles { + flex-direction: column; + height: 100%; + width: 100px; + flex-shrink: 0; +} +.nut-tabs-vertical .nut-tabs-titles .nut-tabs-list { + flex-direction: column; +} +.nut-tabs-vertical .nut-tabs-titles-item { + height: 40px; + flex: none; +} +.nut-tabs-vertical .nut-tabs-titles-item-smile { + overflow: hidden; + transition: width 0.3s ease; +} +.nut-tabs-vertical .nut-tabs-titles-item-line { + transform: translate(0, -50%); + transition: height 0.3s ease; +} +.nut-tabs-vertical .nut-tabs-titles-item-line-vertical { + top: 50%; +} +.nut-tabs-vertical .nut-tabs-titles-item-active { + background-color: #ffffff; +} +.nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line { + left: 10px; + width: 3px; + height: 12px; + background: linear-gradient(180deg, #ff475d 0%, #ffebf1 100%); +} +.nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { + right: -12px; + bottom: -2%; + left: auto; + transform: rotate(320deg); +} +.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles { + flex-direction: row; + height: 44px; + width: 100%; + padding: 0 !important; +} +.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles .nut-tabs-list { + flex-direction: row; + height: auto; +} +.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-content { + flex-direction: row; +} +.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active { + background-color: initial; +} +.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line { + left: 50%; + transform: translate(-50%, 0); + width: 12px; + height: 2px; + background: #ff0f23; +} +.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { + left: 50%; + right: auto; + bottom: -3px; + transform: translate(-50%, 0) rotate(0deg); +} +.nut-tabs-vertical .nut-tabs-content { + flex-direction: column; + height: 100%; +} +.nut-tabs-vertical .nut-tabs-content-wrap { + flex: 1; +} +.nut-tabs-vertical .nut-tabs-content .nut-tabpane { + height: 100%; +} + +.nut-tabs-content { + display: flex; + box-sizing: border-box; +} +.nut-tabs-content-wrap { + overflow: hidden; +} + +[dir=rtl] .nut-tabs-titles-item-smile, [dir=rtl] .nut-tabs-titles-item-line, +.nut-rtl .nut-tabs-titles-item-smile, +.nut-rtl .nut-tabs-titles-item-line { + left: auto; + right: 50%; + transform: translate(50%, 0); +} +[dir=rtl] .nut-tabs-titles-divider .nut-tabs-titles-item::after, +.nut-rtl .nut-tabs-titles-divider .nut-tabs-titles-item::after { + right: auto; + left: 0; +} + +[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-line .nut-tabs-titles-item, +.nut-rtl .nut-tabs-vertical .nut-tabs-titles-line .nut-tabs-titles-item { + padding-left: 0; + padding-right: 14px; +} +[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line, +.nut-rtl .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line { + left: auto; + right: 10px; +} +[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile, +.nut-rtl .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { + left: -12px; + right: auto; + transform: rotate(-320deg); +} +[dir=rtl] .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line, +.nut-rtl .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line { + left: auto; + right: 50%; + transform: translate(50%, 0); +} +[dir=rtl] .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile, +.nut-rtl .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { + right: 50%; + left: auto; + transform: translate(50%, 0) rotate(0deg); +} \ No newline at end of file diff --git a/src/packages/tag/tag.harmony.css b/src/packages/tag/tag.harmony.css new file mode 100644 index 0000000000..08257c1dfc --- /dev/null +++ b/src/packages/tag/tag.harmony.css @@ -0,0 +1,73 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-tag { + padding: 0px 2px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + font-size: 10px; + border-radius: 2px; + height: 14px; + color: #ffffff; + border: 1px solid transparent; +} +.nut-tag .nut-icon { + vertical-align: middle; + margin-left: 4px; + color: #ffffff; +} +.nut-tag-text { + font-size: 10px; + color: #ffffff; +} +.nut-tag-text-plain { + color: #1a1a1a; +} +.nut-tag-default { + background: #1a1a1a; +} +.nut-tag-primary { + background: #fa2c19; +} +.nut-tag-info { + background: #0073ff; +} +.nut-tag-success { + background: #4fc08d; +} +.nut-tag-danger { + background: #ff0f23; +} +.nut-tag-warning { + background: #ffbf00; +} +.nut-tag-round { + border-radius: 8px; +} +.nut-tag-mark { + border-radius: 0 8px 8px 0; +} +.nut-tag-close { + cursor: pointer; +} +.nut-tag-custom-icon { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 10px; + color: #ffffff; + margin-left: 4px; +} +.nut-tag-plain { + background-color: #fff; + border: 1px solid #1a1a1a; +} + +[dir=rtl] .nut-tag .nut-icon, +.nut-rtl .nut-tag .nut-icon { + margin-left: 0; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/packages/textarea/textarea.harmony.css b/src/packages/textarea/textarea.harmony.css new file mode 100644 index 0000000000..db19143852 --- /dev/null +++ b/src/packages/textarea/textarea.harmony.css @@ -0,0 +1,79 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-textarea { + display: flex; + flex-direction: column; + position: relative; + width: 100%; + box-sizing: border-box; + font-size: 14px; + border-radius: 6px; +} +.nut-textarea-container { + padding: 12px; + background-color: #ffffff; +} +.nut-textarea-error { + border: 0.5px solid #ff0f23; + background-color: #ffebef; +} +.nut-textarea-limit { + text-align: right; + font-size: 14px; + line-height: 14px; + margin-top: 8px; + color: #888b94; +} +.nut-textarea-limit-disabled { + cursor: not-allowed; + color: #c2c4cc; +} +.nut-textarea-textarea { + outline: none; + display: block; + box-sizing: border-box; + width: 100%; + height: 40px; + min-width: 0; + margin: 0; + padding: 0; + font-size: 14px; + color: #1a1a1a; + caret-color: #ff0f23; + text-align: left; + background-color: transparent; + border: 0; + resize: none; +} +.nut-textarea-textarea .taro-textarea { + color: #1a1a1a; + background-color: transparent; + resize: none; +} +.nut-textarea-textarea::placeholder { + color: #888b94; +} +.nut-textarea-textarea-disabled { + cursor: not-allowed; + color: #c2c4cc; +} +.nut-textarea-textarea-disabled::placeholder { + color: #c2c4cc; +} +.nut-textarea-textarea-disabled .taro-textarea { + color: #c2c4cc; +} +.nut-textarea-textarea-disabled .taro-textarea::placeholder { + color: #c2c4cc; +} +.nut-textarea.nut-textarea-rtl-limit { + right: auto; + left: 15px; +} + +.taro-textarea { + background-color: transparent; + resize: none; +} \ No newline at end of file diff --git a/src/packages/timedetail/timedetail.harmony.css b/src/packages/timedetail/timedetail.harmony.css new file mode 100644 index 0000000000..f9826e1e3a --- /dev/null +++ b/src/packages/timedetail/timedetail.harmony.css @@ -0,0 +1,34 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-timedetail { + display: flex; + align-content: flex-start; + flex: 1; + min-width: 0; + flex-wrap: wrap; + padding: 0 0 50px 12px; +} +.nut-timedetail-item { + width: 100px; + height: 50px; + line-height: 50px; + text-align: center; + margin: 0 10px 10px 0; + background: #f2f3f5; + border-radius: 5px; + font-size: 14px; + border: 1px solid transparent; +} +.nut-timedetail-item.active { + background-color: #ffebf1; + border: 1px solid #ff0f23; + color: #ff0f23; + font-weight: 600; +} + +[dir=rtl] .nut-timedetail, +.nut-rtl .nut-timedetail { + padding: 0 12px 50px 0; +} \ No newline at end of file diff --git a/src/packages/timeselect/timeselect.harmony.css b/src/packages/timeselect/timeselect.harmony.css new file mode 100644 index 0000000000..1aa9cd99d9 --- /dev/null +++ b/src/packages/timeselect/timeselect.harmony.css @@ -0,0 +1,35 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-timeselect { + background-color: #ffffff; + display: flex; + flex-direction: column; + height: calc(100% - 50px); +} +.nut-timeselect-content { + display: flex; + flex: 1; +} +.nut-timeselect-content-left { + width: 140px; + min-width: 140px; + height: 100%; + overflow: auto; + background: #f7f8fc; +} + +.nut-timepannel { + padding: 0 16px; + height: 40px; + line-height: 40px; + text-align: start; + color: #505259; + font-size: 14px; +} +.nut-timepannel.active { + background: #ffffff; + color: #1a1a1a; + font-weight: 600; +} \ No newline at end of file diff --git a/src/packages/toast/toast.harmony.css b/src/packages/toast/toast.harmony.css new file mode 100644 index 0000000000..3784763877 --- /dev/null +++ b/src/packages/toast/toast.harmony.css @@ -0,0 +1,138 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +@keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +.nut-toast { + position: fixed; + left: 0; + top: 0; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 1300; +} +.nut-toast-overlay-default-taro { + /* #ifdef harmony */ + background-color: rgba(0, 0, 0, 0); + /* #endif */ + /* #ifndef harmony */ + /* #endif */ +} +.nut-toast-inner { + position: absolute; + top: 50%; + transform: translate(0, -50%); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + min-width: 96px; + max-width: 60%; + box-sizing: border-box; + font-size: 14px; + text-align: center; + padding: 13px 16px; + word-break: break-all; + background: rgba(0, 0, 0, 0.7); + border-radius: 12px; + color: #ffffff; +} +.nut-toast-inner-descrption { + max-width: 68.2%; +} +.nut-toast-inner-normal { + word-break: normal; + word-wrap: normal; +} +.nut-toast-inner-break-word { + word-break: normal; + word-wrap: break-word; +} +.nut-toast-inner-small { + font-size: 12px; +} +.nut-toast-inner-large { + font-size: 16px; +} +.nut-toast-center { + top: 48%; +} +.nut-toast-bottom { + top: 80%; +} +.nut-toast-top { + top: 20%; +} +.nut-toast-text { + color: #ffffff; + text-align: center; + line-height: 20px; +} +.nut-toast-title { + color: #ffffff; + font-size: 16px; + font-weight: 600; + text-align: center; + line-height: 22px; +} +.nut-toast .nut-icon { + width: 24px; + height: 24px; + color: #ffffff; +} +.nut-toast-icon-wrapper { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + margin: 3px 0 5px; + color: #ffffff; +} +.nut-toast-icon-wrapper-icon { + width: 24px; + height: 24px; +} +.nut-toast-rtl { + left: auto; + right: 0; +} +.nut-toast-rtl-inner { + left: auto; + right: 50%; +} + +[dir=rtl] .nut-toast, +.nut-rtl .nut-toast { + left: auto; + right: 0; +} +[dir=rtl] .nut-toast-inner, +.nut-rtl .nut-toast-inner { + left: auto; + right: 50%; +} + +.toast-fade-enter-active { + transition: opacity 0.3s; +} + +.toast-fade-leave-active { + transition: opacity 0.3s; +} + +.toast-fade-enter-from, +.toast-fade-leave-to { + opacity: 0; +} \ No newline at end of file diff --git a/src/packages/tour/tour.harmony.css b/src/packages/tour/tour.harmony.css new file mode 100644 index 0000000000..c3c56c6640 --- /dev/null +++ b/src/packages/tour/tour.harmony.css @@ -0,0 +1,82 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-tour-mask { + position: fixed; + box-shadow: 0px 0px 0px 150vh rgba(0, 0, 0, 0.7); + border-radius: 10px; + z-index: 999; +} +.nut-tour-mask-none { + box-shadow: none; +} +.nut-tour-mask-hidden { + opacity: 0; +} +.nut-tour-content { + display: block; + padding: 10px 12px; + min-width: 200px; + box-sizing: content-box; +} +.nut-tour-content-top { + display: block; + text-align: end; +} +.nut-tour-content-inner { + margin: 10px 0px; + font-size: 14px; + white-space: nowrap; +} +.nut-tour-content-bottom { + margin-top: 10px; + display: flex; + justify-content: space-between; +} +.nut-tour-content-bottom-operate { + display: flex; + justify-content: flex-end; +} +.nut-tour-content-bottom-operate-btn { + display: inline-block; + border: 1px solid #c2c4cc; + margin-left: 4px; + padding: 2px 4px; + font-size: 12px; + border-radius: 4px; + color: #505259; + cursor: pointer; +} +.nut-tour-content-bottom-operate-btn.active { + color: #fff; + border: 0; + background: #ff0f23; +} +.nut-tour-content-tile .nut-tour-content-inner { + margin: 0; +} +.nut-tour-masked { + position: fixed; + width: 100vh; + height: 100vh; + z-index: 1000; + top: 0; + left: 0; + background: transparent; +} + +[dir=rtl] .nut-tour-content-bottom-operate-btn { + margin-left: 0; + margin-right: 4px; +} + +.nut-rtl .nut-tour-content-bottom-operate-btn { + margin-left: 0; + margin-right: 4px; +} +[dir=rtl] .nut-tour-masked, +.nut-rtl .nut-tour-masked { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/trendarrow/trendarrow.harmony.css b/src/packages/trendarrow/trendarrow.harmony.css new file mode 100644 index 0000000000..8e1e080aef --- /dev/null +++ b/src/packages/trendarrow/trendarrow.harmony.css @@ -0,0 +1,42 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-trendarrow { + display: flex; + flex-direction: row; + align-items: center; + color: #1a1a1a; + font-size: 14px; +} +.nut-trendarrow-icon-before { + margin-right: 4px; +} +.nut-trendarrow-icon-after { + margin-left: 4px; +} +.nut-trendarrow-rate { + vertical-align: middle; + display: inline; +} +.nut-trendarrow .nut-icon { + vertical-align: middle; +} + +[dir=rtl] .nut-trendarrow-icon-before { + margin-right: 0; + margin-left: 4px; +} + +.nut-rtl .nut-trendarrow-icon-before { + margin-right: 0; + margin-left: 4px; +} +[dir=rtl] .nut-trendarrow-icon-after { + margin-left: 0; + margin-right: 4px; +} +.nut-rtl .nut-trendarrow-icon-after { + margin-left: 0; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/packages/uploader/uploader.harmony.css b/src/packages/uploader/uploader.harmony.css new file mode 100644 index 0000000000..b005793638 --- /dev/null +++ b/src/packages/uploader/uploader.harmony.css @@ -0,0 +1,241 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-uploader { + position: relative; + display: flex; + flex-wrap: wrap; +} +.nut-uploader-slot { + position: relative; +} +.nut-uploader-upload { + position: relative; + display: flex; + align-items: center; + justify-content: center; + background: #f2f3f5; + width: 100px; + height: 100px; + border: 0px; + border-radius: 4px; +} +.nut-uploader-icon { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #888b94; +} +.nut-uploader-icon i { + color: #888b94; + margin-bottom: 6px; +} +.nut-uploader-icon .nut-icon { + color: #888b94; + margin-bottom: 6px; +} +.nut-uploader-icon-tip { + font-size: 12px; +} +.nut-uploader-input { + position: absolute !important; + top: 0; + left: 0; + width: 100% !important; + height: 100% !important; + overflow: hidden; + cursor: pointer; + opacity: 0; +} +.nut-uploader-input:disabled { + cursor: not-allowed; +} +.nut-uploader-upload-disabled { + background: #f2f3f5; + color: #c2c4cc; +} +.nut-uploader-upload-disabled .nut-uploader-icon i { + color: #c2c4cc; + margin-bottom: 6px; +} +.nut-uploader-upload-disabled .nut-uploader-icon .nut-icon { + color: #c2c4cc; + margin-bottom: 6px; +} +.nut-uploader-preview { + position: relative; + margin-right: 10px; + margin-bottom: 10px; + border-radius: 4px; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.1); +} +.nut-uploader-preview-progress { + position: absolute; + left: 0; + top: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); + border-radius: 4px; +} +.nut-uploader-preview-progress i { + margin-bottom: 6px; +} +.nut-uploader-preview-progress-msg { + color: #888b94; + font-size: 12px; +} +.nut-uploader-preview.list { + width: 100%; + margin-right: 0px; + margin-bottom: 0px; + margin-top: 10px; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.01); +} +.nut-uploader-preview-list { + width: 100%; + height: 32px; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 10px; + background-color: #f7f8fc; +} +.nut-uploader-preview-list .nut-uploader-preview-img-file-name { + display: flex; + align-items: center; + -webkit-line-clamp: 1; + padding: 2px; + height: 24px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.nut-uploader-preview-list .nut-progress { + position: absolute; + left: 0; + right: 0; + bottom: 0; +} +.nut-uploader-preview-list .nut-progress .nut-progress-outer { + height: 2px !important; +} +.nut-uploader-preview .close { + position: absolute; + right: 0px; + top: 0px; + transform: translate(50%, -50%); + z-index: 1; +} +.nut-uploader-preview-img { + position: relative; + width: 100px; + height: 100px; + border-radius: 4px; + overflow: hidden; +} +.nut-uploader-preview-img i { + color: #1a1a1a; +} +.nut-uploader-preview-img .tips { + position: absolute; + bottom: 0; + left: 0; + font-size: 12px; + color: #ffffff; + text-align: center; + box-sizing: border-box; + height: 24px; + line-height: 24px; + border-radius: 4px; + border-top-left-radius: 0; + border-top-right-radius: 0; + padding: 0 5px; + background: rgba(0, 0, 0, 0.4); + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.nut-uploader-preview-img-c { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + position: initial; + border-radius: 4px; +} +.nut-uploader-preview-img-file { + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s; +} +.nut-uploader-preview-img-file-name { + display: flex; + width: 90%; + font-size: 12px; + color: #505259; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + word-break: break-all; +} +.nut-uploader-preview-img-file-name.error { + color: red !important; +} +.nut-uploader-preview-img-file-name.success { + color: #1890ff !important; +} +.nut-uploader-preview-img-file-name .nut-icon-Link { + flex-shrink: 0; +} + +[dir=rtl] .nut-uploader-input, +.nut-rtl .nut-uploader-input { + left: auto; + right: 0; +} +[dir=rtl] .nut-uploader-preview { + margin-right: 0; + margin-left: 10px; +} +.nut-rtl .nut-uploader-preview { + margin-right: 0; + margin-left: 10px; +} +[dir=rtl] .nut-uploader-preview-progress, +.nut-rtl .nut-uploader-preview-progress { + left: auto; + right: 0; +} +[dir=rtl] .nut-uploader-preview.list, +.nut-rtl .nut-uploader-preview.list { + margin-right: 0; + margin-left: 0px; +} +[dir=rtl] .nut-uploader-preview .close { + right: auto; + left: 0px; + transform: translate(-50%, -50%); +} +.nut-rtl .nut-uploader-preview .close { + right: auto; + left: 0px; + transform: translate(-50%, -50%); +} +[dir=rtl] .nut-uploader-preview-img .tips, +.nut-rtl .nut-uploader-preview-img .tips { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/src/packages/video/video.harmony.css b/src/packages/video/video.harmony.css new file mode 100644 index 0000000000..fd70592a8c --- /dev/null +++ b/src/packages/video/video.harmony.css @@ -0,0 +1,22 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-video { + width: 100%; + height: 100%; + position: relative; + display: flex; +} +.nut-video-player { + width: 100%; + background: #000; +} +.nut-video-player:focus { + outline: none; +} +.nut-video video { + width: 100%; + height: 100%; + object-fit: fill; +} \ No newline at end of file diff --git a/src/packages/virtuallist/virtuallist.harmony.css b/src/packages/virtuallist/virtuallist.harmony.css new file mode 100644 index 0000000000..7e6a732aad --- /dev/null +++ b/src/packages/virtuallist/virtuallist.harmony.css @@ -0,0 +1,74 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-horizontal-items { + float: left; +} +.nut-horizontal-items li { + display: block; + float: left; + color: #1a1a1a; + background: #ffffff; + padding: 10px; + margin-right: 20px; +} +.nut-horizontal-items:after { + content: ""; + display: block; + visibility: hidden; + clear: both; +} + +.nut-vertical-items li { + display: block; + color: #1a1a1a; + background: #ffffff; + border-radius: 7px; + box-shadow: 0 1px 6px 0 rgb(237, 238, 241); + margin-top: 20px; + padding: 14px 15px; + font-size: 13px; + line-height: 18px; + font-family: PingFangSC; + font-weight: 500; +} + +.nut-virtualList-box { + overflow: auto; +} + +.nut-virtuallist { + width: 100%; + overflow: scroll; + position: relative; + -webkit-overflow-scrolling: touch; +} +.nut-virtuallist-phantom { + position: absolute; + left: 0; + top: 0; + right: 0; + z-index: -1; +} +.nut-virtuallist-container { + position: absolute; + left: 0; + right: 0; + top: 0; +} +.nut-virtuallist-item { + overflow: hidden; + margin: 0 0 10px 0; +} + +[dir=rtl] .nut-horizontal-items, +.nut-rtl .nut-horizontal-items { + float: right; +} +[dir=rtl] .nut-horizontal-items li, +.nut-rtl .nut-horizontal-items li { + float: right; + margin-right: 0; + margin-left: 20px; +} \ No newline at end of file diff --git a/src/packages/watermark/watermark.harmony.css b/src/packages/watermark/watermark.harmony.css new file mode 100644 index 0000000000..368716d563 --- /dev/null +++ b/src/packages/watermark/watermark.harmony.css @@ -0,0 +1,17 @@ +/* #ifdef harmony */ +/* #endif */ +/* #ifndef harmony */ +/* #endif */ +.nut-watermark { + position: absolute; + z-index: 1200; + left: 0; + right: 0; + top: 0; + bottom: 0; + pointer-events: none; + background-repeat: repeat; +} +.nut-watermark-full-page { + position: fixed; +} \ No newline at end of file diff --git a/vite.config.site.taro.ts b/vite.config.site.taro.mts similarity index 100% rename from vite.config.site.taro.ts rename to vite.config.site.taro.mts From 35317f6eceb354c0fb9be694c1712cf54042859d Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 26 Feb 2025 10:19:15 +0800 Subject: [PATCH 37/40] chore: remove harmony.css files --- .../actionsheet/actionsheet.harmony.css | 90 ---- src/packages/address/address.harmony.css | 52 -- src/packages/animate/animate.harmony.css | 236 --------- .../animatingnumbers.harmony.css | 4 - src/packages/audio/audio.harmony.css | 75 --- src/packages/avatar/avatar.harmony.css | 64 --- .../avatarcropper/avatarcropper.harmony.css | 135 ------ .../avatargroup/avatargroup.harmony.css | 24 - src/packages/backtop/backtop.harmony.css | 21 - src/packages/badge/badge.harmony.css | 114 ----- src/packages/barrage/barrage.harmony.css | 84 ---- src/packages/button/button.harmony.css | 453 ------------------ src/packages/calendar/calendar.harmony.css | 216 --------- .../calendarcard/calendarcard.harmony.css | 186 ------- .../calendaritem/calendaritem.harmony.css | 4 - src/packages/card/card.harmony.css | 82 ---- src/packages/cascader/cascader.harmony.css | 70 --- src/packages/cell/cell.harmony.css | 91 ---- src/packages/cellgroup/cellgroup.harmony.css | 31 -- src/packages/checkbox/checkbox.harmony.css | 165 ------- .../checkboxgroup/checkboxgroup.harmony.css | 67 --- .../circleprogress/circleprogress.harmony.css | 31 -- src/packages/col/col.harmony.css | 360 -------------- src/packages/collapse/collapse.harmony.css | 4 - .../collapseitem/collapseitem.harmony.css | 104 ---- .../configprovider/configprovider.harmony.css | 4 - src/packages/countdown/countdown.harmony.css | 113 ----- .../datepicker/datepicker.harmony.css | 4 - src/packages/dialog/dialog.harmony.css | 169 ------- src/packages/divider/divider.harmony.css | 72 --- src/packages/drag/drag.harmony.css | 18 - src/packages/elevator/elevator.harmony.css | 127 ----- src/packages/ellipsis/ellipsis.harmony.css | 24 - src/packages/empty/empty.harmony.css | 59 --- src/packages/fixednav/fixednav.harmony.css | 187 -------- src/packages/form/form.harmony.css | 70 --- src/packages/formitem/formitem.harmony.css | 108 ----- src/packages/grid/grid.harmony.css | 21 - src/packages/griditem/griditem.harmony.css | 111 ----- .../hoverbutton/hoverbutton.harmony.css | 25 - .../hoverbuttonitem.harmony.css | 60 --- src/packages/image/image.harmony.css | 54 --- .../imagepreview/imagepreview.harmony.css | 101 ---- src/packages/indicator/indicator.harmony.css | 162 ------- .../infiniteloading.harmony.css | 63 --- src/packages/input/input.harmony.css | 54 --- .../inputnumber/inputnumber.harmony.css | 61 --- src/packages/layout/layout.harmony.css | 4 - src/packages/loading/loading.harmony.css | 45 -- src/packages/lottie/lottie.harmony.css | 4 - src/packages/menu/menu.harmony.css | 56 --- src/packages/menuitem/menuitem.harmony.css | 122 ----- src/packages/navbar/navbar.harmony.css | 106 ---- src/packages/noticebar/noticebar.harmony.css | 194 -------- src/packages/notify/notify.harmony.css | 90 ---- .../numberkeyboard/numberkeyboard.harmony.css | 129 ----- src/packages/overlay/overlay.harmony.css | 63 --- .../pagination/pagination.harmony.css | 139 ------ src/packages/picker/picker.harmony.css | 168 ------- .../pickerview/pickerview.harmony.css | 83 ---- src/packages/popover/popover.harmony.css | 294 ------------ src/packages/popup/popup.harmony.css | 363 -------------- src/packages/price/price.harmony.css | 96 ---- src/packages/progress/progress.harmony.css | 77 --- .../pulltorefresh/pulltorefresh.harmony.css | 43 -- src/packages/radio/radio.harmony.css | 93 ---- .../radiogroup/radiogroup.harmony.css | 49 -- src/packages/range/range.harmony.css | 271 ----------- src/packages/rate/rate.harmony.css | 168 ------- .../resultpage/resultpage.harmony.css | 50 -- src/packages/row/row.harmony.css | 54 --- src/packages/safearea/safearea.harmony.css | 14 - src/packages/searchbar/searchbar.harmony.css | 269 ----------- src/packages/segmented/segmented.harmony.css | 42 -- .../shortpassword/shortpassword.harmony.css | 123 ----- src/packages/sidebar/sidebar.harmony.css | 63 --- .../sidebaritem/sidebaritem.harmony.css | 19 - .../sidenavbar/sidenavbar.harmony.css | 74 --- .../sidenavbaritem/sidenavbaritem.harmony.css | 14 - src/packages/signature/signature.harmony.css | 22 - src/packages/skeleton/skeleton.harmony.css | 79 --- src/packages/space/space.harmony.css | 83 ---- src/packages/step/step.harmony.css | 201 -------- src/packages/steps/steps.harmony.css | 12 - src/packages/sticky/sticky.harmony.css | 7 - .../subsidenavbar/subsidenavbar.harmony.css | 20 - src/packages/swipe/swipe.harmony.css | 33 -- src/packages/swiper/swiper.harmony.css | 68 --- .../swiperitem/swiperitem.harmony.css | 7 - src/packages/switch/switch.harmony.css | 91 ---- src/packages/tabbar/tabbar.harmony.css | 50 -- .../tabbaritem/tabbaritem.harmony.css | 59 --- src/packages/table/table.harmony.css | 230 --------- src/packages/tabpane/tabpane.harmony.css | 18 - src/packages/tabs/tabs.harmony.css | 325 ------------- src/packages/tag/tag.harmony.css | 73 --- src/packages/textarea/textarea.harmony.css | 79 --- .../timedetail/timedetail.harmony.css | 34 -- .../timeselect/timeselect.harmony.css | 35 -- src/packages/toast/toast.harmony.css | 138 ------ src/packages/tour/tour.harmony.css | 82 ---- .../trendarrow/trendarrow.harmony.css | 42 -- src/packages/uploader/uploader.harmony.css | 241 ---------- src/packages/video/video.harmony.css | 22 - .../virtuallist/virtuallist.harmony.css | 74 --- src/packages/watermark/watermark.harmony.css | 17 - 106 files changed, 9951 deletions(-) delete mode 100644 src/packages/actionsheet/actionsheet.harmony.css delete mode 100644 src/packages/address/address.harmony.css delete mode 100644 src/packages/animate/animate.harmony.css delete mode 100644 src/packages/animatingnumbers/animatingnumbers.harmony.css delete mode 100644 src/packages/audio/audio.harmony.css delete mode 100644 src/packages/avatar/avatar.harmony.css delete mode 100644 src/packages/avatarcropper/avatarcropper.harmony.css delete mode 100644 src/packages/avatargroup/avatargroup.harmony.css delete mode 100644 src/packages/backtop/backtop.harmony.css delete mode 100644 src/packages/badge/badge.harmony.css delete mode 100644 src/packages/barrage/barrage.harmony.css delete mode 100644 src/packages/button/button.harmony.css delete mode 100644 src/packages/calendar/calendar.harmony.css delete mode 100644 src/packages/calendarcard/calendarcard.harmony.css delete mode 100644 src/packages/calendaritem/calendaritem.harmony.css delete mode 100644 src/packages/card/card.harmony.css delete mode 100644 src/packages/cascader/cascader.harmony.css delete mode 100644 src/packages/cell/cell.harmony.css delete mode 100644 src/packages/cellgroup/cellgroup.harmony.css delete mode 100644 src/packages/checkbox/checkbox.harmony.css delete mode 100644 src/packages/checkboxgroup/checkboxgroup.harmony.css delete mode 100644 src/packages/circleprogress/circleprogress.harmony.css delete mode 100644 src/packages/col/col.harmony.css delete mode 100644 src/packages/collapse/collapse.harmony.css delete mode 100644 src/packages/collapseitem/collapseitem.harmony.css delete mode 100644 src/packages/configprovider/configprovider.harmony.css delete mode 100644 src/packages/countdown/countdown.harmony.css delete mode 100644 src/packages/datepicker/datepicker.harmony.css delete mode 100644 src/packages/dialog/dialog.harmony.css delete mode 100644 src/packages/divider/divider.harmony.css delete mode 100644 src/packages/drag/drag.harmony.css delete mode 100644 src/packages/elevator/elevator.harmony.css delete mode 100644 src/packages/ellipsis/ellipsis.harmony.css delete mode 100644 src/packages/empty/empty.harmony.css delete mode 100644 src/packages/fixednav/fixednav.harmony.css delete mode 100644 src/packages/form/form.harmony.css delete mode 100644 src/packages/formitem/formitem.harmony.css delete mode 100644 src/packages/grid/grid.harmony.css delete mode 100644 src/packages/griditem/griditem.harmony.css delete mode 100644 src/packages/hoverbutton/hoverbutton.harmony.css delete mode 100644 src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css delete mode 100644 src/packages/image/image.harmony.css delete mode 100644 src/packages/imagepreview/imagepreview.harmony.css delete mode 100644 src/packages/indicator/indicator.harmony.css delete mode 100644 src/packages/infiniteloading/infiniteloading.harmony.css delete mode 100644 src/packages/input/input.harmony.css delete mode 100644 src/packages/inputnumber/inputnumber.harmony.css delete mode 100644 src/packages/layout/layout.harmony.css delete mode 100644 src/packages/loading/loading.harmony.css delete mode 100644 src/packages/lottie/lottie.harmony.css delete mode 100644 src/packages/menu/menu.harmony.css delete mode 100644 src/packages/menuitem/menuitem.harmony.css delete mode 100644 src/packages/navbar/navbar.harmony.css delete mode 100644 src/packages/noticebar/noticebar.harmony.css delete mode 100644 src/packages/notify/notify.harmony.css delete mode 100644 src/packages/numberkeyboard/numberkeyboard.harmony.css delete mode 100644 src/packages/overlay/overlay.harmony.css delete mode 100644 src/packages/pagination/pagination.harmony.css delete mode 100644 src/packages/picker/picker.harmony.css delete mode 100644 src/packages/pickerview/pickerview.harmony.css delete mode 100644 src/packages/popover/popover.harmony.css delete mode 100644 src/packages/popup/popup.harmony.css delete mode 100644 src/packages/price/price.harmony.css delete mode 100644 src/packages/progress/progress.harmony.css delete mode 100644 src/packages/pulltorefresh/pulltorefresh.harmony.css delete mode 100644 src/packages/radio/radio.harmony.css delete mode 100644 src/packages/radiogroup/radiogroup.harmony.css delete mode 100644 src/packages/range/range.harmony.css delete mode 100644 src/packages/rate/rate.harmony.css delete mode 100644 src/packages/resultpage/resultpage.harmony.css delete mode 100644 src/packages/row/row.harmony.css delete mode 100644 src/packages/safearea/safearea.harmony.css delete mode 100644 src/packages/searchbar/searchbar.harmony.css delete mode 100644 src/packages/segmented/segmented.harmony.css delete mode 100644 src/packages/shortpassword/shortpassword.harmony.css delete mode 100644 src/packages/sidebar/sidebar.harmony.css delete mode 100644 src/packages/sidebaritem/sidebaritem.harmony.css delete mode 100644 src/packages/sidenavbar/sidenavbar.harmony.css delete mode 100644 src/packages/sidenavbaritem/sidenavbaritem.harmony.css delete mode 100644 src/packages/signature/signature.harmony.css delete mode 100644 src/packages/skeleton/skeleton.harmony.css delete mode 100644 src/packages/space/space.harmony.css delete mode 100644 src/packages/step/step.harmony.css delete mode 100644 src/packages/steps/steps.harmony.css delete mode 100644 src/packages/sticky/sticky.harmony.css delete mode 100644 src/packages/subsidenavbar/subsidenavbar.harmony.css delete mode 100644 src/packages/swipe/swipe.harmony.css delete mode 100644 src/packages/swiper/swiper.harmony.css delete mode 100644 src/packages/swiperitem/swiperitem.harmony.css delete mode 100644 src/packages/switch/switch.harmony.css delete mode 100644 src/packages/tabbar/tabbar.harmony.css delete mode 100644 src/packages/tabbaritem/tabbaritem.harmony.css delete mode 100644 src/packages/table/table.harmony.css delete mode 100644 src/packages/tabpane/tabpane.harmony.css delete mode 100644 src/packages/tabs/tabs.harmony.css delete mode 100644 src/packages/tag/tag.harmony.css delete mode 100644 src/packages/textarea/textarea.harmony.css delete mode 100644 src/packages/timedetail/timedetail.harmony.css delete mode 100644 src/packages/timeselect/timeselect.harmony.css delete mode 100644 src/packages/toast/toast.harmony.css delete mode 100644 src/packages/tour/tour.harmony.css delete mode 100644 src/packages/trendarrow/trendarrow.harmony.css delete mode 100644 src/packages/uploader/uploader.harmony.css delete mode 100644 src/packages/video/video.harmony.css delete mode 100644 src/packages/virtuallist/virtuallist.harmony.css delete mode 100644 src/packages/watermark/watermark.harmony.css diff --git a/src/packages/actionsheet/actionsheet.harmony.css b/src/packages/actionsheet/actionsheet.harmony.css deleted file mode 100644 index f41f16a46c..0000000000 --- a/src/packages/actionsheet/actionsheet.harmony.css +++ /dev/null @@ -1,90 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-actionsheet { - text-align: center; -} -.nut-actionsheet.nut-popup { - min-height: 10%; - background-color: #ffffff; -} -.nut-actionsheet .nut-popup-title { - border-bottom: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-actionsheet-list { - display: block; - list-style: none; - padding: 0; - margin: 0; - border-radius: 0; -} -.nut-actionsheet-cancel { - display: block; - padding: 10px; - text-align: center; - line-height: 24px; - font-size: 14px; - color: #1a1a1a; - cursor: pointer; -} -.nut-actionsheet-item { - display: block; - padding: 10px; - text-align: center; - line-height: 24px; - font-size: 14px; - color: #1a1a1a; - cursor: pointer; -} -.nut-actionsheet-cancel-name { - text-align: center; - line-height: 24px; - font-size: 14px; - color: #1a1a1a; -} -.nut-actionsheet-item-name { - text-align: center; - line-height: 24px; - font-size: 14px; - color: #1a1a1a; -} -.nut-actionsheet-cancel-description { - display: block; - font-size: 12px; - color: #505259; - text-align: center; - line-height: 24px; -} -.nut-actionsheet-item-description { - display: block; - font-size: 12px; - color: #505259; - text-align: center; - line-height: 24px; -} -.nut-actionsheet-cancel-danger { - color: #ff0f23; -} -.nut-actionsheet-item-danger { - color: #ff0f23; -} -.nut-actionsheet-cancel-disabled { - color: #c2c4cc !important; - cursor: not-allowed; -} -.nut-actionsheet-item-disabled { - color: #c2c4cc !important; - cursor: not-allowed; -} -.nut-actionsheet-cancel { - margin-top: 5px; - border-top: 1px solid rgba(0, 0, 0, 0.06); - border-radius: 0; -} -.nut-actionsheet-safe-area { - display: block; - width: 100%; - padding-bottom: constant(safe-area-inset-bottom); - padding-bottom: env(safe-area-inset-bottom); -} \ No newline at end of file diff --git a/src/packages/address/address.harmony.css b/src/packages/address/address.harmony.css deleted file mode 100644 index 79bb00f713..0000000000 --- a/src/packages/address/address.harmony.css +++ /dev/null @@ -1,52 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-address-elevator { - display: flex; - margin-top: 20px; -} -.nut-address-exist { - display: block; - padding: 15px 20px 0; - height: 279px; - overflow-y: auto; - box-sizing: border-box; -} -.nut-address-exist-item { - display: flex; - align-items: center; - margin-bottom: 20px; - font-size: 12px; - line-height: 14px; - color: #1a1a1a; -} -.nut-address-exist-item.active { - font-weight: 600; -} -.nut-address-exist-item-info { - margin-left: 9px; -} -.nut-address-footer { - width: 100%; - height: 54px; - padding: 6px 0px 0; - border-top: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-address-footer-btn { - width: 90%; - height: 42px; - line-height: 42px; - margin: auto; - text-align: center; - background: linear-gradient(90deg, #ff475d 0%, #ff0f23 100%); - border-radius: 21px; - font-size: 15px; - color: #ffffff; -} - -[dir=rtl] .nut-address-exist-item-info, -.nut-rtl .nut-address-exist-item-info { - margin-left: 0; - margin-right: 9px; -} \ No newline at end of file diff --git a/src/packages/animate/animate.harmony.css b/src/packages/animate/animate.harmony.css deleted file mode 100644 index 11c8b2384d..0000000000 --- a/src/packages/animate/animate.harmony.css +++ /dev/null @@ -1,236 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-animate { - /* Animation CSS */ - /* Slide Animations */ - /* Shake Animation */ - /* Ripple Animation */ - /* Breath Animation */ - /* Twinkle Animation */ - /* Flicker Animation */ - /* Jump Animation */ - /* Float Animation */ - /* Loop Animation */ -} -.nut-animate [class*=nut-animate-] { - animation-duration: 0.5s; - animation-timing-function: ease-out; - animation-fill-mode: both; -} -@keyframes slide-right { - 0% { - opacity: 0; - transform: translateX(100%); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} -@keyframes slide-left { - 0% { - opacity: 0; - transform: translateX(-100%); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} -@keyframes slide-top { - 0% { - opacity: 0; - transform: translateY(-100%); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -@keyframes slide-bottom { - 0% { - opacity: 0; - transform: translateY(100%); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -.nut-animate .nut-animate-slide-right { - animation-name: slide-right; -} -.nut-animate .nut-animate-slide-left { - animation-name: slide-left; -} -.nut-animate .nut-animate-slide-top { - animation-name: slide-top; -} -.nut-animate .nut-animate-slide-bottom { - animation-name: slide-bottom; -} -@keyframes shake { - 0%, 100% { - transform: translateX(0); - } - 10% { - transform: translateX(-9px); - } - 20% { - transform: translateX(8px); - } - 30% { - transform: translateX(-7px); - } - 40% { - transform: translateX(6px); - } - 50% { - transform: translateX(-5px); - } - 60% { - transform: translateX(4px); - } - 70% { - transform: translateX(-3px); - } - 80% { - transform: translateX(2px); - } - 90% { - transform: translateX(-1px); - } -} -.nut-animate .nut-animate-shake { - animation-name: shake; -} -@keyframes ripple { - 0% { - transform: scale(1); - } - 50% { - transform: scale(1.1); - } -} -.nut-animate .nut-animate-ripple { - animation-name: ripple; -} -@keyframes breath { - 0%, 100% { - transform: scale(1); - } - 50% { - transform: scale(1.1); - } -} -.nut-animate .nut-animate-breath { - animation-name: breath; - animation-duration: 2700ms; - animation-timing-function: ease-in-out; - animation-direction: alternate; -} -.nut-animate .nut-animate-twinkle { - position: relative; -} -.nut-animate .nut-animate-twinkle::after, .nut-animate .nut-animate-twinkle::before { - width: 60px; - height: 60px; - content: ""; - box-sizing: border-box; - border: 4px solid rgba(255, 255, 255, 0.6); - position: absolute; - border-radius: 30px; - right: 50%; - margin-top: -30px; - margin-right: -30px; - z-index: 1; - transform: scale(0); - animation: twinkle 2s ease-out infinite; -} -.nut-animate .nut-animate-twinkle::after { - animation-delay: 0.4s; -} -@keyframes twinkle { - 0% { - transform: scale(0); - } - 20% { - opacity: 1; - } - 50%, 100% { - transform: scale(1.4); - opacity: 0; - } -} -.nut-animate .nut-animate-flicker { - position: relative; - overflow: hidden; -} -.nut-animate .nut-animate-flicker::after { - width: 100px; - height: 60px; - position: absolute; - left: 0; - top: 0; - opacity: 0.73; - content: ""; - background-image: linear-gradient(106deg, rgba(232, 224, 255, 0) 24%, #e8e0ff 91%); - animation: flicker 1.5s linear infinite; - transform: skewX(-20deg); - filter: blur(3px); -} -@keyframes flicker { - 0% { - transform: translateX(-100px) skewX(-20deg); - } - 40%, 100% { - transform: translateX(150px) skewX(-20deg); - } -} -@keyframes jump { - 0% { - transform: rotate(0) translateY(0); - } - 25% { - transform: rotate(10deg) translateY(20px); - } - 50% { - transform: rotate(0) translateY(-10px); - } - 75% { - transform: rotate(-10deg) translateY(20px); - } - 100% { - transform: rotate(0) translateY(0); - } -} -.nut-animate .nut-animate-jump { - transform-origin: center center; - animation: jump 0.7s linear; -} -@keyframes float-pop { - 0% { - top: 0; - } - 25% { - top: 1px; - } - 50% { - top: 4px; - } - 75% { - top: 1px; - } - 100% { - top: 0; - } -} -.nut-animate .nut-animate-float { - position: relative; - animation-name: float-pop; -} -.nut-animate .loop { - animation-iteration-count: infinite; -} \ No newline at end of file diff --git a/src/packages/animatingnumbers/animatingnumbers.harmony.css b/src/packages/animatingnumbers/animatingnumbers.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/animatingnumbers/animatingnumbers.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/audio/audio.harmony.css b/src/packages/audio/audio.harmony.css deleted file mode 100644 index 83d9878f96..0000000000 --- a/src/packages/audio/audio.harmony.css +++ /dev/null @@ -1,75 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-audio-icon { - position: relative; - display: inline-block; -} -.nut-audio-icon-box { - display: flex; - align-items: center; - justify-content: center; - width: 30px; - height: 30px; - background: #ffffff; - border-radius: 50%; - box-shadow: 0 0 8px #c2c4cc; -} -.nut-audio-icon .nut-audio-icon-stop { - position: relative; -} -.nut-audio-icon .nut-audio-icon-stop::after { - position: absolute; - left: 50%; - top: 50%; - transform: translateX(-50%); - content: ""; - height: 2px; - width: 30px; - background: #c2c4cc; - transform: rotate(45deg); - transform-origin: 8px -18px; -} -.nut-audio-progress { - display: flex; - align-items: center; - width: 100%; - margin: 0px auto; - padding: 10px 0; -} -.nut-audio-progress-bar-wrapper { - flex: 1; - margin: 0 10px; -} -.nut-audio-progress .time { - min-width: 50px; - font-size: 12px; - text-align: center; -} -.nut-audio-progress .nut-range-button { - width: 8px; - height: 8px; -} -.nut-audio .custom-button-group .nut-button-primary { - margin: 0 5px; -} -.nut-audio .custom-button-group-disable .nut-button-primary { - margin: 0 5px; - pointer-events: none; -} -.nut-audio .disable { - color: blue; -} -.nut-audio .nut-audio-none-container .nut-voice { - border: 1px solid #1a1a1a; - align-items: center; -} - -[dir=rtl] .nut-audio-icon .nut-audio-icon-stop::after, -.nut-rtl .nut-audio-icon .nut-audio-icon-stop::after { - left: auto; - right: 50%; - transform: rotate(-45deg); - transform-origin: 20px -18px; -} \ No newline at end of file diff --git a/src/packages/avatar/avatar.harmony.css b/src/packages/avatar/avatar.harmony.css deleted file mode 100644 index 11ac5cf917..0000000000 --- a/src/packages/avatar/avatar.harmony.css +++ /dev/null @@ -1,64 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-avatar { - position: relative; - flex: 0 0 auto; - display: flex; - justify-content: center; - align-items: center; - width: 40px; - height: 40px; -} -.nut-avatar-round { - border-radius: 999px; - overflow: hidden; -} -.nut-avatar-square { - border-radius: 5px; -} -.nut-avatar-first-child { - margin-left: 0; - margin-right: 0; -} -.nut-avatar-img { - width: 100%; - height: 100%; - flex-shrink: 0; - background-size: 100% 100%; - background-repeat: no-repeat; - background-position: center center; -} -.nut-avatar-icon { - background-size: 100% 100%; -} -.nut-avatar-text { - display: flex; - justify-content: center; - align-items: center; -} -.nut-avatar-large { - width: 60px; - height: 60px; -} -.nut-avatar-large-img { - width: 60px; - height: 60px; -} -.nut-avatar-large-icon { - width: 60px; - height: 60px; -} -.nut-avatar-large-text { - width: 60px; - height: 60px; -} -.nut-avatar-small { - width: 32px; - height: 32px; -} -.nut-avatar-small-text { - width: 32px; - height: 32px; -} \ No newline at end of file diff --git a/src/packages/avatarcropper/avatarcropper.harmony.css b/src/packages/avatarcropper/avatarcropper.harmony.css deleted file mode 100644 index 4797f354c6..0000000000 --- a/src/packages/avatarcropper/avatarcropper.harmony.css +++ /dev/null @@ -1,135 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-avatar-cropper { - position: relative; - display: flex; -} -.nut-avatar-cropper-edit-text { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.3); - z-index: 1; - color: #fff; - display: flex; - justify-content: center; - align-items: center; -} -.nut-avatar-cropper-input { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0; - cursor: pointer; - z-index: 2; -} -.nut-avatar-cropper-popup { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); - z-index: 1000; -} -.nut-avatar-cropper-popup-canvas, .nut-avatar-cropper-popup-cut-canvas { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 1; -} -.nut-avatar-cropper-popup-cut-canvas { - z-index: 0; -} -.nut-avatar-cropper-popup-toolbar { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - z-index: 2; -} -.nut-avatar-cropper-popup-toolbar.top { - top: 0; - bottom: inherit; -} -.nut-avatar-cropper-popup-toolbar-flex { - width: 100%; - display: flex; - justify-content: space-between; -} -.nut-avatar-cropper-popup-toolbar-item { - color: #fff; - padding: 15px; - cursor: pointer; - display: flex; - align-items: center; -} -.nut-avatar-cropper-popup-toolbar-item .nut-button { - color: #fff; -} -.nut-avatar-cropper-popup-highlight { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 1; - background-color: transparent; -} -.nut-avatar-cropper-popup-highlight .highlight { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - background-color: transparent; - box-shadow: 0 0 1000px 1000px rgba(0, 0, 0, 0.6); -} -.nut-avatar-cropper.round .nut-avatar-cropper-edit-text { - border-radius: 50%; -} - -[dir=rtl] .nut-avatar-cropper-edit-text, -.nut-rtl .nut-avatar-cropper-edit-text { - left: auto; - right: 0; -} -[dir=rtl] .nut-avatar-cropper-input, -.nut-rtl .nut-avatar-cropper-input { - left: auto; - right: 0; -} -[dir=rtl] .nut-avatar-cropper-popup, -.nut-rtl .nut-avatar-cropper-popup { - left: auto; - right: 0; -} -[dir=rtl] .nut-avatar-cropper-popup-canvas, [dir=rtl] .nut-avatar-cropper-popup-cut-canvas, -.nut-rtl .nut-avatar-cropper-popup-canvas, -.nut-rtl .nut-avatar-cropper-popup-cut-canvas { - left: auto; - right: 0; -} -[dir=rtl] .nut-avatar-cropper-popup-toolbar, -.nut-rtl .nut-avatar-cropper-popup-toolbar { - left: auto; - right: 0; -} -[dir=rtl] .nut-avatar-cropper-popup-highlight, -.nut-rtl .nut-avatar-cropper-popup-highlight { - left: auto; - right: 0; -} -[dir=rtl] .nut-avatar-cropper-popup-highlight .highlight, -.nut-rtl .nut-avatar-cropper-popup-highlight .highlight { - left: auto; - right: 50%; - transform: translate(50%, -50%); -} \ No newline at end of file diff --git a/src/packages/avatargroup/avatargroup.harmony.css b/src/packages/avatargroup/avatargroup.harmony.css deleted file mode 100644 index 494763635f..0000000000 --- a/src/packages/avatargroup/avatargroup.harmony.css +++ /dev/null @@ -1,24 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-avatar-group { - display: flex; - flex-direction: row; - flex: 0 0 auto; -} -.nut-avatar-group-avatar, -.nut-avatar-group .nut-avatar { - border: 1px solid #fff; - margin-left: -8px; -} -.nut-avatar-group-avatar:not(:first-of-type), -.nut-avatar-group .nut-avatar:not(:first-of-type) { - margin-left: -8px; -} - -[dir=rtl] .nut-avatar-group .nut-avatar:not(:first-of-type), -.nut-rtl .nut-avatar-group .nut-avatar:not(:first-of-type) { - margin-left: 0; - margin-right: -8px; -} \ No newline at end of file diff --git a/src/packages/backtop/backtop.harmony.css b/src/packages/backtop/backtop.harmony.css deleted file mode 100644 index 854376293c..0000000000 --- a/src/packages/backtop/backtop.harmony.css +++ /dev/null @@ -1,21 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-backtop { - display: none; -} -.nut-backtop-show { - display: flex; - align-items: center; - justify-content: center; - width: 40px; - height: 40px; - transition: all 0.2s ease-in-out; -} -.nut-backtop-show .nut-hoverbutton-item-container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} \ No newline at end of file diff --git a/src/packages/badge/badge.harmony.css b/src/packages/badge/badge.harmony.css deleted file mode 100644 index 0ba97fb364..0000000000 --- a/src/packages/badge/badge.harmony.css +++ /dev/null @@ -1,114 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-badge { - position: relative; - display: inline-flex; - width: auto; -} -.nut-badge-icon { - display: flex; - justify-content: center; - align-items: center; - background: #ff0f23; - padding: 2px; - text-align: center; - z-index: 1; -} -.nut-badge-icon .nut-icon { - width: 10px; - height: 10px; - font-size: 10px; -} -.nut-badge-sup { - border-radius: 14px; -} -.nut-badge-icon { - border-radius: 14px; -} -.nut-badge-sup::after { - content: ""; - position: absolute; - top: -50%; - bottom: -50%; - left: -50%; - right: -50%; - transform: scale(0.5); - border: 1px solid #ffffff; - border-radius: 14px; -} -.nut-badge-icon::after { - content: ""; - position: absolute; - top: -50%; - bottom: -50%; - left: -50%; - right: -50%; - transform: scale(0.5); - border: 1px solid #ffffff; - border-radius: 14px; -} -.nut-badge-sup { - display: inline-flex; - justify-content: center; - height: 14px; - min-width: 6px; - padding: 1px 4px; - box-sizing: border-box; - color: #ffffff; - font-size: 10px; - line-height: 12px; - white-space: nowrap; - font-weight: normal; - vertical-align: middle; - background: #ff0f23; - z-index: 1; -} -.nut-badge-number { - font-family: "JD"; - /* #ifdef harmony */ - line-height: 12px; - /* #endif */ - /* #ifndef harmony */ - line-height: 13px; - /* #endif */ -} -.nut-badge-one { - height: 14px; - width: 14px; -} -.nut-badge-content { - position: absolute; - transform: translate(50%, -50%); -} -.nut-badge-dot { - padding: 0; - border-radius: 50%; -} -.nut-badge-dot::after { - border: 1px solid #ffffff; - border-radius: 50%; -} -.nut-badge-dot-normal { - min-width: 6px; - width: 6px; - height: 6px; -} -.nut-badge-dot-small { - min-width: 4px; - width: 4px; - height: 4px; -} -.nut-badge-dot-large { - min-width: 8px; - width: 8px; - height: 8px; -} -.nut-badge-outline { - background: #ffffff; - color: #ff0f23; -} -.nut-badge-outline::after { - border: 1px solid #ff0f23; -} \ No newline at end of file diff --git a/src/packages/barrage/barrage.harmony.css b/src/packages/barrage/barrage.harmony.css deleted file mode 100644 index 8abd2d7a6b..0000000000 --- a/src/packages/barrage/barrage.harmony.css +++ /dev/null @@ -1,84 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-barrage { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: hidden; - box-sizing: border-box; - background-color: #f2f3f5; - color: #1a1a1a; -} -.nut-barrage .barrage-item { - display: block; - position: absolute; - right: 0; - padding: 4px 16px; - border-radius: 16px; - font-size: 12px; - text-align: center; - white-space: pre; - transform: translateX(100%); - background: linear-gradient(to right, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0)); - box-sizing: border-box; -} -.nut-barrage .barrage-item.move { - will-change: transform; - animation-name: moving; - animation-timing-function: linear; - animation-play-state: running; -} -@keyframes moving { - from { - transform: translateX(100%); - } - to { - transform: undefined; - } -} -@-webkit-keyframes moving { - from { - -webkit-transform: translateX(100%); - } - to { - -webkit-transform: undefined; - } -} - -[dir=rtl] .nut-barrage, -.nut-rtl .nut-barrage { - left: auto; - right: 0; -} -[dir=rtl] .nut-barrage .barrage-item { - transform: translateX(-100%); - background: linear-gradient(to left, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0)); -} -.nut-rtl .nut-barrage .barrage-item { - transform: translateX(-100%); - background: linear-gradient(to left, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0)); -} -[dir=rtl] .nut-barrage .barrage-item.move, -.nut-rtl .nut-barrage .barrage-item.move { - animation-name: moving-rtl; -} -@keyframes moving-rtl { - from { - transform: undefined; - } - to { - transform: translateX(100%); - } -} -@-webkit-keyframes moving-rtl { - from { - transform: undefined; - } - to { - transform: translateX(100%); - } -} \ No newline at end of file diff --git a/src/packages/button/button.harmony.css b/src/packages/button/button.harmony.css deleted file mode 100644 index 195782d137..0000000000 --- a/src/packages/button/button.harmony.css +++ /dev/null @@ -1,453 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-button { - position: relative; - display: flex; - display: inline-block; - /* #ifdef harmony*/ - width: 80px; - /* #endif */ - /* #ifndef harmony*/ - width: auto; - /* #endif */ - flex-direction: row; - justify-content: center; - align-items: center; - flex-shrink: 0; - box-sizing: border-box; - margin: 0; - padding: 0; - height: 32px; - font-size: 14px; - font-weight: 400; - text-align: center; - cursor: pointer; - transition: opacity 0.2s; - user-select: none; - touch-action: manipulation; - -webkit-appearance: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - color: #1a1a1a; - background: transparent; - border-width: 0.5px; -} -.nut-button-text { - margin-left: 4px; -} -.nut-button-text-right { - margin-right: 4px; -} -.nut-button-children { - display: flex; - flex-direction: row; - background: transparent; -} -.nut-button::before { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.7); - border: inherit; - border-color: rgba(0, 0, 0, 0.7); - border-radius: inherit; - transform: translate(-50%, -50%); - opacity: 0; - content: " "; -} -.nut-button::after { - border: none; -} -.nut-button:active::before { - opacity: 0.1; -} -.nut-button-wrap { - height: 100%; - width: 100%; - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - /* #ifndef harmony */ - background: initial; - /* #endif */ -} -.nut-button-wrap .nut-icon { - font-size: 14px; - width: 14px; - height: 14px; -} -.nut-button-loading::before, .nut-button-disabled::before { - display: none; -} -.nut-button-disabled { - cursor: not-allowed; - color: #ffffff; -} -.nut-button.nut-button-icononly { - width: 32px; - padding: 0; -} -.nut-button-round { - border-radius: 6px; -} -.nut-button-round-xlarge { - border-radius: 8px; -} -.nut-button-round-large { - border-radius: 8px; -} -.nut-button-round-small { - border-radius: 6px; -} -.nut-button-round-mini { - border-radius: 4px; -} -.nut-button-default { - padding: 0px 12px; - border-style: solid; - border-color: #c2c4cc; -} -.nut-button-default-disabled { - color: #ffffff; - background: #c2c4cc; - border-color: #c2c4cc; -} -.nut-button-default-solid-disabled { - color: #ffffff; - background: #c2c4cc; - border-color: #c2c4cc; -} -.nut-button-default-none-disabled { - color: #888b94; -} -.nut-button-default-outline-disabled { - background: transparent; - color: #c2c4cc; - border-color: #c2c4cc; -} -.nut-button-default-dashed-disabled { - background: transparent; - color: #c2c4cc; - border-color: #c2c4cc; -} -.nut-button-normal { - padding: 0px 12px; -} -.nut-button-xlarge { - height: 48px; - padding: 0px 24px; - font-size: 18px; - border-radius: 8px; -} -.nut-button-xlarge .nut-button-text { - margin-left: 6px; -} -.nut-button-xlarge .nut-button-text-right { - margin-right: 6px; -} -.nut-button-xlarge .nut-icon { - font-size: 18px; - width: 18px; - height: 18px; -} -.nut-button-xlarge-children { - font-size: 18px; -} -.nut-button-large { - height: 40px; - padding: 0px 16px; - font-size: 16px; - border-radius: 6px; -} -.nut-button-large .nut-button-text { - margin-left: 6px; -} -.nut-button-large .nut-button-text-right { - margin-right: 6px; -} -.nut-button-large .nut-icon { - font-size: 16px; - width: 16px; - height: 16px; -} -.nut-button-large-children { - font-size: 16px; -} -.nut-button-small { - height: 28px; - padding: 0px 8px; - font-size: 12px; - border-radius: 4px; -} -.nut-button-small .nut-icon { - font-size: 12px; - width: 12px; - height: 12px; -} -.nut-button-small-children { - font-size: 12px; -} -.nut-button-mini { - height: 24px; - padding: 0px 8px; - font-size: 11px; - border-radius: 4px; -} -.nut-button-mini .nut-icon { - font-size: 11px; - width: 11px; - height: 11px; -} -.nut-button-mini-children { - font-size: 11px; -} -.nut-button-primary { - color: #ffffff; - background-origin: border-box; - border-color: transparent; -} -.nut-button-primary-children { - color: #ffffff; -} -.nut-button-primary-solid { - background: linear-gradient(90deg, #ff475d 0%, #ff0f23 100%); - color: #ffffff; - border-color: transparent; - font-weight: 600; -} -.nut-button-primary-solid.nut-button-small { - font-weight: 400; -} -.nut-button-primary-solid.nut-button-mini { - font-weight: 400; -} -.nut-button-primary-disabled { - color: #ffffff; - background: #ffadbe; - border-color: #ffadbe; -} -.nut-button-primary-solid-disabled { - color: #ffffff; - background: #ffadbe; - border-color: #ffadbe; -} -.nut-button-primary-none { - color: #ff0f23; -} -.nut-button-primary-none-disabled { - color: #ffadbe; -} -.nut-button-primary-outline { - color: #ff0f23; - border-color: #ff0f23; -} -.nut-button-primary-outline-disabled { - color: #ffadbe; - border-color: #ffadbe; -} -.nut-button-primary-dashed { - color: #ff0f23; - border-color: #ff0f23; -} -.nut-button-primary-dashed-disabled { - color: #ffadbe; - border-color: #ffadbe; -} -.nut-button-primary.nut-button-solid.nut-button-normal { - font-weight: 600; -} -.nut-button-success { - color: #ffffff; - background: #00d900; - background-origin: border-box; - border-color: transparent; -} -.nut-button-success-children { - color: #ffffff; -} -.nut-button-success-solid-disabled { - background: #b2f0ae; - border-color: #b2f0ae; -} -.nut-button-success-outline { - color: #00d900; - border-color: #00d900; -} -.nut-button-success-dashed { - color: #00d900; - border-color: #00d900; -} -.nut-button-success-outline-disabled { - color: #ffadbe; - border-color: #ffadbe; -} -.nut-button-success-dashed-disabled { - color: #ffadbe; - border-color: #ffadbe; -} -.nut-button-success-none { - color: #00d900; -} -.nut-button-success-none-disabled { - color: #b2f0ae; -} -.nut-button-info { - color: #ffffff; - background: #0073ff; - background-origin: border-box; - border-color: transparent; -} -.nut-button-info-children { - color: #ffffff; -} -.nut-button-info-solid-disabled { - background: #89a6f8; - border-color: #89a6f8; -} -.nut-button-info-outline { - color: #0073ff; - border-color: #0073ff; -} -.nut-button-info-dashed { - color: #0073ff; - border-color: #0073ff; -} -.nut-button-info-outline-disabled { - color: #89a6f8; - border-color: #89a6f8; -} -.nut-button-info-dashed-disabled { - color: #89a6f8; - border-color: #89a6f8; -} -.nut-button-info-none { - color: #0073ff; -} -.nut-button-info-none-disabled { - color: #89a6f8; -} -.nut-button-danger { - color: #ffffff; - background: #ff0f23; - background-origin: border-box; - border-color: transparent; -} -.nut-button-danger-children { - color: #ffffff; -} -.nut-button-danger-solid-disabled { - background: #ffadbe; - border-color: #ffadbe; -} -.nut-button-danger-outline { - color: #ff0f23; - border-color: #ff0f23; -} -.nut-button-danger-dashed { - color: #ff0f23; - border-color: #ff0f23; -} -.nut-button-danger-outline-disabled { - color: #ffadbe; - border-color: #ffadbe; -} -.nut-button-danger-dashed-disabled { - color: #ffadbe; - border-color: #ffadbe; -} -.nut-button-danger-none { - color: #ff0f23; -} -.nut-button-danger-none-disabled { - color: #ffadbe; -} -.nut-button-warning { - color: #ffffff; - background: #ffbf00; - background-origin: border-box; - border-color: transparent; -} -.nut-button-warning-children { - color: #ffffff; -} -.nut-button-warning-disabled { - color: #ffffff; - background: #fdd3b9; - border-color: #fdd3b9; -} -.nut-button-warning-solid-disabled { - color: #ffffff; - background: #fdd3b9; - border-color: #fdd3b9; -} -.nut-button-warning-outline { - color: #ffbf00; - border-color: #ffbf00; -} -.nut-button-warning-dashed { - color: #ffbf00; - border-color: #ffbf00; -} -.nut-button-warning-outline-disabled { - color: #fdd3b9; - border-color: #fdd3b9; -} -.nut-button-warning-dashed-disabled { - color: #fdd3b9; - border-color: #fdd3b9; -} -.nut-button-warning-none { - color: #ffbf00; -} -.nut-button-warning-none-disabled { - color: #fdd3b9; -} -.nut-button-block { - display: block; - width: 100%; -} -.nut-button-outline { - background: transparent; - border-style: solid; -} -.nut-button-dashed { - background: transparent; - border-style: dashed; -} -.nut-button-none { - background: transparent; - border-color: transparent; -} -.nut-button-loading { - cursor: default; - opacity: 0.9; -} -.nut-button-square { - border-radius: 0; -} - -[dir=rtl] .nut-button-text { - margin-left: 0; - margin-right: 4px; -} - -.nut-rtl .nut-button-text { - margin-left: 0; - margin-right: 4px; -} -[dir=rtl] .nut-button-text.right { - margin-left: 4px; -} -.nut-rtl .nut-button-text.right { - margin-left: 4px; -} -[dir=rtl] .nut-button::before, -.nut-rtl .nut-button::before { - left: auto; - right: 50%; - transform: translate(50%, -50%); -} \ No newline at end of file diff --git a/src/packages/calendar/calendar.harmony.css b/src/packages/calendar/calendar.harmony.css deleted file mode 100644 index 2c176b695d..0000000000 --- a/src/packages/calendar/calendar.harmony.css +++ /dev/null @@ -1,216 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-calendar { - position: relative; - display: flex; - flex-direction: column; - flex: 1; - font-size: 16px; - background-color: #ffffff; - color: #1a1a1a; - overflow: hidden; - height: 100%; -} -.nut-calendar.nut-calendar-title .nut-calendar-header .calendar-title { - font-size: 16px; -} -.nut-calendar .nut-calendar-taro { - height: 60vh; -} -.nut-calendar .popup-box { - height: 100%; -} -.nut-calendar ::-webkit-scrollbar { - display: none; -} -.nut-calendar-header { - display: flex; - flex-direction: column; - text-align: center; -} -.nut-calendar-header-buttons { - height: 24px; -} -.nut-calendar-title { - color: #1a1a1a; - font-size: 18px; - font-weight: 600; - line-height: 50px; -} -.nut-calendar-sub-title { - padding: 7px 0; - line-height: 22px; - font-size: 14px; -} -.nut-calendar-weeks { - display: flex; - align-items: center; - justify-content: space-around; - height: 36px; - border-radius: 0px 0px 12px 12px; - box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.06); -} -.nut-calendar-week-item:first-of-type { - color: #ff0f23; -} -.nut-calendar-week-item:last-of-type { - color: #ff0f23; -} -.nut-calendar-content { - flex: 1; - width: 100%; - display: block; - overflow-y: auto; -} -.nut-calendar-pannel { - position: relative; - width: 100%; - height: auto; - display: block; - box-sizing: border-box; -} -.nut-calendar-pannel .calendar-loading-tip { - height: 50px; - line-height: 50px; - text-align: center; - position: absolute; - top: -50px; - left: 0; - right: 0; - font-size: 12px; - color: #505259; -} -.nut-calendar-month { - display: flex; - flex-direction: column; - text-align: center; -} -.nut-calendar-month-title { - height: 23px; - line-height: 23px; - margin: 8px 0; -} -.nut-calendar-days { - overflow: hidden; -} -.nut-calendar-day { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - position: relative; - float: left; - width: 14.28%; - height: 60px; - font-weight: 600; - margin-bottom: 4px; -} -.nut-calendar-day:nth-child(7n+0) { - color: #ff0f23; -} -.nut-calendar-day:nth-child(7n+1) { - color: #ff0f23; -} -.nut-calendar-day-info, .nut-calendar-day-info-curr { - position: absolute; - bottom: 5px; - width: 100%; - font-size: 12px; - line-height: 14px; -} -.nut-calendar-day-info-top { - position: absolute; - width: 100%; - top: 5px; -} -.nut-calendar-day-info-bottom { - position: absolute; - width: 100%; - bottom: 5px; -} -.nut-calendar-day-active { - background-color: #ff0f23; - color: #ffffff !important; - border-radius: 4px; -} -.nut-calendar-day-active.active-start { - border-radius: 0px; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.nut-calendar-day-active.active-end { - border-radius: 0px; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.nut-calendar-day-active .nut-calendar-day-info { - color: #ffffff; -} -.nut-calendar-day-disabled { - color: #c2c4cc !important; -} -.nut-calendar-day-disabled .nut-calendar-day-info-curr { - display: none; -} -.nut-calendar-day-choose { - background-color: #ffebf1; - color: #ff0f23; -} -.nut-calendar-day-choose-disabled { - background-color: rgba(191, 191, 191, 0.09); - color: #c2c4cc !important; -} -.nut-calendar-day-choose-disabled .nut-calendar-day-info-curr { - display: none; -} -.nut-calendar-footer { - display: flex; - width: 100%; - flex-direction: column; - background-color: #ffffff; -} -.nut-calendar-footer .calendar-confirm-btn { - height: 40px; - line-height: 40px; - margin: 6px 16px; - text-align: center; - border-radius: 8px; - background: linear-gradient(90deg, #ff475d 0%, #ff0f23 100%); - color: #ffffff; - font-weight: 600; -} - -.nut-calendar-popup .nut-popup-title-right { - top: 7px !important; -} - -[dir=rtl] .nut-calendar-day, -.nut-rtl .nut-calendar-day { - float: right; -} -[dir=rtl] .nut-calendar-day-active.active-start { - border-top-left-radius: 0; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-bottom-right-radius: 4px; -} -.nut-rtl .nut-calendar-day-active.active-start { - border-top-left-radius: 0; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-bottom-right-radius: 4px; -} -[dir=rtl] .nut-calendar-day-active.active-end { - border-top-right-radius: 0; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 4px; -} -.nut-rtl .nut-calendar-day-active.active-end { - border-top-right-radius: 0; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 4px; -} \ No newline at end of file diff --git a/src/packages/calendarcard/calendarcard.harmony.css b/src/packages/calendarcard/calendarcard.harmony.css deleted file mode 100644 index c3fe789229..0000000000 --- a/src/packages/calendarcard/calendarcard.harmony.css +++ /dev/null @@ -1,186 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-calendarcard { - background: #ffffff; - border-radius: 12px; - overflow: hidden; - font-size: 16px; - color: #1a1a1a; -} -.nut-calendarcard-header { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - font-weight: normal; -} -.nut-calendarcard-header-left, .nut-calendarcard-header-right { - display: flex; - flex-direction: row; - cursor: pointer; - margin: 16px; - line-height: 1; -} -.nut-calendarcard-header-left .left, .nut-calendarcard-header-right .left { - margin-left: 8px; -} -.nut-calendarcard-header-left .right, .nut-calendarcard-header-right .right { - margin-right: 8px; -} -.nut-calendarcard-days { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; -} -.nut-calendarcard-day { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - position: relative; - width: 14.28%; - height: 48px; - cursor: pointer; - margin-bottom: 4px; - text-align: center; -} -.nut-calendarcard-day.header { - cursor: auto; -} -.nut-calendarcard-day-top, .nut-calendarcard-day-bottom { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 12px; - font-size: 12px; - line-height: 12px; -} -.nut-calendarcard-day.weekend { - color: #ff0f23; -} -.nut-calendarcard-day.active { - background-color: #ff0f23; - border-radius: 4px; -} -.nut-calendarcard-day.active .nut-calendarcard-day-top, -.nut-calendarcard-day.active .nut-calendarcard-day-inner, -.nut-calendarcard-day.active .nut-calendarcard-day-bottom { - color: #ffffff; -} -.nut-calendarcard-day.start { - background-color: #ff0f23; -} -.nut-calendarcard-day.end { - background-color: #ff0f23; -} -.nut-calendarcard-day.start .nut-calendarcard-day-top, -.nut-calendarcard-day.start .nut-calendarcard-day-inner, -.nut-calendarcard-day.start .nut-calendarcard-day-bottom, .nut-calendarcard-day.end .nut-calendarcard-day-top, -.nut-calendarcard-day.end .nut-calendarcard-day-inner, -.nut-calendarcard-day.end .nut-calendarcard-day-bottom { - color: #ffffff; -} -.nut-calendarcard-day.start { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.nut-calendarcard-day.end { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.nut-calendarcard-day.mid { - background-color: #ffebf1; -} -.nut-calendarcard-day.mid .nut-calendarcard-day-top { - color: #ff0f23; -} -.nut-calendarcard-day.mid .nut-calendarcard-day-inner { - color: #ff0f23; -} -.nut-calendarcard-day.mid .nut-calendarcard-day-bottom { - color: #ff0f23; -} -.nut-calendarcard-day .nut-calendar-day-info { - color: #ffffff; -} -.nut-calendarcard-day.prev, .nut-calendarcard-day.next, .nut-calendarcard-day.disabled { - cursor: not-allowed; -} -.nut-calendarcard-day.prev .nut-calendarcard-day-top { - color: #c2c4cc; -} -.nut-calendarcard-day.prev .nut-calendarcard-day-inner { - color: #c2c4cc; -} -.nut-calendarcard-day.prev .nut-calendarcard-day-bottom { - color: #c2c4cc; -} -.nut-calendarcard-day.next .nut-calendarcard-day-top { - color: #c2c4cc; -} -.nut-calendarcard-day.next .nut-calendarcard-day-inner { - color: #c2c4cc; -} -.nut-calendarcard-day.next .nut-calendarcard-day-bottom { - color: #c2c4cc; -} -.nut-calendarcard-day.disabled .nut-calendarcard-day-top { - color: #c2c4cc; -} -.nut-calendarcard-day.disabled .nut-calendarcard-day-inner { - color: #c2c4cc; -} -.nut-calendarcard-day.disabled .nut-calendarcard-day-bottom { - color: #c2c4cc; -} - -[dir=rtl] .nut-calendarcard-header-left .left, [dir=rtl] .nut-calendarcard-header-right .left, -.nut-rtl .nut-calendarcard-header-left .left, -.nut-rtl .nut-calendarcard-header-right .left { - margin-left: 0; - margin-right: 8px; -} -[dir=rtl] .nut-calendarcard-header-left .right, [dir=rtl] .nut-calendarcard-header-right .right, -.nut-rtl .nut-calendarcard-header-left .right, -.nut-rtl .nut-calendarcard-header-right .right { - margin-right: 0; - margin-left: 8px; -} -[dir=rtl] .nut-calendarcard-header-left .nut-icon-ArrowLeft, -[dir=rtl] .nut-calendarcard-header-left .nut-icon-ArrowRight, -[dir=rtl] .nut-calendarcard-header-left svg, [dir=rtl] .nut-calendarcard-header-right .nut-icon-ArrowLeft, -[dir=rtl] .nut-calendarcard-header-right .nut-icon-ArrowRight, -[dir=rtl] .nut-calendarcard-header-right svg, -.nut-rtl .nut-calendarcard-header-left .nut-icon-ArrowLeft, -.nut-rtl .nut-calendarcard-header-left .nut-icon-ArrowRight, -.nut-rtl .nut-calendarcard-header-left svg, -.nut-rtl .nut-calendarcard-header-right .nut-icon-ArrowLeft, -.nut-rtl .nut-calendarcard-header-right .nut-icon-ArrowRight, -.nut-rtl .nut-calendarcard-header-right svg { - transform: rotate(180deg); -} -[dir=rtl] .nut-calendarcard-day.start, [dir=rtl] .nut-calendarcard-day.end, -.nut-rtl .nut-calendarcard-day.start, -.nut-rtl .nut-calendarcard-day.end { - border-radius: 0; -} -[dir=rtl] .nut-calendarcard-day.start { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.nut-rtl .nut-calendarcard-day.start { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -[dir=rtl] .nut-calendarcard-day.end { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.nut-rtl .nut-calendarcard-day.end { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} \ No newline at end of file diff --git a/src/packages/calendaritem/calendaritem.harmony.css b/src/packages/calendaritem/calendaritem.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/calendaritem/calendaritem.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/card/card.harmony.css b/src/packages/card/card.harmony.css deleted file mode 100644 index f722a5286a..0000000000 --- a/src/packages/card/card.harmony.css +++ /dev/null @@ -1,82 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-card { - width: 100%; - display: flex; - background-color: inherit; - border-radius: 4px; -} -.nut-card-left { - width: 120px; - height: 120px; - flex-shrink: 0; -} -.nut-card-left > img { - display: block; - width: 100%; - height: 100%; - border-radius: 4px; -} -.nut-card-right { - flex: 1; - padding: 0 10px 8px; -} -.nut-card-right-title { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; - word-break: break-all; - line-height: 1.5; - font-size: 14px; - color: #1a1a1a; -} -.nut-card-right-price { - display: flex; - align-items: center; - height: 18px; - line-height: 18px; - margin-top: 9px; -} -.nut-card-right-price-origin.nut-price { - margin-left: 2px; -} -.nut-card-right-price-origin.nut-price .nut-price-symbol, -.nut-card-right-price-origin.nut-price .nut-price-integer, -.nut-card-right-price-origin.nut-price .nut-price-decimal { - color: #d2a448; -} -.nut-card-right-other { - display: flex; - align-items: center; - padding: 5px 0 2px; -} -.nut-card-right-other .nut-tag { - padding: 0 2px; - margin-right: 5px; - font-size: 11px; -} -.nut-card-right-shop { - display: flex; - justify-content: space-between; - align-items: center; -} -.nut-card-right-shop-name { - line-height: 1.5; - color: #505259; - font-size: 12px; - padding-top: 4px; -} - -[dir=rtl] .nut-card-right-price-origin.nut-price, -.nut-rtl .nut-card-right-price-origin.nut-price { - margin-left: 0; - margin-right: 2px; -} -[dir=rtl] .nut-card-right-other .nut-tag, -.nut-rtl .nut-card-right-other .nut-tag { - margin-right: 0; - margin-left: 5px; -} \ No newline at end of file diff --git a/src/packages/cascader/cascader.harmony.css b/src/packages/cascader/cascader.harmony.css deleted file mode 100644 index 40cd052d46..0000000000 --- a/src/packages/cascader/cascader.harmony.css +++ /dev/null @@ -1,70 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-cascader { - width: 100%; - font-size: 14px; -} -.nut-cascader .nut-tabs-titles { - padding: 0 10px; - background: #ffffff; -} -.nut-cascader .nut-tabs-titles-item { - flex: initial; - min-width: auto; - width: auto; - padding: 0 10px; - white-space: nowrap; -} -.nut-cascader .nut-tabpane { - padding: 0; - background: #ffffff; -} -.nut-cascader-pane { - display: block; - width: 100%; - padding-top: 10px; - height: 342px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} -.nut-cascader-item { - display: flex; - align-items: center; - justify-content: center; - padding: 10px 20px; - margin: 0px; - border-bottom: 0px solid rgba(0, 0, 0, 0.06); - font-size: 14px; - color: #1a1a1a; - cursor: pointer; -} -.nut-cascader-item.disabled { - opacity: 0.6; - cursor: not-allowed; -} -.nut-cascader-item.active:not(.disabled) { - color: #ff0f23; -} -.nut-cascader-item.active .nut-cascader-item-icon-check { - visibility: visible; - color: inherit; -} -.nut-cascader-item-title { - flex: 1; -} -.nut-cascader .nut-icon-checklist { - margin-left: 10px; - visibility: hidden; -} - -[dir=rtl] .nut-cascader .nut-icon-checklist { - margin-left: 0; - margin-right: 10px; -} - -.nut-rtl .nut-cascader .nut-icon-checklist { - margin-left: 0; - margin-right: 10px; -} \ No newline at end of file diff --git a/src/packages/cell/cell.harmony.css b/src/packages/cell/cell.harmony.css deleted file mode 100644 index 9d9e9d9357..0000000000 --- a/src/packages/cell/cell.harmony.css +++ /dev/null @@ -1,91 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-cell { - position: relative; - display: flex; - flex-direction: row; - width: 100%; - line-height: 20px; - padding: 13px 16px; - background-color: #ffffff; - border-radius: 6px; - box-shadow: 0px 1px 7px 0px rgb(237, 238, 241); - font-size: 14px; - color: #1a1a1a; - margin-bottom: 10px; - box-sizing: border-box; -} -.nut-cell-group-item { - border-radius: 0; - box-shadow: 0 0 transparent; - margin: 0; -} -.nut-cell-left { - display: flex; - flex-direction: column; - align-items: flex-start; - flex: 1; -} -.nut-cell-title { - line-height: 20px; -} -.nut-cell-description { - line-height: 20px; -} -.nut-cell-extra { - line-height: 20px; -} -.nut-cell-description { - font-size: 12px; - color: #505259; -} -.nut-cell-extra { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - flex: 1; - flex-shrink: 0; - min-width: 0; - word-break: break-all; - font-size: 14px; - color: #505259; -} -.nut-cell:active::before { - opacity: 0.1; -} -.nut-cell-clickable { - cursor: pointer; -} -.nut-cell-clickable::before { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 100%; - background-color: #000000; - border: inherit; - border-color: #000000; - border-radius: inherit; - transform: translate(-50%, -50%); - opacity: 0; - content: " "; -} -.nut-cell-divider { - display: flex; - min-height: 1px; - padding-left: 16px; - padding-right: 16px; -} -.nut-cell-divider-inner { - display: flex; - height: 1px; - width: 100%; - border-top: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-cell-divider-rtl { - padding-left: 16px; - padding-right: 16px; -} \ No newline at end of file diff --git a/src/packages/cellgroup/cellgroup.harmony.css b/src/packages/cellgroup/cellgroup.harmony.css deleted file mode 100644 index 334d18ffdb..0000000000 --- a/src/packages/cellgroup/cellgroup.harmony.css +++ /dev/null @@ -1,31 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-cell-group { - display: block; -} -.nut-cell-group-title { - display: inherit; - padding: 0 10px; - color: #1a1a1a; - font-size: 14px; - line-height: 20px; - margin-top: 30px; - margin-bottom: 10px; -} -.nut-cell-group-description { - display: inherit; - padding: 0 10px; - color: #505259; - font-size: 12px; - line-height: 16px; - margin-top: 10px; - margin-bottom: 10px; -} -.nut-cell-group-wrap { - border-radius: 6px; - overflow: hidden; - background-color: #ffffff; - margin-bottom: 10px; -} \ No newline at end of file diff --git a/src/packages/checkbox/checkbox.harmony.css b/src/packages/checkbox/checkbox.harmony.css deleted file mode 100644 index 7cccf9a764..0000000000 --- a/src/packages/checkbox/checkbox.harmony.css +++ /dev/null @@ -1,165 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-checkbox { - display: flex; - align-items: center; -} -.nut-checkbox-icon { - color: #c2c4cc; - font-size: 16px; -} -.nut-checkbox-icon-checked { - color: #ff0f23; - transition-duration: 0.3s; - transition-property: color, border-color, background-color; - box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); - border-radius: 50%; -} -.nut-checkbox-icon-checked.nut-checkbox-icon-disabled { - color: #ffadbe; -} -.nut-checkbox-label { - margin-left: 4px; - font-size: 12px; - color: #1a1a1a; -} -.nut-checkbox-label-disabled { - color: #c2c4cc; -} -.nut-checkbox-icon-indeterminate { - color: #ff0f23; - box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); - border-radius: 50%; -} -.nut-checkbox-icon-indeterminate.nut-checkbox-icon-disabled { - color: #ffadbe; -} -.nut-checkbox-icon-disabled { - color: #c2c4cc; - box-shadow: none; -} -.nut-checkbox-reverse { - flex-direction: row-reverse; -} -.nut-checkbox-reverse .nut-checkbox-label { - margin-right: 4px; - margin-left: 0; -} -.nut-checkbox-button { - position: relative; - display: inline-flex; - align-items: center; - padding: 5px 18px; - font-size: 12px; - background: #f2f3f5; - border-radius: 15px; - color: #1a1a1a; - box-sizing: border-box; - border: 1px solid #f2f3f5; - overflow: hidden; -} -.nut-checkbox-button-active { - background: #ffebf1; - color: #ff0f23; - border: 1px solid #ff0f23; -} -.nut-checkbox-button-disabled { - color: #c2c4cc; - border: 1px solid #f2f3f5; -} -.nut-checkbox-button-icon { - position: absolute; - right: 0; - bottom: 0; - width: 0; - height: 0; - border-top: 10px solid transparent; - border-left: 10px solid transparent; - border-bottom: 10px solid #ff0f23; - border-right: 10px solid #ff0f23; - display: flex; - align-items: flex-end; - justify-content: flex-end; -} -.nut-checkbox-button-icon-checked { - width: 12px; - height: 12px; - position: absolute; - color: #ffffff; - top: 50%; - left: 50%; - transform: translate(-3px, -3px); -} -.nut-checkbox-button-icon .nut-icon { - position: absolute; - font-size: 12px; - width: 12px; - height: 12px; -} -.nut-checkbox-button-icon .nut-icon:before { - top: auto; - bottom: -22px; - margin-left: 6px; -} -.nut-checkbox .nut-checkbox-button-active.nut-checkbox-button-disabled { - background: #c2c4cc; - color: #ffffff; - border: 1px solid #c2c4cc; -} -.nut-checkbox-list-item { - width: 100%; - display: flex; - justify-content: flex-start; - align-items: center; - padding: 12px 12px 12px 0; - border-top: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-checkbox-list-item .nut-checkbox-label { - flex: auto; -} -.nut-checkbox-list-item .nut-icon { - flex: none; -} - -[dir=rtl] .nut-checkbox-label { - margin-left: 0; - margin-right: 4px; -} - -.nut-rtl .nut-checkbox-label { - margin-left: 0; - margin-right: 4px; -} -[dir=rtl] .nut-checkbox-reverse .nut-checkbox-label { - margin-left: 4px; - margin-right: 0; -} -.nut-rtl .nut-checkbox-reverse .nut-checkbox-label { - margin-left: 4px; - margin-right: 0; -} -[dir=rtl] .nut-checkbox-button-icon { - right: auto; - left: 0; - border-right: 10px solid transparent; - border-left: 10px solid #ff0f23; -} -.nut-rtl .nut-checkbox-button-icon { - right: auto; - left: 0; - border-right: 10px solid transparent; - border-left: 10px solid #ff0f23; -} -[dir=rtl] .nut-checkbox-button-icon-checked, -.nut-rtl .nut-checkbox-button-icon-checked { - left: auto; - right: 50%; - transform: translate(3px, -3px); -} -[dir=rtl] .nut-checkbox-button-icon .nut-icon:before, -.nut-rtl .nut-checkbox-button-icon .nut-icon:before { - margin-left: 0; - margin-right: 6px; -} \ No newline at end of file diff --git a/src/packages/checkboxgroup/checkboxgroup.harmony.css b/src/packages/checkboxgroup/checkboxgroup.harmony.css deleted file mode 100644 index 67ab528364..0000000000 --- a/src/packages/checkboxgroup/checkboxgroup.harmony.css +++ /dev/null @@ -1,67 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-checkboxgroup .nut-checkbox-button { - background-color: #f2f3f5; -} -.nut-checkboxgroup-vertical { - display: flex; - flex-direction: column; -} -.nut-checkboxgroup-vertical .nut-checkbox { - margin-bottom: 5px; -} -.nut-checkboxgroup-vertical .nut-checkbox.nut-checkbox-reverse { - width: 100%; - justify-content: space-between; -} -.nut-checkboxgroup-vertical .nut-checkbox-button-active { - border: 1px solid #ff0f23; - background-color: #ffebf1; -} -.nut-checkboxgroup-horizontal { - display: flex; - flex-direction: row; - flex-wrap: wrap; -} -.nut-checkboxgroup-horizontal .nut-checkbox { - display: inline-flex; - flex: 1; - margin-right: 20px; -} -.nut-checkboxgroup-horizontal .nut-checkbox-button-active { - border: 1px solid #ff0f23; - background-color: #ffebf1; -} -.nut-checkboxgroup-list { - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.06); - border-top: 1px solid rgba(0, 0, 0, 0.06); - padding: 0 0 0 12px; - background: #ffffff; -} -.nut-checkboxgroup-list .nut-checkbox { - margin-bottom: 5px; -} -.nut-checkboxgroup-list .nut-checkbox:first-child .nut-checkbox-list-item { - border-top: none; -} -.nut-checkboxgroup-list .nut-checkbox.nut-checkbox-reverse { - width: 100%; - justify-content: space-between; -} - -[dir=rtl] .nut-checkboxgroup .nut-checkbox-label, -.nut-rtl .nut-checkboxgroup .nut-checkbox-label { - margin-right: 5px; -} -[dir=rtl] .nut-checkboxgroup-vertical .nut-checkbox-label, -.nut-rtl .nut-checkboxgroup-vertical .nut-checkbox-label { - margin-right: 5px; -} -[dir=rtl] .nut-checkboxgroup-horizontal .nut-checkbox, -.nut-rtl .nut-checkboxgroup-horizontal .nut-checkbox { - margin-right: 0; - margin-left: 20px; -} \ No newline at end of file diff --git a/src/packages/circleprogress/circleprogress.harmony.css b/src/packages/circleprogress/circleprogress.harmony.css deleted file mode 100644 index b57f52413c..0000000000 --- a/src/packages/circleprogress/circleprogress.harmony.css +++ /dev/null @@ -1,31 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-circleprogress { - position: relative; -} -.nut-circleprogress-hover { - stroke: #ff0f23; - transition: stroke-dasharray 0.2s ease-in-out 0s, stroke 0.2s ease 0s; -} -.nut-circleprogress-path { - stroke: #f2f3f5; -} -.nut-circleprogress-text { - position: absolute; - top: 50%; - left: 0; - box-sizing: border-box; - width: 100%; - transform: translateY(-50%); - text-align: center; - color: #1a1a1a; - font-size: 16px; -} - -[dir=rtl] .nut-circleprogress-text, -.nut-rtl .nut-circleprogress-text { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/col/col.harmony.css b/src/packages/col/col.harmony.css deleted file mode 100644 index 13fa567e5e..0000000000 --- a/src/packages/col/col.harmony.css +++ /dev/null @@ -1,360 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-col { - box-sizing: border-box; - word-break: break-all; - margin-bottom: 15px; -} - -[dir=rtl] .nut-col, -.nut-rtl .nut-col { - float: right; -} -[dir=rtl] .nut-col.nut-col-gutter:last-child, -.nut-rtl .nut-col.nut-col-gutter:last-child { - padding-right: 0 !important; - padding-left: 0 !important; -} -[dir=rtl] .nut-col.nut-col-gutter:first-child, -.nut-rtl .nut-col.nut-col-gutter:first-child { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.nut-col-offset-1 { - margin-left: 4.166666666%; -} - -[dir=rtl] .nut-col-offset-1, -.nut-rtl .nut-col-offset-1 { - margin-left: 0; - margin-right: 4.166666666%; -} - -.nut-col-1 { - width: 4.166666666%; -} - -.nut-col-offset-2 { - margin-left: 8.333333332%; -} - -[dir=rtl] .nut-col-offset-2, -.nut-rtl .nut-col-offset-2 { - margin-left: 0; - margin-right: 8.333333332%; -} - -.nut-col-2 { - width: 8.333333332%; -} - -.nut-col-offset-3 { - margin-left: 12.499999998%; -} - -[dir=rtl] .nut-col-offset-3, -.nut-rtl .nut-col-offset-3 { - margin-left: 0; - margin-right: 12.499999998%; -} - -.nut-col-3 { - width: 12.499999998%; -} - -.nut-col-offset-4 { - margin-left: 16.666666664%; -} - -[dir=rtl] .nut-col-offset-4, -.nut-rtl .nut-col-offset-4 { - margin-left: 0; - margin-right: 16.666666664%; -} - -.nut-col-4 { - width: 16.666666664%; -} - -.nut-col-offset-5 { - margin-left: 20.83333333%; -} - -[dir=rtl] .nut-col-offset-5, -.nut-rtl .nut-col-offset-5 { - margin-left: 0; - margin-right: 20.83333333%; -} - -.nut-col-5 { - width: 20.83333333%; -} - -.nut-col-offset-6 { - margin-left: 24.999999996%; -} - -[dir=rtl] .nut-col-offset-6, -.nut-rtl .nut-col-offset-6 { - margin-left: 0; - margin-right: 24.999999996%; -} - -.nut-col-6 { - width: 24.999999996%; -} - -.nut-col-offset-7 { - margin-left: 29.166666662%; -} - -[dir=rtl] .nut-col-offset-7, -.nut-rtl .nut-col-offset-7 { - margin-left: 0; - margin-right: 29.166666662%; -} - -.nut-col-7 { - width: 29.166666662%; -} - -.nut-col-offset-8 { - margin-left: 33.333333328%; -} - -[dir=rtl] .nut-col-offset-8, -.nut-rtl .nut-col-offset-8 { - margin-left: 0; - margin-right: 33.333333328%; -} - -.nut-col-8 { - width: 33.333333328%; -} - -.nut-col-offset-9 { - margin-left: 37.499999994%; -} - -[dir=rtl] .nut-col-offset-9, -.nut-rtl .nut-col-offset-9 { - margin-left: 0; - margin-right: 37.499999994%; -} - -.nut-col-9 { - width: 37.499999994%; -} - -.nut-col-offset-10 { - margin-left: 41.66666666%; -} - -[dir=rtl] .nut-col-offset-10, -.nut-rtl .nut-col-offset-10 { - margin-left: 0; - margin-right: 41.66666666%; -} - -.nut-col-10 { - width: 41.66666666%; -} - -.nut-col-offset-11 { - margin-left: 45.833333326%; -} - -[dir=rtl] .nut-col-offset-11, -.nut-rtl .nut-col-offset-11 { - margin-left: 0; - margin-right: 45.833333326%; -} - -.nut-col-11 { - width: 45.833333326%; -} - -.nut-col-offset-12 { - margin-left: 49.999999992%; -} - -[dir=rtl] .nut-col-offset-12, -.nut-rtl .nut-col-offset-12 { - margin-left: 0; - margin-right: 49.999999992%; -} - -.nut-col-12 { - width: 49.999999992%; -} - -.nut-col-offset-13 { - margin-left: 54.166666658%; -} - -[dir=rtl] .nut-col-offset-13, -.nut-rtl .nut-col-offset-13 { - margin-left: 0; - margin-right: 54.166666658%; -} - -.nut-col-13 { - width: 54.166666658%; -} - -.nut-col-offset-14 { - margin-left: 58.333333324%; -} - -[dir=rtl] .nut-col-offset-14, -.nut-rtl .nut-col-offset-14 { - margin-left: 0; - margin-right: 58.333333324%; -} - -.nut-col-14 { - width: 58.333333324%; -} - -.nut-col-offset-15 { - margin-left: 62.49999999%; -} - -[dir=rtl] .nut-col-offset-15, -.nut-rtl .nut-col-offset-15 { - margin-left: 0; - margin-right: 62.49999999%; -} - -.nut-col-15 { - width: 62.49999999%; -} - -.nut-col-offset-16 { - margin-left: 66.666666656%; -} - -[dir=rtl] .nut-col-offset-16, -.nut-rtl .nut-col-offset-16 { - margin-left: 0; - margin-right: 66.666666656%; -} - -.nut-col-16 { - width: 66.666666656%; -} - -.nut-col-offset-17 { - margin-left: 70.833333322%; -} - -[dir=rtl] .nut-col-offset-17, -.nut-rtl .nut-col-offset-17 { - margin-left: 0; - margin-right: 70.833333322%; -} - -.nut-col-17 { - width: 70.833333322%; -} - -.nut-col-offset-18 { - margin-left: 74.999999988%; -} - -[dir=rtl] .nut-col-offset-18, -.nut-rtl .nut-col-offset-18 { - margin-left: 0; - margin-right: 74.999999988%; -} - -.nut-col-18 { - width: 74.999999988%; -} - -.nut-col-offset-19 { - margin-left: 79.166666654%; -} - -[dir=rtl] .nut-col-offset-19, -.nut-rtl .nut-col-offset-19 { - margin-left: 0; - margin-right: 79.166666654%; -} - -.nut-col-19 { - width: 79.166666654%; -} - -.nut-col-offset-20 { - margin-left: 83.33333332%; -} - -[dir=rtl] .nut-col-offset-20, -.nut-rtl .nut-col-offset-20 { - margin-left: 0; - margin-right: 83.33333332%; -} - -.nut-col-20 { - width: 83.33333332%; -} - -.nut-col-offset-21 { - margin-left: 87.499999986%; -} - -[dir=rtl] .nut-col-offset-21, -.nut-rtl .nut-col-offset-21 { - margin-left: 0; - margin-right: 87.499999986%; -} - -.nut-col-21 { - width: 87.499999986%; -} - -.nut-col-offset-22 { - margin-left: 91.666666652%; -} - -[dir=rtl] .nut-col-offset-22, -.nut-rtl .nut-col-offset-22 { - margin-left: 0; - margin-right: 91.666666652%; -} - -.nut-col-22 { - width: 91.666666652%; -} - -.nut-col-offset-23 { - margin-left: 95.833333318%; -} - -[dir=rtl] .nut-col-offset-23, -.nut-rtl .nut-col-offset-23 { - margin-left: 0; - margin-right: 95.833333318%; -} - -.nut-col-23 { - width: 95.833333318%; -} - -.nut-col-offset-24 { - margin-left: 99.999999984%; -} - -[dir=rtl] .nut-col-offset-24, -.nut-rtl .nut-col-offset-24 { - margin-left: 0; - margin-right: 99.999999984%; -} - -.nut-col-24 { - width: 99.999999984%; -} \ No newline at end of file diff --git a/src/packages/collapse/collapse.harmony.css b/src/packages/collapse/collapse.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/collapse/collapse.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/collapseitem/collapseitem.harmony.css b/src/packages/collapseitem/collapseitem.harmony.css deleted file mode 100644 index 87e610a609..0000000000 --- a/src/packages/collapseitem/collapseitem.harmony.css +++ /dev/null @@ -1,104 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-collapse-item { - position: relative; -} -.nut-collapse-item::after { - position: absolute; - box-sizing: border-box; - content: " "; - pointer-events: none; - right: 16px; - left: 16px; - bottom: 0; - border-bottom: none; - -webkit-transform: scaleY(0.5); - transform: scaleY(0.5); -} -.nut-collapse-item:last-child::after { - display: none; -} -.nut-collapse-item-header { - position: relative; - display: flex; - width: 100%; - overflow: hidden; - padding: 13px 26px; - font-size: 14px; - line-height: 24px; - background-color: #ffffff; - box-sizing: border-box; -} -.nut-collapse-item-header::after { - position: absolute; - box-sizing: border-box; - content: " "; - pointer-events: none; - right: 16px; - left: 16px; - bottom: 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.06); - -webkit-transform: scaleY(0.5); - transform: scaleY(0.5); -} -.nut-collapse-item-title { - color: #1a1a1a; - display: flex; - align-items: center; -} -.nut-collapse-item-extra { - flex: 1; - display: flex; - justify-content: flex-end; - padding: 0px 20px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: #505259; -} -.nut-collapse-item-icon-box { - display: flex; - width: 24px; - position: relative; - color: #505259; -} -.nut-collapse-item-icon { - display: flex; - align-items: center; - position: absolute; - top: 50%; - left: 5px; - transform: translateY(-50%); - transform-origin: center; - transition: transform 0.3s; -} -.nut-collapse-item-header.disabled { - color: #c2c4cc; -} -.nut-collapse-item-header.disabled .nut-collapse-item-title { - color: #c2c4cc; -} -.nut-collapse-item-header.disabled .nut-collapse-item-icon { - color: #c2c4cc; -} -.nut-collapse-item-content { - overflow: hidden; - display: block; - color: #505259; - font-size: 14px; - line-height: 1.5; - background-color: #ffffff; - transition: all 0.3s linear; -} -.nut-collapse-item-content-text { - color: #505259; - padding: 12px 26px; -} - -[dir=rtl] .nut-collapse-item-icon, -.nut-rtl .nut-collapse-item-icon { - left: auto; - right: 5px; -} \ No newline at end of file diff --git a/src/packages/configprovider/configprovider.harmony.css b/src/packages/configprovider/configprovider.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/configprovider/configprovider.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/countdown/countdown.harmony.css b/src/packages/countdown/countdown.harmony.css deleted file mode 100644 index 7578a03b9a..0000000000 --- a/src/packages/countdown/countdown.harmony.css +++ /dev/null @@ -1,113 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-countdown { - display: flex; - flex-direction: row; - align-items: center; - color: #ff0f23; - font-size: 11px; -} -.nut-countdown-number-primary { - display: flex; - align-items: center; - justify-content: center; - height: 16px; - box-sizing: border-box; - font-weight: 400; - font-size: 11px; - line-height: calc(11px + 2px); - font-family: "JD"; -} -.nut-countdown-number { - display: flex; - align-items: center; - justify-content: center; - height: 16px; - box-sizing: border-box; - font-weight: 400; - font-size: 11px; - line-height: calc(11px + 2px); - font-family: "JD"; -} -.nut-countdown-number-text { - display: flex; - align-items: center; - justify-content: center; - height: 16px; - box-sizing: border-box; - font-weight: 400; - font-size: 11px; - line-height: calc(11px + 2px); - font-family: "JD"; -} -.nut-countdown-unit { - display: flex; - align-items: center; - justify-content: center; - height: 16px; - box-sizing: border-box; - font-weight: 400; - font-size: 11px; - line-height: calc(11px + 2px); - font-family: "JD"; -} -.nut-countdown-number { - position: relative; - min-width: 16px; - padding: 0 0; - border-radius: 2px; - margin: 0 1px; - text-align: center; -} -.nut-countdown-number-primary { - position: relative; - min-width: 16px; - padding: 0 0; - border-radius: 2px; - margin: 0 1px; - text-align: center; -} -.nut-countdown-number::after { - content: ""; - position: absolute; - top: -50%; - bottom: -50%; - left: -50%; - right: -50%; - transform: scale(0.5); - border-radius: calc(2px * 2); -} -.nut-countdown-number-primary::after { - content: ""; - position: absolute; - top: -50%; - bottom: -50%; - left: -50%; - right: -50%; - transform: scale(0.5); - border-radius: calc(2px * 2); -} -.nut-countdown-number { - background-color: #ffffff; - color: #ff0f23; -} -.nut-countdown-number::after { - border: 1px solid #ffadbe; -} -.nut-countdown-number-primary { - background-color: #ff0f23; - color: #ffffff; -} -.nut-countdown-number-primary::after { - border: 1px solid #ff0f23; -} -.nut-countdown-number-text { - border: 0; - background-color: transparent; - color: #ff0f23; -} -.nut-countdown-unit { - color: #ff0f23; -} \ No newline at end of file diff --git a/src/packages/datepicker/datepicker.harmony.css b/src/packages/datepicker/datepicker.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/datepicker/datepicker.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/dialog/dialog.harmony.css b/src/packages/dialog/dialog.harmony.css deleted file mode 100644 index 4ce2263e80..0000000000 --- a/src/packages/dialog/dialog.harmony.css +++ /dev/null @@ -1,169 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-dialog { - display: flex; - flex-direction: column; - align-items: center; - width: 295px; - min-width: 240px; - max-height: 67%; - min-height: 124px; - padding: 24px; - box-sizing: border-box; -} -.nut-dialog-outer { - position: fixed; - max-height: 100%; - background-color: #ffffff; - transition: transform 0.2s, -webkit-transform 0.2s; - -webkit-overflow-scrolling: touch; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - border-radius: 12px; - z-index: 1200; - animation-duration: 0.3s; -} -.nut-dialog-close { - position: absolute !important; - z-index: 1; - cursor: pointer; - width: 16px; - height: 16px; - display: flex; - justify-content: center; - align-items: center; - color: #ffffff; -} -.nut-dialog-close .nut-icon { - font-size: 16px; - width: 16px; - height: 16px; -} -.nut-dialog-close-top-right { - top: 16px; - right: 16px; -} -.nut-dialog-close-top-left { - top: 16px; - left: 16px; -} -.nut-dialog-close-bottom { - bottom: -64px; - width: 24px; - height: 24px; - left: 50%; - transform: translateX(-50%); -} -.nut-dialog-close-bottom .nut-icon { - color: #c2c4cc; - background-color: rgba(0, 0, 0, 0.4); - border-radius: 50%; - width: 24px; - height: 24px; -} -.nut-dialog-close:active { - opacity: 0.7; -} -.nut-dialog-header { - display: block; - text-align: center; - font-size: 16px; - font-weight: 600; - color: #1a1a1a; - width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.nut-dialog-content { - width: 100%; - margin: 12px 0 16px 0; - max-height: 268px; - line-height: 20px; - font-size: 14px; - color: #1a1a1a; - word-wrap: break-word; - word-break: break-all; - white-space: pre-wrap; - text-align: left; - overflow-y: auto; -} -.nut-dialog-footer { - display: flex; - align-items: center; - width: 100%; - justify-content: space-around; -} -.nut-dialog-footer.vertical { - flex-direction: column; -} -.nut-dialog-footer.vertical .nut-button { - min-width: 100%; -} -.nut-dialog-footer.vertical .nut-dialog-footer-ok { - order: 1; -} -.nut-dialog-footer.vertical .nut-dialog-footer-cancel { - margin: 0; - color: #505259; - font-size: 14px; - order: 2; - display: flex; - justify-content: center; - margin-top: 16px; -} -.nut-dialog-footer .nut-button { - min-width: 117px; -} -.nut-dialog-footer-cancel.nut-dialog-footer-cancel { - margin-right: 12px; -} -.nut-dialog-footer-ok { - max-width: 128px; - font-weight: 600; -} -.nut-dialog-footer-block.nut-button { - min-width: 100%; -} - -[dir=rtl] .nut-dialog-outer, -.nut-rtl .nut-dialog-outer { - left: auto; - right: 50%; - -webkit-transform: translate(50%, -50%); - transform: translate(50%, -50%); -} -[dir=rtl] .nut-dialog-close-top-right { - right: auto; - left: 16px; -} -.nut-rtl .nut-dialog-close-top-right { - right: auto; - left: 16px; -} -[dir=rtl] .nut-dialog-close-top-left { - left: auto; - right: 16px; -} -.nut-rtl .nut-dialog-close-top-left { - left: auto; - right: 16px; -} -[dir=rtl] .nut-dialog-footer-cancel.nut-dialog-footer-cancel { - margin-right: 0; - margin-left: 12px; -} -.nut-rtl .nut-dialog-footer-cancel.nut-dialog-footer-cancel { - margin-right: 0; - margin-left: 12px; -} -[dir=rtl] .nut-dialog-content { - text-align: right; -} -.nut-rtl .nut-dialog-content { - text-align: right; -} \ No newline at end of file diff --git a/src/packages/divider/divider.harmony.css b/src/packages/divider/divider.harmony.css deleted file mode 100644 index a8bfe1fb04..0000000000 --- a/src/packages/divider/divider.harmony.css +++ /dev/null @@ -1,72 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-divider { - display: flex; - align-items: center; - flex-direction: row; - font-size: 14px; - color: #505259; - margin: 16px 0; - width: 100%; - border: 0 solid rgba(0, 0, 0, 0.06); -} -.nut-divider-before { - display: flex; - border-style: solid; - border-color: rgba(0, 0, 0, 0.06); - border-width: 1px 0 0; - height: 1px; - flex: 1; -} -.nut-divider-after { - display: flex; - border-style: solid; - border-color: rgba(0, 0, 0, 0.06); - border-width: 1px 0 0; - height: 1px; - flex: 1; -} -.nut-divider-center-before { - margin-right: 8px; -} -.nut-divider-left-before { - margin-right: 8px; -} -.nut-divider-right-before { - margin-right: 8px; -} -.nut-divider-center-after { - margin-left: 8px; -} -.nut-divider-left-after { - margin-left: 8px; -} -.nut-divider-right-after { - margin-left: 8px; -} -.nut-divider-left-before { - width: 10%; - flex: none; -} -.nut-divider-right-after { - width: 10%; - flex: none; -} -.nut-divider-vertical { - display: inline-flex; - width: 0px; - height: 12px; - border-left: 1px solid rgba(0, 0, 0, 0.06); - margin: 0 8px; - vertical-align: middle; -} -.nut-divider-rtl-before { - margin-right: 0; - margin-left: 8px; -} -.nut-divider-rtl-after { - margin-left: 0; - margin-right: 8px; -} \ No newline at end of file diff --git a/src/packages/drag/drag.harmony.css b/src/packages/drag/drag.harmony.css deleted file mode 100644 index 6e4d800be9..0000000000 --- a/src/packages/drag/drag.harmony.css +++ /dev/null @@ -1,18 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-drag { - position: fixed; - z-index: 9997 !important; - width: 0; - height: 0; - touch-action: none; - user-select: none; - font-size: 0; -} -.nut-drag-inner { - display: inline-flex; - width: fit-content; - height: fit-content; -} \ No newline at end of file diff --git a/src/packages/elevator/elevator.harmony.css b/src/packages/elevator/elevator.harmony.css deleted file mode 100644 index 172af6bebd..0000000000 --- a/src/packages/elevator/elevator.harmony.css +++ /dev/null @@ -1,127 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-elevator { - width: 100%; - display: block; - position: relative; - overflow: hidden; -} -.nut-elevator-list { - display: block; - position: relative; - top: 0; - overflow: hidden; - font-size: 12px; - color: #1a1a1a; -} -.nut-elevator-list-inner { - height: 100%; - width: 100%; - display: block; - background-color: #ffffff; - overflow: auto; -} -.nut-elevator-list-item { - display: block; -} -.nut-elevator-list-item-code { - display: flex; - position: relative; - height: 35px; - line-height: 35px; - font-size: 14px; - color: #1a1a1a; - padding: 0 20px; - font-weight: 600; - box-sizing: border-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.06); - background-color: inherit; -} -.nut-elevator-list-item-name { - display: flex; - align-items: center; - padding: 0 20px; - height: 30px; - line-height: 30px; -} -.nut-elevator-list-item-name-highcolor { - color: #ff0f23; -} -.nut-elevator-list-fixed { - display: flex; - align-items: center; - width: 100%; - position: absolute; - top: 0; - left: 0; - z-index: 1; - padding: 0 20px; - height: 35px; - background-color: #ffffff; - box-sizing: border-box; - box-shadow: 0 0 10px #eee; -} -.nut-elevator-list-fixed-title { - font-size: 14px; - color: #ff0f23; - font-weight: 600; -} -.nut-elevator-code-current { - position: absolute; - right: 60px; - top: 50%; - transform: translateY(-50%); - width: 45px; - height: 45px; - line-height: 45px; - border-radius: 50%; - background: #fff; - box-shadow: 0 3px 3px 1px rgb(240, 240, 240); - text-align: center; -} -.nut-elevator-bars { - position: absolute; - right: 10px; - top: 50%; - color: #888b94; - font-size: 12px; - transform: translateY(-50%); - padding: 15px 0; - background-color: #f2f3f5; - border-radius: 6px; - text-align: center; - z-index: 1; -} -.nut-elevator-bars-inner-item { - display: block; - padding: 3px; - cursor: pointer; -} -.nut-elevator-bars-inner-item-active { - font-weight: 600; - color: #ff0f23; -} - -[dir=rtl] .nut-elevator-list-fixed, -.nut-rtl .nut-elevator-list-fixed { - left: auto; - right: 0; -} -[dir=rtl] .nut-elevator-code-current { - right: auto; - left: 60px; -} -.nut-rtl .nut-elevator-code-current { - right: auto; - left: 60px; -} -[dir=rtl] .nut-elevator-bars { - right: auto; - left: 10px; -} -.nut-rtl .nut-elevator-bars { - right: auto; - left: 10px; -} \ No newline at end of file diff --git a/src/packages/ellipsis/ellipsis.harmony.css b/src/packages/ellipsis/ellipsis.harmony.css deleted file mode 100644 index 94c0ddea8d..0000000000 --- a/src/packages/ellipsis/ellipsis.harmony.css +++ /dev/null @@ -1,24 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-ellipsis { - display: flex; -} -.nut-ellipsis .nut-ellipsis-text { - cursor: pointer; - color: #0073ff; - display: inline-block; -} -.nut-ellipsis .nut-ellipsis-wordbreak { - word-break: break-all; -} - -.nut-ellipsis-copy { - position: absolute; - top: -999999px; -} - -.nut-ellipsis-width { - width: fit-content; -} \ No newline at end of file diff --git a/src/packages/empty/empty.harmony.css b/src/packages/empty/empty.harmony.css deleted file mode 100644 index c50c7e3ca2..0000000000 --- a/src/packages/empty/empty.harmony.css +++ /dev/null @@ -1,59 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-empty { - box-sizing: border-box; - width: 100%; - display: flex; - align-items: center; - flex-direction: column; - justify-content: center; - padding: 32px 40px; - background-color: #ffffff; -} -.nut-empty-base { - width: 160px; - height: 160px; -} -.nut-empty-base img, -.nut-empty-base image { - width: 100%; - height: 100%; -} -.nut-empty-small { - width: 120px; - height: 120px; -} -.nut-empty-small img, -.nut-empty-small image { - width: 100%; - height: 100%; -} -.nut-empty-title { - margin-top: 0px; - font-weight: 600; - margin-bottom: 12px; - color: #1a1a1a; - font-size: 16px; - line-height: 16px; -} -.nut-empty-description { - color: #505259; - font-size: 12px; - line-height: 1; -} -.nut-empty-actions-base { - display: flex; - flex-direction: row; - margin-top: 24px; -} -.nut-empty-actions-small { - display: flex; - flex-direction: row; - margin-top: 16px; -} -.nut-empty-action { - margin-right: 6px; - margin-left: 6px; -} \ No newline at end of file diff --git a/src/packages/fixednav/fixednav.harmony.css b/src/packages/fixednav/fixednav.harmony.css deleted file mode 100644 index 95c509f38c..0000000000 --- a/src/packages/fixednav/fixednav.harmony.css +++ /dev/null @@ -1,187 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-fixednav { - position: fixed; - z-index: 900; - display: inline-block; - height: 50px; - right: 0; -} -.nut-fixednav.active .nut-fixednav-btn .nut-icon { - transform: rotate(180deg); -} -.nut-fixednav.active .nut-fixednav-list { - transform: translateX(0%) !important; -} -.nut-fixednav.active.left .nut-icon { - transform: rotate(0deg) !important; -} -.nut-fixednav-btn { - box-sizing: border-box; - position: absolute; - right: 0; - z-index: 900; - width: 70px; - height: 100%; - background: #ff0f23; - border-radius: 45px 0px 0px 45px; - box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.2); - display: flex; - align-items: center; - justify-content: center; -} -.nut-fixednav-btn .text { - width: 24px; - line-height: 13px; - font-size: 12px; - color: #fff; - flex-shrink: 0; -} -.nut-fixednav-btn .nut-icon { - margin-right: 5px; - transition: all 0.3s; - transform: rotate(0deg); - transition: all 0.3s; -} -.nut-fixednav-list { - position: absolute; - right: 0; - transform: translateX(100%); - transition: all 0.5s; - z-index: 900; - flex-shrink: 0; - height: 100%; - background: #ffffff; - display: flex; - justify-content: space-between; - border-radius: 25px 0px 0px 25px; - box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, 0.2); - padding-left: 20px; - padding-right: 80px; -} -.nut-fixednav-list-item { - position: relative; - flex: 1; - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - min-width: 50px; - flex-shrink: 0; - color: #1a1a1a; -} -.nut-fixednav-list-item img { - width: 20px; - height: 20px; - margin-bottom: 2px; -} -.nut-fixednav-list-item .nut-fixednav-list-text { - font-size: 10px; -} -.nut-fixednav-list-item .b { - position: absolute; - right: 0; - top: 1px; - height: 14px; - line-height: 14px; - font-size: 10px; - padding: 0 3px; - color: white; - background: #ff0f23; - border-radius: 7px; - text-align: center; - min-width: 12px; -} -.nut-fixednav.left { - right: auto; - left: 0; -} -.nut-fixednav.left .nut-fixednav-btn { - flex-direction: row-reverse; - right: auto; - left: 0; - border-radius: 0 45px 45px 0; -} -.nut-fixednav.left .nut-fixednav-btn .nut-icon { - transform: rotate(180deg); - margin-right: 0px; - margin-left: 5px; -} -.nut-fixednav.left .nut-fixednav-list { - transform: translateX(-100%); - right: auto; - border-radius: 0px 25px 25px 0px; - padding-left: 80px; - padding-right: 20px; - margin: 0; -} - -[dir=rtl] .nut-fixednav, -.nut-rtl .nut-fixednav { - right: auto; - left: 0; -} -[dir=rtl] .nut-fixednav.active .nut-icon, -.nut-rtl .nut-fixednav.active .nut-icon { - transform: rotate(-180deg); -} -[dir=rtl] .nut-fixednav-btn, -.nut-rtl .nut-fixednav-btn { - right: auto; - left: 0; - border-radius: 0px 45px 45px 0px; -} -[dir=rtl] .nut-fixednav-btn .nut-icon, -.nut-rtl .nut-fixednav-btn .nut-icon { - margin-right: 0px; - margin-left: 5px; - transform: rotate(180deg); -} -[dir=rtl] .nut-fixednav-list, -.nut-rtl .nut-fixednav-list { - right: auto; - left: 0; - transform: translateX(-100%); - border-radius: 0px 25px 25px 0px; - box-shadow: -2px 2px 8px 0px rgba(0, 0, 0, 0.2); - padding-right: 20px; - padding-left: 80px; -} -[dir=rtl] .nut-fixednav-list-item .b, -.nut-rtl .nut-fixednav-list-item .b { - right: auto; - left: 0; -} -[dir=rtl] .nut-fixednav.left, -.nut-rtl .nut-fixednav.left { - left: auto; - right: 0; -} -[dir=rtl] .nut-fixednav.left .nut-fixednav-btn, -.nut-rtl .nut-fixednav.left .nut-fixednav-btn { - left: auto; - right: 0; - border-radius: 45px 0 0 45px; -} -[dir=rtl] .nut-fixednav.left .nut-fixednav-btn .nut-icon, -.nut-rtl .nut-fixednav.left .nut-fixednav-btn .nut-icon { - transform: rotate(0deg); - margin-right: 5px; - margin-left: 0px; -} -[dir=rtl] .nut-fixednav.left .nut-fixednav-list, -.nut-rtl .nut-fixednav.left .nut-fixednav-list { - transform: translateX(100%); - right: auto; - left: auto; - border-radius: 25px 0px 0px 25px; - padding-right: 80px; - padding-left: 20px; -} - -.nut-drag .nut-fixednav { - position: relative; -} \ No newline at end of file diff --git a/src/packages/form/form.harmony.css b/src/packages/form/form.harmony.css deleted file mode 100644 index e47f72c4b6..0000000000 --- a/src/packages/form/form.harmony.css +++ /dev/null @@ -1,70 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.form-layout-right .nut-form-item-label { - text-align: right; - padding-right: 24px; - white-space: nowrap; -} - -.form-layout-left .nut-form-item-label { - position: relative; - text-align: left; - padding-left: 12px; - white-space: nowrap; -} -.form-layout-left .nut-form-item-label .required { - display: block; - line-height: 1.5; - position: absolute; - left: 0.1em; -} - -.form-layout-top .nut-form-item { - flex-direction: column; - align-items: flex-start; - white-space: nowrap; -} - -.form-layout-top .nut-form-item-label { - padding-bottom: 4px; - display: block; - padding-right: 24px; -} - -.form-layout-top .nut-form-item-body { - margin-left: 0; - width: 100%; -} - -[dir=rtl] .form-layout-right .nut-form-item-label, -.nut-rtl .form-layout-right .nut-form-item-label { - text-align: left; - padding-right: 0; - padding-left: 24px; -} - -[dir=rtl] .form-layout-left .nut-form-item-label, -.nut-rtl .form-layout-left .nut-form-item-label { - text-align: right; - padding-left: 0; - padding-right: 12px; -} -[dir=rtl] .form-layout-left .nut-form-item-label .required, -.nut-rtl .form-layout-left .nut-form-item-label .required { - left: auto; - right: 0.1em; -} - -[dir=rtl] .form-layout-top .nut-form-item-label, -.nut-rtl .form-layout-top .nut-form-item-label { - padding-right: 0; - padding-left: 24px; -} - -[dir=rtl] .form-layout-top .nut-form-item-body, -.nut-rtl .form-layout-top .nut-form-item-body { - margin-left: 0; - margin-right: 0; -} \ No newline at end of file diff --git a/src/packages/formitem/formitem.harmony.css b/src/packages/formitem/formitem.harmony.css deleted file mode 100644 index 5c1d192d38..0000000000 --- a/src/packages/formitem/formitem.harmony.css +++ /dev/null @@ -1,108 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-form-item { - display: flex; - align-items: center; - padding: 4px 12px; -} -.nut-form-item.error.line::before { - border-bottom: 1px solid #ff0f23; - transform: scaleX(1); - transition: transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; -} -.nut-form-item-label { - font-size: 14px; - font-weight: normal; - width: 90px; - margin-right: 10px; - flex: none !important; - display: inline-block !important; - word-wrap: break-word; - text-align: left; -} -.nut-form-item-label .required::before { - content: "*"; - color: #ff0f23; - margin-right: 4px; -} -.nut-form-item-body { - flex: 1; - display: flex !important; - flex-direction: column; -} -.nut-form-item-body-slots { - text-align: left; -} -.nut-form-item-body-slots .nut-input { - padding: 0; - border: 0; -} -.nut-form-item-body-slots .nut-input-text { - font-size: 14px; - text-align: left; - color: #1a1a1a; - width: 100%; - outline: 0 none; - border: 0; - text-decoration: none; - background: transparent; -} -.nut-form-item-body-slots .nut-range-container { - min-height: 24px; -} -.nut-form-item-body-slots .nut-textarea { - padding: 0 !important; -} -.nut-form-item-body-slots .nut-textarea .nut-textarea-textarea { - font: inherit; - text-align: left; -} -.nut-form-item-body-tips { - text-align: left; - font-size: 11px; - color: #ff0f23; -} - -[dir=rtl] .nut-form-item-label { - text-align: right; - margin-right: 0; - margin-left: 10px; -} - -.nut-rtl .nut-form-item-label { - text-align: right; - margin-right: 0; - margin-left: 10px; -} -[dir=rtl] .nut-form-item-label .required::before { - margin-right: 0; - margin-left: 4px; -} -.nut-rtl .nut-form-item-label .required::before { - margin-right: 0; - margin-left: 4px; -} -[dir=rtl] .nut-form-item-body-slots, -.nut-rtl .nut-form-item-body-slots { - text-align: right; -} -[dir=rtl] .nut-form-item-body-slots .nut-icon-ArrowRight, -[dir=rtl] .nut-form-item-body-slots .nut-icon-ArrowLeft, -.nut-rtl .nut-form-item-body-slots .nut-icon-ArrowRight, -.nut-rtl .nut-form-item-body-slots .nut-icon-ArrowLeft { - transform: rotateY(180deg); -} -[dir=rtl] .nut-form-item-body-slots .nut-input-text, -.nut-rtl .nut-form-item-body-slots .nut-input-text { - text-align: right; -} -[dir=rtl] .nut-form-item-body-slots .nut-textarea-textarea, -.nut-rtl .nut-form-item-body-slots .nut-textarea-textarea { - text-align: right; -} -[dir=rtl] .nut-form-item-tips, -.nut-rtl .nut-form-item-tips { - text-align: right; -} \ No newline at end of file diff --git a/src/packages/grid/grid.harmony.css b/src/packages/grid/grid.harmony.css deleted file mode 100644 index 882a807beb..0000000000 --- a/src/packages/grid/grid.harmony.css +++ /dev/null @@ -1,21 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-grid { - display: flex; - flex-direction: row; - align-items: stretch; - flex-wrap: wrap; - border: 0 solid rgba(0, 0, 0, 0.06); -} -.nut-grid-border { - border-top-width: 0px; - border-left-width: 0px; -} - -[dir=rtl] .nut-grid-border, -.nut-rtl .nut-grid-border { - border-left-width: 0; - border-right-width: 1px; -} \ No newline at end of file diff --git a/src/packages/griditem/griditem.harmony.css b/src/packages/griditem/griditem.harmony.css deleted file mode 100644 index f21703cbb8..0000000000 --- a/src/packages/griditem/griditem.harmony.css +++ /dev/null @@ -1,111 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-grid-item { - display: flex; - flex-direction: column; - position: relative; - box-sizing: border-box; - color: #1a1a1a; - overflow: hidden; -} -.nut-grid-item-text { - color: #1a1a1a; - font-size: 12px; - word-break: break-all; - margin: 8px 0 0 0; -} -.nut-grid-item-text-reverse { - margin: 0 0 8px 0; -} -.nut-grid-item-text-horizontal { - margin: 0 0 0 8px; -} -.nut-grid-item-text-horizontal-reverse { - margin: 0 8px 0 0; -} -.nut-grid-item-content { - display: flex; - box-sizing: border-box; - flex: 1; - flex-direction: column; - width: 100%; - padding: 16px 8px; - background: #ffffff; - border: 0 solid rgba(0, 0, 0, 0.06); -} -.nut-grid-item-content-border { - border-right-width: 0px; - border-bottom-width: 0px; -} -.nut-grid-item-content-surround { - border-top-width: 0px; - border-left-width: 0px; - border-radius: 8px; -} -.nut-grid-item-content-center { - align-items: center; - justify-content: center; -} -.nut-grid-item-content-square { - margin-top: -100%; -} -.nut-grid-item-content-reverse { - flex-direction: column-reverse; -} -.nut-grid-item-content-horizontal { - flex-direction: row; -} -.nut-grid-item-content-horizontal-reverse { - flex-direction: row-reverse; -} -.nut-grid-item-content-clickable { - cursor: pointer; -} -.nut-grid-item-content-clickable::before { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.7); - border: inherit; - border-color: rgba(0, 0, 0, 0.7); - border-radius: inherit; - transform: translate(-50%, -50%); - opacity: 0; - content: " "; -} -.nut-grid-item-content-clickable:active::before { - opacity: 0.1; -} - -[dir=rtl] .nut-grid-item-content-border, -.nut-rtl .nut-grid-item-content-border { - border-right-width: 0; - border-left-width: 1px; -} -[dir=rtl] .nut-grid-item-content-surround, -.nut-rtl .nut-grid-item-content-surround { - border-left-width: 0; - border-right-width: 1px; -} -[dir=rtl] .nut-grid-item-content-horizontal .nut-grid-item-text { - margin: 0 8px 0 0; -} -.nut-rtl .nut-grid-item-content-horizontal .nut-grid-item-text { - margin: 0 8px 0 0; -} -[dir=rtl] .nut-grid-item-content-horizontal.nut-grid-item-content-reverse .nut-grid-item-text { - margin: 0 0 0 8px; -} -.nut-rtl .nut-grid-item-content-horizontal.nut-grid-item-content-reverse .nut-grid-item-text { - margin: 0 0 0 8px; -} -[dir=rtl] .nut-grid-item-content-clickable::before, -.nut-rtl .nut-grid-item-content-clickable::before { - left: auto; - right: 50%; - transform: translate(50%, -50%); -} \ No newline at end of file diff --git a/src/packages/hoverbutton/hoverbutton.harmony.css b/src/packages/hoverbutton/hoverbutton.harmony.css deleted file mode 100644 index 6ecdaca086..0000000000 --- a/src/packages/hoverbutton/hoverbutton.harmony.css +++ /dev/null @@ -1,25 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-hoverbutton { - display: flex; - flex-direction: column; - gap: 8px; -} -.nut-hoverbutton-container { - position: fixed; - right: 8px; - bottom: 60px; - z-index: 10; -} - -[dir=rtl] .nut-hoverbutton-container { - right: auto; - left: 8px; -} - -.nut-hoverbutton-container-rtl { - right: auto; - left: 8px; -} \ No newline at end of file diff --git a/src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css b/src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css deleted file mode 100644 index 8c55180997..0000000000 --- a/src/packages/hoverbuttonitem/hoverbuttonitem.harmony.css +++ /dev/null @@ -1,60 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-hoverbutton-item-container { - width: 40px; - height: 40px; - border-radius: 40px; - border: 1px solid rgba(0, 0, 0, 0.12); - background-color: rgba(255, 255, 255, 0.9); -} -.nut-hoverbutton-item-container:active { - background-color: rgba(247, 248, 252, 0.9); -} -.nut-hoverbutton-item-container-active { - background-color: rgba(247, 248, 252, 0.9); -} -.nut-hoverbutton-item-container-harmony { - margin-bottom: 8px; -} -.nut-hoverbutton-item-container-harmony:last-child { - margin-bottom: 0; -} -.nut-hoverbutton-item-container-icontext { - display: flex; - flex-direction: column; - align-items: center; -} -.nut-hoverbutton-item-container-icontext .nut-icon { - display: block; - width: 14px; - height: 14px; - font-size: 14px; -} -.nut-hoverbutton-item-icon { - width: 20px; - height: 20px; - margin: 9px; - color: #1a1a1a; - fill: #1a1a1a; -} -.nut-hoverbutton-item-icon .nut-icon { - display: block; - width: 20px; - height: 20px; - font-size: 20px; -} -.nut-hoverbutton-item-container:active .nut-hoverbutton-item-icon { - color: #1a1a1a; - fill: #1a1a1a; -} -.nut-hoverbutton-item-text-icon { - width: 14px; - height: 5px; -} -.nut-hoverbutton-item-text { - font-size: 10px; - margin-top: 5px; - line-height: 9px; -} \ No newline at end of file diff --git a/src/packages/image/image.harmony.css b/src/packages/image/image.harmony.css deleted file mode 100644 index 482289e698..0000000000 --- a/src/packages/image/image.harmony.css +++ /dev/null @@ -1,54 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-image { - display: block; - position: relative; -} -.nut-image-default { - display: block; - width: 100%; - height: 100%; -} -.nut-image.nut-image-round { - border-radius: 50%; - overflow: hidden; -} -.nut-image-loading { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - background: #f2f3f5; - background-size: 100% 100%; -} -.nut-image-error { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - background: #f2f3f5; - background-size: 100% 100%; -} - -[dir=rtl] .nut-image .nut-img-loading, -.nut-rtl .nut-image .nut-img-loading { - left: auto; - right: 0; -} -[dir=rtl] .nut-image .nut-img-error, -.nut-rtl .nut-image .nut-img-error { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/imagepreview/imagepreview.harmony.css b/src/packages/imagepreview/imagepreview.harmony.css deleted file mode 100644 index 62d62e626d..0000000000 --- a/src/packages/imagepreview/imagepreview.harmony.css +++ /dev/null @@ -1,101 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-imagepreview { - width: 100%; - height: 100%; -} -.nut-imagepreview-swiper { - height: 100%; - width: 100vw; - background-color: transparent; -} -.nut-imagepreview-index { - position: fixed; - z-index: 2002; - top: 50px; - text-align: center; - left: 0; - right: 0; - background: transparent; - color: #ffffff; -} -.nut-imagepreview-index .arrow { - position: absolute; - left: 15px; - transform: rotateZ(180deg); -} -.nut-imagepreview-close { - position: fixed; - display: flex; - align-items: center; - justify-content: center; - z-index: 2002; - background: transparent; - color: #ffffff; -} -.nut-imagepreview-close .nut-icon { - color: #ffffff; -} -.nut-imagepreview-close.top-right { - top: 50px; - right: 20px; -} -.nut-imagepreview-close.top-left { - top: 50px; - left: 20px; -} -.nut-imagepreview-close.bottom { - bottom: 50px; - left: 0; - right: 0; - text-align: center; -} -.nut-imagepreview-pop { - height: 100%; - background: transparent !important; - display: flex; - align-items: center; - width: 100%; -} -.nut-imagepreview-swiper .nut-imagepreview-swiper-item, -.nut-imagepreview-swiper .nut-swiper-item { - display: flex; - align-items: center; - justify-content: center; - height: 100%; -} -.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-image, -.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-video, -.nut-imagepreview-swiper .nut-swiper-item .nut-image, -.nut-imagepreview-swiper .nut-swiper-item .nut-video { - display: flex; - justify-content: center; - align-items: center; -} -.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-image-preview-box, -.nut-imagepreview-swiper .nut-swiper-item .nut-image-preview-box { - width: 100%; -} -.nut-imagepreview-swiper .nut-imagepreview-swiper-item .nut-video video, -.nut-imagepreview-swiper .nut-swiper-item .nut-video video { - object-fit: contain; -} - -[dir=rtl] .nut-imagepreview-index .arrow, -.nut-rtl .nut-imagepreview-index .arrow { - left: auto; - right: 15px; - transform: rotateZ(-180deg); -} -[dir=rtl] .nut-imagepreview-close.top-right, -.nut-rtl .nut-imagepreview-close.top-right { - right: auto; - left: 20px; -} -[dir=rtl] .nut-imagepreview-close.top-left, -.nut-rtl .nut-imagepreview-close.top-left { - left: auto; - right: 20px; -} \ No newline at end of file diff --git a/src/packages/indicator/indicator.harmony.css b/src/packages/indicator/indicator.harmony.css deleted file mode 100644 index 7098699181..0000000000 --- a/src/packages/indicator/indicator.harmony.css +++ /dev/null @@ -1,162 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-indicator { - display: flex; - width: auto; - flex-direction: row; - flex-wrap: nowrap; - align-items: center; -} -.nut-indicator-fixed-width { - width: 21px; -} -.nut-indicator-dot { - display: inline-block; - vertical-align: middle; - width: 3px; - height: 3px; - border-radius: 50%; - background-color: #c2c4cc; - margin: 0 2px; - opacity: 0.4; -} -.nut-indicator-line { - display: inline-block; - vertical-align: middle; - width: 3px; - height: 3px; - border-radius: 50%; - background-color: #c2c4cc; - margin: 0 2px; - opacity: 0.4; -} -.nut-indicator-dot:first-child, .nut-indicator-line:first-child { - margin-left: 0px; -} -.nut-indicator-dot:last-child, .nut-indicator-line:last-child { - margin-right: 0px; -} -.nut-indicator-dot-active { - width: 6px; - border-radius: 2px; - background: #ff0f23; - opacity: 1; -} -.nut-indicator-line-active { - width: 6px; - border-radius: 2px; - background: #ff0f23; - opacity: 1; -} -.nut-indicator-fixed-width .nut-indicator-dot { - width: 12px; - border-radius: 2px; -} -.nut-indicator-fixed-width .nut-indicator-dot-active { - width: 6px; -} -.nut-indicator-vertical.nut-indicator-fixed-width { - justify-content: flex-start; - height: 21px; - width: auto; -} -.nut-indicator-vertical.nut-indicator-fixed-width .nut-indicator-dot { - width: 3px; - height: 12px; - border-radius: 2px; -} -.nut-indicator-vertical.nut-indicator-fixed-width .nut-indicator-dot-active { - height: 6px; -} -.nut-indicator-line { - width: 6px; - margin: 0; - border-radius: 2px; - background-color: transparent; -} -.nut-indicator-line-active { - transition: transform 0.3s ease-in-out; - background: #ff0f23; -} - -.nut-indicator-track { - position: relative; -} -.nut-indicator-track:after { - display: block; - content: " "; - position: absolute; - width: 100%; - height: 100%; - box-sizing: border-box; - border-radius: 2px; - background-color: #c2c4cc; - opacity: 0.4; -} - -.nut-indicator-white .nut-indicator-dot, .nut-indicator-white .nut-indicator-line { - position: relative; - box-sizing: content-box; - background: rgba(255, 255, 255, 0.4); - border: 1px solid rgba(0, 0, 0, 0.06); - opacity: 1; -} -.nut-indicator-white .nut-indicator-line { - opacity: 0; -} -.nut-indicator-white .nut-indicator-line-active { - opacity: 1; - background: rgb(255, 255, 255); -} -.nut-indicator-white .nut-indicator-dot-active { - background: rgb(255, 255, 255); -} - -.nut-indicator-track.nut-indicator-white:after { - border: 1px solid rgba(0, 0, 0, 0.06); - background: rgba(255, 255, 255, 0.4); -} - -.nut-indicator-vertical { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} -.nut-indicator-vertical .nut-indicator-dot { - margin: 2px 0; -} -.nut-indicator-vertical .nut-indicator-dot:first-child { - margin-top: 0px; -} -.nut-indicator-vertical .nut-indicator-dot:last-child { - margin-bottom: 0px; -} -.nut-indicator-vertical .nut-indicator-dot-active { - width: 3px; - height: 6px; -} -.nut-indicator-vertical.nut-indicator-track .nut-indicator-line { - width: 3px; - height: 6px; -} - -[dir=rtl] .nut-indicator-dot:first-child { - margin-left: 2px; - margin-right: 0px; -} - -.nut-rtl .nut-indicator-dot:first-child { - margin-left: 2px; - margin-right: 0px; -} -[dir=rtl] .nut-indicator-dot:last-child { - margin-right: 2px; - margin-left: 0px; -} -.nut-rtl .nut-indicator-dot:last-child { - margin-right: 2px; - margin-left: 0px; -} \ No newline at end of file diff --git a/src/packages/infiniteloading/infiniteloading.harmony.css b/src/packages/infiniteloading/infiniteloading.harmony.css deleted file mode 100644 index 97d37e002c..0000000000 --- a/src/packages/infiniteloading/infiniteloading.harmony.css +++ /dev/null @@ -1,63 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-infiniteloading { - display: block; - width: 100%; -} -.nut-infiniteloading .nut-infinite-top { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - overflow: hidden; - font-size: 12px; - color: #888b94; -} -.nut-infiniteloading .nut-infinite-top-tips { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} -.nut-infiniteloading .nut-infinite-top-tips-icons { - display: flex; - justify-content: center; - align-items: center; - margin-bottom: 4px; -} -.nut-infiniteloading .nut-infinite-bottom { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - padding-top: 6px; - color: #888b94; - text-align: center; -} -.nut-infiniteloading .nut-infinite-bottom-tips { - display: flex; - justify-content: center; - align-items: center; - font-size: 10px; -} -.nut-infiniteloading .nut-infinite-bottom-tips-icons { - margin-right: 8px; -} -.nut-infiniteloading-primary { - background-color: #ff0f23; -} -.nut-infiniteloading-primary .nut-infinite-bottom { - color: rgba(255, 255, 255, 0.9); -} -.nut-infiniteloading-primary .nut-infinite-top { - color: rgba(255, 255, 255, 0.9); -} - -[dir=rtl] .nut-infiniteloading .nut-infinite-bottom-tips-icons, -.nut-rtl .nut-infiniteloading .nut-infinite-bottom-tips-icons { - margin-right: 0; - margin-left: 8px; -} \ No newline at end of file diff --git a/src/packages/input/input.harmony.css b/src/packages/input/input.harmony.css deleted file mode 100644 index 53cda70813..0000000000 --- a/src/packages/input/input.harmony.css +++ /dev/null @@ -1,54 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-input { - position: relative; - display: flex; - flex-direction: row; - flex-wrap: nowrap; - flex: 1; - align-items: center; - font-size: 14px; - box-sizing: border-box; -} -.nut-input .nut-icon { - color: #c2c4cc; - width: 14px; - height: 14px; - font-size: 14px; -} -.nut-input-container { - height: 38px; - padding: 12px; - background-color: #ffffff; - border-radius: 6px; - border-bottom: 0px solid rgba(0, 0, 0, 0.06); -} - -.nut-input-native { - flex: 1; - color: #1a1a1a; - font-size: 14px; - line-height: 14px; - padding: 0; - border: 0; - outline: 0 none; - text-decoration: none; - background-color: transparent; -} - -.nut-input-readonly .nut-input-native { - color: #888b94; -} - -.nut-input-disabled { - color: #c2c4cc !important; -} -.nut-input-disabled input:disabled { - color: #c2c4cc; - cursor: not-allowed; - background: none; - opacity: 1; - -webkit-text-fill-color: #c2c4cc; -} \ No newline at end of file diff --git a/src/packages/inputnumber/inputnumber.harmony.css b/src/packages/inputnumber/inputnumber.harmony.css deleted file mode 100644 index b4d7d37f1b..0000000000 --- a/src/packages/inputnumber/inputnumber.harmony.css +++ /dev/null @@ -1,61 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-inputnumber { - display: inline-flex; - width: calc(2 * 0px + 2 * 20px + 26px); - flex-direction: row; - align-items: center; - background-color: #f2f3f5; - border-radius: 4px; - overflow: hidden; -} -.nut-inputnumber-minus { - display: flex; - justify-content: center; - align-items: center; - width: 20px; - height: 20px; - background-color: transparent; -} -.nut-inputnumber-add { - display: flex; - justify-content: center; - align-items: center; - width: 20px; - height: 20px; - background-color: transparent; -} -.nut-inputnumber-icon { - color: #505259; - cursor: pointer; -} -.nut-inputnumber-icon-disabled { - color: #c2c4cc; - cursor: not-allowed; -} -.nut-inputnumber-input { - display: flex; - justify-content: center; - align-items: center; - width: 26px; - font-size: 12px; - height: 20px; - text-align: center; - outline: none; - border: 0; - margin-left: 0px; - margin-right: 0px; - color: #505259; - background-color: #f2f3f5; -} -.nut-inputnumber-input-disabled { - color: #c2c4cc; -} -.nut-inputnumber-input::-webkit-outer-spin-button, .nut-inputnumber-input::-webkit-inner-spin-button { - appearance: none; -} -.nut-inputnumber-input-disabled { - color: #c2c4cc; -} \ No newline at end of file diff --git a/src/packages/layout/layout.harmony.css b/src/packages/layout/layout.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/layout/layout.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/loading/loading.harmony.css b/src/packages/loading/loading.harmony.css deleted file mode 100644 index 690e34b566..0000000000 --- a/src/packages/loading/loading.harmony.css +++ /dev/null @@ -1,45 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-loading { - display: inline-flex; - flex-direction: row; - align-items: center; - justify-content: center; -} -.nut-loading.nut-loading-vertical { - flex-direction: column; -} -.nut-loading .nut-loading-icon-box { - display: inline-block; - font-size: 0; - line-height: 0; - animation: nut-loading-rotation 1s infinite linear; -} -.nut-loading .nut-loading-icon-box .nut-loading-icon { - color: #888b94; - width: 12px; - height: 12px; - font-size: 12px; -} -.nut-loading .nut-loading-lottie-box { - width: 56px; - height: 56px; - border-radius: 8px; - background: rgba(0, 0, 0, 0.06); -} -.nut-loading .nut-loading-text { - padding-top: 8px; - color: #888b94; - font-size: 12px; -} - -@keyframes nut-loading-rotation { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - } -} \ No newline at end of file diff --git a/src/packages/lottie/lottie.harmony.css b/src/packages/lottie/lottie.harmony.css deleted file mode 100644 index f52f190c3c..0000000000 --- a/src/packages/lottie/lottie.harmony.css +++ /dev/null @@ -1,4 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ \ No newline at end of file diff --git a/src/packages/menu/menu.harmony.css b/src/packages/menu/menu.harmony.css deleted file mode 100644 index 499b3a794a..0000000000 --- a/src/packages/menu/menu.harmony.css +++ /dev/null @@ -1,56 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-menu { - position: relative; -} -.nut-menu.scroll-fixed { - position: fixed; - top: 0; - z-index: 1000; - width: 100%; -} - -.nut-menu-bar { - position: relative; - display: flex; - line-height: 48px; - background-color: #ffffff; - box-shadow: 0 2px 12px rgba(89, 89, 89, 0.12); -} -.nut-menu-bar.opened { - z-index: 1000; -} - -.nut-menu-title { - flex: 1; - text-align: center; - font-size: 14px; - color: #1a1a1a; - min-width: 0; - display: flex; - align-items: center; - justify-content: center; - max-width: 100%; -} -.nut-menu-title-text { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - display: block; - padding: 0 8px; -} -.nut-menu-title-icon { - flex-shrink: 0; - transition: all 0.2s linear; -} -.nut-menu-title.active { - color: #ff0f23; -} -.nut-menu-title.disabled { - color: #c2c4cc; -} -.nut-menu-title.active .nut-menu-title-icon { - transform: rotate(180deg); -} \ No newline at end of file diff --git a/src/packages/menuitem/menuitem.harmony.css b/src/packages/menuitem/menuitem.harmony.css deleted file mode 100644 index ffc260c4a1..0000000000 --- a/src/packages/menuitem/menuitem.harmony.css +++ /dev/null @@ -1,122 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-menu-container-content { - padding: 12px 24px; - max-height: 214px; - overflow-y: auto; - display: flex; - flex-wrap: wrap; - background: #ffffff; -} -.nut-menu-container-content_fixed { - width: 100%; - opacity: 0; - position: fixed; -} -.nut-menu-container-item { - display: flex; - align-items: center; - color: #1a1a1a; - font-size: 14px; - padding: 12px 0; -} -.nut-menu-container-item.active { - font-weight: 600; - color: #ff0f23; -} -.nut-menu-container-item .nut-icon { - display: inline-flex; - align-items: center; - margin-right: 8px; - flex-shrink: 0; -} -.nut-menu-container-wrap { - position: absolute; - width: 100%; - z-index: 1000; - overflow: hidden; -} -.nut-menu-container-wrap-up { - position: absolute; - width: 100%; - z-index: 1000; - overflow: hidden; -} -.nut-menu-container-wrap-up { - bottom: 48px; -} - -.overlay-fade-enter-active.nut-menu-container-overlay { - top: auto; - z-index: 1000; -} - -.nut-menu-placeholder-element { - position: fixed; - top: -var(--nutui-menu-bar-line-height, 48px); - left: 0; - right: 0; - z-index: 1000; - background-color: transparent; -} -.nut-menu-placeholder-element.up { - bottom: -var(--nutui-menu-bar-line-height, 48px); -} - -.nut-menu-container-down-enter { - opacity: 0; - transform: translate(0, -30px); -} - -.nut-menu-container-down-enter-done { - opacity: 1; - transform: translate(0, 0); - transition: all 100ms; -} - -.nut-menu-container-down-exit { - opacity: 1; - transition: all 100ms; -} - -.nut-menu-container-down-exit-done { - opacity: 0; - transition: all 100ms; -} - -.nut-menu-container-up-enter { - opacity: 0; - transform: translate(0, 30px); -} - -.nut-menu-container-up-enter-done { - opacity: 1; - transform: translate(0, 0); - transition: all 100ms; -} - -.nut-menu-container-up-exit { - opacity: 1; - transition: all 100ms; -} - -.nut-menu-container-up-exit-done { - opacity: 0; - transition: all 100ms; -} - -[dir=rtl] .nut-menu-container-item .nut-icon { - margin-right: 0; - margin-left: 8px; -} - -.nut-rtl .nut-menu-container-item .nut-icon { - margin-right: 0; - margin-left: 8px; -} -[dir=rtl] .nut-menu-container .nut-icon, -.nut-rtl .nut-menu-container .nut-icon { - transform: rotateY(180deg); -} \ No newline at end of file diff --git a/src/packages/navbar/navbar.harmony.css b/src/packages/navbar/navbar.harmony.css deleted file mode 100644 index 680cb131e1..0000000000 --- a/src/packages/navbar/navbar.harmony.css +++ /dev/null @@ -1,106 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-navbar { - width: 100%; - position: relative; - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - height: 44px; - box-sizing: border-box; - font-size: 14px; - color: #1a1a1a; - overflow: hidden; - padding: 0 16px; -} -.nut-navbar-fixed { - position: fixed; - top: 0; - left: 0; - right: 0; - width: 100%; -} -.nut-navbar-placeholder { - display: inline-block; - width: 100%; -} -.nut-navbar-safe-area-inset-top { - padding-top: constant(safe-area-inset-top); - padding-top: env(safe-area-inset-top); -} -.nut-navbar-title-wrapper { - justify-content: space-between; -} -.nut-navbar-title { - height: 100%; - text-align: center; - display: flex; - flex: 1; - flex-direction: row; - align-items: center; - font-size: 18px; - font-weight: 600; - color: #1a1a1a; -} -.nut-navbar-title-center { - max-width: 129px; - justify-content: center; -} -.nut-navbar-title ::-webkit-scrollbar { - display: none; -} -.nut-navbar-left, .nut-navbar-right { - display: flex; - align-items: center; - flex-direction: row; - max-width: 124px; - height: 100%; - cursor: pointer; - /* #ifndef harmony jd h5 weapp*/ - /* #endif */ -} -.nut-navbar-left .nut-icon, -.nut-navbar-left .nutui-iconfont, .nut-navbar-right .nut-icon, -.nut-navbar-right .nutui-iconfont { - width: 20px; - height: 20px; - font-size: 20px; -} -.nut-navbar-left-maxwidth, .nut-navbar-right-maxwidth { - box-sizing: border-box; - width: 108px; -} -.nut-navbar-left { - padding-right: 16px; - gap: 16px; -} -.nut-navbar-left-rtl { - padding-right: 0; - padding-left: 16px; -} -.nut-navbar-left-back { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - gap: 16px; -} -.nut-navbar-left-hidden { - padding-left: 0; - padding-right: 0; -} -.nut-navbar-right { - padding-left: 16px; - justify-content: flex-end; - gap: 16px; -} -.nut-navbar-right-rtl { - padding-right: 16px; - padding-left: 0; -} -.nut-navbar-rtl .nut-icon-ArrowLeft { - transform: rotateY(180deg); -} \ No newline at end of file diff --git a/src/packages/noticebar/noticebar.harmony.css b/src/packages/noticebar/noticebar.harmony.css deleted file mode 100644 index 6777164b2c..0000000000 --- a/src/packages/noticebar/noticebar.harmony.css +++ /dev/null @@ -1,194 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-noticebar { - width: 100%; -} -.nut-noticebar .nut-noticebar-box { - position: relative; - display: flex; - align-items: center; - height: 36px; - padding: 0 16px; - font-size: 12px; - background: rgb(251, 248, 220); - color: #d9500b; - border-radius: 0; -} -.nut-noticebar .nut-noticebar-box-wrapable { - height: auto; - padding: 8px 16px; -} -.nut-noticebar .nut-noticebar-box-center { - height: auto; - padding: 8px 16px; -} -.nut-noticebar .nut-noticebar-box-wrapable .nut-noticebar-box-wrap, .nut-noticebar .nut-noticebar-box-center .nut-noticebar-box-wrap { - height: auto; -} -.nut-noticebar .nut-noticebar-box-wrapable .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content { - position: relative; - white-space: normal; - word-wrap: break-word; -} -.nut-noticebar .nut-noticebar-box-center { - justify-content: center; -} -.nut-noticebar .nut-noticebar-box-center .nut-noticebar-box-wrap { - flex: initial; -} -.nut-noticebar .nut-noticebar-box-center .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content { - position: relative; - display: initial; -} -.nut-noticebar .nut-noticebar-box-left-icon { - display: flex; - height: 16px; - min-width: 16px; - margin-right: 4px; - background-size: 100% 100%; -} -.nut-noticebar .nut-noticebar-box-right-icon { - display: flex; - align-items: center; - justify-content: center; - width: 16px; - margin-left: 4px; -} -.nut-noticebar .nut-noticebar-box-right-icon .nut-icon { - width: 12px; - height: 12px; -} -.nut-noticebar .nut-noticebar-box-wrap { - display: flex; - flex: 1; - height: 24px; - line-height: 24px; - overflow: hidden; - position: relative; -} -.nut-noticebar .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content { - position: absolute; - white-space: nowrap; -} -.nut-noticebar .nut-noticebar-box-wrap .nut-noticebar-box-wrap-content.nut-ellipsis { - max-width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.nut-noticebar .nut-noticebar-box .play { - animation: nut-notice-bar-play linear both running; -} -.nut-noticebar .nut-noticebar-box .play-infinite { - animation: nut-notice-bar-play-infinite linear infinite both running; -} -.nut-noticebar .nut-noticebar-box .play-vertical { - animation: nut-notice-bar-play-vertical linear infinite both running; -} -.nut-noticebar .nut-noticebar-vertical { - position: relative; - display: flex; - justify-content: space-between; - height: 36px; - font-size: 12px; - overflow: hidden; - padding: 0 16px; - background: rgb(251, 248, 220); - color: #d9500b; -} -.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-left-icon { - height: 16px; - min-width: 16px; - margin: 4px; - background-size: 100% 100%; - display: flex; - align-self: center; -} -.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-horseLamp-list { - margin: 0; - padding: 0; - display: block; - flex: 1; -} -.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-horseLamp-list-item { - display: flex; - align-items: center; - height: 36px; - width: 100%; -} -.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-wrap { - display: flex; - height: 100%; - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; -} -.nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-right-icon { - align-self: center; - display: flex; - justify-content: center; - width: 16px; - margin-left: 4px; -} -@keyframes nut-notice-bar-play { - to { - transform: translate3d(-100%, 0, 0); - } -} -@keyframes nut-notice-bar-play-infinite { - to { - transform: translate3d(-100%, 0, 0); - } -} -@keyframes nut-notice-bar-play-vertical { - to { - transform: translateY(36px); - } -} - -[dir=rtl] .nut-noticebar .nut-noticebar-box-left-icon { - margin-right: 0; - margin-left: 4px; -} - -.nut-rtl .nut-noticebar .nut-noticebar-box-left-icon { - margin-right: 0; - margin-left: 4px; -} -[dir=rtl] .nut-noticebar .nut-noticebar-box-right-icon { - margin-left: 0; - margin-right: 4px; -} -.nut-rtl .nut-noticebar .nut-noticebar-box-right-icon { - margin-left: 0; - margin-right: 4px; -} -[dir=rtl] .nut-noticebar .nut-noticebar-box .play, -.nut-rtl .nut-noticebar .nut-noticebar-box .play { - animation: nut-notice-bar-play-rtl linear both running; -} -[dir=rtl] .nut-noticebar .nut-noticebar-box .play-infinite, -.nut-rtl .nut-noticebar .nut-noticebar-box .play-infinite { - animation: nut-notice-bar-play-infinite-rtl linear infinite both running; -} -@keyframes nut-notice-bar-play-rtl { - to { - transform: translate3d(100%, 0, 0); - } -} -@keyframes nut-notice-bar-play-infinite-rtl { - to { - transform: translate3d(100%, 0, 0); - } -} -[dir=rtl] .nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-right-icon { - margin-left: 0; - margin-right: 4px; -} -.nut-rtl .nut-noticebar .nut-noticebar-vertical .nut-noticebar-box-right-icon { - margin-left: 0; - margin-right: 4px; -} \ No newline at end of file diff --git a/src/packages/notify/notify.harmony.css b/src/packages/notify/notify.harmony.css deleted file mode 100644 index 4aa4e3b272..0000000000 --- a/src/packages/notify/notify.harmony.css +++ /dev/null @@ -1,90 +0,0 @@ -@charset "UTF-8"; - -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -/*入场动画开始*/ -.fade-enter { - opacity: 0; -} - -/*入场动画过程*/ -.fade-enter-active { - opacity: 1; - transition: opacity 1s; -} - -/*入场动画结束*/ -.fade-enter-done { - opacity: 1; -} - -/*离场动画开始*/ -.fade-exit { - opacity: 1; -} - -/*离场动画过程*/ -.fade-exit-active { - opacity: 0; - transition: opacity 1s; -} - -/*离场动画结束*/ -.fade-exit-done { - opacity: 0; -} - -/*页面第一次加载时的开始状态*/ -.fade-appear { - opacity: 0; -} - -/*页面第一次加载时的动画过程*/ -.fade-appear-active { - opacity: 1; - transition: opacity 1s; -} - -.nut-notify { - display: flex; - justify-content: center; - align-items: center; - box-sizing: border-box; - padding: 0px 10px; - color: #ffffff; - font-size: 14px; - white-space: pre-wrap; - word-wrap: break-word; - height: 40px; -} -.nut-notify-popup-top, .nut-notify-popup-bottom { - position: fixed; - left: 0; - right: 0; - overflow-y: auto; - transition: transform 0.3s; - z-index: 9999; -} -.nut-notify-popup-top { - top: 0; -} -.nut-notify-popup-bottom { - bottom: 0; -} -.nut-notify-base { - background: #ff0f23; -} -.nut-notify-primary { - background: #0073ff; -} -.nut-notify-success { - background: #00d900; -} -.nut-notify-danger { - background: #ff0f23; -} -.nut-notify-warning { - background: #ffbf00; -} \ No newline at end of file diff --git a/src/packages/numberkeyboard/numberkeyboard.harmony.css b/src/packages/numberkeyboard/numberkeyboard.harmony.css deleted file mode 100644 index 21931acefb..0000000000 --- a/src/packages/numberkeyboard/numberkeyboard.harmony.css +++ /dev/null @@ -1,129 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-numberkeyboard { - width: 100%; - padding: 0 0 22px 0; - user-select: none; - background-color: #f2f3f5; -} -.nut-numberkeyboard-header { - position: relative; - display: flex; - align-items: center; - justify-content: center; - box-sizing: content-box; - padding: 16px; - color: #1a1a1a; - font-size: 16px; -} -.nut-numberkeyboard-header-title { - color: #1a1a1a; - display: inline-block; - font-size: 16px; -} -.nut-numberkeyboard-header-close { - position: absolute; - display: block; - right: 0; - top: 50%; - transform: translateY(-50%); - padding: 0 16px; - color: #505259; - font-size: 14px; - background-color: transparent; - border: none; - cursor: pointer; -} -.nut-numberkeyboard-body { - display: flex; - padding: 6px 0 0 6px; -} -.nut-numberkeyboard-body-keys { - display: flex; - flex: 3; - flex-wrap: wrap; -} -.nut-numberkeyboard-body-wrapper { - position: relative; - flex: 1; - /* #ifdef harmony */ - width: 33%; - /* #endif */ - /* #ifndef harmony */ - flex-basis: 33%; - /* #endif */ - box-sizing: border-box; - padding: 0 6px 6px 0; - background-color: #f7f8fc; -} -.nut-numberkeyboard-body-wrapper .key { - display: flex; - align-items: center; - justify-content: center; - height: 48px; - font-size: 18px; - line-height: 1.5; - background-color: #ffffff; - color: #505259; - border-radius: 8px; - border: none; - font-weight: 600; - cursor: pointer; -} -.nut-numberkeyboard-body-wrapper .key.active { - background-color: #ebedf0; -} -.nut-numberkeyboard-sidebar { - display: flex; - flex: 1; - flex-basis: 33%; - flex-direction: column; -} -.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper { - width: 100%; -} -.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key { - position: absolute; - top: 0; - right: 6px; - bottom: 6px; - left: 0; - height: auto; -} -.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .confirm { - font-size: 16px; - color: #fff; - background-color: #ff0f23; -} -.nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .confirm.active { - background-color: rgba(255, 0, 0, 0.7); -} - -[dir=rtl] .nut-popup .nut-numberkeyboard-header-close, -.nut-rtl .nut-popup .nut-numberkeyboard-header-close { - right: auto; - left: 0; -} -[dir=rtl] .nut-popup .nut-numberkeyboard-body, -.nut-rtl .nut-popup .nut-numberkeyboard-body { - padding: 6px 6px 0 0; -} -[dir=rtl] .nut-popup .nut-numberkeyboard-body-wrapper, -.nut-rtl .nut-popup .nut-numberkeyboard-body-wrapper { - padding: 0 0 6px 6px; -} -[dir=rtl] .nut-popup .nut-numberkeyboard-body-wrapper .delete, -.nut-rtl .nut-popup .nut-numberkeyboard-body-wrapper .delete { - transform: rotate(-180deg); -} -[dir=rtl] .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key, -.nut-rtl .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key { - left: 6px; - right: 0; -} -[dir=rtl] .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key.delete, -.nut-rtl .nut-popup .nut-numberkeyboard-sidebar .nut-numberkeyboard-body-wrapper .key.delete { - transform: rotate(-180deg); -} \ No newline at end of file diff --git a/src/packages/overlay/overlay.harmony.css b/src/packages/overlay/overlay.harmony.css deleted file mode 100644 index 5e9c6e3ce7..0000000000 --- a/src/packages/overlay/overlay.harmony.css +++ /dev/null @@ -1,63 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-overlay { - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.7); - z-index: 1000; -} - -.nut-overflow-hidden { - overflow: hidden !important; -} - -@keyframes nut-fade-in { - 0% { - opacity: 0; - } - 1% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes nut-fade-out { - 0% { - opacity: 1; - } - 1% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -.nut-overlay-slide-enter-active { - animation-fill-mode: both; - animation-name: nut-fade-in; - animation-duration: 0.3s; -} -.nut-overlay-slide-appear-active { - animation-fill-mode: both; - animation-name: nut-fade-in; - animation-duration: 0.3s; -} -.nut-overlay-slide-exit-active { - animation-fill-mode: both; - animation-name: nut-fade-out; - animation-duration: 0.3s; -} - -[dir=rtl] .nut-overlay, -.nut-rtl .nut-overlay { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/pagination/pagination.harmony.css b/src/packages/pagination/pagination.harmony.css deleted file mode 100644 index c11bcf0c83..0000000000 --- a/src/packages/pagination/pagination.harmony.css +++ /dev/null @@ -1,139 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-pagination { - display: flex; - flex-direction: row; - font-size: 14px; - color: #ff0f23; -} - -.nut-pagination-prev { - height: 39px; - min-width: 39px; - flex-shrink: 0; - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - color: #ff0f23; - background: #ffffff; - border-radius: 2px; - border: 1px solid rgba(0, 0, 0, 0.06); - cursor: pointer; -} - -.nut-pagination-item { - height: 39px; - min-width: 39px; - flex-shrink: 0; - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - color: #ff0f23; - background: #ffffff; - border-radius: 2px; - border: 1px solid rgba(0, 0, 0, 0.06); - cursor: pointer; -} - -.nut-pagination-next { - height: 39px; - min-width: 39px; - flex-shrink: 0; - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - color: #ff0f23; - background: #ffffff; - border-radius: 2px; - border: 1px solid rgba(0, 0, 0, 0.06); - cursor: pointer; -} - -.nut-pagination-prev, -.nut-pagination-item { - border-right-width: 0; -} - -.nut-pagination-prev { - padding: 0 12px; -} - -.nut-pagination-next { - padding: 0 12px; -} - -.nut-pagination-contain { - display: flex; - flex-direction: row; -} - -.nut-pagination-item-active { - color: #ffffff; - border-width: 0; - background-color: #ff0f23; -} - -.nut-pagination-item-disabled { - color: #c2c4cc; - background-color: #f7f8fa; - cursor: not-allowed; -} - -.nut-pagination-next-disabled { - color: #c2c4cc; - background-color: #f7f8fa; - cursor: not-allowed; -} - -.nut-pagination-prev-disabled { - color: #c2c4cc; - background-color: #f7f8fa; - cursor: not-allowed; -} - -.nut-pagination-simple { - height: 39px; - width: 124px; - line-height: 39px; - text-align: center; - font-size: 14px; - color: #ff0f23; -} - -.nut-pagination-simple-border { - border-right: 1px solid rgba(0, 0, 0, 0.06); -} - -.nut-pagination-lite { - height: 20px; - padding: 0 6px; - display: flex; - flex-direction: row; - align-items: center; - color: #ffffff; - background-color: rgba(0, 0, 0, 0.45); - border-radius: 4px; -} - -.nut-pagination-lite-active { - font-size: 11px; - color: #ffffff; -} - -.nut-pagination-lite-default { - font-size: 11px; - color: #ffffff; -} - -.nut-pagination-lite-spliterator { - font-size: 11px; - color: #ffffff; -} \ No newline at end of file diff --git a/src/packages/picker/picker.harmony.css b/src/packages/picker/picker.harmony.css deleted file mode 100644 index f4c62ea90b..0000000000 --- a/src/packages/picker/picker.harmony.css +++ /dev/null @@ -1,168 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-picker { - background-color: #ffffff; - width: 100%; -} -.nut-picker-control { - display: flex; - height: 50px; - font-size: 16px; - align-items: center; - justify-content: space-between; - padding: 16px; -} -.nut-picker-cancel-btn { - color: #505259; - font-size: 14px; -} -.nut-picker-confirm-btn { - color: #ff0f23; - font-size: 14px; -} -.nut-picker-title { - flex: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - text-align: center; - color: #1a1a1a; - font-size: 16px; - font-weight: 600; -} -.nut-picker-panel { - display: flex; - position: relative; -} -.nut-picker-indicator { - position: absolute; - top: 108px; - height: 36px; - width: 100%; - border: 1px solid rgba(0, 0, 0, 0.06); - border-left: 0; - border-right: 0; - color: #1a1a1a; - font-size: 14px; - z-index: 3; -} -.nut-picker-indicator-taro { - height: 36px; - border: 0; -} -.nut-picker-indicator-taro::before { - border: 1px solid rgba(0, 0, 0, 0.06); - border-left: 0; - border-right: 0; -} -.nut-picker-indicator-taro::after { - border: 1px solid rgba(0, 0, 0, 0.06); - border-left: 0; - border-right: 0; -} -.nut-picker-list { - flex: 1; - position: relative; - height: calc(36px * 7); - overflow: hidden; - text-align: center; -} -.nut-picker-list-panel { - transform-style: preserve-3d; -} -.nut-picker-mask { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); - background-position: top, bottom; - background-size: 100% 108px; - background-repeat: no-repeat; - transform: translateZ(0); - z-index: 3; -} -.nut-picker-view-panel { - height: calc(36px * 7); - flex-grow: 1; -} -.nut-picker-content { - position: absolute; - top: 108px; - width: 100%; - height: 36px; -} -.nut-picker-roller { - position: absolute; - top: 108px; - width: 100%; - height: 36px; -} -.nut-picker-content { - background: #fff; - z-index: 2; - overflow: hidden; -} -.nut-picker-item { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - height: 36px; - line-height: 36px; - color: #1a1a1a; - font-size: 14px; - text-align: center; -} -.nut-picker-roller-item { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - height: 36px; - line-height: 36px; - color: #1a1a1a; - font-size: 14px; - text-align: center; -} -.nut-picker-item { - font-size: 16px; - background: #fff; -} -.nut-picker-roller { - z-index: 1; - transform-style: preserve-3d; -} -.nut-picker-roller-item { - backface-visibility: hidden; - -moz-backface-visibility: hidden; - -webkit-backface-visibility: hidden; - position: absolute; - top: 0; - width: 100%; -} -.nut-picker-roller-item-title { - display: block; - width: 100%; - height: 36px; - line-height: 36px; - text-align: center; - color: #1a1a1a; - font-size: 14px; -} -.nut-picker-roller-item-hidden { - visibility: hidden; - opacity: 0; -} -.nut-picker-placeholder { - height: 1px; -} - -[dir=rtl] .nut-picker-mask { - background-image: linear-gradient(-180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); -} - -.nut-rtl .nut-picker-mask { - background-image: linear-gradient(-180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); -} \ No newline at end of file diff --git a/src/packages/pickerview/pickerview.harmony.css b/src/packages/pickerview/pickerview.harmony.css deleted file mode 100644 index 3c16c85d8b..0000000000 --- a/src/packages/pickerview/pickerview.harmony.css +++ /dev/null @@ -1,83 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-pickerview { - position: relative; - display: flex; - width: 100%; - height: calc(36px * 7); - overflow: hidden; -} -.nut-pickerview-mask, .nut-pickerview-indicator { - position: absolute; - left: 0; - right: 0; - z-index: 3; - pointer-events: none; -} -.nut-pickerview-mask { - top: 0; - bottom: 0; - background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); - background-position: top, bottom; - background-size: 100% calc((36px * 7 - 36px) / 2); - background-repeat: no-repeat; - transform: translateZ(0); -} -.nut-pickerview-indicator { - top: calc((36px * 7 - 36px) / 2); - height: 36px; - border: 1px solid rgba(0, 0, 0, 0.06); - border-left: 0; - border-right: 0; - box-sizing: border-box; -} -.nut-pickerview-list { - position: relative; - flex: 1; - height: calc(36px * 7); - overflow: hidden; - touch-action: none; -} -.nut-pickerview-roller { - position: absolute; - top: calc((36px * 7 - 36px) / 2); - width: 100%; - height: 36px; - z-index: 1; - transform-style: preserve-3d; -} -.nut-pickerview-roller-item { - position: absolute; - top: 0; - backface-visibility: hidden; - -moz-backface-visibility: hidden; - -webkit-backface-visibility: hidden; -} -.nut-pickerview-roller-item-hidden { - visibility: hidden; - opacity: 0; -} -.nut-pickerview-roller-item { - width: 100%; - height: 36px; - line-height: 36px; - color: #1a1a1a; - font-size: 14px; - text-align: center; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.nut-pickerview-roller-item-tiled { - width: 100%; - height: 36px; - line-height: 36px; - color: #1a1a1a; - font-size: 14px; - text-align: center; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} \ No newline at end of file diff --git a/src/packages/popover/popover.harmony.css b/src/packages/popover/popover.harmony.css deleted file mode 100644 index 593fe6356f..0000000000 --- a/src/packages/popover/popover.harmony.css +++ /dev/null @@ -1,294 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-popover { - position: absolute; - display: inline-block; - word-break: normal; -} -.nut-popover-arrow { - position: absolute; - width: 8px; - height: 4px; -} -.nut-popover-arrow .nut-icon-ArrowRadius { - position: absolute; - color: #ffffff; -} -.nut-popover-arrow-top { - bottom: -4px; -} -.nut-popover-arrow-bottom { - top: -4px; -} -.nut-popover-arrow-left { - right: -6px; - transform-origin: center top; -} -.nut-popover-arrow-left.nut-popover-arrow-left { - top: 50%; - transform: rotate(90deg) translateY(-50%); -} -.nut-popover-arrow-left.nut-popover-arrow-left-start { - top: 16px; - right: -8px; - transform: rotate(90deg) translateY(0%); -} -.nut-popover-arrow-left.nut-popover-arrow-left-end { - bottom: 16px; - right: -8px; - transform: rotate(90deg) translateY(0%); -} -.nut-popover-arrow-right { - transform-origin: center top; -} -.nut-popover-arrow-right.nut-popover-arrow-right { - top: 50%; - left: -6px; - transform: rotate(-90deg) translateY(-50%); -} -.nut-popover-arrow-right.nut-popover-arrow-right-start { - top: 16px; - left: -8px; - transform: rotate(-90deg) translateY(0%); -} -.nut-popover-arrow-right.nut-popover-arrow-right-end { - bottom: 16px; - left: -8px; - transform: rotate(-90deg) translateY(0%); -} -.nut-popover .nut-popover-content { - position: absolute; - background: #ffffff; - border-radius: 4px; - font-size: 12px; - color: rgba(0, 0, 0, 0.7); - line-height: 28px; - max-height: initial; - overflow-y: initial; -} -.nut-popover .nut-popover-content .nut-popover-menu-item { - display: flex; - align-items: center; - justify-content: center; - padding: 0 8px; - border-bottom: 1px solid rgba(0, 0, 0, 0.06); - max-width: 160px; - word-wrap: break-word; -} -.nut-popover .nut-popover-content .nut-popover-menu-item:last-child { - margin-bottom: 0px; - border-bottom: none; -} -.nut-popover .nut-popover-content .nut-popover-menu-item-icon { - display: flex; - justify-content: center; - align-items: center; - width: 12px; - height: 12px; - font-size: 12px; -} -.nut-popover .nut-popover-content .nut-popover-menu-item-icon .nut-icon { - width: 12px; - height: 12px; - font-size: 12px; -} -.nut-popover .nut-popover-content .nut-popover-menu-item-name { - width: calc(100% - 34px); - word-break: keep-all; - margin: 0 8px 0 4px; - flex: 1; -} -.nut-popover .nut-popover-content .nut-popover-menu-item-action-icon { - display: flex; - justify-content: center; - align-items: center; - width: 12px; - height: 12px; - font-size: 12px; - color: #505259; -} -.nut-popover .nut-popover-content .nut-popover-menu-item-action-icon .nut-icon { - width: 12px; - height: 12px; - font-size: 12px; -} -.nut-popover .nut-popover-content .nut-popover-menu-item.nut-popover-menu-disabled { - color: #c2c4cc; - cursor: not-allowed; -} -.nut-popover .nut-popover-content .nut-popover-menu-item.nut-popover-menu-taroitem { - display: flex; -} -.nut-popover .nut-popover-content-top .nut-popover-arrow-top { - left: 50%; - transform-origin: center left; - transform: rotate(180deg) translateX(-50%); -} -.nut-popover .nut-popover-content-top-end { - right: 0; -} -.nut-popover .nut-popover-content-top-end .nut-popover-arrow-top-end { - right: 16px; - bottom: -3.5px; - transform: rotate(180deg) translateX(0%); -} -.nut-popover .nut-popover-content-top-start { - left: 0; -} -.nut-popover .nut-popover-content-top-start .nut-popover-arrow-top-start { - left: 16px; - bottom: -3.5px; - transform: rotate(180deg) translateX(0%); -} -.nut-popover .nut-popover-content-bottom .nut-popover-arrow-bottom { - left: 50%; - transform: translateX(-50%); -} -.nut-popover .nut-popover-content-bottom-end { - right: 0; -} -.nut-popover .nut-popover-content-bottom-end .nut-popover-arrow-bottom-end { - right: 16px; - transform: translateX(0%); -} -.nut-popover .nut-popover-content-bottom-start { - left: 0; -} -.nut-popover .nut-popover-content-bottom-start .nut-popover-arrow-bottom-start { - left: 16px; - transform: translateX(0%); -} -.nut-popover .nut-popover-content-left-end { - bottom: 0; -} -.nut-popover .nut-popover-content-left-start { - top: 0; -} -.nut-popover .nut-popover-content-right-end { - bottom: 0; -} -.nut-popover .nut-popover-content-right-start { - top: 0; -} - -.nut-popover-dark { - background: rgba(0, 0, 0, 0.7); - color: #ffffff; -} -.nut-popover-dark .nut-popover-arrow .nut-icon-ArrowRadius { - color: rgba(0, 0, 0, 0.7); -} -.nut-popover-dark .nut-popover-content { - background: rgba(0, 0, 0, 0.7) !important; - color: #ffffff !important; -} -.nut-popover-dark .nut-popover-content .nut-popover-menu-item-action-icon { - color: rgba(255, 255, 255, 0.8); -} - -[dir=rtl] .nut-popover .nut-popover-content .nut-popover-menu-item-name, -.nut-rtl .nut-popover .nut-popover-content .nut-popover-menu-item-name { - margin-left: 0; - margin-right: 4px; -} -[dir=rtl] .nut-popover .nut-popover-content .nut-popover-menu-item-action-icon { - right: auto; - left: 8px; -} -.nut-rtl .nut-popover .nut-popover-content .nut-popover-menu-item-action-icon { - right: auto; - left: 8px; -} -[dir=rtl] .nut-popover .nut-popover-content-top .nut-popover-arrow-top, -.nut-rtl .nut-popover .nut-popover-content-top .nut-popover-arrow-top { - left: auto; - right: 50%; - transform: translateX(50%); -} -[dir=rtl] .nut-popover .nut-popover-content-top-end, -.nut-rtl .nut-popover .nut-popover-content-top-end { - right: auto; - left: 0; -} -[dir=rtl] .nut-popover .nut-popover-content-top-end .nut-popover-arrow-top-end, -.nut-rtl .nut-popover .nut-popover-content-top-end .nut-popover-arrow-top-end { - right: auto; - left: 16px; -} -[dir=rtl] .nut-popover .nut-popover-content-top-start, -.nut-rtl .nut-popover .nut-popover-content-top-start { - left: auto; - right: 0; -} -[dir=rtl] .nut-popover .nut-popover-content-top-start .nut-popover-arrow-top-start, -.nut-rtl .nut-popover .nut-popover-content-top-start .nut-popover-arrow-top-start { - left: auto; - right: 16px; -} -[dir=rtl] .nut-popover .nut-popover-content-bottom .nut-popover-arrow-bottom, -.nut-rtl .nut-popover .nut-popover-content-bottom .nut-popover-arrow-bottom { - left: auto; - right: 50%; - transform: translateX(50%); -} -[dir=rtl] .nut-popover .nut-popover-content-bottom-end, -.nut-rtl .nut-popover .nut-popover-content-bottom-end { - right: auto; - left: 0; -} -[dir=rtl] .nut-popover .nut-popover-content-bottom-end .nut-popover-arrow-bottom-end, -.nut-rtl .nut-popover .nut-popover-content-bottom-end .nut-popover-arrow-bottom-end { - right: auto; - left: 16px; -} -[dir=rtl] .nut-popover .nut-popover-content-bottom-start, -.nut-rtl .nut-popover .nut-popover-content-bottom-start { - left: auto; - right: 0; -} -[dir=rtl] .nut-popover .nut-popover-content-bottom-start .nut-popover-arrow-bottom-start, -.nut-rtl .nut-popover .nut-popover-content-bottom-start .nut-popover-arrow-bottom-start { - left: auto; - right: 16px; -} - -.nut-popover-enter-from, -.nut-popover-leave-active { - transform: scale(0.8); - opacity: 0; -} - -.nut-popover-enter-active { - transition-timing-function: ease-out; -} - -.nut-popover-leave-active { - transition-timing-function: ease-in; -} - -.nut-popover-content-bg { - position: fixed; - height: 100%; - width: 100%; - top: 0; - left: 0; - background: transparent; - z-index: 999; -} - -[dir=rtl] .nut-popover-content-bg, -.nut-rtl .nut-popover-content-bg { - left: auto; - right: 0; -} - -.nut-popover-wrapper { - display: inline-block; -} - -.nut-popover-content-copy { - position: absolute; - top: -99999px; -} \ No newline at end of file diff --git a/src/packages/popup/popup.harmony.css b/src/packages/popup/popup.harmony.css deleted file mode 100644 index cfe41e7fd6..0000000000 --- a/src/packages/popup/popup.harmony.css +++ /dev/null @@ -1,363 +0,0 @@ -@charset "UTF-8"; - -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-popup { - position: fixed; - min-height: 46%; - max-height: 100%; - background-color: #ffffff; - -webkit-overflow-scrolling: touch; - font-size: 14px; -} -.nut-popup-title { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - border-bottom: 0; - padding: 16px; - position: relative; -} -.nut-popup-title-wrapper { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -.nut-popup-title-title { - color: #1a1a1a; - font-weight: 600; - font-size: 16px; - line-height: 16px; -} -.nut-popup-title-description { - color: #505259; - font-size: 14px; - font-weight: 400; -} -.nut-popup-title-description-gap { - margin-top: 8px; -} -.nut-popup-title-left { - position: absolute; - top: 16px; - left: 16px; -} -.nut-popup-title-right { - position: absolute; - top: 16px; - right: 16px; - z-index: 1; - width: 20px; - height: 20px; - color: #1a1a1a; - cursor: pointer; -} -.nut-popup-title-right:active { - opacity: 0.7; -} -.nut-popup-title-right-top-left { - top: 16px; - left: 16px; -} -.nut-popup-title-right-bottom-left { - bottom: 16px; - left: 16px; -} -.nut-popup-title-right-bottom-right { - right: 16px; - bottom: 16px; -} -.nut-popup-center { - top: 50%; - left: 50%; - min-height: 10%; - max-width: 295px; - transform: translate(-50%, -50%); -} -.nut-popup-center.nut-popup-round { - border-radius: 12px; -} -.nut-popup-bottom, .nut-popup-top { - max-height: 87%; -} -.nut-popup-bottom { - bottom: 0; - left: 0; - width: 100%; -} -.nut-popup-bottom.nut-popup-round { - border-radius: 12px 12px 0 0; -} -.nut-popup-right { - top: 0; - right: 0; - width: 100px; - height: 100%; -} -.nut-popup-right.nut-popup-round { - border-radius: 12px 0 0 12px; -} -.nut-popup-left { - top: 0; - left: 0; - width: 100px; - height: 100%; -} -.nut-popup-left.nut-popup-round { - border-radius: 0 12px 12px 0; -} -.nut-popup-top { - top: 0; - left: 0; - width: 100%; -} -.nut-popup-top.nut-popup-round { - border-radius: 0 0 12px 12px; -} -.nut-popup-slide { - /* 从顶部滑出 */ - /* 从右侧滑出 */ - /* 从底部滑出 */ - /* 从左侧滑出 */ -} -@keyframes popup-scale-fade-in { - from { - opacity: 0; - transform: scale(0.8); - } - to { - opacity: 1; - transform: scale(1); - } -} -@keyframes popup-scale-fade-out { - from { - opacity: 1; - transform: scale(1); - } - to { - opacity: 0; - transform: scale(0.8); - } -} -.nut-popup-slide-default-enter-active { - animation-fill-mode: both; - animation-name: popup-scale-fade-in; - animation-duration: 0.3s; -} -.nut-popup-slide-default-exit-active { - animation-fill-mode: both; - animation-name: popup-scale-fade-out; - animation-duration: 0.3s; -} -@keyframes popup-fade-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes popup-fade-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -.nut-popup-slide-center-enter-active { - animation-fill-mode: both; - animation-name: popup-fade-in; - animation-duration: 0.3s; -} -.nut-popup-slide-center-exit-active { - animation-fill-mode: both; - animation-name: popup-fade-out; - animation-duration: 0.3s; -} -@keyframes popup-slide-top-enter { - from { - transform: translate3d(0, -100%, 0); - } -} -@keyframes popup-slide-top-exit { - to { - transform: translate3d(0, -100%, 0); - } -} -.nut-popup-slide-top-enter-active { - transform: translate3d(0, 0%, 0); - animation-fill-mode: both; - animation-name: popup-slide-top-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-top-appear-active { - transform: translate3d(0, 0%, 0); - animation-fill-mode: both; - animation-name: popup-slide-top-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-top-exit-active { - animation-fill-mode: both; - animation-name: popup-slide-top-exit; - animation-duration: 0.3s; -} -@keyframes popup-slide-right-enter { - from { - transform: translate3d(100%, 0, 0); - } -} -@keyframes popup-slide-right-exit { - to { - transform: translate3d(100%, 0, 0); - } -} -.nut-popup-slide-right-enter-active { - transform: translate3d(0, 0, 0); - animation-fill-mode: both; - animation-name: popup-slide-right-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-right-appear-active { - transform: translate3d(0, 0, 0); - animation-fill-mode: both; - animation-name: popup-slide-right-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-right-exit { - animation-fill-mode: both; - animation-name: popup-slide-right-exit; - animation-duration: 0.3s; -} -@keyframes popup-slide-bottom-enter { - from { - transform: translate3d(0, 100%, 0); - } -} -@keyframes slide-bottom-exit { - to { - transform: translate3d(0, 100%, 0); - } -} -.nut-popup-slide-bottom-enter-active { - transform: translate(0, 0); - animation-fill-mode: both; - animation-name: popup-slide-bottom-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-bottom-appear-active { - transform: translate(0, 0); - animation-fill-mode: both; - animation-name: popup-slide-bottom-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-bottom-exit { - animation-fill-mode: both; - animation-name: slide-bottom-exit; - animation-duration: 0.3s; -} -@keyframes popup-slide-left-enter { - from { - transform: translate3d(-100%, 0, 0); - } -} -@keyframes popup-slide-left-exit { - to { - transform: translate3d(-100%, 0, 0); - } -} -.nut-popup-slide-left-enter-active { - transform: translate(0, 0); - animation-fill-mode: both; - animation-name: popup-slide-left-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-left-appear-active { - transform: translate(0, 0); - animation-fill-mode: both; - animation-name: popup-slide-left-enter; - animation-duration: 0.3s; -} -.nut-popup-slide-left-exit-active { - animation-fill-mode: both; - animation-name: popup-slide-left-exit; - animation-duration: 0.3s; -} -.nut-popup-slide-left-exit-done { - animation-fill-mode: both; - animation-name: popup-slide-left-exit; - animation-duration: 0.3s; -} -.nut-popup-slide-default-exit-done.nut-popup, .nut-popup-slide-center-exit-done.nut-popup, .nut-popup-slide-left-exit-done.nut-popup, .nut-popup-slide-right-exit-done.nut-popup, .nut-popup-slide-top-exit-done.nut-popup, .nut-popup-slide-bottom-exit-done.nut-popup { - display: none; -} -.nut-popup .nut-overflow-hidden { - overflow: hidden; -} - -[dir=rtl] .nut-popup-title-left { - left: auto; - right: 16px; -} - -.nut-rtl .nut-popup-title-left { - left: auto; - right: 16px; -} -[dir=rtl] .nut-popup-title-right { - right: auto; - left: 16px; -} -.nut-rtl .nut-popup-title-right { - right: auto; - left: 16px; -} -[dir=rtl] .nut-popup-title-right-top-left { - left: auto; - right: 16px; -} -.nut-rtl .nut-popup-title-right-top-left { - left: auto; - right: 16px; -} -[dir=rtl] .nut-popup-title-right-bottom-left { - left: auto; - right: 16px; -} -.nut-rtl .nut-popup-title-right-bottom-left { - left: auto; - right: 16px; -} -[dir=rtl] .nut-popup-title-right-bottom-right { - right: auto; - left: 16px; -} -.nut-rtl .nut-popup-title-right-bottom-right { - right: auto; - left: 16px; -} -[dir=rtl] .nut-popup-title .nut-icon-ArrowLeft, -.nut-rtl .nut-popup-title .nut-icon-ArrowLeft { - transform: rotate(180deg); -} -[dir=rtl] .nut-popup-center, -.nut-rtl .nut-popup-center { - left: auto; - right: 50%; - transform: translate(50%, -50%); -} -[dir=rtl] .nut-popup-bottom, -.nut-rtl .nut-popup-bottom { - left: auto; - right: 0; -} -[dir=rtl] .nut-popup-top, -.nut-rtl .nut-popup-top { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/price/price.harmony.css b/src/packages/price/price.harmony.css deleted file mode 100644 index 62010fc182..0000000000 --- a/src/packages/price/price.harmony.css +++ /dev/null @@ -1,96 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-price { - direction: ltr; - font-size: 16px; - display: flex; - flex-direction: row; - align-items: baseline; -} -.nut-price-symbol { - color: #888b94; - font-family: "JD"; - line-height: 1; -} -.nut-price-integer { - color: #888b94; - font-family: "JD"; - line-height: 1; -} -.nut-price-decimal { - color: #888b94; - font-family: "JD"; - line-height: 1; -} -.nut-price-darkgray .nut-price-symbol { - font-family: "JD-Bold"; - color: #1a1a1a; -} -.nut-price-darkgray .nut-price-integer { - font-family: "JD-Bold"; - color: #1a1a1a; -} -.nut-price-darkgray .nut-price-decimal { - font-family: "JD-Bold"; - color: #1a1a1a; -} -.nut-price-primary .nut-price-symbol { - font-family: "JD-Bold"; - color: #ff0f23; -} -.nut-price-primary .nut-price-integer { - font-family: "JD-Bold"; - color: #ff0f23; -} -.nut-price-primary .nut-price-decimal { - font-family: "JD-Bold"; - color: #ff0f23; -} -.nut-price-symbol { - padding-right: 0px; -} -.nut-price-symbol-xlarge { - font-size: 12px; -} -.nut-price-symbol-large { - font-size: 12px; -} -.nut-price-symbol-normal { - font-size: 12px; -} -.nut-price-symbol-small { - font-size: 12px; -} -.nut-price-symbol-rtl { - padding-right: 0; - padding-left: 0px; -} -.nut-price-integer-xlarge { - font-size: 24px; -} -.nut-price-integer-large { - font-size: 18px; -} -.nut-price-integer-normal { - font-size: 16px; -} -.nut-price-integer-small { - font-size: 12px; -} -.nut-price-decimal-xlarge { - font-size: 12px; -} -.nut-price-decimal-large { - font-size: 12px; -} -.nut-price-decimal-normal { - font-size: 12px; -} -.nut-price-decimal-small { - font-size: 12px; -} -.nut-price-line { - text-decoration: line-through #888b94; -} \ No newline at end of file diff --git a/src/packages/progress/progress.harmony.css b/src/packages/progress/progress.harmony.css deleted file mode 100644 index 6e6c6789c3..0000000000 --- a/src/packages/progress/progress.harmony.css +++ /dev/null @@ -1,77 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-progress { - display: flex; - align-items: center; - position: relative; - width: 100%; -} -.nut-progress-outer { - flex: auto; - border-radius: 12px; - height: 10px; - background: #f2f3f5; -} -.nut-progress-outer .nut-progress-active:before { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border-radius: 12px; - animation: progressActive 2s ease-in-out infinite; -} -.nut-progress-inner { - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; - transition: all 0.4s; - border-radius: 12px; - background: linear-gradient(135deg, #ff475d 0%, #ff0f23 100%); -} -.nut-progress-text { - display: flex; - align-items: center; - position: absolute; - top: -4px; - bottom: -4px; - transition: all 0.4s; - transform: translate(-50%); -} -.nut-progress-text-inner { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - height: 100%; - width: 100%; - color: #ffffff; - padding: 0 5px; - border-radius: 5px; - font-size: 9px; - line-height: 1; - background: linear-gradient(135deg, #ff475d 0%, #ff0f23 100%); -} -@keyframes progressActive { - 0% { - background: rgba(255, 255, 255, 0.1); - width: 0; - } - 20% { - background: rgba(255, 255, 255, 0.5); - width: 0; - } - to { - background: rgba(255, 255, 255, 0); - width: 100%; - } -} - -[dir=rtl] .nut-progress-text, -.nut-rtl .nut-progress-text { - transform: translate(50%); -} \ No newline at end of file diff --git a/src/packages/pulltorefresh/pulltorefresh.harmony.css b/src/packages/pulltorefresh/pulltorefresh.harmony.css deleted file mode 100644 index e8f50273c9..0000000000 --- a/src/packages/pulltorefresh/pulltorefresh.harmony.css +++ /dev/null @@ -1,43 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-pulltorefresh-head { - overflow: hidden; - position: relative; - font-size: 12px; -} -.nut-pulltorefresh-head-content { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - color: #888b94; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -.nut-pulltorefresh-head-content-icons { - width: 36px; - height: 26px; - margin-bottom: 4px; -} -.nut-pulltorefresh-primary { - background: #ff0f23; -} -.nut-pulltorefresh-primary-content { - color: rgba(255, 255, 255, 0.9); -} -.nut-pulltorefresh-primary-head-content { - color: rgba(255, 255, 255, 0.9); -} -.nut-pulltorefresh-primary-status-text { - color: #ffffff; -} - -[dir=rtl] .nut-pulltorefresh-head-content, -.nut-rtl .nut-pulltorefresh-head-content { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/radio/radio.harmony.css b/src/packages/radio/radio.harmony.css deleted file mode 100644 index 51b62fec67..0000000000 --- a/src/packages/radio/radio.harmony.css +++ /dev/null @@ -1,93 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-radio { - display: flex; - align-items: center; - flex-shrink: 0; -} -.nut-radio:last-child { - margin-bottom: 0 !important; - margin-right: 0 !important; -} -.nut-radio.nut-radio-reverse { - flex-direction: row-reverse; -} -.nut-radio.nut-radio-reverse .nut-radio-label { - margin-right: 4px; - margin-left: 0; -} -.nut-radio-label { - margin-left: 4px; - font-size: 12px; - color: #1a1a1a; -} -.nut-radio-label-disabled { - color: #c2c4cc; -} -.nut-radio-icon { - color: #c2c4cc; - transition-duration: 0.3s; - transition-property: color, border-color, background-color; - font-size: 16px; -} -.nut-radio-icon-checked { - color: #ff0f23; - box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); - border-radius: 50%; -} -.nut-radio-icon-checked.nut-radio-icon-disabled { - color: #ffadbe; - box-shadow: none; -} -.nut-radio-icon-disabled { - color: #c2c4cc; -} -.nut-radio-button { - display: inline-flex; - align-items: center; - padding: 5px 18px; - font-size: 12px; - background: rgba(250, 44, 25, 0.05); - border-radius: 15px; - color: #1a1a1a; - box-sizing: border-box; - border: 1px solid rgba(250, 44, 25, 0.05); -} -.nut-radio-button-active { - background: #ffebf1; - color: #ff0f23; - border: 1px solid #ff0f23; -} -.nut-radio-button-disabled { - color: #c2c4cc; - border: 1px solid rgba(250, 44, 25, 0.05); -} -.nut-radio .nut-radio-button-active.nut-radio-button-disabled { - background: #c2c4cc; - color: #ffffff; - border: 1px solid #c2c4cc; -} - -[dir=rtl] .nut-radio:last-child, -.nut-rtl .nut-radio:last-child { - margin-right: 0 !important; - margin-left: 0 !important; -} -[dir=rtl] .nut-radio.nut-radio-reverse .nut-radio-label { - margin-left: 4px; - margin-right: 0; -} -.nut-rtl .nut-radio.nut-radio-reverse .nut-radio-label { - margin-left: 4px; - margin-right: 0; -} -[dir=rtl] .nut-radio-label { - margin-left: 0; - margin-right: 4px; -} -.nut-rtl .nut-radio-label { - margin-left: 0; - margin-right: 4px; -} \ No newline at end of file diff --git a/src/packages/radiogroup/radiogroup.harmony.css b/src/packages/radiogroup/radiogroup.harmony.css deleted file mode 100644 index 5369d36b81..0000000000 --- a/src/packages/radiogroup/radiogroup.harmony.css +++ /dev/null @@ -1,49 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-radiogroup .nut-radio { - margin: 0 20px 5px 0; -} -.nut-radiogroup .nut-radio-label { - margin: 0 5px; -} -.nut-radiogroup .nut-radio-button { - background-color: rgba(250, 44, 25, 0.05); -} -.nut-radiogroup-vertical .nut-radio.nut-radio-reverse { - width: 100%; - justify-content: space-between; -} -.nut-radiogroup-vertical .nut-radio-button { - border: 1px solid rgba(250, 44, 25, 0.05); -} -.nut-radiogroup-vertical .nut-radio-button-active { - border: 1px solid #ff0f23; - background-color: #ffebf1; -} -.nut-radiogroup-horizontal .nut-radio { - display: inline-flex; -} -.nut-radiogroup-horizontal .nut-radio-button { - border: 1px solid #ffffff; -} -.nut-radiogroup-horizontal .nut-radio-button-active { - border: 1px solid #ff0f23; - background-color: #ffebf1; -} -.nut-radiogroup .nut-radio-button-active.nut-radio-button-disabled { - background: #c2c4cc; - color: #ffffff; - border: 1px solid #c2c4cc; -} - -[dir=rtl] .nut-radiogroup .nut-radio { - margin-left: 20px; - margin-right: 0; -} - -.nut-rtl .nut-radiogroup .nut-radio { - margin-left: 20px; - margin-right: 0; -} \ No newline at end of file diff --git a/src/packages/range/range.harmony.css b/src/packages/range/range.harmony.css deleted file mode 100644 index 1ca2f1649b..0000000000 --- a/src/packages/range/range.harmony.css +++ /dev/null @@ -1,271 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-range-container { - display: flex; - flex-direction: row; - position: relative; - width: 100%; - height: 4px; - align-items: center; - justify-content: space-between; -} -.nut-range-container-native { - height: auto; -} - -.nut-range { - display: block; - position: relative; - height: 4px; - margin: 0 15px; - background-color: #ffebf1; - border-radius: 2px; - flex: 1; - cursor: pointer; -} -.nut-range::before { - position: absolute; - inset-block: -8px; - inset-inline: 0; - content: ""; -} -.nut-range-min { - font-size: 12px; - color: #1a1a1a; - user-select: none; -} -.nut-range-max { - font-size: 12px; - color: #1a1a1a; - user-select: none; -} -.nut-range-bar { - display: block; - position: relative; - width: 100%; - height: 100%; - max-width: 100%; - max-height: 100%; - background: #ff0f23; - border-radius: 2px; - transition: all 0.2s; -} -.nut-range-button { - position: absolute; - display: flex; - width: 24px; - height: 24px; - background: #ffffff; - border-radius: 50%; - box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.15); - border: 1px solid #ff0f23; - outline: none; - align-items: center; - top: 50%; - left: 50%; -} -.nut-range-button-wrapper { - width: 24px; - height: 24px; -} -.nut-range-button-wrapper-right { - width: 24px; - height: 24px; -} -.nut-range-button-wrapper-left { - width: 24px; - height: 24px; -} -.nut-range-button-wrapper, .nut-range-button-wrapper-right { - touch-action: none; - position: absolute; - top: 50%; - left: 100%; - cursor: grab; - outline: none; -} -.nut-range-button-wrapper-left { - position: absolute; - top: 50%; - left: 0; - cursor: grab; - outline: none; - touch-action: none; -} -.nut-range-button-number { - position: relative; - width: 200%; - height: 24px; - line-height: 14px; - padding: 5px 0; - left: 50%; - display: flex; - align-items: center; - justify-content: center; - user-select: none; - font-size: 12px; - color: #1a1a1a; - text-align: center; - vertical-align: center; - box-sizing: border-box; -} -.nut-range-disabled { - cursor: not-allowed; - opacity: 0.54; -} -.nut-range-disabled .nut-range-button-wrapper, -.nut-range-disabled .nut-range-button-wrapper-left, -.nut-range-disabled .nut-range-button-wrapper-right { - cursor: not-allowed; -} -.nut-range-mark { - position: absolute; - width: 100%; - height: 14px; - overflow: visible; - top: 50%; -} -.nut-range-mark-text-wrapper { - position: absolute; - height: 100%; - top: 14px; - display: inline-block; - transform: translateX(-10px); -} -.nut-range-mark-text { - position: absolute; - line-height: 16px; - font-size: 12px; - color: #999; - text-align: center; - word-break: keep-all; - user-select: none; -} -.nut-range-tick { - position: absolute; - top: -20px; - width: 11px; - height: 11px; - left: 0px; - border-radius: 6px; - background: #ffebf1; -} -.nut-range-tick-active { - background: #ff0f23; -} - -.nut-range-vertical-container { - height: 100%; - flex-direction: column; - padding: 0px 15px; -} - -.nut-range-vertical { - width: 4px; - margin: 15px 0px; -} -.nut-range-vertical-button-wrapper, .nut-range-vertical-button-wrapper-right { - position: absolute; - top: initial; - top: 100%; - left: 50%; - right: initial; -} -.nut-range-vertical-button-wrapper-left { - top: 0px; - left: 50%; - right: initial; -} -.nut-range-vertical-button-number { - left: 0px; - top: 50%; -} -.nut-range-vertical-mark { - position: absolute; - width: 36px; - height: 100%; - top: initial; - right: 50%; - overflow: visible; - font-size: 12px; - padding: 0px; -} -.nut-range-vertical-mark-hm { - left: -34px; -} -.nut-range-vertical-mark-text-wrapper { - height: 16px; - position: absolute; - display: inline-block; - user-select: none; - transform: translateY(-11px); -} -.nut-range-vertical-mark-text { - height: 100%; - line-height: 16px; - color: #999; - text-align: center; - word-break: keep-all; -} -.nut-range-vertical-tick { - position: absolute; - top: 2px; - left: 31px; - width: 10px; - height: 10px; - border-radius: 5px; - background: #ffebf1; -} -.nut-range-vertical-tick-active { - background: #ff0f23; -} - -[dir=rtl] .nut-range-button-wrapper, [dir=rtl] .nut-range-button-wrapper-right, -.rtl-nut-range-button-wrapper, -.rtl-nut-range-button-wrapper-right { - left: 0; - right: initial; -} -[dir=rtl] .nut-range-button-wrapper-left, -.rtl-nut-range-button-wrapper-left { - right: 0; - left: initial; -} -[dir=rtl] .nut-range-tick, -.rtl-nut-range-tick { - right: 0px; - left: initial; -} -[dir=rtl] .nut-range-mark-text, -.rtl-nut-range-mark-text { - transform: translateX(10px); -} -[dir=rtl] .nut-range-vertical-button-wrapper, [dir=rtl] .nut-range-vertical-button-wrapper-right, -.rtl-nut-range-vertical-button-wrapper, -.rtl-nut-range-vertical-button-wrapper-right { - right: 50%; - left: initial; -} -[dir=rtl] .nut-range-vertical-button-wrapper-left, -.rtl-nut-range-vertical-button-wrapper-left { - right: 50%; - left: initial; -} -[dir=rtl] .nut-range-vertical-mark, -.rtl-nut-range-vertical-mark { - right: auto; - left: 50%; -} -[dir=rtl] .nut-range-vertical-tick, -.rtl-nut-range-vertical-tick { - left: auto; - right: 30px; - margin-left: 0; - margin-right: 0px; -} -[dir=rtl] .nut-range-vertical-mark-text-wrapper, -.rtl-nut-range-vertical-mark-text-wrapper { - transform: translateY(-11px); -} \ No newline at end of file diff --git a/src/packages/rate/rate.harmony.css b/src/packages/rate/rate.harmony.css deleted file mode 100644 index ab1d8affa0..0000000000 --- a/src/packages/rate/rate.harmony.css +++ /dev/null @@ -1,168 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-rate { - display: flex; - touch-action: pan-x; -} -.nut-rate.disabled .nut-rate-item-icon { - cursor: not-allowed; -} -.nut-rate.readonly .nut-rate-item-icon { - cursor: default; -} -.nut-rate-item { - display: flex; - align-items: center; - flex-shrink: 0; - position: relative; -} -.nut-rate-item-half { - position: absolute; - height: 100%; - width: 50% !important; - left: 0; - top: 0; - overflow: hidden; -} -.nut-rate-item-half .nut-icon { - flex-shrink: 0; -} -.nut-rate-item-normal { - margin-left: 4px; -} -.nut-rate-item-normal .nut-icon { - height: 12px; - width: 12px; -} -.nut-rate-item-large { - margin-left: calc(4px * 2); -} -.nut-rate-item-large .nut-icon { - height: calc(12px + 8px); - width: calc(12px + 8px); -} -.nut-rate-item-small { - margin-left: calc(4px / 2); -} -.nut-rate-item-small .nut-icon { - height: calc(12px - 4px); - width: calc(12px - 4px); -} -.nut-rate-item-normal:first-child, .nut-rate-item-large:first-child, .nut-rate-item-small:first-child { - margin-left: 0; -} -.nut-rate-item-icon { - display: flex; - align-items: center; - cursor: pointer; -} -.nut-rate-item-icon .nut-icon { - color: #ff3333; -} -.nut-rate-item-icon-disabled .nut-icon { - color: #dadce0; -} -.nut-rate-item-icon.nut-rate-item-icon.nut-rate-item-icon-half { - position: absolute; - left: 0; - top: 0; - overflow: hidden; -} -.nut-rate-item-icon.nut-rate-item-icon::before { - position: relative; - top: auto; - left: auto; - transform: none; -} -.nut-rate-score { - display: inline-flex; - align-items: center; - color: #ff3333; - font-family: "JD"; - line-height: 1; -} -.nut-rate-score-normal { - padding-left: 4px; - font-size: 12px; -} -.nut-rate-score-large { - font-size: calc(12px + 6px); - padding-left: calc(4px * 2); -} -.nut-rate-score-small { - font-size: calc(12px - 2px); - padding-left: calc(4px / 2); -} -.nut-rate-score-disabled { - color: #dadce0; -} - -[dir=rtl] .nut-rate-item, -.nut-rtl .nut-rate-item { - margin-left: 0; -} -[dir=rtl] .nut-rate-item:first-child, -.nut-rtl .nut-rate-item:first-child { - margin-right: 0; -} -[dir=rtl] .nut-rate-item-normal { - margin-right: 4px; -} -.nut-rtl .nut-rate-item-normal { - margin-right: 4px; -} -[dir=rtl] .nut-rate-item-large { - margin-right: calc(4px * 2); -} -.nut-rtl .nut-rate-item-large { - margin-right: calc(4px * 2); -} -[dir=rtl] .nut-rate-item-small { - margin-right: calc(4px - 2px); -} -.nut-rtl .nut-rate-item-small { - margin-right: calc(4px - 2px); -} -[dir=rtl] .nut-rate-item:last-child, -.nut-rtl .nut-rate-item:last-child { - margin-left: 0; -} -[dir=rtl] .nut-rate-item-half, -.nut-rtl .nut-rate-item-half { - left: auto; - right: 0; -} -[dir=rtl] .nut-rate-item-icon.nut-rate-item-icon.nut-rate-item-icon-half, -.nut-rtl .nut-rate-item-icon.nut-rate-item-icon.nut-rate-item-icon-half { - left: auto; - right: 0; -} -[dir=rtl] .nut-rate-item-icon.nut-rate-item-icon::before, -.nut-rtl .nut-rate-item-icon.nut-rate-item-icon::before { - left: auto; - right: auto; -} -[dir=rtl] .nut-rate-score, -.nut-rtl .nut-rate-score { - padding-left: 0; -} -[dir=rtl] .nut-rate-score-large { - padding-right: calc(4px * 2); -} -.nut-rtl .nut-rate-score-large { - padding-right: calc(4px * 2); -} -[dir=rtl] .nut-rate-score-normal { - padding-right: 4px; -} -.nut-rtl .nut-rate-score-normal { - padding-right: 4px; -} -[dir=rtl] .nut-rate-score-small { - padding-right: calc(4px - 2px); -} -.nut-rtl .nut-rate-score-small { - padding-right: calc(4px - 2px); -} \ No newline at end of file diff --git a/src/packages/resultpage/resultpage.harmony.css b/src/packages/resultpage/resultpage.harmony.css deleted file mode 100644 index 9153d18817..0000000000 --- a/src/packages/resultpage/resultpage.harmony.css +++ /dev/null @@ -1,50 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-resultpage { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - margin: 0 auto; -} -.nut-resultpage-icon { - display: inline-flex; - margin-bottom: 12px; -} -.nut-resultpage-icon .nut-icon { - height: 36px; - width: 36px; -} -.nut-resultpage-title { - width: 240px; - margin-bottom: 12px; - font-size: 18px; - color: #1a1a1a; - font-weight: 600; - text-align: center; -} -.nut-resultpage-description { - width: 240px; - line-height: 20px; - font-size: 14px; - color: #505259; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; - word-break: break-all; -} -.nut-resultpage-actions { - display: flex; - flex-direction: row; - margin-top: 16px; -} -.nut-resultpage-actions .nut-button-children { - white-space: nowrap; -} -.nut-resultpage-action { - margin-left: 6px; - margin-right: 6px; -} \ No newline at end of file diff --git a/src/packages/row/row.harmony.css b/src/packages/row/row.harmony.css deleted file mode 100644 index a4fa4940c1..0000000000 --- a/src/packages/row/row.harmony.css +++ /dev/null @@ -1,54 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-row { - display: flex; - flex-direction: row; - width: 100%; - overflow: hidden; -} -.nut-row:after { - display: block; - height: 0; - clear: both; - visibility: hidden; - content: ""; -} -.nut-row-flex { - display: flex; -} -.nut-row-flex:after { - display: none; -} -.nut-row-justify-center { - justify-content: center; -} -.nut-row-justify-end { - justify-content: flex-end; -} -.nut-row-justify-space-between { - justify-content: space-between; - align-items: center; -} -.nut-row-justify-space-around { - justify-content: space-around; -} -.nut-row-align-flex-start { - align-items: flex-start; -} -.nut-row-align-center { - align-items: center; -} -.nut-row-align-flex-end { - align-items: flex-end; -} -.nut-row-flex-wrap { - flex-wrap: wrap; -} -.nut-row-flex-nowrap { - flex-wrap: nowrap; -} -.nut-row-flex-reverse { - flex-wrap: wrap-reverse; -} \ No newline at end of file diff --git a/src/packages/safearea/safearea.harmony.css b/src/packages/safearea/safearea.harmony.css deleted file mode 100644 index 3695da3e98..0000000000 --- a/src/packages/safearea/safearea.harmony.css +++ /dev/null @@ -1,14 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-safe-area { - display: flex; - width: 100%; -} -.nut-safe-area-position-top { - padding-top: calc(env(safe-area-inset-top) * 1); -} -.nut-safe-area-position-bottom { - padding-bottom: calc(env(safe-area-inset-bottom) * 1); -} \ No newline at end of file diff --git a/src/packages/searchbar/searchbar.harmony.css b/src/packages/searchbar/searchbar.harmony.css deleted file mode 100644 index f9cee95772..0000000000 --- a/src/packages/searchbar/searchbar.harmony.css +++ /dev/null @@ -1,269 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-searchbar { - display: flex; - align-items: center; - width: 100%; - padding: 6px 16px; - background: #f2f3f5; - color: #1a1a1a; - font-size: 14px; - box-sizing: border-box; - justify-content: center; -} -.nut-searchbar-content { - flex: 1; - display: flex; - align-items: center; - justify-content: center; - padding: 0 12px; - height: 32px; - background: #ffffff; - border-radius: 4px; -} -.nut-searchbar-icon { - display: flex; - justify-content: center; - align-items: center; -} -.nut-searchbar-clear { - width: 16px; - height: 16px; - color: rgba(0, 0, 0, 0.2); -} -.nut-searchbar-rightin { - width: 16px; - height: 16px; - color: rgba(0, 0, 0, 0.2); -} -.nut-searchbar-left, .nut-searchbar-right { - display: inline-flex; - align-items: center; -} -.nut-searchbar-left.nut-icon, .nut-searchbar-right.nut-icon { - width: 20px; - height: 20px; -} -.nut-searchbar-left { - margin-right: 16px; -} -.nut-searchbar-left > div { - margin-right: 16px; -} -.nut-searchbar-left > span { - margin-right: 16px; -} -.nut-searchbar-left > i { - margin-right: 16px; -} -.nut-searchbar-left > svg { - margin-right: 16px; -} -.nut-searchbar-left .nut-icon { - margin-right: 16px; -} -.nut-searchbar-left > div:last-child, .nut-searchbar-left > span:last-child, .nut-searchbar-left > i:last-child, .nut-searchbar-left > svg:last-child, -.nut-searchbar-left .nut-icon:last-child { - margin-right: 0; -} -.nut-searchbar-right { - margin-left: 16px; -} -.nut-searchbar-right > div { - margin-left: 16px; -} -.nut-searchbar-right > span { - margin-left: 16px; -} -.nut-searchbar-right > i { - margin-left: 16px; -} -.nut-searchbar-right > svg { - margin-left: 16px; -} -.nut-searchbar-right .nut-icon { - margin-left: 16px; -} -.nut-searchbar-right > div:first-child, .nut-searchbar-right > span:first-child, .nut-searchbar-right > i:first-child, .nut-searchbar-right > svg:first-child, -.nut-searchbar-right .nut-icon:first-child { - margin-left: 0; -} -.nut-searchbar-left > text { - margin-right: 16px; -} -.nut-searchbar-left > view { - margin-right: 16px; -} -.nut-searchbar-left > text:last-child, .nut-searchbar-left > view:last-child { - margin-right: 0; -} -.nut-searchbar-right > text { - margin-left: 16px; -} -.nut-searchbar-right > view { - margin-left: 16px; -} -.nut-searchbar-right > text:first-child, .nut-searchbar-right > view:first-child { - margin-left: 0; -} -.nut-searchbar-input-box, .nut-searchbar-input { - display: flex; - align-items: center; - flex: 1; -} -.nut-searchbar-input { - border: 0; - outline: 0; - box-sizing: border-box; - width: 100%; - padding: 0 4px; - font-size: 14px; - color: #1a1a1a; - caret-color: #1a1a1a; - background: transparent; - text-align: left; -} -.nut-searchbar-round { - border-radius: 18px; -} -.nut-searchbar-disabled { - cursor: not-allowed; -} - -[dir=rtl] .nut-searchbar-left { - margin-right: 0; - margin-left: 16px; -} - -.nut-rtl .nut-searchbar-left { - margin-right: 0; - margin-left: 16px; -} -[dir=rtl] .nut-searchbar-left > div { - margin-right: 0; - margin-left: 16px; -} -[dir=rtl] .nut-searchbar-left > span { - margin-right: 0; - margin-left: 16px; -} -[dir=rtl] .nut-searchbar-left > svg { - margin-right: 0; - margin-left: 16px; -} -.nut-rtl .nut-searchbar-left > div { - margin-right: 0; - margin-left: 16px; -} -.nut-rtl .nut-searchbar-left > span { - margin-right: 0; - margin-left: 16px; -} -.nut-rtl .nut-searchbar-left > svg { - margin-right: 0; - margin-left: 16px; -} -[dir=rtl] .nut-searchbar-left > div.nut-icon, [dir=rtl] .nut-searchbar-left > span.nut-icon, [dir=rtl] .nut-searchbar-left > svg.nut-icon, -.nut-rtl .nut-searchbar-left > div.nut-icon, -.nut-rtl .nut-searchbar-left > span.nut-icon, -.nut-rtl .nut-searchbar-left > svg.nut-icon { - transform: rotate(180deg); -} -[dir=rtl] .nut-searchbar-left > div:last-child, [dir=rtl] .nut-searchbar-left > span:last-child, [dir=rtl] .nut-searchbar-left > svg:last-child, -.nut-rtl .nut-searchbar-left > div:last-child, -.nut-rtl .nut-searchbar-left > span:last-child, -.nut-rtl .nut-searchbar-left > svg:last-child { - margin-right: 0; - margin-left: 0; -} -[dir=rtl] .nut-searchbar-right { - margin-left: 0; - margin-right: 16px; -} -.nut-rtl .nut-searchbar-right { - margin-left: 0; - margin-right: 16px; -} -[dir=rtl] .nut-searchbar-right > div { - margin-left: 0; - margin-right: 16px; -} -[dir=rtl] .nut-searchbar-right > span { - margin-left: 0; - margin-right: 16px; -} -[dir=rtl] .nut-searchbar-right > svg { - margin-left: 0; - margin-right: 16px; -} -.nut-rtl .nut-searchbar-right > div { - margin-left: 0; - margin-right: 16px; -} -.nut-rtl .nut-searchbar-right > span { - margin-left: 0; - margin-right: 16px; -} -.nut-rtl .nut-searchbar-right > svg { - margin-left: 0; - margin-right: 16px; -} -[dir=rtl] .nut-searchbar-right > div:first-child, [dir=rtl] .nut-searchbar-right > span:first-child, [dir=rtl] .nut-searchbar-right > svg:first-child, -.nut-rtl .nut-searchbar-right > div:first-child, -.nut-rtl .nut-searchbar-right > span:first-child, -.nut-rtl .nut-searchbar-right > svg:first-child { - margin-left: 0; - margin-right: 0; -} -[dir=rtl] .nut-searchbar-left > text { - margin-right: 0; - margin-left: 16px; -} -[dir=rtl] .nut-searchbar-left > view { - margin-right: 0; - margin-left: 16px; -} -.nut-rtl .nut-searchbar-left > text { - margin-right: 0; - margin-left: 16px; -} -.nut-rtl .nut-searchbar-left > view { - margin-right: 0; - margin-left: 16px; -} -[dir=rtl] .nut-searchbar-left > text:last-child, [dir=rtl] .nut-searchbar-left > view:last-child, -.nut-rtl .nut-searchbar-left > text:last-child, -.nut-rtl .nut-searchbar-left > view:last-child { - margin-right: 0; - margin-left: 0; -} -[dir=rtl] .nut-searchbar-right > text { - margin-left: 0; - margin-right: 16px; -} -[dir=rtl] .nut-searchbar-right > view { - margin-left: 0; - margin-right: 16px; -} -.nut-rtl .nut-searchbar-right > text { - margin-left: 0; - margin-right: 16px; -} -.nut-rtl .nut-searchbar-right > view { - margin-left: 0; - margin-right: 16px; -} -[dir=rtl] .nut-searchbar-right > text:first-child, [dir=rtl] .nut-searchbar-right > view:first-child, -.nut-rtl .nut-searchbar-right > text:first-child, -.nut-rtl .nut-searchbar-right > view:first-child { - margin-left: 0; - margin-right: 0; -} -[dir=rtl] .nut-searchbar-input { - text-align: right; -} -.nut-rtl .nut-searchbar-input { - text-align: right; -} \ No newline at end of file diff --git a/src/packages/segmented/segmented.harmony.css b/src/packages/segmented/segmented.harmony.css deleted file mode 100644 index 4fefddc4b0..0000000000 --- a/src/packages/segmented/segmented.harmony.css +++ /dev/null @@ -1,42 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-segmented { - display: inline-flex; - height: 24px; - min-width: 24px; - padding: 2px; - align-items: center; - border-radius: 4px; - background: rgba(0, 0, 0, 0.4); - box-sizing: border-box; -} - -.nut-segmented-item { - display: flex; - height: 20px; - align-items: center; - justify-content: center; - padding: 0 6px; - border-radius: 4px; - color: #ffffff; - font-size: 12px; - line-height: 1; - box-sizing: border-box; -} - -.nut-segmented-item-active { - background: rgba(0, 0, 0, 0.4); -} - -.nut-segmented-icon { - height: 10px; - width: 10px; - margin-right: 2px; -} -.nut-segmented-icon .nut-icon { - height: 10px; - width: 10px; - font-size: 10px; -} \ No newline at end of file diff --git a/src/packages/shortpassword/shortpassword.harmony.css b/src/packages/shortpassword/shortpassword.harmony.css deleted file mode 100644 index f8e305a63f..0000000000 --- a/src/packages/shortpassword/shortpassword.harmony.css +++ /dev/null @@ -1,123 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-shortpassword-title { - line-height: 1; - font-size: 16px; - color: #1a1a1a; -} -.nut-shortpassword-description { - margin-top: 12px; - margin-bottom: 24px; - line-height: 1; - font-size: 12px; - color: #505259; -} -.nut-shortpassword-input { - padding: 0 0 10px; - text-align: center; - position: relative; - overflow: hidden; -} -.nut-shortpassword-input-real { - position: absolute; - right: 0; - width: 247px; - height: 41px; - outline: 0 none; - border: 0; - text-decoration: none; - z-index: -99; -} -.nut-shortpassword-input-site { - width: 247px; - height: 41px; - border-radius: 4px; -} -.nut-shortpassword-input-fake { - top: 5%; - width: 100%; - height: 41px; - margin: 0 auto; - box-sizing: border-box; - background: #f2f3f5; - border-radius: 4px; - border: 1px solid #f2f3f5; - display: flex; - position: absolute; - left: 0; -} -.nut-shortpassword-input-fake-li { - flex: 1; - display: flex; - justify-content: center; - align-items: center; -} -.nut-shortpassword-input-fake-li-icon { - height: 6px; - width: 6px; - border-radius: 50%; - background: #000; - display: inline-block; -} -.nut-shortpassword-message { - margin-top: 9px; - display: flex; - justify-content: space-between; - width: 247px; -} -.nut-shortpassword-message-error { - line-height: 1; - font-size: 11px; - color: #ff0f23; -} -.nut-shortpassword-message-forget { - line-height: 1; - font-size: 12px; - color: #888b94; - display: flex; - align-items: center; -} -.nut-shortpassword-message-forget .nut-icon { - margin-right: 3px; -} -.nut-shortpassword-footer { - display: flex; - justify-content: space-between; - margin-top: 20px; -} -.nut-shortpassword-footer-cancel { - background: #ffffff; - border: 1px solid #ff0f23; - border-radius: 15px; - padding: 8px 38px; - line-height: 1; - font-size: 14px; - color: #ff0f23; -} -.nut-shortpassword-footer-sure { - background: linear-gradient(135deg, #ff0f23 0%, #ff0f23 100%); - border-radius: 15px; - padding: 8px 38px; - line-height: 1; - font-size: 14px; - color: #ffffff; -} - -[dir=rtl] .nut-shortpassword-input-real, -.nut-rtl .nut-shortpassword-input-real { - right: auto; - left: 0; -} -[dir=rtl] .nut-shortpassword-input-fake, -.nut-rtl .nut-shortpassword-input-fake { - left: auto; - right: 0; -} -[dir=rtl] .nut-shortpassword-footer-sure { - background: linear-gradient(-135deg, #ff0f23 0%, #ff0f23 100%); -} -.nut-rtl .nut-shortpassword-footer-sure { - background: linear-gradient(-135deg, #ff0f23 0%, #ff0f23 100%); -} \ No newline at end of file diff --git a/src/packages/sidebar/sidebar.harmony.css b/src/packages/sidebar/sidebar.harmony.css deleted file mode 100644 index 6a3a9ef6e1..0000000000 --- a/src/packages/sidebar/sidebar.harmony.css +++ /dev/null @@ -1,63 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-sidebar { - display: flex; -} -.nut-sidebar-content { - flex-direction: column; - height: 100%; -} -.nut-sidebar-content-wrap { - flex: 1; - overflow: hidden; -} -.nut-sidebar-titles { - background: #f2f3f5; - flex-direction: column; - border-radius: 0; - height: 100%; - width: 104px; - max-width: 128px; - flex-shrink: 0; -} -.nut-sidebar-titles::-webkit-scrollbar { - display: none; - width: 0; - background: transparent; -} -.nut-sidebar-titles .nut-sidebar-list { - width: 100%; - display: flex; - flex-direction: column; - flex-shrink: 0; -} -.nut-sidebar-titles-scrollable { - overflow-x: hidden; - overflow-y: auto; -} -.nut-sidebar-titles-item { - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - height: 52px; - font-size: 14px; - color: #505259; -} -.nut-sidebar-titles-item-text { - text-align: center; - white-space: normal; - width: 104px; -} -.nut-sidebar-titles-item-active .nut-sidebar-titles-item-text { - font-family: PingFangSC-Semibold; - color: #ff0f23; - font-weight: 600; - font-size: 16px; -} -.nut-sidebar-titles-item-disabled { - color: #c2c4cc; - cursor: not-allowed; -} \ No newline at end of file diff --git a/src/packages/sidebaritem/sidebaritem.harmony.css b/src/packages/sidebaritem/sidebaritem.harmony.css deleted file mode 100644 index 9d249c2289..0000000000 --- a/src/packages/sidebaritem/sidebaritem.harmony.css +++ /dev/null @@ -1,19 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-sidebaritem { - width: 100%; - height: 100%; - flex-shrink: 0; - display: block; - background-color: #ffffff; - color: #1a1a1a; - padding: 24px 20px; - box-sizing: border-box; - overflow: auto; -} -.nut-sidebaritem.inactive { - overflow: visible; - height: 0; -} \ No newline at end of file diff --git a/src/packages/sidenavbar/sidenavbar.harmony.css b/src/packages/sidenavbar/sidenavbar.harmony.css deleted file mode 100644 index ca5c2a28a4..0000000000 --- a/src/packages/sidenavbar/sidenavbar.harmony.css +++ /dev/null @@ -1,74 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-sidenavbar { - color: #1d1d21; - font-size: 14px; - height: 100%; - overflow: auto; - display: block; - background-color: #ffffff; -} -.nut-sidenavbar .arrow-icon { - position: absolute; - width: 0; - height: 0; - right: 16px; - top: 18px; - cursor: pointer; -} -.nut-sidenavbar .arrow-down { - border-top: 4px solid #888b94; - border-left: 4px solid transparent; - border-right: 4px solid transparent; -} -.nut-sidenavbar .arrow-up { - border-bottom: 4px solid #888b94; - border-left: 4px solid transparent; - border-right: 4px solid transparent; -} -.nut-sidenavbar-title { - height: 40px; - padding: 10px 8px 10px 20px; - background: #f2f3f5; - color: #1a1a1a; - box-sizing: border-box; - transition: transform 0.5s; -} -.nut-sidenavbar-content { - position: relative; - display: block; -} -.nut-sidenavbar-list.sidenavbar-show .nut-sidenavbar-content { - height: auto; - overflow: inherit; -} -.nut-sidenavbar-list.sidenavbar-hide .nut-sidenavbar-content { - height: 0; - overflow: hidden; -} -.nut-sidenavbar .nut-subsidenavbar-border-bt { - position: relative; -} -.nut-sidenavbar .nut-subsidenavbar-border-bt:after { - content: ""; - position: absolute; - width: 100%; - height: 1px; - background: #eeeff2; - transform: scale(1, 0.5); - left: 0; - bottom: 0; -} - -[dir=rtl] .nut-sidenavbar .arrow-icon, -.nut-rtl .nut-sidenavbar .arrow-icon { - right: auto; - left: 16px; -} -[dir=rtl] .nut-sidenavbar .nut-subsidenavbar-border-bt:after, -.nut-rtl .nut-sidenavbar .nut-subsidenavbar-border-bt:after { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/sidenavbaritem/sidenavbaritem.harmony.css b/src/packages/sidenavbaritem/sidenavbaritem.harmony.css deleted file mode 100644 index 2cc1f0732c..0000000000 --- a/src/packages/sidenavbaritem/sidenavbaritem.harmony.css +++ /dev/null @@ -1,14 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-subsidenavbar-item { - height: 40px; - color: #505259; - padding: 10px 8px 10px 55px; - box-sizing: border-box; -} -.nut-subsidenavbar-list { - background-color: #ffffff; - color: #505259; -} \ No newline at end of file diff --git a/src/packages/signature/signature.harmony.css b/src/packages/signature/signature.harmony.css deleted file mode 100644 index 7c94568bcd..0000000000 --- a/src/packages/signature/signature.harmony.css +++ /dev/null @@ -1,22 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-signature .spcanvas_WEAPP { - width: 100%; - height: 100%; -} -.nut-signature .spcanvas_WEAPP Canvas { - width: 100%; -} -.nut-signature-inner { - display: flex; - justify-content: center; - align-items: center; - height: 10rem; - border: 1px solid rgba(0, 0, 0, 0.06); - background-color: #ffffff; -} -.nut-signature-unsupport { - font-size: 14px; -} \ No newline at end of file diff --git a/src/packages/skeleton/skeleton.harmony.css b/src/packages/skeleton/skeleton.harmony.css deleted file mode 100644 index 7633042def..0000000000 --- a/src/packages/skeleton/skeleton.harmony.css +++ /dev/null @@ -1,79 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-skeleton { - display: inline-block; - position: relative; - overflow: hidden; - vertical-align: middle; - width: 100%; -} -.nut-skeleton-content { - display: flex; - flex-direction: row; -} -.nut-skeleton-content-avatar { - margin-right: 20px; - background: #f2f3f5 !important; -} -.nut-skeleton-content-block { - width: 100%; - height: 15px; - background: #f2f3f5; - margin-top: 10px; - border-radius: 0; -} -.nut-skeleton-content-line { - width: 100%; - display: flex; - flex-direction: column; -} -.nut-skeleton-content-line .nut-skeleton-content-block:last-child { - width: 70%; -} -.nut-skeleton-content-title { - width: 30%; - height: 15px; - background: #f2f3f5; -} -.nut-skeleton-content-block-last-child { - width: 55%; -} -.nut-skeleton-animation { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 1; - animation: nut-skeleton 2s ease-in-out 0s infinite; -} -@keyframes nut-skeleton { - 0% { - background-position-x: -500px; - } - to { - background-position-x: calc(500px + 100%); - } -} - -[dir=rtl] .nut-skeleton-content .nut-avatar, -.nut-rtl .nut-skeleton-content .nut-avatar { - margin-right: 0; - margin-left: 20px; -} -[dir=rtl] .nut-skeleton-animation, -.nut-rtl .nut-skeleton-animation { - left: auto; - right: 0; - animation: nut-skeleton-rtl 2s ease-in-out 0s infinite; -} -@keyframes nut-skeleton-rtl { - 0% { - background-position-x: calc(500px + 100%); - } - to { - background-position-x: -500px; - } -} \ No newline at end of file diff --git a/src/packages/space/space.harmony.css b/src/packages/space/space.harmony.css deleted file mode 100644 index 12be3390eb..0000000000 --- a/src/packages/space/space.harmony.css +++ /dev/null @@ -1,83 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-space { - display: flex; -} -.nut-space-item { - flex: none; -} -.nut-space-vertical { - flex-direction: column; -} -.nut-space-vertical-item { - margin-bottom: 8px; -} -.nut-space-vertical-item-last { - margin-bottom: 0; -} -.nut-space-horizontal { - flex-direction: row; -} -.nut-space-horizontal-item { - margin-right: 8px; -} -.nut-space-horizontal-item-last { - margin-right: 0; -} -.nut-space-horizontal-wrap { - flex-wrap: wrap; - margin-bottom: calc(8px * -1); -} -.nut-space-horizontal-wrap-item { - padding-bottom: 8px; -} -.nut-space-align-center { - align-items: center; -} -.nut-space-align-start { - align-items: flex-start; -} -.nut-space-align-end { - align-items: flex-end; -} -.nut-space-align-baseline { - align-items: baseline; -} -.nut-space-justify-center { - justify-content: center; -} -.nut-space-justify-start { - justify-content: flex-start; -} -.nut-space-justify-end { - justify-content: flex-end; -} -.nut-space-justify-between { - justify-content: space-between; -} -.nut-space-justify-around { - justify-content: space-around; -} -.nut-space-justify-evenly { - justify-content: space-evenly; -} -.nut-space-justify-stretch { - justify-content: stretch; -} - -[dir=rtl] .nut-space-horizontal > .nut-space-item { - margin-right: 0; - margin-left: 8px; -} - -.nut-rtl .nut-space-horizontal > .nut-space-item { - margin-right: 0; - margin-left: 8px; -} -[dir=rtl] .nut-space-horizontal > .nut-space-item:last-child, -.nut-rtl .nut-space-horizontal > .nut-space-item:last-child { - margin-right: 0; - margin-left: 0; -} \ No newline at end of file diff --git a/src/packages/step/step.harmony.css b/src/packages/step/step.harmony.css deleted file mode 100644 index b69c5162a5..0000000000 --- a/src/packages/step/step.harmony.css +++ /dev/null @@ -1,201 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-step { - flex-grow: 0; - flex-shrink: 0; - flex: 1; - text-align: center; - font-size: 0; -} -.nut-step-head { - position: relative; - display: flex; - justify-content: center; - margin-bottom: 12px; -} -.nut-step-line { - position: absolute; - top: calc(25px / 2); - left: calc(50% + (100% - 70%) / 2); - height: 1px; - width: 70%; - background: #888b94; -} -.nut-step-icon { - position: relative; - display: flex; - align-items: center; - justify-content: center; - width: 25px; - height: 25px; - line-height: 25px; - font-size: 12px; - background-color: #888b94; - border-color: #888b94; - color: #ffffff; - z-index: 1; -} -.nut-step-icon .nut-icon { - width: 100%; - height: 100%; -} -.nut-step-icon.is-text { - border-radius: 50%; - border-width: 1px; - border-style: solid; -} -.nut-step-icon.is-icon { - border-radius: 50%; - border-width: 1px; - border-style: solid; -} -.nut-step-main { - padding: 0 10%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -.nut-step-title { - display: block; - margin-bottom: 10px; - font-size: 14px; - color: #1a1a1a; -} -.nut-step-description { - display: block; - font-size: 12px; - color: #505259; -} -.nut-step:last-child .nut-step-line { - display: none; -} -.nut-step.nut-step-process .nut-step-icon { - background-color: #ff0f23; - border-color: #ff0f23; - color: #ffffff; -} -.nut-step.nut-step-process .nut-step-title { - color: #ff0f23; - font-size: 14px; - font-weight: 600; -} -.nut-step.nut-step-process .nut-step-description { - color: #505259; -} -.nut-step.nut-step-wait .nut-step-title { - color: #1a1a1a; -} -.nut-step.nut-step-wait .nut-step-description { - color: #505259; -} -.nut-step.nut-step-finish .nut-step-icon { - background-color: #ffffff; - border-color: #ff0f23; - color: #ff0f23; -} -.nut-step.nut-step-finish .nut-step-line { - background: #ff0f23; -} -.nut-step.nut-step-finish .nut-step-title { - color: #ff0f23; -} -.nut-step.nut-step-finish .nut-step-description { - color: #505259; -} - -.nut-steps-dot .nut-step-head { - margin: 10px 0; -} -.nut-steps-dot .nut-step-line { - top: 7px; -} -.nut-steps-dot .nut-step-icon { - width: 6px; - height: 6px; - border: 2px solid #ffffff; - border-radius: 50%; - box-sizing: content-box; -} -.nut-steps-dot .nut-step-wait .nut-step-icon { - background-color: #888b94; -} -.nut-steps-dot .nut-step-finish .nut-step-icon { - background-color: #ffffff; - border-color: #ff0f23; -} -.nut-steps-dot .nut-step-process .nut-step-icon { - position: relative; -} -.nut-steps-dot .nut-step-process .nut-step-icon:before { - content: ""; - display: inline-block; - position: absolute; - left: 50%; - top: 50%; - margin-left: -7px; - margin-top: -7px; - width: 14px; - height: 14px; - background-color: #ff0f23; - border-radius: 50%; - opacity: 0.23; -} - -.nut-steps-horizontal.nut-steps-dot .nut-step-line { - top: 50%; - bottom: -50%; -} - -.nut-steps-vertical .nut-step { - display: flex; - height: 33.34%; -} -.nut-steps-vertical .nut-step-line { - position: absolute; - display: inline-block; - width: 1px; - height: 70%; - background: #888b94; - top: calc(25px + (100% - 70% - 12px) / 2); - left: calc(50% - 1px); -} -.nut-steps-vertical.nut-steps-dot .nut-step-line { - top: calc(6px + (100% - 70%) / 2); -} -.nut-steps-vertical .nut-step-main { - display: inline-block; - padding-left: 6%; - text-align: start; -} - -[dir=rtl] .nut-step-line { - left: auto; - right: calc(50% + (100% - 70%) / 2); -} - -.nut-rtl .nut-step-line { - left: auto; - right: calc(50% + (100% - 70%) / 2); -} - -[dir=rtl] .nut-steps-dot .nut-step-process .nut-step-icon:before, -.nut-rtl .nut-steps-dot .nut-step-process .nut-step-icon:before { - left: auto; - right: 50%; - margin-left: 0; - margin-right: -7px; -} - -[dir=rtl] .nut-steps-vertical .nut-step-line, -.nut-rtl .nut-steps-vertical .nut-step-line { - left: auto; - right: calc(50% - 1px); -} -[dir=rtl] .nut-steps-vertical .nut-step-main, -.nut-rtl .nut-steps-vertical .nut-step-main { - padding-left: 0; - padding-right: 6%; -} \ No newline at end of file diff --git a/src/packages/steps/steps.harmony.css b/src/packages/steps/steps.harmony.css deleted file mode 100644 index 0ea0a1d383..0000000000 --- a/src/packages/steps/steps.harmony.css +++ /dev/null @@ -1,12 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-steps { - display: flex; -} - -.nut-steps-vertical { - height: 100%; - flex-flow: column; -} \ No newline at end of file diff --git a/src/packages/sticky/sticky.harmony.css b/src/packages/sticky/sticky.harmony.css deleted file mode 100644 index 79248ac326..0000000000 --- a/src/packages/sticky/sticky.harmony.css +++ /dev/null @@ -1,7 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-sticky-fixed { - position: fixed; -} \ No newline at end of file diff --git a/src/packages/subsidenavbar/subsidenavbar.harmony.css b/src/packages/subsidenavbar/subsidenavbar.harmony.css deleted file mode 100644 index ac40f8649d..0000000000 --- a/src/packages/subsidenavbar/subsidenavbar.harmony.css +++ /dev/null @@ -1,20 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-subsidenavbar-title { - height: 40px; - padding: 10px 8px 10px 35px; - box-sizing: border-box; - background-color: #f7f8fc; - color: #1a1a1a; - box-sizing: border-box; -} -.nut-subsidenavbar-list.sidenavbar-show .nut-subsidenavbar-content { - height: auto; - overflow: inherit; -} -.nut-subsidenavbar-list.sidenavbar-hide .nut-subsidenavbar-content { - height: 0; - overflow: hidden; -} \ No newline at end of file diff --git a/src/packages/swipe/swipe.harmony.css b/src/packages/swipe/swipe.harmony.css deleted file mode 100644 index e7968eb11e..0000000000 --- a/src/packages/swipe/swipe.harmony.css +++ /dev/null @@ -1,33 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-swipe { - display: flex; - flex-direction: row; - position: relative; - overflow: hidden; - cursor: grab; - background-color: #ffffff; -} -.nut-swipe-wrapper { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-self: stretch; - width: 100%; - transition-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1); - transition-property: transform; -} -.nut-swipe-left, .nut-swipe-right { - position: absolute; - top: 0; - display: flex; - flex-direction: row; -} -.nut-swipe-left { - left: 0; -} -.nut-swipe-right { - left: 100%; -} \ No newline at end of file diff --git a/src/packages/swiper/swiper.harmony.css b/src/packages/swiper/swiper.harmony.css deleted file mode 100644 index fc619d1edc..0000000000 --- a/src/packages/swiper/swiper.harmony.css +++ /dev/null @@ -1,68 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-swiper { - width: 100%; - height: 100%; - overflow: hidden; - position: relative; -} -.nut-swiper-canmove-horizontal { - touch-action: pan-y; -} -.nut-swiper-canmove-vertical { - touch-action: pan-x; -} -.nut-swiper-indicator { - display: flex; - flex-direction: row; - justify-content: center; - position: absolute; - height: 4px; - width: 100%; - top: 89.33%; - z-index: 10; -} -.nut-swiper-indicator-vertical { - width: 8px; - height: 100%; - top: 0; - left: 12px; - flex-direction: column; - justify-content: center; - z-index: 1; -} - -.nut-swiper-inner { - width: 100%; - height: 100%; - display: flex; - position: relative; -} -.nut-swiper-inner-vertical { - flex-direction: column; -} - -.nut-swiper-slide { - width: 100%; - height: 100%; - position: relative; - flex-shrink: 0; -} - -.nut-swiper-item { - width: 100%; - height: 100%; -} - -[dir=rtl] .nut-swiper-indicator, -.nut-rtl .nut-swiper-indicator { - left: auto; - right: 50%; -} -[dir=rtl] .nut-swiper-indicator-vertical, -.nut-rtl .nut-swiper-indicator-vertical { - left: auto; - right: 12px; -} \ No newline at end of file diff --git a/src/packages/swiperitem/swiperitem.harmony.css b/src/packages/swiperitem/swiperitem.harmony.css deleted file mode 100644 index d1a391a1e6..0000000000 --- a/src/packages/swiperitem/swiperitem.harmony.css +++ /dev/null @@ -1,7 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-swiper-item { - height: 100%; -} \ No newline at end of file diff --git a/src/packages/switch/switch.harmony.css b/src/packages/switch/switch.harmony.css deleted file mode 100644 index e05a3dc293..0000000000 --- a/src/packages/switch/switch.harmony.css +++ /dev/null @@ -1,91 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-switch { - cursor: pointer; - position: relative; - display: inline-flex; - flex-direction: row; - align-items: center; - min-width: 46px; - height: 28px; - line-height: 28px; - background-color: #ff0f23; - border-radius: 50px; - background-size: 100% 100%; - background-repeat: no-repeat; - background-position: center center; - flex: 0 0 auto; -} -.nut-switch-button { - position: absolute; - top: 50%; - transform: translateY(-50%); - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - height: calc(28px - 2px * 2); - width: calc(28px - 2px * 2); - border-radius: 50%; - background: #ffffff; - transition: left 0.3s linear; - box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1); -} -.nut-switch-button-open { - left: calc(100% - 28px + 2px); -} -.nut-switch-button-open-rtl { - left: 2px; -} -.nut-switch-button-close { - left: 2px; -} -.nut-switch-button-close-rtl { - left: calc(100% - 28px + 2px); -} -.nut-switch-close { - background-color: #c2c4cc; -} -.nut-switch-close-line { - width: calc((28px - 2px * 2) / 2); - height: 2px; - background: #ffffff; - border-radius: 2px; -} -.nut-switch-label { - display: inline-flex; - align-items: center; - height: 100%; - white-space: nowrap; - color: #ffffff; - font-size: 12px; -} -.nut-switch-label .nut-icon { - color: #ffffff; -} -.nut-switch-label-open { - margin: 0 calc(28px - 2px + 3px) 0 7px; -} -.nut-switch-label-open-rtl { - margin: 0 7px 0 calc(28px - 2px + 3px); -} -.nut-switch-label-close { - margin: 0 7px 0 calc(28px - 2px + 3px); -} -.nut-switch-label-close-rtl { - margin: 0 calc(28px - 2px + 3px) 0 7px; -} -.nut-switch-label-close-disabled { - color: #c2c4cc; -} -.nut-switch-label-close-disabled .nut-icon { - color: #c2c4cc; -} -.nut-switch-disabled { - background-color: #ffadbe; -} -.nut-switch-disabled-close { - background-color: #f2f3f5; -} \ No newline at end of file diff --git a/src/packages/tabbar/tabbar.harmony.css b/src/packages/tabbar/tabbar.harmony.css deleted file mode 100644 index ad224744d7..0000000000 --- a/src/packages/tabbar/tabbar.harmony.css +++ /dev/null @@ -1,50 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-tabbar { - border: 0px; - box-shadow: none; - border-bottom: 1px solid #eee; - border-top: 1px solid #eee; - width: 100%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - box-sizing: border-box; - background: #ffffff; -} -.nut-tabbar-wrap { - width: 100%; - height: 50px; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; -} -.nut-tabbar:last-child { - border-right: 0; -} -.nut-tabbar-fixed { - position: fixed; - bottom: 0px; - left: 0px; -} -.nut-tabbar-safe-area { - display: block; - width: 100%; - padding-bottom: constant(safe-area-inset-bottom); - padding-bottom: env(safe-area-inset-bottom); -} - -[dir=rtl] .nut-tabbar:last-child, -.nut-rtl .nut-tabbar:last-child { - border-right: none; - border-left: 0; -} -[dir=rtl] .nut-tabbar-fixed, -.nut-rtl .nut-tabbar-fixed { - left: auto; - right: 0px; -} \ No newline at end of file diff --git a/src/packages/tabbaritem/tabbaritem.harmony.css b/src/packages/tabbaritem/tabbaritem.harmony.css deleted file mode 100644 index f7dceace35..0000000000 --- a/src/packages/tabbaritem/tabbaritem.harmony.css +++ /dev/null @@ -1,59 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-tabbar-item { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - flex: 1; - text-align: center; - text-decoration: none; - color: #1a1a1a; - height: 100%; -} -.nut-tabbar-item-icon-box { - padding: 0px; - display: flex; - flex-direction: column; - align-items: center; - position: relative; -} -.nut-tabbar-item-icon-box .nut-icon { - width: 22px; - height: 22px; - font-size: 22px; -} -.nut-tabbar-item-icon-box-nav { - display: block; - color: #505259; - font-size: 11px; - line-height: 11px; - margin-top: 3px; -} -.nut-tabbar-item-icon-box-large { - font-size: 16px; - margin-top: 0; - line-height: 20px; - font-weight: 400; -} -.nut-tabbar-item-active { - color: #ff0f23; -} -.nut-tabbar-item-active .nut-tabbar-item-icon-box { - /* #ifdef harmony*/ - color: #ff0f23; - /* #endif*/ - /* #ifndef harmony*/ - color: inherit; - /* #endif*/ -} -.nut-tabbar-item-active .nut-icon { - /* #ifdef harmony*/ - color: #ff0f23; - /* #endif*/ - /* #ifndef harmony*/ - color: inherit; - /* #endif*/ -} \ No newline at end of file diff --git a/src/packages/table/table.harmony.css b/src/packages/table/table.harmony.css deleted file mode 100644 index a7df92ed86..0000000000 --- a/src/packages/table/table.harmony.css +++ /dev/null @@ -1,230 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-table { - overflow: hidden; - position: relative; - word-wrap: break-word; - word-break: break-all; -} -.nut-table-wrapper { - display: flex; - width: 100%; - flex-direction: column; - font-size: 14px; - color: #1a1a1a; - overflow-y: auto; - overflow-x: hidden; - position: relative; - border: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-table-wrapper-sticky { - overflow-x: auto; -} -.nut-table-main { - display: table; - overflow-x: auto; - color: #1a1a1a; - background-color: #ffffff; - table-layout: fixed; - width: max-content; - min-width: 100%; - position: relative; -} -.nut-table-main-striped .nut-table-main-head-tr { - background-color: #f2f3f5; -} -.nut-table-main-striped .nut-table-main-body-tr:nth-child(odd) { - background-color: #ffffff; -} -.nut-table-main-striped .nut-table-main-body-tr:nth-child(even) { - background-color: #f2f3f5; -} -.nut-table-main-head, .nut-table-main-body { - background: inherit; -} -.nut-table-main-head-tr, .nut-table-main-body-tr { - display: table-row; - background: inherit; -} -.nut-table-main-head-tr:last-child .nut-table-main-body-tr-td, .nut-table-main-body-tr:last-child .nut-table-main-body-tr-td { - border-bottom: none; -} -.nut-table-main-head-tr-th { - display: table-cell; - padding: 10px; - table-layout: fixed; - background: inherit; - position: sticky; - top: 0; -} -.nut-table-main-body-tr-th { - display: table-cell; - padding: 10px; - table-layout: fixed; - background: inherit; - position: sticky; - top: 0; -} -.nut-table-main-head-tr-th.nut-table-fixed-left, .nut-table-main-head-tr-th.nut-table-fixed-right, .nut-table-main-body-tr-th.nut-table-fixed-left, .nut-table-main-body-tr-th.nut-table-fixed-right { - z-index: 4; -} -.nut-table-main-head-tr-th:last-child, .nut-table-main-body-tr-th:last-child { - border-right: none; -} -.nut-table-main-head-tr-td { - display: table-cell; - padding: 10px; - table-layout: fixed; - background: inherit; -} -.nut-table-main-body-tr-td { - display: table-cell; - padding: 10px; - table-layout: fixed; - background: inherit; -} -.nut-table-main-head-tr-td:last-child, .nut-table-main-body-tr-td:last-child { - border-right: none; -} -.nut-table-main-head-tr-td-nodata, .nut-table-main-body-tr-td-nodata { - display: flex; - height: 50px; - align-items: center; - justify-content: center; -} -.nut-table-main-head-tr-border { - border-right: 1px solid rgba(0, 0, 0, 0.06); - border-bottom: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-table-main-body-tr-border { - border-right: 1px solid rgba(0, 0, 0, 0.06); - border-bottom: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-table-main-head-tr-alignleft, .nut-table-main-head-tr-align, .nut-table-main-body-tr-alignleft, .nut-table-main-body-tr-align { - text-align: start; -} -.nut-table-main-head-tr-aligncenter, .nut-table-main-body-tr-aligncenter { - text-align: center; -} -.nut-table-main-head-tr-alignright, .nut-table-main-body-tr-alignright { - text-align: end; -} -.nut-table-main-head { - display: table-header-group; -} -.nut-table-main-body { - display: table-row-group; -} -.nut-table-sticky-left, .nut-table-sticky-right { - position: absolute; - top: 0px; - width: 8px; - bottom: -1px; - overflow-x: hidden; - overflow-y: hidden; - box-shadow: none; - touch-action: none; - pointer-events: none; - z-index: 3; - background: transparent; -} -.nut-table-sticky-left { - left: 1px; - box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.1); -} -.nut-table-sticky-right { - right: 1px; - box-shadow: -4px 0 8px 0 rgba(0, 0, 0, 0.1); -} -.nut-table-fixed-left, .nut-table-fixed-right { - position: sticky; - z-index: 2; -} -.nut-table-fixed-left.h5-div { - padding: 10px 0; -} -.nut-table-fixed-right.h5-div { - padding: 10px 0; -} -.nut-table-fixed-left-last { - border-right: none; -} -.nut-table-summary { - color: #1a1a1a; - background-color: #ffffff; - display: flex; - align-items: center; - justify-content: center; - height: 30px; - padding: 10px; - position: relative; - z-index: 5; -} - -[dir=rtl] .nut-table-main-head-tr-th:last-child, [dir=rtl] .nut-table-main-body-tr-th:last-child, -.nut-rtl .nut-table-main-head-tr-th:last-child, -.nut-rtl .nut-table-main-body-tr-th:last-child { - border-right: none; - border-left: none; -} -[dir=rtl] .nut-table-main-head-tr-td:last-child, [dir=rtl] .nut-table-main-body-tr-td:last-child, -.nut-rtl .nut-table-main-head-tr-td:last-child, -.nut-rtl .nut-table-main-body-tr-td:last-child { - border-right: none; - border-left: none; -} -[dir=rtl] .nut-table-main-head-tr-border { - border-right: none; - border-left: 1px solid rgba(0, 0, 0, 0.06); -} -[dir=rtl] .nut-table-main-body-tr-border { - border-right: none; - border-left: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-rtl .nut-table-main-head-tr-border { - border-right: none; - border-left: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-rtl .nut-table-main-body-tr-border { - border-right: none; - border-left: 1px solid rgba(0, 0, 0, 0.06); -} -[dir=rtl] .nut-table-main-head-tr-alignleft, [dir=rtl] .nut-table-main-head-tr-align, [dir=rtl] .nut-table-main-body-tr-alignleft, [dir=rtl] .nut-table-main-body-tr-align, -.nut-rtl .nut-table-main-head-tr-alignleft, -.nut-rtl .nut-table-main-head-tr-align, -.nut-rtl .nut-table-main-body-tr-alignleft, -.nut-rtl .nut-table-main-body-tr-align { - text-align: right; -} -[dir=rtl] .nut-table-main-head-tr-alignright, [dir=rtl] .nut-table-main-body-tr-alignright, -.nut-rtl .nut-table-main-head-tr-alignright, -.nut-rtl .nut-table-main-body-tr-alignright { - text-align: left; -} -[dir=rtl] .nut-table-sticky-left { - left: auto; - right: 1px; - box-shadow: -4px 0 8px 0 rgba(0, 0, 0, 0.1); -} -.nut-rtl .nut-table-sticky-left { - left: auto; - right: 1px; - box-shadow: -4px 0 8px 0 rgba(0, 0, 0, 0.1); -} -[dir=rtl] .nut-table-sticky-right { - right: auto; - left: 1px; - box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.1); -} -.nut-rtl .nut-table-sticky-right { - right: auto; - left: 1px; - box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.1); -} -[dir=rtl] .nut-table-fixed-left-last, -.nut-rtl .nut-table-fixed-left-last { - border-right: none; - border-left: none; -} \ No newline at end of file diff --git a/src/packages/tabpane/tabpane.harmony.css b/src/packages/tabpane/tabpane.harmony.css deleted file mode 100644 index c52b789dd4..0000000000 --- a/src/packages/tabpane/tabpane.harmony.css +++ /dev/null @@ -1,18 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-tabpane { - width: 100%; - flex-shrink: 0; - display: block; - background-color: #fff; - color: #1a1a1a; - padding: 24px 20px; - box-sizing: border-box; - overflow: auto; -} -.nut-tabpane.inactive { - overflow: visible; - height: 0; -} \ No newline at end of file diff --git a/src/packages/tabs/tabs.harmony.css b/src/packages/tabs/tabs.harmony.css deleted file mode 100644 index 0220609c56..0000000000 --- a/src/packages/tabs/tabs.harmony.css +++ /dev/null @@ -1,325 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-tabs { - display: flex; -} - -.nut-tabs-horizontal { - flex-direction: column; -} - -.nut-tabs-titles { - display: flex; - box-sizing: border-box; - height: 44px; - user-select: none; - overflow-x: auto; - overflow-y: hidden; - background: #f2f3f5; - scrollbar-width: none; -} -.nut-tabs-titles::-webkit-scrollbar { - display: none; - width: 0; - background: transparent; -} -.nut-tabs-titles .nut-tabs-list { - width: 100%; - display: flex; - flex-shrink: 0; -} -.nut-tabs-titles-left { - justify-content: flex-start; -} -.nut-tabs-titles-left .nut-tabs-titles-item { - padding: 0 22px; -} -.nut-tabs-titles-right { - justify-content: flex-end; -} -.nut-tabs-titles-right .nut-tabs-titles-item { - padding: 0 22px; -} -.nut-tabs-titles-item { - position: relative; - display: flex; - align-items: center; - justify-content: center; - flex: 1 0 auto; - padding: 0 12px; - height: 44px; - line-height: 44px; - min-width: 50px; - font-size: 14px; - color: #1a1a1a; - text-overflow: ellipsis; - white-space: nowrap; -} -.nut-tabs-titles-item .nut-icon { - color: #1a1a1a; -} -.nut-tabs-titles-item-left, .nut-tabs-titles-item-right { - flex: none; -} -.nut-tabs-titles-item-text { - color: #1a1a1a; -} -.nut-tabs-titles-item-smile { - position: absolute; - transition: width 0.3s ease; - width: 0; - height: 0; - content: " "; - left: 50%; - transform: translate(-50%, 0); - bottom: 15%; - border-radius: 2px; - opacity: 1; - overflow: hidden; -} -.nut-tabs-titles-item-line { - position: absolute; - transition: width 0.3s ease; - width: 0; - height: 0; - content: " "; - left: 50%; - transform: translate(-50%, 0); - bottom: 15%; - border-radius: 2px; - opacity: 1; - overflow: hidden; -} -.nut-tabs-titles-item-smile { - bottom: -10%; -} -.nut-tabs-titles-item-smile .nut-icon { - position: absolute; - font-size: 20px; - width: 100%; - height: 100%; -} -.nut-tabs-titles-item-active .nut-icon { - color: #ff0f23; -} -.nut-tabs-titles-item-active .nut-tabs-titles-item-text { - color: #ff0f23; - font-weight: 600; -} -.nut-tabs-titles-item-active .nut-tabs-titles-item-line { - overflow: unset; - content: " "; - width: 12px; - height: 2px; - background: #ff0f23; -} -.nut-tabs-titles-item-active .nut-tabs-titles-item-smile { - overflow: unset; - width: 40px; - height: 20px; -} -.nut-tabs-titles-item-active .nut-tabs-titles-item-smile .nut-icon { - color: #ff0f23; -} -.nut-tabs-titles-item-disabled { - color: #c2c4cc; -} -.nut-tabs-titles-item-disabled .nut-icon { - color: #c2c4cc; -} -.nut-tabs-titles-item-disabled .nut-tabs-titles-item-text { - color: #c2c4cc; -} -.nut-tabs-titles-simple .nut-tabs-titles-item-active .nut-tabs-titles-item-text { - color: #1a1a1a; - font-size: 16px; -} -.nut-tabs-titles-simple .nut-tabs-titles-item-active .nut-icon { - color: #1a1a1a; - font-size: 16px; -} -.nut-tabs-titles-card .nut-tabs-titles-item-active { - font-weight: 600; - background-color: #ffffff; - border-radius: 8px 8px 0 0; -} -.nut-tabs-titles-button .nut-tabs-titles-item { - padding: 0 10px; -} -.nut-tabs-titles-button .nut-tabs-titles-item .nut-tabs-titles-item-text { - flex: 1; - height: 28px; - display: flex; - align-items: center; - justify-content: center; - padding: 0 8px; -} -.nut-tabs-titles-button .nut-tabs-titles-item-active .nut-tabs-titles-item-text { - background: undefined; - color: #ff0f23; - border-radius: 50px; - font-weight: 600; - background-color: #ffebf1; - border: 1px solid #ff0f23; -} -.nut-tabs-titles-divider { - border-bottom: 1px solid rgba(0, 0, 0, 0.06); -} -.nut-tabs-titles-divider .nut-tabs-titles-item { - position: relative; -} -.nut-tabs-titles-divider .nut-tabs-titles-item::after { - content: ""; - position: absolute; - right: 0; - top: 50%; - height: 50%; - width: 1px; - background: rgba(0, 0, 0, 0.06); - transform: translateY(-50%); -} -.nut-tabs-titles-divider .nut-tabs-titles-item:last-child::after { - display: none; -} - -.nut-tabs-vertical .nut-tabs-ellipsis { - white-space: break-spaces; - /* #ifdef harmony */ - padding-left: 12px; - /* #endif */ - /* #ifndef harmony */ - padding-left: 6px; - /* #endif */ - width: 90px; - line-height: 14px; -} -.nut-tabs-vertical .nut-tabs-titles { - flex-direction: column; - height: 100%; - width: 100px; - flex-shrink: 0; -} -.nut-tabs-vertical .nut-tabs-titles .nut-tabs-list { - flex-direction: column; -} -.nut-tabs-vertical .nut-tabs-titles-item { - height: 40px; - flex: none; -} -.nut-tabs-vertical .nut-tabs-titles-item-smile { - overflow: hidden; - transition: width 0.3s ease; -} -.nut-tabs-vertical .nut-tabs-titles-item-line { - transform: translate(0, -50%); - transition: height 0.3s ease; -} -.nut-tabs-vertical .nut-tabs-titles-item-line-vertical { - top: 50%; -} -.nut-tabs-vertical .nut-tabs-titles-item-active { - background-color: #ffffff; -} -.nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line { - left: 10px; - width: 3px; - height: 12px; - background: linear-gradient(180deg, #ff475d 0%, #ffebf1 100%); -} -.nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { - right: -12px; - bottom: -2%; - left: auto; - transform: rotate(320deg); -} -.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles { - flex-direction: row; - height: 44px; - width: 100%; - padding: 0 !important; -} -.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles .nut-tabs-list { - flex-direction: row; - height: auto; -} -.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-content { - flex-direction: row; -} -.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active { - background-color: initial; -} -.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line { - left: 50%; - transform: translate(-50%, 0); - width: 12px; - height: 2px; - background: #ff0f23; -} -.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { - left: 50%; - right: auto; - bottom: -3px; - transform: translate(-50%, 0) rotate(0deg); -} -.nut-tabs-vertical .nut-tabs-content { - flex-direction: column; - height: 100%; -} -.nut-tabs-vertical .nut-tabs-content-wrap { - flex: 1; -} -.nut-tabs-vertical .nut-tabs-content .nut-tabpane { - height: 100%; -} - -.nut-tabs-content { - display: flex; - box-sizing: border-box; -} -.nut-tabs-content-wrap { - overflow: hidden; -} - -[dir=rtl] .nut-tabs-titles-item-smile, [dir=rtl] .nut-tabs-titles-item-line, -.nut-rtl .nut-tabs-titles-item-smile, -.nut-rtl .nut-tabs-titles-item-line { - left: auto; - right: 50%; - transform: translate(50%, 0); -} -[dir=rtl] .nut-tabs-titles-divider .nut-tabs-titles-item::after, -.nut-rtl .nut-tabs-titles-divider .nut-tabs-titles-item::after { - right: auto; - left: 0; -} - -[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-line .nut-tabs-titles-item, -.nut-rtl .nut-tabs-vertical .nut-tabs-titles-line .nut-tabs-titles-item { - padding-left: 0; - padding-right: 14px; -} -[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line, -.nut-rtl .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line { - left: auto; - right: 10px; -} -[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile, -.nut-rtl .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { - left: -12px; - right: auto; - transform: rotate(-320deg); -} -[dir=rtl] .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line, -.nut-rtl .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line { - left: auto; - right: 50%; - transform: translate(50%, 0); -} -[dir=rtl] .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile, -.nut-rtl .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile { - right: 50%; - left: auto; - transform: translate(50%, 0) rotate(0deg); -} \ No newline at end of file diff --git a/src/packages/tag/tag.harmony.css b/src/packages/tag/tag.harmony.css deleted file mode 100644 index 08257c1dfc..0000000000 --- a/src/packages/tag/tag.harmony.css +++ /dev/null @@ -1,73 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-tag { - padding: 0px 2px; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - font-size: 10px; - border-radius: 2px; - height: 14px; - color: #ffffff; - border: 1px solid transparent; -} -.nut-tag .nut-icon { - vertical-align: middle; - margin-left: 4px; - color: #ffffff; -} -.nut-tag-text { - font-size: 10px; - color: #ffffff; -} -.nut-tag-text-plain { - color: #1a1a1a; -} -.nut-tag-default { - background: #1a1a1a; -} -.nut-tag-primary { - background: #fa2c19; -} -.nut-tag-info { - background: #0073ff; -} -.nut-tag-success { - background: #4fc08d; -} -.nut-tag-danger { - background: #ff0f23; -} -.nut-tag-warning { - background: #ffbf00; -} -.nut-tag-round { - border-radius: 8px; -} -.nut-tag-mark { - border-radius: 0 8px 8px 0; -} -.nut-tag-close { - cursor: pointer; -} -.nut-tag-custom-icon { - display: inline-flex; - align-items: center; - justify-content: center; - font-size: 10px; - color: #ffffff; - margin-left: 4px; -} -.nut-tag-plain { - background-color: #fff; - border: 1px solid #1a1a1a; -} - -[dir=rtl] .nut-tag .nut-icon, -.nut-rtl .nut-tag .nut-icon { - margin-left: 0; - margin-right: 4px; -} \ No newline at end of file diff --git a/src/packages/textarea/textarea.harmony.css b/src/packages/textarea/textarea.harmony.css deleted file mode 100644 index db19143852..0000000000 --- a/src/packages/textarea/textarea.harmony.css +++ /dev/null @@ -1,79 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-textarea { - display: flex; - flex-direction: column; - position: relative; - width: 100%; - box-sizing: border-box; - font-size: 14px; - border-radius: 6px; -} -.nut-textarea-container { - padding: 12px; - background-color: #ffffff; -} -.nut-textarea-error { - border: 0.5px solid #ff0f23; - background-color: #ffebef; -} -.nut-textarea-limit { - text-align: right; - font-size: 14px; - line-height: 14px; - margin-top: 8px; - color: #888b94; -} -.nut-textarea-limit-disabled { - cursor: not-allowed; - color: #c2c4cc; -} -.nut-textarea-textarea { - outline: none; - display: block; - box-sizing: border-box; - width: 100%; - height: 40px; - min-width: 0; - margin: 0; - padding: 0; - font-size: 14px; - color: #1a1a1a; - caret-color: #ff0f23; - text-align: left; - background-color: transparent; - border: 0; - resize: none; -} -.nut-textarea-textarea .taro-textarea { - color: #1a1a1a; - background-color: transparent; - resize: none; -} -.nut-textarea-textarea::placeholder { - color: #888b94; -} -.nut-textarea-textarea-disabled { - cursor: not-allowed; - color: #c2c4cc; -} -.nut-textarea-textarea-disabled::placeholder { - color: #c2c4cc; -} -.nut-textarea-textarea-disabled .taro-textarea { - color: #c2c4cc; -} -.nut-textarea-textarea-disabled .taro-textarea::placeholder { - color: #c2c4cc; -} -.nut-textarea.nut-textarea-rtl-limit { - right: auto; - left: 15px; -} - -.taro-textarea { - background-color: transparent; - resize: none; -} \ No newline at end of file diff --git a/src/packages/timedetail/timedetail.harmony.css b/src/packages/timedetail/timedetail.harmony.css deleted file mode 100644 index f9826e1e3a..0000000000 --- a/src/packages/timedetail/timedetail.harmony.css +++ /dev/null @@ -1,34 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-timedetail { - display: flex; - align-content: flex-start; - flex: 1; - min-width: 0; - flex-wrap: wrap; - padding: 0 0 50px 12px; -} -.nut-timedetail-item { - width: 100px; - height: 50px; - line-height: 50px; - text-align: center; - margin: 0 10px 10px 0; - background: #f2f3f5; - border-radius: 5px; - font-size: 14px; - border: 1px solid transparent; -} -.nut-timedetail-item.active { - background-color: #ffebf1; - border: 1px solid #ff0f23; - color: #ff0f23; - font-weight: 600; -} - -[dir=rtl] .nut-timedetail, -.nut-rtl .nut-timedetail { - padding: 0 12px 50px 0; -} \ No newline at end of file diff --git a/src/packages/timeselect/timeselect.harmony.css b/src/packages/timeselect/timeselect.harmony.css deleted file mode 100644 index 1aa9cd99d9..0000000000 --- a/src/packages/timeselect/timeselect.harmony.css +++ /dev/null @@ -1,35 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-timeselect { - background-color: #ffffff; - display: flex; - flex-direction: column; - height: calc(100% - 50px); -} -.nut-timeselect-content { - display: flex; - flex: 1; -} -.nut-timeselect-content-left { - width: 140px; - min-width: 140px; - height: 100%; - overflow: auto; - background: #f7f8fc; -} - -.nut-timepannel { - padding: 0 16px; - height: 40px; - line-height: 40px; - text-align: start; - color: #505259; - font-size: 14px; -} -.nut-timepannel.active { - background: #ffffff; - color: #1a1a1a; - font-weight: 600; -} \ No newline at end of file diff --git a/src/packages/toast/toast.harmony.css b/src/packages/toast/toast.harmony.css deleted file mode 100644 index 3784763877..0000000000 --- a/src/packages/toast/toast.harmony.css +++ /dev/null @@ -1,138 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -@keyframes rotation { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - } -} -.nut-toast { - position: fixed; - left: 0; - top: 0; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 1300; -} -.nut-toast-overlay-default-taro { - /* #ifdef harmony */ - background-color: rgba(0, 0, 0, 0); - /* #endif */ - /* #ifndef harmony */ - /* #endif */ -} -.nut-toast-inner { - position: absolute; - top: 50%; - transform: translate(0, -50%); - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - min-width: 96px; - max-width: 60%; - box-sizing: border-box; - font-size: 14px; - text-align: center; - padding: 13px 16px; - word-break: break-all; - background: rgba(0, 0, 0, 0.7); - border-radius: 12px; - color: #ffffff; -} -.nut-toast-inner-descrption { - max-width: 68.2%; -} -.nut-toast-inner-normal { - word-break: normal; - word-wrap: normal; -} -.nut-toast-inner-break-word { - word-break: normal; - word-wrap: break-word; -} -.nut-toast-inner-small { - font-size: 12px; -} -.nut-toast-inner-large { - font-size: 16px; -} -.nut-toast-center { - top: 48%; -} -.nut-toast-bottom { - top: 80%; -} -.nut-toast-top { - top: 20%; -} -.nut-toast-text { - color: #ffffff; - text-align: center; - line-height: 20px; -} -.nut-toast-title { - color: #ffffff; - font-size: 16px; - font-weight: 600; - text-align: center; - line-height: 22px; -} -.nut-toast .nut-icon { - width: 24px; - height: 24px; - color: #ffffff; -} -.nut-toast-icon-wrapper { - width: 100%; - display: flex; - align-items: center; - justify-content: center; - margin: 3px 0 5px; - color: #ffffff; -} -.nut-toast-icon-wrapper-icon { - width: 24px; - height: 24px; -} -.nut-toast-rtl { - left: auto; - right: 0; -} -.nut-toast-rtl-inner { - left: auto; - right: 50%; -} - -[dir=rtl] .nut-toast, -.nut-rtl .nut-toast { - left: auto; - right: 0; -} -[dir=rtl] .nut-toast-inner, -.nut-rtl .nut-toast-inner { - left: auto; - right: 50%; -} - -.toast-fade-enter-active { - transition: opacity 0.3s; -} - -.toast-fade-leave-active { - transition: opacity 0.3s; -} - -.toast-fade-enter-from, -.toast-fade-leave-to { - opacity: 0; -} \ No newline at end of file diff --git a/src/packages/tour/tour.harmony.css b/src/packages/tour/tour.harmony.css deleted file mode 100644 index c3c56c6640..0000000000 --- a/src/packages/tour/tour.harmony.css +++ /dev/null @@ -1,82 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-tour-mask { - position: fixed; - box-shadow: 0px 0px 0px 150vh rgba(0, 0, 0, 0.7); - border-radius: 10px; - z-index: 999; -} -.nut-tour-mask-none { - box-shadow: none; -} -.nut-tour-mask-hidden { - opacity: 0; -} -.nut-tour-content { - display: block; - padding: 10px 12px; - min-width: 200px; - box-sizing: content-box; -} -.nut-tour-content-top { - display: block; - text-align: end; -} -.nut-tour-content-inner { - margin: 10px 0px; - font-size: 14px; - white-space: nowrap; -} -.nut-tour-content-bottom { - margin-top: 10px; - display: flex; - justify-content: space-between; -} -.nut-tour-content-bottom-operate { - display: flex; - justify-content: flex-end; -} -.nut-tour-content-bottom-operate-btn { - display: inline-block; - border: 1px solid #c2c4cc; - margin-left: 4px; - padding: 2px 4px; - font-size: 12px; - border-radius: 4px; - color: #505259; - cursor: pointer; -} -.nut-tour-content-bottom-operate-btn.active { - color: #fff; - border: 0; - background: #ff0f23; -} -.nut-tour-content-tile .nut-tour-content-inner { - margin: 0; -} -.nut-tour-masked { - position: fixed; - width: 100vh; - height: 100vh; - z-index: 1000; - top: 0; - left: 0; - background: transparent; -} - -[dir=rtl] .nut-tour-content-bottom-operate-btn { - margin-left: 0; - margin-right: 4px; -} - -.nut-rtl .nut-tour-content-bottom-operate-btn { - margin-left: 0; - margin-right: 4px; -} -[dir=rtl] .nut-tour-masked, -.nut-rtl .nut-tour-masked { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/trendarrow/trendarrow.harmony.css b/src/packages/trendarrow/trendarrow.harmony.css deleted file mode 100644 index 8e1e080aef..0000000000 --- a/src/packages/trendarrow/trendarrow.harmony.css +++ /dev/null @@ -1,42 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-trendarrow { - display: flex; - flex-direction: row; - align-items: center; - color: #1a1a1a; - font-size: 14px; -} -.nut-trendarrow-icon-before { - margin-right: 4px; -} -.nut-trendarrow-icon-after { - margin-left: 4px; -} -.nut-trendarrow-rate { - vertical-align: middle; - display: inline; -} -.nut-trendarrow .nut-icon { - vertical-align: middle; -} - -[dir=rtl] .nut-trendarrow-icon-before { - margin-right: 0; - margin-left: 4px; -} - -.nut-rtl .nut-trendarrow-icon-before { - margin-right: 0; - margin-left: 4px; -} -[dir=rtl] .nut-trendarrow-icon-after { - margin-left: 0; - margin-right: 4px; -} -.nut-rtl .nut-trendarrow-icon-after { - margin-left: 0; - margin-right: 4px; -} \ No newline at end of file diff --git a/src/packages/uploader/uploader.harmony.css b/src/packages/uploader/uploader.harmony.css deleted file mode 100644 index b005793638..0000000000 --- a/src/packages/uploader/uploader.harmony.css +++ /dev/null @@ -1,241 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-uploader { - position: relative; - display: flex; - flex-wrap: wrap; -} -.nut-uploader-slot { - position: relative; -} -.nut-uploader-upload { - position: relative; - display: flex; - align-items: center; - justify-content: center; - background: #f2f3f5; - width: 100px; - height: 100px; - border: 0px; - border-radius: 4px; -} -.nut-uploader-icon { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - color: #888b94; -} -.nut-uploader-icon i { - color: #888b94; - margin-bottom: 6px; -} -.nut-uploader-icon .nut-icon { - color: #888b94; - margin-bottom: 6px; -} -.nut-uploader-icon-tip { - font-size: 12px; -} -.nut-uploader-input { - position: absolute !important; - top: 0; - left: 0; - width: 100% !important; - height: 100% !important; - overflow: hidden; - cursor: pointer; - opacity: 0; -} -.nut-uploader-input:disabled { - cursor: not-allowed; -} -.nut-uploader-upload-disabled { - background: #f2f3f5; - color: #c2c4cc; -} -.nut-uploader-upload-disabled .nut-uploader-icon i { - color: #c2c4cc; - margin-bottom: 6px; -} -.nut-uploader-upload-disabled .nut-uploader-icon .nut-icon { - color: #c2c4cc; - margin-bottom: 6px; -} -.nut-uploader-preview { - position: relative; - margin-right: 10px; - margin-bottom: 10px; - border-radius: 4px; - box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.1); -} -.nut-uploader-preview-progress { - position: absolute; - left: 0; - top: 0; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); - border-radius: 4px; -} -.nut-uploader-preview-progress i { - margin-bottom: 6px; -} -.nut-uploader-preview-progress-msg { - color: #888b94; - font-size: 12px; -} -.nut-uploader-preview.list { - width: 100%; - margin-right: 0px; - margin-bottom: 0px; - margin-top: 10px; - box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.01); -} -.nut-uploader-preview-list { - width: 100%; - height: 32px; - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 10px; - background-color: #f7f8fc; -} -.nut-uploader-preview-list .nut-uploader-preview-img-file-name { - display: flex; - align-items: center; - -webkit-line-clamp: 1; - padding: 2px; - height: 24px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.nut-uploader-preview-list .nut-progress { - position: absolute; - left: 0; - right: 0; - bottom: 0; -} -.nut-uploader-preview-list .nut-progress .nut-progress-outer { - height: 2px !important; -} -.nut-uploader-preview .close { - position: absolute; - right: 0px; - top: 0px; - transform: translate(50%, -50%); - z-index: 1; -} -.nut-uploader-preview-img { - position: relative; - width: 100px; - height: 100px; - border-radius: 4px; - overflow: hidden; -} -.nut-uploader-preview-img i { - color: #1a1a1a; -} -.nut-uploader-preview-img .tips { - position: absolute; - bottom: 0; - left: 0; - font-size: 12px; - color: #ffffff; - text-align: center; - box-sizing: border-box; - height: 24px; - line-height: 24px; - border-radius: 4px; - border-top-left-radius: 0; - border-top-right-radius: 0; - padding: 0 5px; - background: rgba(0, 0, 0, 0.4); - width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.nut-uploader-preview-img-c { - display: flex; - justify-content: center; - align-items: center; - height: 100%; - position: initial; - border-radius: 4px; -} -.nut-uploader-preview-img-file { - height: 100%; - width: 100%; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.3s; -} -.nut-uploader-preview-img-file-name { - display: flex; - width: 90%; - font-size: 12px; - color: #505259; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; - word-break: break-all; -} -.nut-uploader-preview-img-file-name.error { - color: red !important; -} -.nut-uploader-preview-img-file-name.success { - color: #1890ff !important; -} -.nut-uploader-preview-img-file-name .nut-icon-Link { - flex-shrink: 0; -} - -[dir=rtl] .nut-uploader-input, -.nut-rtl .nut-uploader-input { - left: auto; - right: 0; -} -[dir=rtl] .nut-uploader-preview { - margin-right: 0; - margin-left: 10px; -} -.nut-rtl .nut-uploader-preview { - margin-right: 0; - margin-left: 10px; -} -[dir=rtl] .nut-uploader-preview-progress, -.nut-rtl .nut-uploader-preview-progress { - left: auto; - right: 0; -} -[dir=rtl] .nut-uploader-preview.list, -.nut-rtl .nut-uploader-preview.list { - margin-right: 0; - margin-left: 0px; -} -[dir=rtl] .nut-uploader-preview .close { - right: auto; - left: 0px; - transform: translate(-50%, -50%); -} -.nut-rtl .nut-uploader-preview .close { - right: auto; - left: 0px; - transform: translate(-50%, -50%); -} -[dir=rtl] .nut-uploader-preview-img .tips, -.nut-rtl .nut-uploader-preview-img .tips { - left: auto; - right: 0; -} \ No newline at end of file diff --git a/src/packages/video/video.harmony.css b/src/packages/video/video.harmony.css deleted file mode 100644 index fd70592a8c..0000000000 --- a/src/packages/video/video.harmony.css +++ /dev/null @@ -1,22 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-video { - width: 100%; - height: 100%; - position: relative; - display: flex; -} -.nut-video-player { - width: 100%; - background: #000; -} -.nut-video-player:focus { - outline: none; -} -.nut-video video { - width: 100%; - height: 100%; - object-fit: fill; -} \ No newline at end of file diff --git a/src/packages/virtuallist/virtuallist.harmony.css b/src/packages/virtuallist/virtuallist.harmony.css deleted file mode 100644 index 7e6a732aad..0000000000 --- a/src/packages/virtuallist/virtuallist.harmony.css +++ /dev/null @@ -1,74 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-horizontal-items { - float: left; -} -.nut-horizontal-items li { - display: block; - float: left; - color: #1a1a1a; - background: #ffffff; - padding: 10px; - margin-right: 20px; -} -.nut-horizontal-items:after { - content: ""; - display: block; - visibility: hidden; - clear: both; -} - -.nut-vertical-items li { - display: block; - color: #1a1a1a; - background: #ffffff; - border-radius: 7px; - box-shadow: 0 1px 6px 0 rgb(237, 238, 241); - margin-top: 20px; - padding: 14px 15px; - font-size: 13px; - line-height: 18px; - font-family: PingFangSC; - font-weight: 500; -} - -.nut-virtualList-box { - overflow: auto; -} - -.nut-virtuallist { - width: 100%; - overflow: scroll; - position: relative; - -webkit-overflow-scrolling: touch; -} -.nut-virtuallist-phantom { - position: absolute; - left: 0; - top: 0; - right: 0; - z-index: -1; -} -.nut-virtuallist-container { - position: absolute; - left: 0; - right: 0; - top: 0; -} -.nut-virtuallist-item { - overflow: hidden; - margin: 0 0 10px 0; -} - -[dir=rtl] .nut-horizontal-items, -.nut-rtl .nut-horizontal-items { - float: right; -} -[dir=rtl] .nut-horizontal-items li, -.nut-rtl .nut-horizontal-items li { - float: right; - margin-right: 0; - margin-left: 20px; -} \ No newline at end of file diff --git a/src/packages/watermark/watermark.harmony.css b/src/packages/watermark/watermark.harmony.css deleted file mode 100644 index 368716d563..0000000000 --- a/src/packages/watermark/watermark.harmony.css +++ /dev/null @@ -1,17 +0,0 @@ -/* #ifdef harmony */ -/* #endif */ -/* #ifndef harmony */ -/* #endif */ -.nut-watermark { - position: absolute; - z-index: 1200; - left: 0; - right: 0; - top: 0; - bottom: 0; - pointer-events: none; - background-repeat: repeat; -} -.nut-watermark-full-page { - position: fixed; -} \ No newline at end of file From 95bed62bf7f609262bc25c75586c22d71eed2b03 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 26 Feb 2025 10:20:01 +0800 Subject: [PATCH 38/40] chore: remove harmony.css files and add git ignore file --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c7da2b6070..ca04c5b700 100644 --- a/.gitignore +++ b/.gitignore @@ -54,4 +54,7 @@ pnpm-lock.*.yaml *.sw? # vitest -/html \ No newline at end of file +/html + +# Harmony CSS files +src/packages/**/*.harmony.css \ No newline at end of file From 940c1f0da651903494048cb664e37270eace634a Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 26 Feb 2025 10:25:34 +0800 Subject: [PATCH 39/40] chore: update selected version --- .../doc/components/header/header.tsx | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/sites/sites-react/doc/components/header/header.tsx b/src/sites/sites-react/doc/components/header/header.tsx index 2d6d6b2db9..ba773e8f96 100644 --- a/src/sites/sites-react/doc/components/header/header.tsx +++ b/src/sites/sites-react/doc/components/header/header.tsx @@ -8,17 +8,10 @@ import { CSSTransition } from 'react-transition-group' import Search from '../search/search' import { SiteReactTaro, - header, - versions, nav, repository, - language, - guide as vueGuide, reactGuide, - reactTaroGuide, moreGuide, - businessGuide, - products, } from '../../../../config/index' const Header = () => { const navigate = useNavigate() @@ -87,33 +80,39 @@ const Header = () => { const headerBck = SiteReactTaro.header const [isShowGuid, setIsShowGuid] = useState(false) const [isShowGuid4, setIsShowGuid4] = useState(false) - const [selectedVersion, setSelectedVersion] = useState('3.0.0-beta.11') + const [selectedVersion, setSelectedVersion] = useState(version) const [selectedLanguage, setSelectedLanguage] = useState('') const handleMouseHover = (isHovered) => { setIsShowGuid(isHovered) } useEffect(() => { - if(location.pathname.includes('/component')) { + if (location.pathname.includes('/component')) { setActiveLink('组件') } }, [location]) const toAnother = () => { // 开发环境 - if(process.env.NODE_ENV === 'development') { - if(window.location.href.includes('/react/#')) { - window.location.href = window.location.href.replace('/react/#', '/react/index.taro.html#'); + if (process.env.NODE_ENV === 'development') { + if (window.location.href.includes('/react/#')) { + window.location.href = window.location.href.replace( + '/react/#', + '/react/index.taro.html#' + ) } else if (window.location.href.includes('/react/index.taro.html#')) { - window.location.href = window.location.href.replace('/react/index.taro.html#', '/react/#'); + window.location.href = window.location.href.replace( + '/react/index.taro.html#', + '/react/#' + ) } return } // 生产环境 if (window.location.href.includes('taro')) { - window.location.href = window.location.href.replace('taro', 'h5'); + window.location.href = window.location.href.replace('taro', 'h5') } else if (window.location.href.includes('h5')) { - window.location.href = window.location.href.replace('h5', 'taro'); + window.location.href = window.location.href.replace('h5', 'taro') } - }; + } const checkGuidTheme = (item: any, type: string) => { setIsShowGuid(false) window.open(item.link) From ca4e13150a2577f824e33db0d9dde452e371e6a4 Mon Sep 17 00:00:00 2001 From: "Alex.hxy" <1872591453@qq.com> Date: Wed, 26 Feb 2025 10:49:15 +0800 Subject: [PATCH 40/40] chore: update docs --- src/packages/popup/doc.en-US.md | 2 +- src/packages/popup/doc.md | 2 +- src/packages/popup/doc.zh-TW.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packages/popup/doc.en-US.md b/src/packages/popup/doc.en-US.md index b513983d55..d33af625bc 100644 --- a/src/packages/popup/doc.en-US.md +++ b/src/packages/popup/doc.en-US.md @@ -92,7 +92,7 @@ import { Popup } from '@nutui/nutui-react' | description | The subtitle/description | `ReactNode` | `-` | | destroyOnClose | Whether to close after the component is destroyed | `boolean` | `false` | | round | Whether to show rounded corners | `boolean` | `false` | -| portal | Mount the specified node | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | Mount the specified node | `HTMLElement` \| `(() => HTMLElement)` \| null` | `null` | | onClick | Triggered when the popup is clicked | `event: MouseEvent` | `-` | | onCloseIconClick | Fired when the close icon is clicked | `event: MouseEvent` | `-` | | onOpen | Triggered when the popup is opened | `-` | `-` | diff --git a/src/packages/popup/doc.md b/src/packages/popup/doc.md index 27b6076865..9e3d46d18d 100644 --- a/src/packages/popup/doc.md +++ b/src/packages/popup/doc.md @@ -92,7 +92,7 @@ import { Popup } from '@nutui/nutui-react' | description | 子标题/描述部分 | `ReactNode` | `-` | | destroyOnClose | 组件不可见时,卸载内容 | `boolean` | `false` | | round | 是否显示圆角 | `boolean` | `false` | -| portal | 指定节点挂载 | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | 指定节点挂载 | `HTMLElement` \| `(() => HTMLElement)` \| null` | `null` | | onClick | 点击弹框时触发 | `event: MouseEvent` | `-` | | onCloseIconClick | 点击关闭图标时触发 | `event: MouseEvent` | `-` | | onOpen | 打开弹框时触发 | `-` | `-` | diff --git a/src/packages/popup/doc.zh-TW.md b/src/packages/popup/doc.zh-TW.md index d866b0c20b..773133790e 100644 --- a/src/packages/popup/doc.zh-TW.md +++ b/src/packages/popup/doc.zh-TW.md @@ -92,7 +92,7 @@ import { Popup } from '@nutui/nutui-react' | description | 子標題/描述部分 | `ReactNode` | `-` | | destroyOnClose | 组件不可见时,卸载内容 | `boolean` | `false` | | round | 是否顯示圓角 | `boolean` | `false` | -| portal | 指定節點掛載 | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | 指定節點掛載 | `HTMLElement` \| `(() => HTMLElement)` \| null` | `null` | | onClick | 點擊彈框時觸發 | `event: MouseEvent` | `-` | | onCloseIconClick | 點擊關閉圖標時觸發 | `event: MouseEvent` | `-` | | onOpen | 打開彈框時觸發 | `-` | `-` |