@funhub/platform 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icons/channel-list/channel-active-indicator.mjs +2 -0
- package/dist/assets/icons/common/header-menu.mjs +2 -0
- package/dist/assets/icons/common/header-search-icon.mjs +2 -0
- package/dist/assets/icons/common/right_arrow_thin.mjs +2 -0
- package/dist/assets/icons/eye-off-icon.mjs +1 -1
- package/dist/assets/icons/marquee-close.mjs +2 -0
- package/dist/assets/icons/marquee-speaker.mjs +2 -0
- package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +2 -0
- package/dist/biz.d.mts +6 -2
- package/dist/biz.mjs +1 -1
- package/dist/common.d.mts +5 -2
- package/dist/common.mjs +1 -1
- package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
- package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-match.d.mts +1 -1
- package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-provider.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-query.d.mts +2 -1
- package/dist/components/biz/business/advertisement/ad-query.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-runtime-provider.d.mts +2 -2
- package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +1 -1
- package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +1 -0
- package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -1
- package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +1 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +4 -0
- package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +1 -0
- package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +1 -0
- package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -1
- package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
- package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/text-ad/material.d.mts +1 -0
- package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +2 -0
- package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -1
- package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
- package/dist/components/biz/business/banner-carousel/client.d.mts +2 -1
- package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
- package/dist/components/biz/business/banner-carousel/default-props.mjs +1 -1
- package/dist/components/biz/business/channel-list/client.mjs +1 -1
- package/dist/components/biz/business/channel-list/default-props.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +1 -13
- package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +2 -0
- package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +4 -3
- package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/header-action.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/header-shell.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/client.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +16 -4
- package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +14 -2
- package/dist/components/biz/business/home-recommend/home-recommend-grid/server.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +16 -4
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +14 -2
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/server.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-default-config.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-runtime-props.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-layout.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/client.d.mts +17 -0
- package/dist/components/biz/business/hot-recommend/client.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/index.d.mts +5 -0
- package/dist/components/biz/business/hot-recommend/material.d.mts +25 -0
- package/dist/components/biz/business/hot-recommend/material.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/schema.d.mts +24 -0
- package/dist/components/biz/business/hot-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/hot-recommend/server.mjs +2 -0
- package/dist/components/biz/business/image-text-recommend/client.d.mts +1 -1
- package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
- package/dist/components/biz/business/image-text-recommend/material.d.mts +7 -7
- package/dist/components/biz/business/image-text-recommend/schema.d.mts +30 -25
- package/dist/components/biz/business/image-text-recommend/schema.mjs +1 -1
- package/dist/components/biz/business/image-text-recommend/server.mjs +1 -1
- package/dist/components/biz/business/image-text-recommend/shared/query.mjs +1 -1
- package/dist/components/biz/business/index.d.mts +6 -1
- package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
- package/dist/components/biz/business/marquee/client.mjs +1 -1
- package/dist/components/biz/business/marquee/material.d.mts +5 -6
- package/dist/components/biz/business/marquee/schema.d.mts +5 -6
- package/dist/components/biz/business/marquee/schema.mjs +1 -1
- package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
- package/dist/components/biz/business/profile/index.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/client.d.mts +2 -1
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/empty-state.mjs +2 -0
- package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +2 -0
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +5 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
- package/dist/components/biz/business/ranking-recommend/client.d.mts +17 -0
- package/dist/components/biz/business/ranking-recommend/client.mjs +70 -0
- package/dist/components/biz/business/ranking-recommend/material.d.mts +35 -0
- package/dist/components/biz/business/ranking-recommend/material.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/schema.d.mts +35 -0
- package/dist/components/biz/business/ranking-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/ranking-recommend/server.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/shared/query.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/shared.d.mts +15 -0
- package/dist/components/biz/business/ranking-recommend/shared.mjs +2 -0
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/search-history/schema.mjs +1 -1
- package/dist/components/biz/business/search-input/client.mjs +1 -1
- package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/biz/business/text-recommend/client.mjs +1 -1
- package/dist/components/biz/business/text-recommend/material.d.mts +1 -0
- package/dist/components/biz/business/text-recommend/schema.d.mts +1 -0
- package/dist/components/biz/business/text-recommend/schema.mjs +1 -1
- package/dist/components/common/collection-popup/create-collection-sheet.d.mts +41 -0
- package/dist/components/common/collection-popup/create-collection-sheet.mjs +2 -0
- package/dist/components/common/collection-popup/index.d.mts +1 -0
- package/dist/components/common/collection-popup/index.mjs +1 -1
- package/dist/components/common/icons/setting.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-list-item.d.mts +8 -0
- package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-list.d.mts +6 -0
- package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-select-icon.mjs +2 -0
- package/dist/components/common/list/waterfall-recommend/index.d.mts +2 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +116 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +2 -0
- package/dist/components/common/series-episodes/index.d.mts +3 -1
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/common/tab-bar/index.mjs +1 -1
- package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +2 -0
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
- package/dist/components/pages/home/client.mjs +1 -1
- package/dist/components/pages/login/auth-page-styles.mjs +6 -0
- package/dist/components/pages/login/forgot.mjs +1 -1
- package/dist/components/pages/login/login-client.mjs +1 -1
- package/dist/components/pages/login/register.mjs +1 -1
- package/dist/components/pages/login/verify.mjs +1 -4
- package/dist/components/pages/publish/components/collection.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/search-result/index.mjs +1 -1
- package/dist/components/pages/search/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/search/search-result/shared.mjs +2 -0
- package/dist/components/pages/search/top-header.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search-result/search-empty.mjs +2 -0
- package/dist/components/pages/search-result/search-tab.mjs +1 -1
- package/dist/components/pages/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search-result/search-video-info.mjs +2 -0
- package/dist/components/pages/search-result/shared.mjs +2 -0
- package/dist/components/pages/search-result/top-header.mjs +2 -0
- package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -4
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-recommend-item.mjs +2 -0
- package/dist/components/pages/video-list/video-list-skeleton.d.mts +2 -3
- package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/box.d.mts +1 -1
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/empty.d.mts +1 -1
- package/dist/components/ui/image.d.mts +4 -4
- package/dist/components/ui/input-group.d.mts +1 -1
- package/dist/components/ui/item.d.mts +2 -2
- package/dist/i18n/locales/en.mjs +2 -2
- package/dist/i18n/locales/zh-CN.mjs +2 -2
- package/dist/materials.d.mts +3 -1
- package/dist/materials.mjs +1 -1
- package/dist/store/modules/user-store.d.mts +1 -1
- package/dist/store/modules/user-store.mjs +1 -1
- package/dist/theme-tokens.d.mts +9 -0
- package/dist/theme-tokens.mjs +2 -0
- package/dist/types.d.mts +32 -0
- package/dist/utils/browser-fingerprint.d.mts +13 -0
- package/dist/utils/browser-fingerprint.mjs +2 -0
- package/dist/utils/device-id.d.mts +2 -2
- package/dist/utils/device-id.mjs +1 -1
- package/dist/utils/email-validator.d.mts +8 -0
- package/dist/utils/email-validator.mjs +2 -0
- package/dist/utils/helper.d.mts +1 -1
- package/dist/utils/helper.mjs +1 -1
- package/dist/utils/http.mjs +1 -1
- package/dist/utils/request-user-id.d.mts +12 -0
- package/dist/utils/request-user-id.mjs +2 -0
- package/dist/utils.d.mts +4 -1
- package/dist/utils.mjs +1 -1
- package/package.json +8 -2
- package/theme.css +172 -59
- package/dist/assets/icons/detail/collect_nor.mjs +0 -2
- package/dist/assets/icons/detail/collect_sel.mjs +0 -2
- package/dist/assets/icons/detail/share.mjs +0 -2
- package/dist/assets/icons/marquee-enter.mjs +0 -2
- package/dist/assets/icons/right_arrow.mjs +0 -2
- package/dist/assets/icons/search/avatar.mjs +0 -2
- package/dist/assets/icons/search/video.mjs +0 -2
- package/dist/assets/images/marquee.mjs +0 -2
- package/dist/components/biz/business/detail/shared/detail-introduction.mjs +0 -2
- package/dist/components/biz/business/marquee/marquee.module.mjs +0 -28
- package/dist/components/common/collection-popup/collection-create-modal.mjs +0 -2
- package/dist/components/common/skeleton/search-video-card-skeleton.mjs +0 -2
- package/dist/components/pages/search/search-utils.mjs +0 -2
- package/dist/components/pages/search-result/search-result-skeleton.mjs +0 -2
- package/dist/components/pages/search-result/search-video.mjs +0 -2
- package/dist/components/pages/video-list/video-list-item.mjs +0 -2
package/dist/types.d.mts
CHANGED
|
@@ -1434,6 +1434,38 @@ type ContentShowVideoInfo = {
|
|
|
1434
1434
|
* 是否广告组件
|
|
1435
1435
|
*/
|
|
1436
1436
|
is_ad?: boolean;
|
|
1437
|
+
/**
|
|
1438
|
+
* 广告业务编码
|
|
1439
|
+
*/
|
|
1440
|
+
ad_code?: string;
|
|
1441
|
+
/**
|
|
1442
|
+
* 广告跳转地址
|
|
1443
|
+
*/
|
|
1444
|
+
ad_advertise_url?: string;
|
|
1445
|
+
/**
|
|
1446
|
+
* 广告图片地址
|
|
1447
|
+
*/
|
|
1448
|
+
ad_advertise_icon?: string;
|
|
1449
|
+
/**
|
|
1450
|
+
* 广告类型枚举
|
|
1451
|
+
*/
|
|
1452
|
+
ad_advertise_type?: number;
|
|
1453
|
+
/**
|
|
1454
|
+
* 广告描述
|
|
1455
|
+
*/
|
|
1456
|
+
ad_advertise_desc?: string;
|
|
1457
|
+
/**
|
|
1458
|
+
* 广告开始时间戳(毫秒)
|
|
1459
|
+
*/
|
|
1460
|
+
ad_start_time?: number;
|
|
1461
|
+
/**
|
|
1462
|
+
* 广告结束时间戳(毫秒)
|
|
1463
|
+
*/
|
|
1464
|
+
ad_end_time?: number;
|
|
1465
|
+
/**
|
|
1466
|
+
* 广告扩展数据
|
|
1467
|
+
*/
|
|
1468
|
+
ad_ext_data?: string;
|
|
1437
1469
|
ad?: ContentFeedAdInfo;
|
|
1438
1470
|
};
|
|
1439
1471
|
/**
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
//#region utils/browser-fingerprint.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* 获取或生成浏览器指纹。
|
|
5
|
+
*
|
|
6
|
+
* 说明:
|
|
7
|
+
* - 优先复用内存与 localStorage 中的已生成值,避免重复加载 SDK。
|
|
8
|
+
* - 使用 FingerprintJS 官方 SDK 生成 `visitorId`。
|
|
9
|
+
* - SDK 失败或不可用时,降级为本地 UUID,避免阻塞游客身份初始化。
|
|
10
|
+
*/
|
|
11
|
+
declare function getOrCreateBrowserFingerprint(force?: boolean): Promise<string>;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { getOrCreateBrowserFingerprint };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import{generateUUID as e,isClient as t}from"./common.mjs";const n=`funhub-browser-fingerprint`;let r=``,i=null;async function a(a=!1){if(!t())return``;if(!a&&r)return r;try{if(!a){let e=window.localStorage.getItem(n);if(e&&e.trim().length>=8)return r=e.trim(),r}}catch{}return(!i||a)&&(i=o().then(t=>{let i=t||e();r=i;try{window.localStorage.setItem(n,i)}catch{}return i}).finally(()=>{i=null})),await i}async function o(){try{let e=await(await(await import(`@fingerprintjs/fingerprintjs`)).default.load()).get();return String(e.visitorId||``).trim()}catch(e){return console.warn(`[browser-fingerprint] load fingerprint failed`,e),``}}export{a as getOrCreateBrowserFingerprint};
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* 获取或生成设备标识(仅客户端)。
|
|
5
5
|
*
|
|
6
6
|
* - 优先从 localStorage 读取(同一浏览器会话可稳定复用)。
|
|
7
|
-
* -
|
|
7
|
+
* - 未命中时使用 FingerprintJS 生成浏览器指纹并写回。
|
|
8
8
|
* - 若指纹生成失败(极端环境/策略限制),降级为 `generateUUID()`。
|
|
9
9
|
*
|
|
10
10
|
* 注意:该值用于请求头 `x-device-id`,不应在服务端调用。
|
|
11
11
|
*/
|
|
12
|
-
declare function getOrCreateDeviceId(): string
|
|
12
|
+
declare function getOrCreateDeviceId(): Promise<string>;
|
|
13
13
|
//#endregion
|
|
14
14
|
export { getOrCreateDeviceId };
|
package/dist/utils/device-id.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{generateUUID as e,isClient as t}from"./common.mjs";import n
|
|
2
|
+
import{generateUUID as e,isClient as t}from"./common.mjs";import{getOrCreateBrowserFingerprint as n}from"./browser-fingerprint.mjs";const r=`funhub-device-id`;let i=``;async function a(){if(!t())return``;if(i)return i;try{let t=window.localStorage.getItem(r);if(t&&t.trim().length>=8)return i=t.trim(),i;let a=await n()||e();return i=a,window.localStorage.setItem(r,a),a}catch{return i||=e(),i}}export{a as getOrCreateDeviceId};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
const e=new Set(`com.cn.net.org.edu.gov.mil.int.info.biz.name.mobi.asia.cc.tv.me.vip.top.xyz.club.shop.store.online.site.live.tech.app.dev.io.ai.pro.email`.split(`.`)),t=new Set([`com.cn`,`net.cn`,`org.cn`,`gov.cn`,`edu.cn`,`com.hk`,`com.tw`,`com.au`,`co.uk`,`org.uk`,`ac.uk`,`co.jp`]),n=/^[\w.%+-]+$/,r=/^[A-Z0-9-]+$/i,i=/^[A-Z]{2,24}$/i;function a(e){if(e.length<2)return null;let n=e.slice(-2).join(`.`).toLowerCase();if(t.has(n)){let t=e.at(-3);return t?{suffix:n,registrableDomainLabel:t}:null}let r=e.at(-1)?.toLowerCase(),i=e.at(-2);return!r||!i?null:{suffix:r,registrableDomainLabel:i}}function o(o){let s=o.trim();if(!s||s.length>254)return!1;let c=s.split(`@`);if(c.length!==2)return!1;let[l,u]=c;if(!l||!u||l.length>64||!n.test(l)||l.startsWith(`.`)||l.endsWith(`.`)||l.includes(`..`))return!1;let d=u.split(`.`);if(d.length<2||d.some(e=>!e||e.length>63||!r.test(e)?!0:e.startsWith(`-`)||e.endsWith(`-`)))return!1;let f=a(d);if(!f)return!1;let{suffix:p,registrableDomainLabel:m}=f;if(!(t.has(p)||e.has(p)))return!1;let h=p.split(`.`).at(-1)??``;return!(!i.test(h)||/^\d+$/.test(m)&&m.length<3)}export{o as isValidEmail};
|
package/dist/utils/helper.d.mts
CHANGED
package/dist/utils/helper.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
function e(e){return`${(e/
|
|
2
|
+
function e(e){return`${(e/390*100).toFixed(3)}vw`}function t(e){if(e)return e.trim()||void 0}function n(){typeof document<`u`&&(document.body.style.overflow=`hidden`)}function r(){typeof document<`u`&&(document.body.style.overflow=``)}export{n as disablePageScroll,r as enablePageScroll,t as normalizeClassName,e as pxToVw};
|
package/dist/utils/http.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{getCookie as e,isClient as t}from"./common.mjs";import{getOrCreateDeviceId as n}from"./device-id.mjs";import{useBlockedModalStore as r}from"../store/modules/blocked-modal-store.mjs";import{useUserStore as i}from"../store/modules/user-store.mjs";import{
|
|
2
|
+
import{getCookie as e,isClient as t}from"./common.mjs";import{getOrCreateDeviceId as n}from"./device-id.mjs";import{useBlockedModalStore as r}from"../store/modules/blocked-modal-store.mjs";import{useUserStore as i}from"../store/modules/user-store.mjs";import{resolveRequestUserId as a}from"./request-user-id.mjs";import{toast as o}from"sonner";const s=process.env.NEXT_PUBLIC_API_BASE||``;let c=!1,l=!1,u=null;var d=class extends Error{constructor(e,t,n){super(t),this.status=e,this.response=n}};function f(e){if(!e)return``;let t=new URLSearchParams;Object.entries(e).forEach(([e,n])=>{n!=null&&t.append(e,String(n))});let n=t.toString();return n?`?${n}`:``}function p(e=1e4,t){let n=new AbortController,r=setTimeout(()=>n.abort(),e);return t&&t.addEventListener(`abort`,()=>n.abort()),{signal:n.signal,clear:()=>clearTimeout(r)}}function m(){t()&&(l||(l=!0,i.getState().logout(),setTimeout(()=>{l=!1},1e3)))}var h=class{constructor(){this.baseURL=s,this.defaultConfig={method:`GET`,timeout:1e4,cache:`default`}}async buildHeaders(e){return{"Content-Type":`application/json`,...e}}buildURL(e,t){return`${e.startsWith(`http`)?e:`${this.baseURL}${e.startsWith(`/`)?``:`/`}${e}`}${f(t)}`}async executeOnce(s){let{url:l,method:f=`GET`,data:h,params:g,timeout:_,cache:v,revalidate:y,tags:b,signal:x}=s,S=await this.buildHeaders(s.headers),C=``,w=f===`GET`||f===`HEAD`;if(t()&&!S[`x-device-id`]){let e=await n();e&&(S[`x-device-id`]=e)}C=await e(`token`);let T=await e(`userId`),E=await e(`guestUserId`);C&&(S.Authorization=`Bearer ${C}`);let D=a(T,E);if(D&&(S[`x-user-id`]=D),t()&&(u?.token&&u.token!==C&&(u=null),C&&u?.token===C))throw m(),new d(403,`账号已被封禁`,{code:403,message:`账号已被封禁`,data:{blocked_remark:u.blockedRemark,blocked_end_time:u.blockedEndTime}});let O;!w&&h!==void 0&&(h instanceof FormData?(delete S[`Content-Type`],O=h):O=JSON.stringify(h));let{signal:k,clear:A}=p(_,x),j=this.buildURL(l,g);try{let e=await fetch(j,{method:f,headers:S,body:O,cache:v,signal:k,next:{revalidate:y??0,tags:b}}),n=e.status===401||e.status===403;if(!e.ok&&!n)throw new d(e.status,e.statusText,await e.text());let a=await e.json(),s=n&&e.status===401||a?.code===401,l=n&&e.status===403||a?.code===403;if(s)if(t())c||(c=!0,o.error(`登录已过期,请重新登录`),i.getState().logout(),setTimeout(()=>{c=!1},3e3));else throw new d(a.code,a.message,a);if(l){let e=typeof a?.data?.blocked_remark==`string`?a.data.blocked_remark:``,n=Number(a?.data?.blocked_end_time),i={blockedRemark:e,blockedEndTime:Number.isFinite(n)&&n>0?Math.floor(n):0};if(t()){let e=C,t=u?.token===e;e&&(u={token:e,...i}),t||r.getState().open(i),m()}throw new d(a.code,a.message,a)}if(a.code!==0)throw new d(a.code,a.message,a);return a}finally{A()}}async request(e){let t={...this.defaultConfig,...e};return await this.executeOnce(t)}get(e,t){return this.request({...t,method:`GET`,url:e})}post(e,t){return this.request({...t,method:`POST`,url:e})}put(e,t){return this.request({...t,method:`PUT`,url:e})}delete(e,t){return this.request({...t,method:`DELETE`,url:e})}patch(e,t){return this.request({...t,method:`PATCH`,url:e})}};const g=new h;export{h as HttpClient,d as HttpError,g as default};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
//#region utils/request-user-id.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* 解析请求头中应使用的用户标识。
|
|
5
|
+
*
|
|
6
|
+
* 规则:
|
|
7
|
+
* - 登录态优先使用 `userId`。
|
|
8
|
+
* - 未登录时回退到 `guestUserId`。
|
|
9
|
+
*/
|
|
10
|
+
declare function resolveRequestUserId(userId?: string, guestUserId?: string): string;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { resolveRequestUserId };
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
import { getOrCreateBrowserFingerprint } from "./utils/browser-fingerprint.mjs";
|
|
2
3
|
import { clearMyChannelsFromStorage, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, saveHiddenChannelIdsToStorage } from "./utils/channel-storage.mjs";
|
|
3
4
|
import { cn } from "./utils/cn.mjs";
|
|
4
5
|
import { debounceFun, formatVideoDuration, generateDynamicSign, generateUUID, getAtUserElement, getCookie, getCurrentSecondTime, getUserId, hashPassword, isClient, isMobileDevice, numToString, parseResolution, parseTextAtUserIds, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, secondToTime, setCookie, stringToNumber, stripHtmlTags, updateUrlParams } from "./utils/common.mjs";
|
|
5
6
|
import { decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, guessImageContentTypeFromUrl, isEncryptedImageUrl, resolveImageUrl, shouldProbeImageUrl, shouldUseApiResDirectly } from "./utils/decrypt-image-client.mjs";
|
|
6
7
|
import { getOrCreateDeviceId } from "./utils/device-id.mjs";
|
|
8
|
+
import { isValidEmail } from "./utils/email-validator.mjs";
|
|
7
9
|
import { eventBus } from "./utils/event-bus.mjs";
|
|
8
10
|
import { checkFollowStatus, followUser, getAppId, getCurrentUserId, unfollowUser } from "./utils/follow-service.mjs";
|
|
9
11
|
import { getResUrl } from "./utils/get-res-url.mjs";
|
|
@@ -17,8 +19,9 @@ import "./utils/schema/index.mjs";
|
|
|
17
19
|
import { components, loadComponent, rewriteComponent } from "./utils/loaders.mjs";
|
|
18
20
|
import { createInputAndSelectFile, getCoverImage, getImageResolutionFromFile } from "./utils/media.mjs";
|
|
19
21
|
import { PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, getFirstInvalidPasswordChar, getPasswordCharacterTypeCount, getPasswordValidationErrorText, validatePasswordPair } from "./utils/password-validator.mjs";
|
|
22
|
+
import { resolveRequestUserId } from "./utils/request-user-id.mjs";
|
|
20
23
|
import { PresignedUploadInfo, UploadToS3Options, UploadToS3Result, uploadToS3WithPresignedUrl } from "./utils/s3-uploader.mjs";
|
|
21
24
|
import { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToNumberArray } from "./utils/uint8.mjs";
|
|
22
25
|
import { UploadFileResult, encryptBncBuffer, uploadFile } from "./utils/upload-file.mjs";
|
|
23
26
|
import { CompatibleRouter, useRouter } from "./utils/use-compatible-router.mjs";
|
|
24
|
-
export { CompatibleRouter, ComponentPropsSchemaBuilderHelpers, DefineMaterialOption, eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialCategory, MaterialComponentMode, MaterialComponentProps, MaterialMap, OverwriteMaterialOption, PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, PresignedUploadInfo, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, array, base64ToUint8Array, boolean, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, datetime, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineComponentPropsSchema, defineMaterial, disablePageScroll, enablePageScroll, encryptBncBuffer, enumSchema as enum, enumSchema, followUser, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateMaterialMapGroupByCategory, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getFirstInvalidPasswordChar, getImageCompressionQuality, getImageResolutionFromFile, getOrCreateDeviceId, getPasswordCharacterTypeCount, getPasswordValidationErrorText, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, number, object, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, resolveImageUrl, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, shouldProbeImageUrl, shouldUseApiResDirectly, string, stringToNumber, stripHtmlTags, timeRange, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, useRouter, validatePasswordPair, withInspectorMeta };
|
|
27
|
+
export { CompatibleRouter, ComponentPropsSchemaBuilderHelpers, DefineMaterialOption, eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialCategory, MaterialComponentMode, MaterialComponentProps, MaterialMap, OverwriteMaterialOption, PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, PresignedUploadInfo, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, array, base64ToUint8Array, boolean, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, datetime, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineComponentPropsSchema, defineMaterial, disablePageScroll, enablePageScroll, encryptBncBuffer, enumSchema as enum, enumSchema, followUser, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateMaterialMapGroupByCategory, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getFirstInvalidPasswordChar, getImageCompressionQuality, getImageResolutionFromFile, getOrCreateBrowserFingerprint, getOrCreateDeviceId, getPasswordCharacterTypeCount, getPasswordValidationErrorText, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, isValidEmail, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, number, object, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, resolveImageUrl, resolveRequestUserId, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, shouldProbeImageUrl, shouldUseApiResDirectly, string, stringToNumber, stripHtmlTags, timeRange, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, useRouter, validatePasswordPair, withInspectorMeta };
|
package/dist/utils.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{cn as e}from"./utils/cn.mjs";import{
|
|
2
|
+
import{cn as e}from"./utils/cn.mjs";import{debounceFun as t,formatVideoDuration as ee,generateDynamicSign as n,generateUUID as r,getAtUserElement as i,getCookie as a,getCurrentSecondTime as o,getUserId as s,hashPassword as c,isClient as l,isMobileDevice as u,numToString as d,parseResolution as f,parseTextAtUserIds as p,randomString as m,removeCookie as h,replaceAtUserElement as g,replaceAtUserElementHtmlStr as _,secondToTime as v,setCookie as y,stringToNumber as b,stripHtmlTags as x,updateUrlParams as S}from"./utils/common.mjs";import{getOrCreateBrowserFingerprint as C}from"./utils/browser-fingerprint.mjs";import{clearMyChannelsFromStorage as w,loadHiddenChannelIdsFromStorage as T,loadMyChannelsFromStorage as E,saveHiddenChannelIdsToStorage as D}from"./utils/channel-storage.mjs";import O from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as k,decryptImageToUint8Array as A,decryptImageUrl as j,guessImageContentTypeFromUrl as M,isEncryptedImageUrl as N,resolveImageUrl as P,shouldProbeImageUrl as F,shouldUseApiResDirectly as I}from"./utils/decrypt-image-client.mjs";import{getOrCreateDeviceId as L}from"./utils/device-id.mjs";import{isValidEmail as R}from"./utils/email-validator.mjs";import z from"./utils/event-bus.mjs";import{resolveRequestUserId as B}from"./utils/request-user-id.mjs";import V,{HttpClient as H,HttpError as U}from"./utils/http.mjs";import{checkFollowStatus as W,followUser as G,getAppId as K,getCurrentUserId as q,unfollowUser as J}from"./utils/follow-service.mjs";import{disablePageScroll as te,enablePageScroll as Y,normalizeClassName as X,pxToVw as Z}from"./utils/helper.mjs";import{compressImage as Q,defaultImageCompressionMaxSizeMB as ne,defaultImageCompressionQuality as re,getImageCompressionQuality as ie,imageCompressionQualityRules as ae}from"./utils/image-compression.mjs";import{components as oe,loadComponent as se,rewriteComponent as ce}from"./utils/loaders.mjs";import{createInputAndSelectFile as le,getCoverImage as ue,getImageResolutionFromFile as de}from"./utils/media.mjs";import{PASSWORD_ALLOWED_SPECIAL_CHARS as fe,PASSWORD_MAX_LENGTH as pe,PASSWORD_MIN_LENGTH as me,getFirstInvalidPasswordChar as he,getPasswordCharacterTypeCount as ge,getPasswordValidationErrorText as _e,validatePasswordPair as ve}from"./utils/password-validator.mjs";import{uploadToS3WithPresignedUrl as ye}from"./utils/s3-uploader.mjs";import{defineMaterial as be,overwriteMaterial as xe}from"./utils/schema/material.mjs";import{INSPECTOR_META_KEY as Se,array as Ce,boolean as we,datetime as Te,defineComponentPropsSchema as Ee,enumSchema as $,getSchemaDefaultProps as De,number as Oe,object as ke,string as Ae,timeRange as je,withInspectorMeta as Me}from"./utils/schema/schema.mjs";import{generateMaterialMap as Ne,generateMaterialMapGroupByCategory as Pe}from"./utils/schema/utils.mjs";import{base64ToUint8Array as Fe,uint8ArrayToBase64 as Ie,uint8ArrayToNumberArray as Le}from"./utils/uint8.mjs";import{encryptBncBuffer as Re,uploadFile as ze}from"./utils/upload-file.mjs";import{useRouter as Be}from"./utils/use-compatible-router.mjs";export{z as EventBus,H as HttpClient,U as HttpError,Se as INSPECTOR_META_KEY,fe as PASSWORD_ALLOWED_SPECIAL_CHARS,pe as PASSWORD_MAX_LENGTH,me as PASSWORD_MIN_LENGTH,Ce as array,Fe as base64ToUint8Array,we as boolean,W as checkFollowStatus,w as clearMyChannelsFromStorage,e as cn,oe as components,Q as compressImage,le as createInputAndSelectFile,Te as datetime,t as debounceFun,k as decryptImageToArrayBuffer,A as decryptImageToUint8Array,j as decryptImageUrl,ne as defaultImageCompressionMaxSizeMB,re as defaultImageCompressionQuality,Ee as defineComponentPropsSchema,be as defineMaterial,te as disablePageScroll,Y as enablePageScroll,Re as encryptBncBuffer,$ as enum,$ as enumSchema,G as followUser,ee as formatVideoDuration,n as generateDynamicSign,Ne as generateMaterialMap,Pe as generateMaterialMapGroupByCategory,r as generateUUID,K as getAppId,i as getAtUserElement,a as getCookie,ue as getCoverImage,o as getCurrentSecondTime,q as getCurrentUserId,he as getFirstInvalidPasswordChar,ie as getImageCompressionQuality,de as getImageResolutionFromFile,C as getOrCreateBrowserFingerprint,L as getOrCreateDeviceId,ge as getPasswordCharacterTypeCount,_e as getPasswordValidationErrorText,O as getResUrl,De as getSchemaDefaultProps,s as getUserId,M as guessImageContentTypeFromUrl,c as hashPassword,V as httpClient,ae as imageCompressionQualityRules,l as isClient,N as isEncryptedImageUrl,u as isMobileDevice,R as isValidEmail,se as loadComponent,T as loadHiddenChannelIdsFromStorage,E as loadMyChannelsFromStorage,X as normalizeClassName,d as numToString,Oe as number,ke as object,xe as overwriteMaterial,f as parseResolution,p as parseTextAtUserIds,Z as pxToVw,m as randomString,h as removeCookie,g as replaceAtUserElement,_ as replaceAtUserElementHtmlStr,P as resolveImageUrl,B as resolveRequestUserId,ce as rewriteComponent,D as saveHiddenChannelIdsToStorage,v as secondToTime,y as setCookie,F as shouldProbeImageUrl,I as shouldUseApiResDirectly,Ae as string,b as stringToNumber,x as stripHtmlTags,je as timeRange,Ie as uint8ArrayToBase64,Le as uint8ArrayToNumberArray,J as unfollowUser,S as updateUrlParams,ze as uploadFile,ye as uploadToS3WithPresignedUrl,Be as useRouter,ve as validatePasswordPair,Me as withInspectorMeta};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funhub/platform",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.8",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -55,6 +55,10 @@
|
|
|
55
55
|
"types": "./dist/i18n.d.mts",
|
|
56
56
|
"import": "./dist/i18n.mjs"
|
|
57
57
|
},
|
|
58
|
+
"./theme-tokens": {
|
|
59
|
+
"types": "./dist/theme-tokens.d.mts",
|
|
60
|
+
"import": "./dist/theme-tokens.mjs"
|
|
61
|
+
},
|
|
58
62
|
"./config/tailwind": {
|
|
59
63
|
"types": "./config/tailwind/index.d.ts",
|
|
60
64
|
"import": "./config/tailwind/index.mjs",
|
|
@@ -84,6 +88,7 @@
|
|
|
84
88
|
"@aws-sdk/lib-storage": "^3.890.0",
|
|
85
89
|
"@base-ui/react": "^1.0.0",
|
|
86
90
|
"@clack/prompts": "^1.1.0",
|
|
91
|
+
"@fingerprintjs/fingerprintjs": "5.1.0",
|
|
87
92
|
"@ncdai/react-wheel-picker": "^1.1.0",
|
|
88
93
|
"@next/bundle-analyzer": "^16.1.6",
|
|
89
94
|
"browser-image-compression": "^2.0.2",
|
|
@@ -132,7 +137,8 @@
|
|
|
132
137
|
"scripts": {
|
|
133
138
|
"dev:web": "next dev",
|
|
134
139
|
"build:web": "next build",
|
|
135
|
-
"
|
|
140
|
+
"gen:theme-tokens": "node scripts/generate-theme-tokens.mjs",
|
|
141
|
+
"prebuild": "pnpm gen:theme-tokens && pnpm i18n:build",
|
|
136
142
|
"build": "cross-env TSDOWN_ENV=production tsdown",
|
|
137
143
|
"predev": "pnpm i18n:build",
|
|
138
144
|
"dev": "node scripts/dev-with-i18n-watch.mjs",
|
package/theme.css
CHANGED
|
@@ -1,24 +1,137 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
--tab-bar-height: 56px;
|
|
3
|
-
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
|
|
7
|
-
--color-
|
|
8
|
-
--color-
|
|
9
|
-
--color-
|
|
10
|
-
--color-
|
|
11
|
-
--color-
|
|
12
|
-
--color-
|
|
13
|
-
--color-
|
|
14
|
-
--color-
|
|
15
|
-
--color-
|
|
16
|
-
--color-
|
|
17
|
-
--color-
|
|
18
|
-
--color-
|
|
19
|
-
--color-
|
|
20
|
-
|
|
21
|
-
--color-
|
|
3
|
+
--tab-bar-top-gap: 8px;
|
|
4
|
+
--tab-bar-safe-area-bottom: max(env(safe-area-inset-bottom, 0px), 8px);
|
|
5
|
+
--tab-bar-occupied-height: calc(var(--tab-bar-height) + var(--tab-bar-safe-area-bottom));
|
|
6
|
+
/* app-v1 全量语义变量(Figma 定稿节点聚合) */
|
|
7
|
+
--color-brand-primary: #c043e8;
|
|
8
|
+
--color-brand-accent-purple: #9012ff;
|
|
9
|
+
--color-brand-tag-gradient-start: #ca3fe9;
|
|
10
|
+
--color-brand-tag-gradient-end: #9756e3;
|
|
11
|
+
--color-brand-action-gradient-end: #6c43ee;
|
|
12
|
+
--color-brand-rating: #ffc039;
|
|
13
|
+
--color-brand-hot-ranking: #c922ef;
|
|
14
|
+
--color-brand-link: #9054e5;
|
|
15
|
+
--color-text-primary: #ffffff;
|
|
16
|
+
--color-text-secondary: rgba(255, 255, 255, 0.9);
|
|
17
|
+
--color-text-white80: rgba(255, 255, 255, 0.8);
|
|
18
|
+
--color-text-tertiary: rgba(255, 255, 255, 0.6);
|
|
19
|
+
--color-text-quaternary: rgba(255, 255, 255, 0.5);
|
|
20
|
+
--color-text-dimmed: rgba(255, 255, 255, 0.7);
|
|
21
|
+
--color-text-disabled: rgba(255, 255, 255, 0.3);
|
|
22
|
+
--color-text-inactive: #bfbfbf;
|
|
23
|
+
--color-text-muted: #747474;
|
|
24
|
+
--color-surface-tab-bg: #121212;
|
|
25
|
+
--color-surface-card-fallback: #282129;
|
|
26
|
+
--color-surface-chip-bg: #1b1b1b;
|
|
27
|
+
--color-surface-chip-gray20: rgba(217, 217, 217, 0.2);
|
|
28
|
+
--color-surface-white20: rgba(255, 255, 255, 0.2);
|
|
29
|
+
--color-surface-white10: rgba(255, 255, 255, 0.1);
|
|
30
|
+
--color-surface-mask-black40: rgba(0, 0, 0, 0.4);
|
|
31
|
+
--color-surface-mask-black60: rgba(0, 0, 0, 0.6);
|
|
32
|
+
--color-surface-panel-dark: #060315;
|
|
33
|
+
--color-surface-field-bg: rgba(173, 163, 191, 0.1);
|
|
34
|
+
--color-border-search-highlight: rgba(230, 42, 255, 0.9);
|
|
35
|
+
--color-border-panel-glow: rgba(219, 55, 255, 0.4);
|
|
36
|
+
--color-border-danger: #ff1eff;
|
|
37
|
+
/** 验证码输入错误态:边框、格内数字、提示文案 */
|
|
38
|
+
--color-verification-error: #c40000;
|
|
39
|
+
--color-border-required: rgba(255, 0, 0, 0.7);
|
|
40
|
+
--color-neutral-black: #000000;
|
|
41
|
+
--color-neutral-white: #ffffff;
|
|
42
|
+
--color-overlay-mask-start: rgba(8, 2, 17, 0);
|
|
43
|
+
--color-overlay-mask-end70: rgba(8, 2, 17, 0.7);
|
|
44
|
+
--color-overlay-mask-end80: rgba(8, 2, 17, 0.8);
|
|
45
|
+
--color-overlay-top-bar-black30: rgba(0, 0, 0, 0.3);
|
|
46
|
+
--color-overlay-create-top-black50: rgba(0, 0, 0, 0.5);
|
|
47
|
+
--color-overlay-create-mid-purple27: rgba(116, 18, 131, 0.27);
|
|
48
|
+
--color-overlay-create-bottom-purple0: rgba(75, 24, 87, 0);
|
|
49
|
+
--color-overlay-panel-fade-start90: rgba(6, 3, 21, 0.9);
|
|
50
|
+
--color-overlay-panel-fade-end0: rgba(6, 3, 21, 0);
|
|
51
|
+
--gradient-brand-tag: linear-gradient(90deg, #ca3fe9 0%, #9756e3 100%);
|
|
52
|
+
--gradient-action-button: linear-gradient(90deg, #9756e3 0%, #6c43ee 100%);
|
|
53
|
+
--gradient-card-mask-strong: linear-gradient(180deg, rgba(8, 2, 17, 0) 28.624%, rgba(8, 2, 17, 0.8) 77.695%);
|
|
54
|
+
--gradient-card-mask-medium: linear-gradient(180deg, rgba(8, 2, 17, 0) 46.087%, rgba(8, 2, 17, 0.7) 83.152%);
|
|
55
|
+
--gradient-card-mask-light: linear-gradient(180deg, rgba(8, 2, 17, 0) 44.638%, rgba(8, 2, 17, 0.7) 82.699%);
|
|
56
|
+
--gradient-detail-hero-blur: linear-gradient(180deg, rgba(8, 2, 17, 0) 41.303%, rgba(8, 2, 17, 0.7) 61.091%);
|
|
57
|
+
--gradient-search-panel-fade: linear-gradient(180deg, rgba(6, 3, 21, 0.9) 19.905%, rgba(6, 3, 21, 0) 100%);
|
|
58
|
+
--gradient-search-hot-card: linear-gradient(180deg, rgba(151, 86, 227, 0.4) 21.144%, rgba(151, 86, 227, 0) 87.065%);
|
|
59
|
+
--gradient-create-overlay: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(116, 18, 131, 0.27) 28.215%, rgba(75, 24, 87, 0) 100%);
|
|
60
|
+
--font-family-sans: 'PingFang SC';
|
|
61
|
+
--font-family-numeric: 'DIN';
|
|
62
|
+
--font-family-numeric-black: 'DIN_Black';
|
|
63
|
+
--font-sans: var(--font-family-sans);
|
|
64
|
+
--font-mono: var(--font-family-numeric);
|
|
65
|
+
--font-size-xs: 10px;
|
|
66
|
+
--font-size-sm: 12px;
|
|
67
|
+
--font-size-md: 14px;
|
|
68
|
+
--font-size-status: 15px;
|
|
69
|
+
--font-size-base: 16px;
|
|
70
|
+
--font-size-lg: 18px;
|
|
71
|
+
--font-size-xl: 20px;
|
|
72
|
+
--line-height-xs: 14px;
|
|
73
|
+
--line-height-sm: 14px;
|
|
74
|
+
--line-height-tight: 16px;
|
|
75
|
+
--line-height-md: 20px;
|
|
76
|
+
--line-height-status: 22px;
|
|
77
|
+
--line-height-base: 24px;
|
|
78
|
+
--line-height-lg: 24px;
|
|
79
|
+
--font-weight-regular: 400;
|
|
80
|
+
--font-weight-medium: 500;
|
|
81
|
+
--font-weight-semibold: 600;
|
|
82
|
+
--font-weight-bold: 700;
|
|
83
|
+
--radius-sm: 4px;
|
|
84
|
+
--radius-md: 8px;
|
|
85
|
+
--radius-lg: 12px;
|
|
86
|
+
--radius-xl: 16px;
|
|
87
|
+
--radius-sheet: 24px;
|
|
88
|
+
--radius-pill: 100px;
|
|
89
|
+
--effect-backdrop-blur-card-mask: 2px;
|
|
90
|
+
--effect-backdrop-blur-card-mask-lite: 1.5px;
|
|
91
|
+
--effect-backdrop-blur-detail-hero: 4px;
|
|
92
|
+
--effect-backdrop-blur-modal-sheet: 50px;
|
|
93
|
+
--color-cover-text-primary: #ffffff;
|
|
94
|
+
--color-cover-text-secondary: #747474;
|
|
95
|
+
--color-cover-gray-11: #121212;
|
|
96
|
+
--color-cover-gray-6: #d9d9d9;
|
|
97
|
+
--color-cover-light-gray-6: #e0e0e0;
|
|
98
|
+
--color-cover-surface-dark: #1b1b1b;
|
|
99
|
+
--color-cover-gray11: var(--color-cover-gray-11);
|
|
100
|
+
--color-cover-gray6: var(--color-cover-gray-6);
|
|
101
|
+
--color-cover-light-gray6: var(--color-cover-light-gray-6);
|
|
102
|
+
--gradient-cover-overlay: linear-gradient(158.6385deg, #000000 14.614%, rgba(18, 18, 18, 0.1) 50.185%);
|
|
103
|
+
--gradient-cover-cover-overlay: var(--gradient-cover-overlay);
|
|
104
|
+
--font-family-cover-latin: 'Inter';
|
|
105
|
+
--font-family-cover-zh: 'PingFang SC';
|
|
106
|
+
--font-family-cover-numeric: 'Poppins';
|
|
107
|
+
--font-size-cover-16: 16px;
|
|
108
|
+
--font-size-cover-28: 28px;
|
|
109
|
+
--font-size-cover-36: 36px;
|
|
110
|
+
--font-size-cover-48: 48px;
|
|
111
|
+
--font-size-cover-64: 64px;
|
|
112
|
+
--font-size-cover-80: 80px;
|
|
113
|
+
--font-size-cover-110: 110px;
|
|
114
|
+
--font-size-cover-140: 140px;
|
|
115
|
+
|
|
116
|
+
/* 默认是白天模式的颜色(旧变量别名,兼容历史引用) */
|
|
117
|
+
--color-bg1: var(--color-surface-tab-bg);
|
|
118
|
+
--color-bg2: var(--color-surface-chip-bg);
|
|
119
|
+
--color-bg3: var(--color-surface-card-fallback);
|
|
120
|
+
--color-bg4: var(--color-surface-white20);
|
|
121
|
+
--color-text1: var(--color-text-primary);
|
|
122
|
+
--color-text2: var(--color-text-secondary);
|
|
123
|
+
--color-text3: var(--color-text-tertiary);
|
|
124
|
+
--color-text4: var(--color-brand-primary);
|
|
125
|
+
--color-line1: var(--color-surface-chip-gray20);
|
|
126
|
+
--color-line2: var(--color-border-panel-glow);
|
|
127
|
+
--color-theme1: var(--color-brand-accent-purple);
|
|
128
|
+
--color-theme2: var(--gradient-action-button);
|
|
129
|
+
--color-theme3: var(--color-surface-chip-gray20);
|
|
130
|
+
--color-theme4: var(--color-brand-link);
|
|
131
|
+
--color-theme5: var(--color-brand-primary);
|
|
132
|
+
--color-theme6: var(--color-brand-tag-gradient-start);
|
|
133
|
+
/** 叠层色:兼容旧变量,映射到新遮罩层级 */
|
|
134
|
+
--color-overlay: var(--color-overlay-mask-end70);
|
|
22
135
|
|
|
23
136
|
/* shadcn/ui */
|
|
24
137
|
--background: oklch(1 0 0);
|
|
@@ -27,8 +140,8 @@
|
|
|
27
140
|
--card-foreground: oklch(0.145 0 0);
|
|
28
141
|
--popover: oklch(1 0 0);
|
|
29
142
|
--popover-foreground: oklch(0.145 0 0);
|
|
30
|
-
--primary:
|
|
31
|
-
--primary-foreground:
|
|
143
|
+
--primary: var(--color-brand-primary);
|
|
144
|
+
--primary-foreground: #ffffff;
|
|
32
145
|
--secondary: oklch(0.967 0.001 286.375);
|
|
33
146
|
--secondary-foreground: oklch(0.21 0.006 285.885);
|
|
34
147
|
--muted: oklch(0.97 0 0);
|
|
@@ -38,43 +151,43 @@
|
|
|
38
151
|
--destructive: oklch(0.58 0.22 27);
|
|
39
152
|
--border: oklch(0.922 0 0);
|
|
40
153
|
--input: oklch(0.922 0 0);
|
|
41
|
-
--ring:
|
|
42
|
-
--chart-1:
|
|
43
|
-
--chart-2:
|
|
44
|
-
--chart-3:
|
|
45
|
-
--chart-4:
|
|
46
|
-
--chart-5:
|
|
154
|
+
--ring: var(--color-brand-primary);
|
|
155
|
+
--chart-1: #c043e8;
|
|
156
|
+
--chart-2: #9012ff;
|
|
157
|
+
--chart-3: #ffc039;
|
|
158
|
+
--chart-4: #9756e3;
|
|
159
|
+
--chart-5: #6c43ee;
|
|
47
160
|
--radius: 0.625rem;
|
|
48
161
|
--sidebar: oklch(0.985 0 0);
|
|
49
162
|
--sidebar-foreground: oklch(0.145 0 0);
|
|
50
|
-
--sidebar-primary:
|
|
51
|
-
--sidebar-primary-foreground:
|
|
163
|
+
--sidebar-primary: var(--color-brand-primary);
|
|
164
|
+
--sidebar-primary-foreground: #ffffff;
|
|
52
165
|
--sidebar-accent: oklch(0.97 0 0);
|
|
53
166
|
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
54
167
|
--sidebar-border: oklch(0.922 0 0);
|
|
55
|
-
--sidebar-ring:
|
|
168
|
+
--sidebar-ring: var(--color-brand-primary);
|
|
56
169
|
}
|
|
57
170
|
|
|
58
171
|
.dark {
|
|
59
172
|
/* 黑夜模式的颜色 */
|
|
60
|
-
--color-bg1:
|
|
61
|
-
--color-bg2:
|
|
62
|
-
--color-bg3:
|
|
63
|
-
--color-bg4:
|
|
64
|
-
--color-text1:
|
|
65
|
-
--color-text2:
|
|
66
|
-
--color-text3:
|
|
67
|
-
--color-text4:
|
|
68
|
-
--color-line1:
|
|
69
|
-
--color-line2:
|
|
70
|
-
--color-theme1:
|
|
71
|
-
--color-theme2:
|
|
72
|
-
--color-theme3:
|
|
73
|
-
--color-theme4:
|
|
74
|
-
--color-theme5:
|
|
75
|
-
--color-theme6:
|
|
76
|
-
/**
|
|
77
|
-
--color-overlay:
|
|
173
|
+
--color-bg1: var(--color-surface-tab-bg);
|
|
174
|
+
--color-bg2: var(--color-surface-chip-bg);
|
|
175
|
+
--color-bg3: var(--color-surface-card-fallback);
|
|
176
|
+
--color-bg4: var(--color-surface-white20);
|
|
177
|
+
--color-text1: var(--color-text-primary);
|
|
178
|
+
--color-text2: var(--color-text-secondary);
|
|
179
|
+
--color-text3: var(--color-text-tertiary);
|
|
180
|
+
--color-text4: var(--color-brand-primary);
|
|
181
|
+
--color-line1: var(--color-surface-chip-gray20);
|
|
182
|
+
--color-line2: var(--color-border-panel-glow);
|
|
183
|
+
--color-theme1: var(--color-brand-accent-purple);
|
|
184
|
+
--color-theme2: var(--gradient-action-button);
|
|
185
|
+
--color-theme3: var(--color-surface-chip-gray20);
|
|
186
|
+
--color-theme4: var(--color-brand-link);
|
|
187
|
+
--color-theme5: var(--color-brand-primary);
|
|
188
|
+
--color-theme6: var(--color-brand-tag-gradient-start);
|
|
189
|
+
/** 叠层色:兼容旧变量,映射到新遮罩层级 */
|
|
190
|
+
--color-overlay: var(--color-overlay-mask-end70);
|
|
78
191
|
|
|
79
192
|
/* shadcn/ui */
|
|
80
193
|
--background: oklch(0.145 0 0);
|
|
@@ -83,8 +196,8 @@
|
|
|
83
196
|
--card-foreground: oklch(0.985 0 0);
|
|
84
197
|
--popover: oklch(0.205 0 0);
|
|
85
198
|
--popover-foreground: oklch(0.985 0 0);
|
|
86
|
-
--primary:
|
|
87
|
-
--primary-foreground:
|
|
199
|
+
--primary: var(--color-brand-primary);
|
|
200
|
+
--primary-foreground: #ffffff;
|
|
88
201
|
--secondary: oklch(0.274 0.006 286.033);
|
|
89
202
|
--secondary-foreground: oklch(0.985 0 0);
|
|
90
203
|
--muted: oklch(0.269 0 0);
|
|
@@ -94,18 +207,18 @@
|
|
|
94
207
|
--destructive: oklch(0.704 0.191 22.216);
|
|
95
208
|
--border: oklch(1 0 0 / 10%);
|
|
96
209
|
--input: oklch(1 0 0 / 15%);
|
|
97
|
-
--ring:
|
|
98
|
-
--chart-1:
|
|
99
|
-
--chart-2:
|
|
100
|
-
--chart-3:
|
|
101
|
-
--chart-4:
|
|
102
|
-
--chart-5:
|
|
210
|
+
--ring: var(--color-brand-primary);
|
|
211
|
+
--chart-1: #c043e8;
|
|
212
|
+
--chart-2: #9012ff;
|
|
213
|
+
--chart-3: #ffc039;
|
|
214
|
+
--chart-4: #9756e3;
|
|
215
|
+
--chart-5: #6c43ee;
|
|
103
216
|
--sidebar: oklch(0.205 0 0);
|
|
104
217
|
--sidebar-foreground: oklch(0.985 0 0);
|
|
105
|
-
--sidebar-primary:
|
|
106
|
-
--sidebar-primary-foreground:
|
|
218
|
+
--sidebar-primary: var(--color-brand-primary);
|
|
219
|
+
--sidebar-primary-foreground: #ffffff;
|
|
107
220
|
--sidebar-accent: oklch(0.269 0 0);
|
|
108
221
|
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
109
222
|
--sidebar-border: oklch(1 0 0 / 10%);
|
|
110
|
-
--sidebar-ring:
|
|
223
|
+
--sidebar-ring: var(--color-brand-primary);
|
|
111
224
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`g`,{clipPath:`url(#clip0_528_6021)`},e.createElement(`path`,{d:`M11.9969 2.85869e-06C12.4121 -0.000967899 12.7924 0.245368 12.977 0.635041L16.0994 7.22761L23.0665 8.29233C23.4767 8.35509 23.818 8.65614 23.9465 9.0691C24.0749 9.48214 23.9679 9.93589 23.6716 10.2399L18.605 15.4373L19.8088 22.6605C19.8804 23.0905 19.7115 23.5259 19.3741 23.7821C19.0788 24.0063 18.6988 24.0595 18.3621 23.9317L18.2204 23.8658L11.999 20.3904L5.77972 23.8658C5.41164 24.0714 4.96367 24.0386 4.62598 23.7821C4.28835 23.5255 4.12027 23.0897 4.1924 22.6594L5.40366 15.4385L0.328522 10.241C0.0317724 9.93703 -0.0749205 9.48248 0.0536718 9.0691C0.182264 8.65576 0.524003 8.35473 0.934684 8.29233L7.93803 7.22761L11.02 0.639505L11.0967 0.499998C11.2973 0.190743 11.6335 0.000980944 11.9969 2.85869e-06ZM9.64466 8.77558C9.48616 9.11453 9.17773 9.34976 8.82118 9.40392L3.43177 10.222L7.34039 14.2253C7.56574 14.4561 7.68343 14.7761 7.66745 15.1014L7.65253 15.2409L6.72784 20.7442L11.4866 18.088L11.6091 18.0288C11.902 17.9113 12.2319 17.9313 12.5125 18.088L17.2744 20.7464L16.3572 15.2398C16.2954 14.8691 16.4117 14.4898 16.6683 14.2264L20.5716 10.2209L15.2194 9.40392C14.8654 9.34978 14.5594 9.11687 14.4002 8.78116L12.0054 3.72653L9.64466 8.77558Z`,fill:`currentColor`})),e.createElement(`defs`,null,e.createElement(`clipPath`,{id:`clip0_528_6021`},e.createElement(`rect`,{width:24,height:24,fill:`white`}))));export{t as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`g`,{clipPath:`url(#clip0_528_6024)`},e.createElement(`path`,{d:`M11.9969 2.85869e-06C12.4121 -0.000967899 12.7924 0.245368 12.977 0.635041L16.0994 7.22761L23.0665 8.29233C23.4767 8.35509 23.818 8.65614 23.9465 9.06911C24.0749 9.48214 23.9679 9.93589 23.6716 10.2399L18.605 15.4373L19.8088 22.6605C19.8804 23.0905 19.7115 23.5259 19.3741 23.7821C19.0788 24.0063 18.6988 24.0595 18.3621 23.9317L18.2204 23.8658L11.999 20.3904L5.77972 23.8658C5.41164 24.0714 4.96367 24.0386 4.62598 23.7821C4.28835 23.5256 4.12027 23.0897 4.1924 22.6594L5.40366 15.4385L0.328522 10.241C0.0317724 9.93703 -0.0749205 9.48248 0.0536718 9.06911C0.182264 8.65576 0.524003 8.35473 0.934684 8.29233L7.93803 7.22761L11.02 0.639505L11.0967 0.499998C11.2973 0.190743 11.6335 0.000980944 11.9969 2.85869e-06Z`,fill:`#FFD320`})),e.createElement(`defs`,null,e.createElement(`clipPath`,{id:`clip0_528_6024`},e.createElement(`rect`,{width:24,height:24,fill:`white`}))));export{t as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{viewBox:`0 0 14 14`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,...t},e.createElement(`path`,{d:`M6.2998 0C6.6864 0 7 0.313596 7 0.700195C6.99989 1.0867 6.68634 1.40039 6.2998 1.40039H4.90039C2.96739 1.40039 1.40039 2.96739 1.40039 4.90039V9.09961C1.40039 11.0326 2.96739 12.5996 4.90039 12.5996H9.09961C11.0326 12.5996 12.5996 11.0326 12.5996 9.09961V7.7002C12.5996 7.31366 12.9133 7.00011 13.2998 7C13.6864 7 14 7.3136 14 7.7002V9.09961C14 11.8058 11.8058 14 9.09961 14H4.90039C2.1942 14 6.76469e-08 11.8058 0 9.09961V4.90039C0 2.1942 2.1942 0 4.90039 0H6.2998ZM13.3721 0.00292969C13.7248 0.0389736 14 0.337905 14 0.700195V5.59961C14 5.98621 13.6864 6.2998 13.2998 6.2998C12.9133 6.2997 12.5996 5.98614 12.5996 5.59961V2.39062L8.125 6.86523C7.85167 7.13842 7.4081 7.13842 7.13477 6.86523C6.86153 6.59191 6.86156 6.14835 7.13477 5.875L11.6104 1.40039H8.40039C8.01386 1.40039 7.7003 1.0867 7.7002 0.700195C7.7002 0.313596 8.01379 0 8.40039 0H13.2998L13.3721 0.00292969Z`,fill:`currentColor`}));export{t as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{preserveAspectRatio:`none`,width:`1em`,height:`1em`,overflow:`visible`,style:{display:`block`},viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...t},e.createElement(`path`,{id:`Subtract`,d:`M8 0C12.4183 6.44256e-08 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 1.28855e-07 12.4183 0 8C0 3.58172 3.58172 0 8 0ZM6.77148 4.34668C6.54772 4.16153 6.21731 4.17499 6.00879 4.38672C5.80047 4.5985 5.78833 4.93303 5.9707 5.16016L6.00879 5.20508L9.02441 8.2666L6.00879 11.3281C5.78643 11.554 5.78652 11.9206 6.00879 12.1465C6.23121 12.3723 6.59195 12.3722 6.81445 12.1465L10.2334 8.67578C10.4558 8.44989 10.4558 8.08333 10.2334 7.85742L6.81445 4.38672L6.77148 4.34668Z`,fill:`var(--fill-0, #F59E0B)`}));export{t as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 12 12`,width:`1em`,height:`1em`,...t},e.createElement(`path`,{d:`M4.24 11.749a.908.908 0 0 1-1.253 0 .837.837 0 0 1 0-1.212L7.678 6 2.987 1.463l-.06-.065A.836.836 0 0 1 2.986.25.908.908 0 0 1 4.173.192l.067.059 5.32 5.143a.837.837 0 0 1 0 1.212l-5.32 5.143Z`}));export{t as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 36 36`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...t},e.createElement(`path`,{d:`M0 18C0 8.05888 8.05888 0 18 0C27.9411 0 36 8.05888 36 18C36 27.9411 27.9411 36 18 36C8.05888 36 0 27.9411 0 18Z`,fill:`#FFDADA`}),e.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M18 23.4219C24.2999 23.4219 27.3841 26.2639 28.7998 29.1133C26.5534 31.6567 21.9492 33.4637 18 33.4619C14.0508 33.4637 9.59061 31.6566 7.2002 29.1133C8.61593 26.2639 11.7001 23.4219 18 23.4219ZM18 7.2002C21.3956 7.2002 24.2997 10.0654 24.2998 13.5986V15.2002C24.2997 18.7344 21.3956 21.5996 18 21.5996C14.6044 21.5996 11.7003 18.7344 11.7002 15.2002V13.5996C11.7003 10.0654 14.6044 7.2002 18 7.2002Z`,fill:`url(#paint0_linear_481_372)`}),e.createElement(`defs`,null,e.createElement(`linearGradient`,{id:`paint0_linear_481_372`,x1:18,y1:7.2002,x2:18,y2:33.4685,gradientUnits:`userSpaceOnUse`},e.createElement(`stop`,{stopColor:`#FD4C5E`,stopOpacity:.4}),e.createElement(`stop`,{offset:1,stopColor:`#FD4C5E`,stopOpacity:.05}))));export{t as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import*as e from"react";const t=t=>e.createElement(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 40 40`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...t},e.createElement(`path`,{d:`M20 6.66699C22.8099 6.66699 26.7444 6.79839 31.8037 7.06152C34.5425 7.204 36.7579 9.4403 36.9863 12.293C37.2177 15.1823 37.333 17.7275 37.333 19.9277C37.333 22.1551 37.2146 24.7356 36.9775 27.6689C36.7498 30.486 34.5831 32.706 31.8809 32.8906C27.5554 33.186 23.5949 33.333 20 33.333C16.4057 33.333 12.447 33.1858 8.12402 32.8906C5.42266 32.7062 3.25637 30.4877 3.02734 27.6719C2.78722 24.7166 2.667 22.1349 2.66699 19.9277C2.66699 17.7471 2.78416 15.201 3.01855 12.29C3.24816 9.43854 5.4625 7.20403 8.2002 7.06152C13.2572 6.79838 17.1904 6.66699 20 6.66699ZM19.3564 14.6426C18.4178 14.0113 17.1466 14.2604 16.5156 15.1982C16.289 15.5357 16.167 15.9347 16.167 16.3418V23.6719C16.1673 24.8026 17.0843 25.7187 18.2148 25.7188C18.6157 25.7186 19.0092 25.6016 19.3438 25.3809L24.8408 21.7461C25.7254 21.1614 26.0092 20.008 25.5273 19.0889L25.4209 18.9092L25.3008 18.7451C25.1734 18.5886 25.0221 18.4517 24.8545 18.3389L19.3564 14.6426Z`,fill:`url(#paint0_linear_473_1706)`}),e.createElement(`defs`,null,e.createElement(`linearGradient`,{id:`paint0_linear_473_1706`,x1:2.667,y1:8.44469,x2:40.7466,y2:23.8939,gradientUnits:`userSpaceOnUse`},e.createElement(`stop`,{stopColor:`#FD4C5E`}),e.createElement(`stop`,{offset:1,stopColor:`#F05D19`}))));export{t as default};
|