diff --git a/.agents/skills/uni-halo/SKILL.md b/.agents/skills/uni-halo/SKILL.md index 0955744..ee2d7da 100644 --- a/.agents/skills/uni-halo/SKILL.md +++ b/.agents/skills/uni-halo/SKILL.md @@ -295,7 +295,85 @@ onLoad(() => { - 页面根节点用 `app-page` 类 + 主题底色:`` - 页面标题 `navigationBarTitleText` 写中文;下拉刷新 `enablePullDownRefresh: true` -### 5.4 页面数据请求(统一 updateLoadingStatus + uh-data-loading 组件) +### 5.4 子页面自定义导航(uh-navbar 组件) + +**用途**:子页面(非 tabbar 页,如文章详情、设置、投票详情等)的顶部自定义导航栏。 +配合页面 `navigationStyle: 'custom'` 使用,**新页面一律使用它,不要用默认导航栏**。 + +**前提(definePage 里必须声明)**: + +```ts +definePage({ + style: { + navigationStyle: 'custom', // 关闭系统默认导航栏,让位给 uh-navbar + }, +}) +``` + +**Props 一览**: + +| Prop | 类型 | 默认值 | 说明 | +|------|------|--------|------| +| `use-back` | `boolean` | `true` | 是否显示左侧返回按钮 | +| `use-title` | `boolean` | `true` | 是否显示标题 | +| `default-title` | `string` | - | 默认标题(顶部文案) | +| `title-color` | `string` | - | 标题颜色类名(如 `text-gray-900`),**带此属性时固定颜色、不随滚动变色** | +| `scroll-title` | `string` | - | 滚动后标题(配合 default-title:顶部显示默认标题,滚过 50% 换 scroll-title) | +| `need-placeholder` | `boolean` | `true` | 是否生成占位(为页面内容让出导航高度) | + +**页面结构模板**(参考 `src/pages-blog/test/test.vue`): + +```vue + + + +``` + +**使用要点**: + +- **`need-placeholder` 必须按场景传对**: + - 页面内容直接从导航下开始(普通子页面)→ `:need-placeholder="true"`(默认即可,如 test.vue / setting.vue) + - 页面顶部有全屏封面/背景图,内容要盖到导航下面 → `:need-placeholder="false"`(如 article-detail.vue,封面 `pt-72` 上移) +- **`title-color` 与 `scroll-title` 二选一**: + - 页面底色非深色 → 传 `title-color="text-gray-900"`(固定深色,如 test.vue / setting.vue) + - 不传时标题会随滚动变白→深灰(顶部透明、滚后加深),适合顶部是深色大图的场景(如 article-detail.vue 只传 `default-title` + `scroll-title`,让滚动变色) +- 中间标题可用**默认插槽覆盖**(不传则显示 `default-title`/`scroll-title`),右侧扩展用 **`#right` 插槽**: + +```vue + + + +``` + +- 返回按钮内置(`uni.navigateBack`),无需自写 +- easycom 已配置 `uh-` 前缀,直接用 ``,**无需 import** + +### 5.5 页面数据请求(统一 updateLoadingStatus + uh-data-loading 组件) **数据加载四态**:`loading / error / empty / success`,统一用 `useDataLoadingStatus`(`src/hooks/useDataLoadingStatus.ts`)的 @@ -419,7 +497,7 @@ onReachBottom(() => { 列表页/四态展示优先 `updateLoadingStatus` 写法 - 简单场景也可用 `useRequest(fn, { immediate })`:返回 `{ loading, error, data, run }` -### 5.5 列表页(分页加载) +### 5.6 列表页(分页加载) 列表页可用 z-paging(easycom 已配置 `` 直接用)或手写分页。 手写分页的既有模式(参考 `src/pages/tabbar/home/home.vue`、`pages-blog/votes/votes.vue`): @@ -457,7 +535,7 @@ onReachBottom(() => { }) ``` -### 5.6 依赖插件的页面(插件可用性 + 维护拦截) +### 5.7 依赖插件的页面(插件可用性 + 维护拦截) Halo 是插件化 CMS,页面可能依赖插件(投票 plugin-vote、瞬间 PluginMoments 等): diff --git a/src/components/uh-home-notify/uh-home-notify.vue b/src/components/uh-home-notify/uh-home-notify.vue index 04ef9a5..3c7801a 100644 --- a/src/components/uh-home-notify/uh-home-notify.vue +++ b/src/components/uh-home-notify/uh-home-notify.vue @@ -1,100 +1,79 @@ + /* 布局由 UnoCSS 原子类实现 */ + \ No newline at end of file diff --git a/src/components/uh-home-quick-nav/uh-home-quick-nav.vue b/src/components/uh-home-quick-nav/uh-home-quick-nav.vue index 5a10646..788fdfe 100644 --- a/src/components/uh-home-quick-nav/uh-home-quick-nav.vue +++ b/src/components/uh-home-quick-nav/uh-home-quick-nav.vue @@ -14,20 +14,27 @@ const navList = computed(() => { const loveEnabled = !!(haloConfigs.value.loveConfig as { loveEnabled ?: boolean })?.loveEnabled const socialEnabled = !!(haloConfigs.value.authorConfig?.social as { enabled ?: boolean } | undefined)?.enabled + // return [ { key: 'archives', title: calcAuditModeEnabled.value ? '内容归档' : '文章归档', - bgColor: 'rgba(3, 169, 244, 0.95)', - icon: 'news', + color: '#03A9F4', + bgGlass: 'rgba(3, 169, 244, 0.14)', + borderColor: 'rgba(3, 169, 244, 0.35)', + iconPrefix: 'uhemoji2-icon', + icon: '-mask', path: '/pages-blog/archives/archives', show: true, }, { key: 'vote', title: '投票中心', - bgColor: 'rgba(0, 188, 212, 0.95)', - icon: 'box', + color: '#00BCD4', + bgGlass: 'rgba(0, 188, 212, 0.14)', + borderColor: 'rgba(0, 188, 212, 0.35)', + iconPrefix: 'uhemoji2-icon', + icon: '-confused', path: '/pages-blog/votes/votes', // show: !calcAuditModeEnabled.value && calcVotePluginEnabled.value, show: true, @@ -35,8 +42,11 @@ { key: 'disclaimers', title: '友情链接', - bgColor: 'rgba(0, 150, 136, 0.95)', - icon: 'link', + color: '#009688', + bgGlass: 'rgba(0, 150, 136, 0.14)', + borderColor: 'rgba(0, 150, 136, 0.35)', + iconPrefix: 'uhemoji2-icon', + icon: '-wink', path: '/pages-blog/friend-links/friend-links', // show: calcLinksPluginEnabled.value, show: true, @@ -44,8 +54,11 @@ { key: 'love', title: '恋爱日记', - bgColor: 'rgba(255, 76, 103, 0.95)', - icon: 'heart', + color: '#FF4C67', + bgGlass: 'rgba(255, 76, 103, 0.14)', + borderColor: 'rgba(255, 76, 103, 0.075)', + iconPrefix: 'uhemoji2-icon', + icon: '-in-love', path: '/pages-blog/love/love', // show: loveEnabled, show: true, @@ -53,8 +66,11 @@ { key: 'contact-blogger', title: '联系博主', - bgColor: 'rgba(255, 152, 0, 0.95)', - icon: 'message', + color: '#FF9800', + bgGlass: 'rgba(255, 152, 0, 0.14)', + borderColor: 'rgba(255, 152, 0, 0.35)', + iconPrefix: 'uhemoji2-icon', + icon: '-cool', path: '/pages-blog/contact/contact', show: socialEnabled, }, @@ -68,21 +84,37 @@ \ No newline at end of file + + + \ No newline at end of file diff --git a/src/components/uh-navbar/uh-navbar.vue b/src/components/uh-navbar/uh-navbar.vue index 0130bb1..b917a3c 100644 --- a/src/components/uh-navbar/uh-navbar.vue +++ b/src/components/uh-navbar/uh-navbar.vue @@ -6,12 +6,15 @@ useBack : boolean; useTitle : boolean; defaultTitle ?: string; + titleColor ?: string; scrollTitle ?: string; + needPlaceholder ?: boolean; } const props = withDefaults(defineProps(), { useBack: true, useTitle: true, + needPlaceholder: true, }) const slots = useSlots() @@ -31,6 +34,10 @@ const customCalss = computed(() => { const _class = [] + if (props.titleColor) { + _class.push(props.titleColor) + return + } if (scrollThreshold.value) { _class.push('text-white') } @@ -49,9 +56,9 @@ } return props.scrollTitle; }) - + // todo:注意:如果是从分享进来的,我们需要处理为返回 home页面 - function handleBack(){ + function handleBack() { uni.navigateBack({ delta: 1 }) } @@ -61,25 +68,30 @@ \ No newline at end of file diff --git a/src/components/uh-notify-dialog/uh-notify-dialog.vue b/src/components/uh-notify-dialog/uh-notify-dialog.vue index 5f0cd8f..1df3a21 100644 --- a/src/components/uh-notify-dialog/uh-notify-dialog.vue +++ b/src/components/uh-notify-dialog/uh-notify-dialog.vue @@ -81,9 +81,7 @@ - - 📢 - + 最新公告 @@ -101,7 +99,8 @@ - + + {{ notice.title }} diff --git a/src/components/uh-plugin-unavailable/uh-plugin-unavailable.vue b/src/components/uh-plugin-unavailable/uh-plugin-unavailable.vue index 714cba3..be913ab 100644 --- a/src/components/uh-plugin-unavailable/uh-plugin-unavailable.vue +++ b/src/components/uh-plugin-unavailable/uh-plugin-unavailable.vue @@ -1,8 +1,4 @@ \ No newline at end of file diff --git a/src/pages-blog/favorites/favorites.vue b/src/pages-blog/favorites/favorites.vue index 09631a6..366dd07 100644 --- a/src/pages-blog/favorites/favorites.vue +++ b/src/pages-blog/favorites/favorites.vue @@ -1,10 +1,4 @@ + + + + + + + + + + 布局 + + + + + + {{ def.label }} + + 跟随站点默认 + + 已自定义 + + + + + {{ enumLabelOf(def, valueOf(def.path)) }} + + + + + + + + + 功能 + + + + + + + + + 恢复默认 + + + + + + + {{ enumSheet.def.label }} + + + 跟随站点默认 + + + + {{ opt.label }} + + + + + + \ No newline at end of file diff --git a/src/pages-blog/test/test.vue b/src/pages-blog/test/test.vue index cc5c279..1d3343f 100644 --- a/src/pages-blog/test/test.vue +++ b/src/pages-blog/test/test.vue @@ -1,14 +1,33 @@ \ No newline at end of file diff --git a/src/pages/tabbar/about/about.vue b/src/pages/tabbar/about/about.vue index 2c9a28d..e9b2be9 100644 --- a/src/pages/tabbar/about/about.vue +++ b/src/pages/tabbar/about/about.vue @@ -1,375 +1,381 @@ + + + {{ copyrightConfig.content }} + + + \ No newline at end of file diff --git a/src/pages/tabbar/gallery/gallery.vue b/src/pages/tabbar/gallery/gallery.vue index a759c50..1829159 100644 --- a/src/pages/tabbar/gallery/gallery.vue +++ b/src/pages/tabbar/gallery/gallery.vue @@ -148,13 +148,11 @@ onLoad(async () => { // 检查插件可用性 await checkPluginAvailable() - console.log('uniHaloPluginAvailable',uniHaloPluginAvailable.value) if (!uniHaloPluginAvailable.value) { uni.stopPullDownRefresh() return } - // 开始正常数据请求 handleGetCategory() }) diff --git a/src/style/index.scss b/src/style/index.scss index bd0dfc6..ab0bcdf 100644 --- a/src/style/index.scss +++ b/src/style/index.scss @@ -1,6 +1,7 @@ // 测试用的 iconfont,可生效 @import './iconfont.css'; @import './uhemoji-iconfont.css'; +@import './uhemoji2-iconfont.css'; :root, page { diff --git a/src/style/uhemoji2-iconfont.css b/src/style/uhemoji2-iconfont.css new file mode 100644 index 0000000..466e15f --- /dev/null +++ b/src/style/uhemoji2-iconfont.css @@ -0,0 +1,58 @@ +@font-face { + font-family: "uhemoji2-icon"; /* Project id 5230478 */ + /* Color fonts */ + src: + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAABZcAAwAAAAAMBAAABYLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoNoI1IGYABUCtAwvGUBNgIkA4MAC4FiAAQgBYIkByAbkCSzMtg4AELIzkH2XyTwZppOA1vuxlZsBbYQHnOutAKCuYJvKCUCIKcppIE6QV/4eX6bf+4D5BEqCJIGJZhzgILxhwmIOsTAwgmCoq7MKTa4yFAXuHStv9r98mf45/7f7yAAhuqsur5VM8dGNFBmJTQOzsI5OJ+ub9VXSQYKvLAaCQj5//Nzqc0f5qaucghyQpJ0Vf9fUniB6/3yL1/bQYaXEpAasEJKSjgAdDfNClhO2E1OuGk5yGlijn6nCuykROK5nzHX96C1XS2ukEhRAUlx5t39MSRSIAtOv4MYCHCjZGJYgiRMByni5OQknp446HPj1ELEaGUeo9diFhyCX/XgUJwRYAbDQqwYOxFOlRr1NJ9mUkibDl10p0VJcUiS74/LojEMMcxIOi4ZH09IJUaSQoukvNHEYmaZY57FtCapza+iW1uLZbLBJlvprGR2Lke7WwnlxfITerbZYTdt0hsDBxgO17AU5BIDtuWMjcpGvohXcMU1NyybblCNoQbe/z5q45EnPLc+ZB/4Nd7AOx98jlBTenf+J9Ti3GprbHliRXglv/zxHweFghCL+bwhCqSrKwO7PV2BYt5IoDDz0UA59wMLyQd+Ngp4z/8VqCn+N7DiuWeJd4/+C6z6dIniq4FXfhgIAbgMIBIB7QISELEjmBsAlgYHg9ygRmqAuohx06+5xKyHJ0G08BfBGwBwEAwHCAAAA+wVABAB6AEIAMAGGQVmRMgGADrggF07Ey08XPh24YeFvwIBfrrw9cb6/cKvoYHPG7mBx+fyWQLzg9yOh/4MAE4D0KsBGBwAiLclb1Q1dFAxR7z6YfdFYJclcpXDcGAgMPMOCK6IJLADBAShXnxlg9hlSSmXJaZaEVESUZBEwHn35wVjc8nkBAqZQqV2pYVS6GxuOFe1DOgcLo9HIZODVJ/EpOjI5IgIHpcjjifKFM2cdEYYfa+VM/lM5i1IgYSFr59TjoEx9VcxPJyIHBOmYpIK2FeTEFwVHh4SQudxJ0zF44SSmIAuNiGLVdgMZtBpjQ54DqEPBhaHaUXUtyo8KyTBhtM03PnuAiBMczxPMctylN5WIL77qf/if+yhXPF9RMOHF7lDEpVz2nn/+ebHLy+OxaVEfUFgFh4lSUkPgpOXF5uYAJJMm1dmOOWraRqGoC2+AVLtCgYhESB9ffalxGLn3AwzL1kvQSHp5wGjPVyjyF99HwEazqxfFOsCJKJcq/dr3p9efb6YI7rWNXKSK0CbpSwuDSn0QPU2gJLUQoB75UPfIQ1iYETjfRgAvI5l1RHHHreSbVxbcuXFgwVEFzVIIClUIqxx6xUEJLDzyVjoWxovouLTwdDfnHGTywqwRO2U/zQinnZlSH/K1WqUCNOaHqWGww2pC9UW6aXnmmUypvF0VpntSJomVJMp4zCOaDGsxDvoFDVmTueuZyTW1wiiTptx0MzVeMbPHzF7BeXNZ9uBLYQhpeanJNWmz8SeXc1dlRF9xrQDQKILbCh9kBkcBPaNvC+KKp2fpBLgD5C8U3B0nVpHtFqVdppgPQ1+4trjUZJqz0ba8lpODuST0iYH+COi75UrKfgGKqmdN0rw8RCW6NMYvZOISLdNbIr13onu1VtZrX7rzFW/IzceMbOPkjYotWKj4dKr/nRuSGPs4+nL9xPZRr9ZuBKzQX40PvZ28eXbUa5xo/7yKNci/O9fHqyMR3PNAXCaD+ziPY0YMDU7EgVVMP2Mevjjm97JcGuSf8rYx6VP/R5/nVlZxCBJfnPJ6xhZ7gKrOFiOOxKc7R0NFl16lcj2F/T8DUgyl/3E+DLzfP6T+rq3xrmarYHXsaoAiV6K2a2+sXBx8XW0/tIaepAsPYuwPUgsfycpILkVGZ6OgaXYBoeCeqqKqUqNi0u1jdxveopr7sLtjeG7aJfRvQXJnQytg+KFtkms4laRMaBCQI3C6gjN83GqjiXkqCJa/5ncAY/t9gMST9JM6EgwBuqSUMEH8i1fkWCF/kJBB/iO4B5vKUrhSZAEpSdL8qV0pgRY6KKuMuHPjiKaiznyTDbWtNOqki3zr0lgFxFdWi4buduP2d04vdUhzzuCLvNTQ0kIvLRdLz8+TcuG1Efi3DpWgKSkA26jukyeRExmeTc8rFlcNbPVQUdqVrEes4XhyNGkLfSfBVFNhpxZbT/3/YtGuAcv6+ygzAPVTwI3i21irDFxUbsZN1YyZzmXeu+GtVLoWwSsjTDYT6DT+RnDDXIDc0AMGzN3AiaJ3oPstY8pPRMlUHPW1OJDWc1hOEOIRuc/VR0WVZy0VjGam2YyzTpQkZ9I7IREr5Xt+vqM1iIRYLpNIIMrhWP9QHyrqTH3Qyvivx8IDrNchCz/u1DNrUxc49xwygP9kbnU7fxMR2IdC90u/ZoQkDAzdtJvMvbfQQkEpFAMlWcYzFvpiOKC/TwOVZtKRh4cAgYE9ObrQ8m0QUUALXyL6Ounkt97BcmbB/80h9y7uh/S1q+ebIR3cQWSWqdCUhBk8ZHYCD94A8mrc+Cef71SvH1okQ8g0VCb3ML3NnveBfjOIUnKOfUsr6IBf6DMKb/4Xm2qPQ22PP8gC6K+g5AwxeVIbvmP1j9Aoqekdw3BXjCH6C93EAuXLMowXwGA6EFJNe6qHnwpn5wFtPhyWj/yjKDsiVPYaM9F2kTmnRW7K6NHhX17ZRUsECy58GGFzZReEzJZlcI12KSRST4ZnWkazo0KosvQnkHyIhY9IWNa0z9KLdmZfwFJi/2+XOPSOIvobH60lBTUqZWsIpCuyWSXTXIt9xzRl70Ia3jfMi5l6CWiz6OcqUzoLUhmMWanJ7bFslkuRGWKVROqkG7p8ll+2X+svSg6279ujJY5SkCMagoATtZm3FwKTlN5DazpHQLwsCCekYTtY6xoAozH1Zu65x00+Vt9EaMOoOlBZhh4LS8J9bNN1JYthgzvQ8h+9D7quGx/+F02C/dCv3ARW9+00Y/HnVNspdG23g1/YsD75FuMfRr5njHf6qcqtr75iRX0htOcds5E5uRzEW02NJvQLsdn4DXebCL4jvKWsL9AHGTWmDeLDeH5wXcJfGZ+f2EjLtPFtaOTJpfroml09AcuEjdcBI9J09qewBqeuVKAfzWWUzcbxrUsZ6x7pFhhzKm4tdzJ2Q9IPMJ8oVdYUSioEPo+94WPfV1BCzRCTW65OTFH9ta6ZNEfVNirGIjLnmWtu9y0zRO7mdqYG7yDVh1ewXeE7J8qDzuJw549Yr3pX0AQP0P/fe+/jeuyPxZboFySWqlOqdSMatSVNz08NS+Not6j/uakgarOty+UxCbL7XZLSgmQFbZDH7KbXstpejf8quuMqIBxLriFSxB3Rf+IIYKj2FsJqaYkY+tdNZEFEEQKk2OIFu1qvKp6g14gQGFhLLtxfHBowmCvZ4mhIcO43Q5D5HnWH+2ra/xJo4+uWNd43n29eNOm4qnmZnDjcbibQ9pI9qsZD0oMEqh5LASIyXChdPfQsRt72PGpQpKAKAsyun4ee7PK1oowroCPEEktkiatHrmqgPx0PaGCXC2zhR0MyQkRTY2HtseuN7NGyR+ByvtlZprdkZ6RaU9Pt2fifsoo7vcKC5P1hbFJiUGCtKCam8OncdwvbtJ4Blgj7qJrGzdeK3K7Y18bNxZdc5PnC8NmonIg9Z1jW7cefXtA03lfo6jvKpWWS2e9wkahvVyntUzqugvN/c4BzY1g+o3+VCUxBFokS9qFvOyM87l2odfhyDvvWWdWFOZWPbrKXTy1YcNUETx041YmyNzqOWxlWGfdVqZeojoTsFGopPkLnd2E6SZAEJj0r4eMuUNlI4eWl9zZtu1OyfLlxo3Hvpxk+Ax+TOv0F/h8BX6n05t8Pn+BE13E9uJuU8dAmtOuUfzmWr8E/j2fihC7Y1a/abPkrEDaVCX5IrkpUzZvwmI4Rb9xgqK8WrhEScOX8nxLoHvK22y+sXlDjexUXZgyD0vCFPRbQrxMJpFhUYnTw/azWdNsfNJGu3wwco3d+vxuI8Go7+7SQ+JxYVPE+oimZf7PAOr9b+yfO/00ZIyerPKeyLHLcBj9vrXVMudqhfZ+57YM6Ofy+sjCUyYPYprF9ntzSTubh05UTG1qGafHNxYVNSakZ7gSiovGAMneL85pcGdk6Yw7HuTqZRH98UmjPlHmclveCY/nZL7NdiLf48k/YbPln/R4TuTZbCfzPJ68k6CgaRp5z+87kGm969lmfeTgijUGWe4j5vMNnN0A3cUT83v4zEj/7wm88uLnzcrZrRsXPHPv2lbPbodlH2auXFzy6GCRYHVqQzu5cZPRHXtEqmgSHFxDPzvVOganNulHp9XY1ytJFosMPwgbX1fnjEX7DCIQ5jIyP1wGo8tPskkRzgdgUKf3XAVYlK20JCdblI3Kje9LDed+Do6gzFDm8VkKKLeMbYiKSTDFjPxYRIAKUdmJrrTaqG0WzuXbf+yX16R9zs6u6p2LUvgofPPx5ba43Mq2zQhmt1GlKV7PHMD0Z+N58VZ2VKlKKr385TsKXmLG6E9HlAaT4VVTGi3LbpwYGho32O2N1PlN2IVx5DsOxxGygl+dfbC7+1B2VZXdras752C16up8JDfI8uyfrWMvTx02KMd+NjxqmC/zJolurUdvn8CwxS0Nu0VE4dO1o0sBWsf7n37j9oE1CH6D5T+Tj+CNZD9Zk1JdnaLRLNxpnVKd9rX8mLg4tCdA6mIyydiBX1B1Dzc7JVFfNq3i8iV8lBaUoiz2PfadcHMd1vA77ETw27ql4WzSRgsNl42/KaCGK/5efFyyV8R0Mxk9++1lMJvjsqjBot455kG7IdPRqywNXYZQawK2v2SguM+X5fxVrjV39WQY2wq6NsvyOv8ezfnMS4jcFNnu9IoYp/IIv+r6ro3DrVBidfCufDRKF9PrJ1/+CcZM0q9tPpVeWzf2yPqVicYw9RSdSW8PRvQ7dAhupzPod4ZHOp5syC79WRx/Q9x1JtYpbBc643BEwQjZ1uea5xzIbSVEhzzZ9nR3TjW1kp5YwCgTbn0nlOr78fN9e0PxbESlIsdKB8QSyisYT/EnnAZhncMw0WOF2+1nS4a/w076nS0pPUFBXFoL/8Fzx3Q1m+7ttbrjbf2FMXpd6RU35//NCOxn6tpjvdqO1WiQKXnu49qqmWT2oOoPflv6gwer0/l/SMIHk2drqj6+qRpk/jT8UoxNUCQtMJ22UJ/ybDrfIwi2RJgnCmLW7TPG3DQn0i2CnkObPNcs1NMmyHhDwdCuinHIO8zWvHzSKPkl17tlZS90vcTtJKXkWc0dckfM93oWzjrLIowRuRIJk5BOaFSuEIsHlBVEE5HJdSqIewksyEtSl6tU5eputbK8QgW3HvAjKfco31J94WAcuHE+S5FUrPAyzQTQTakPATq4S+Uc6PBrL3JO3JjrcG4xdh6yHt8+P8h0yLXtH4qiP5yoS8P9OFlpkt+/I3cMMuf/9GetqcoPYg+U+PZcbssoK/OAE8GM930l4QNB+Xm65n5bfnuGTqCTXB4LCX1DaR6hl2MdJfhckjbYguA8uHs7LTQE8meLhA3LuPK3G5ZGfAkTPP6EtAAhC220uSfzx2aMrKqtFpvYg0QDMBpy2jIGVrS1oQ+SAQYie9Akrq1W4QjTZw8yx25r2mVODOtka9tv7x1kWlJTvYcPA4J4rl+1W2pCGIL9AHt9KgsNQxhc+E5NtwAAwxjDj7MrACAtoDTB1kmh9wF+BO/W1jVNU1enSUsL3AYdMcWmpFyjIiEBjCtI5qNxP1kyni//SC03WsRVxGT/plD8Js/eUtsppR3ucmPUMUcTUF+M6BFGuCOEoy174HFunT4WIBPbWzK0v/u7H1tMnYb23nSXWaH5zeXTgYCbFF9gSkhMKkhIKEhKTDAVxB9jU3y8SZAgCXJIxO2/u7ff28USR9BHRUmByeOSE+cjeyMjPEk2RURuDL3SeVKZGGhlWVeOQaxE7GmIZVm7PxmvpTr4+bP1EW6Vwq3CDaq5QmK10C1c78A6PEgPHesbDQY9Q/+REuEvH+s9jwXIyJ2wrT2trH5/haesZ4N6gNeZfMG5Rwuf3UvEp6WBZ2I2l4XJou/3Rlhfjor8b9G9Mv0hgEmwUoJP36DS9EkEgLFyvyxEogiDoXEaCTHzvft4Ci21faJw61TtQEX7vCTKH3VUPvJ/DeDRQ9S41ry81jhI7KquV2zbWXynWRdqNwxfaKUM1it+gxX+ISsuvy7wCL4xUMXgwazuFZLCqvjIEX3dKjnne85HIEIcyMttbalCKawHVr1Knq/I1WS5Gn/R/hkZERn5nuZXV1eWVpwfG1pKymnUaR/qoqPMfzPPx/WLpik+IbUGOj/kSfk8NY+vklMCTvN71a0TVmIRlf5HwQ3x111NssO7Kp5cqbxpo/natvXLRJ2r5dyFrJnG5seKtVldrl8170VOTP/U/tLoytLk5ivYFcEF/W2OitY91Ooau37VpCbEN2l+ORrRF0qSha9E9UoKdutl152U6Z5EKE5n2kS9/jtQzLi+vt6OoaGpqJ7sDRrEac38heeOLqlmPq2aJUfb+k0x+brSy031hvHBwXEDbFElzCTEzyYkzMYnzMDHqlBr6PEBwMMASeXUyd+jRQppX6Xqyl3zqbnyWLGp94C6XKksV3e07vjGwj0xF+AbJx3seFb0kWg4QZQbzCQ4InecTmeUAnTnkf34VdY+pnNenqpzrSNexf0gInidkyafzzTptGacHNF/VlERoo/X7CmpzTvR23sir7YW3HgwF5J7rKf3WH41kIh14TSAyeSalMFNxg78CLmsf0nocCuQQv7y6whDonydfoE+36Qp7JkNAMO8MP4IIIvG/6I8vo4Wh1D/05FSpkprSs366CcM83FyXiWBZkotJreJJW1kccBLxOs83VKQHhHj1hd1RNLek+uc5R0NGnGsPDd13lWuS/2KBkqvGT+M4xe+53V3BDJPCdT8Ab462R8IQA4pAECGlP/e//8lYnza3DRUBjDevMqMMmC/iglAXF9+KHoRqyVI0Wr0ESENq0BPoB9DJiwb0F+yu7m+3jlmD33kN5zw9BYLTxrqgh4DLpFE8AJAEGB/b1bgb+EnTQSA/84SSX+3liy4ikSnMso9kqssQPPcJxZUiPaip5UZHh6NWAhJwEZqa6C+SycQiK0BgQblgAzooWpnIxVyqWEOmpsgsqAhdJ47EwTBvNyK/UIoAKYRSVcDIkhtA6WWz4J51QhAcngGYAug28o1nXnkqYstEgPJJExjSEH0CQAbnBcSYj50HB6iGQBkxeoRAz1W5wWAWrEm9DbqQmIAVI8VQfq6JGwr9gnKQa+g5zEzyFEOgQeBwkjcDl9BEPD+pp5vL5Lpg8AMBEBEyjRSADBlGISACAsJkA2x4USI/68NGywkgQD26IMgHi7CGrp5E6yCNlgOraCCJA9cxKWthjJogmZYAyuhATpBCYtg8UHLBDOUOKA/FzFiRUmzInKtSASVU9YJXVORkSfVEkopgAD7DgMX4T9EBAAA') format('woff2'); +} + +.uhemoji2-icon { + font-family: "uhemoji2-icon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.uhemoji2-icon--tongue:before { + content: "\e6f9"; +} + +.uhemoji2-icon--confused:before { + content: "\e6ea"; +} + +.uhemoji2-icon--tired:before { + content: "\e6f7"; +} + +.uhemoji2-icon--happy-:before { + content: "\e6ec"; +} + +.uhemoji2-icon--mask:before { + content: "\e6ef"; +} + +.uhemoji2-icon--cool:before { + content: "\e6e9"; +} + +.uhemoji2-icon--in-love:before { + content: "\e6ee"; +} + +.uhemoji2-icon--smiling:before { + content: "\e6f4"; +} + +.uhemoji2-icon--surprised:before { + content: "\e6f5"; +} + +.uhemoji2-icon--smirking:before { + content: "\e6f6"; +} + +.uhemoji2-icon--wink:before { + content: "\e6f8"; +}