@taskon/widget-react 0.0.1-beta.7 → 0.0.2

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.
@@ -1,151 +1,3 @@
1
- /**
2
- * ConfirmNoticeDialog styles
3
- *
4
- * @description
5
- * Keep only content-specific layout/typography and rely on Dialog
6
- * for container surface, radius and body spacing.
7
- */
8
-
9
- /*
10
- * Responsive base styles
11
- *
12
- * Keep mobile breakpoints and fallback patterns centralized here.
13
- * Components should reuse these mixins instead of duplicating query logic.
14
- */
15
-
16
- /*
17
- * Desktop-up mixin:
18
- * 1) Enable desktop enhancement in wider containers
19
- * 2) Keep viewport media query as fallback
20
- */
21
-
22
- /* ConfirmNotice content root */
23
-
24
- .taskon-confirm-notice {
25
- text-align: center;
26
- }
27
-
28
- /* Status icon */
29
-
30
- .taskon-confirm-notice-icon {
31
- width: 46px;
32
- height: 46px;
33
- display: block;
34
- margin: 0 auto;
35
- }
36
-
37
- /* Title */
38
-
39
- .taskon-confirm-notice-title {
40
- margin: 20px 0 0;
41
- font-weight: 600;
42
- font-size: 22px;
43
- line-height: 28px;
44
- color: var(--taskon-color-text);
45
- white-space: pre-wrap;
46
- }
47
-
48
- /* Description */
49
-
50
- .taskon-confirm-notice-desc {
51
- margin: 10px 0 0;
52
- font-size: 16px;
53
- line-height: 20px;
54
- color: var(--taskon-color-text-secondary);
55
- white-space: pre-wrap;
56
- }
57
-
58
- /* Action container */
59
-
60
- .taskon-confirm-notice-buttons {
61
- margin-top: 20px;
62
- display: flex;
63
- flex-direction: column;
64
- align-items: stretch;
65
- justify-content: center;
66
- gap: 10px;
67
- }
68
-
69
- .taskon-confirm-notice-buttons--col {
70
- flex-wrap: wrap;
71
- }
72
-
73
- /* Base action button style */
74
-
75
- .taskon-confirm-notice-button {
76
- width: 100%;
77
- min-width: 100%;
78
- height: 36px;
79
- padding: 0 16px;
80
- border-radius: 8px;
81
- border: 1px solid transparent;
82
- font-size: 14px;
83
- font-weight: 600;
84
- line-height: 36px;
85
- text-align: center;
86
- cursor: pointer;
87
- transition: all 0.2s ease;
88
- }
89
-
90
- .taskon-confirm-notice-button:disabled {
91
- opacity: 0.5;
92
- cursor: not-allowed;
93
- }
94
-
95
- /* Cancel button */
96
-
97
- .taskon-confirm-notice-button--cancel {
98
- color: var(--taskon-color-text);
99
- background: var(--taskon-color-bg-surface-subtle);
100
- border-color: var(--taskon-color-border);
101
- }
102
-
103
- .taskon-confirm-notice-button--cancel:hover:not(:disabled),
104
- .taskon-confirm-notice-button--cancel:focus-visible:not(:disabled) {
105
- background: var(--taskon-color-bg-surface);
106
- }
107
-
108
- /* Confirm button */
109
-
110
- .taskon-confirm-notice-button--confirm {
111
- color: var(--taskon-color-text-on-primary);
112
- background: var(--taskon-color-primary);
113
- }
114
-
115
- .taskon-confirm-notice-button--confirm:hover:not(:disabled),
116
- .taskon-confirm-notice-button--confirm:focus-visible:not(:disabled) {
117
- background: var(--taskon-color-primary-hover);
118
- }
119
-
120
- /* Desktop 增强 */
121
-
122
- @supports (container-type: inline-size) {
123
- @container (min-width: 751px) {
124
- .taskon-confirm-notice-buttons {
125
- flex-direction: row;
126
- align-items: center;
127
- }
128
-
129
- .taskon-confirm-notice-button {
130
- width: auto;
131
- min-width: 161px;
132
- }
133
- }
134
- }
135
-
136
- @supports not (container-type: inline-size) {
137
- @media (min-width: 751px) {
138
- .taskon-confirm-notice-buttons {
139
- flex-direction: row;
140
- align-items: center;
141
- }
142
-
143
- .taskon-confirm-notice-button {
144
- width: auto;
145
- min-width: 161px;
146
- }
147
- }
148
- }
149
1
  /**
150
2
  * Textarea 通用组件样式
151
3
  * @description 复刻 Vue 版本 BaseTextareaPro.vue 样式
@@ -67,11 +67,12 @@
67
67
  max-width: 500px;
68
68
  max-height: 90vh;
69
69
 
70
- /* 弹层统一使用更深的背景 token(dark 下最接近最深层) */
71
- background-color: var(--taskon-color-bg-canvas);
70
+ /* 弹层使用浮层背景,避免 dark + 深色页面时与遮罩层融为一体 */
71
+ background-color: var(--taskon-color-bg-floating);
72
72
  color: var(--taskon-color-text);
73
+ border: 1px solid var(--taskon-color-border-secondary);
73
74
  border-radius: var(--taskon-border-radius);
74
- box-shadow: 0 25px 50px -12px var(--taskon-color-bg-mask);
75
+ box-shadow: 0 28px 56px -20px var(--taskon-color-bg-mask);
75
76
 
76
77
  /* 布局 */
77
78
  display: flex;
@@ -1,3 +1,151 @@
1
+ /**
2
+ * ConfirmNoticeDialog styles
3
+ *
4
+ * @description
5
+ * Keep only content-specific layout/typography and rely on Dialog
6
+ * for container surface, radius and body spacing.
7
+ */
8
+
9
+ /*
10
+ * Responsive base styles
11
+ *
12
+ * Keep mobile breakpoints and fallback patterns centralized here.
13
+ * Components should reuse these mixins instead of duplicating query logic.
14
+ */
15
+
16
+ /*
17
+ * Desktop-up mixin:
18
+ * 1) Enable desktop enhancement in wider containers
19
+ * 2) Keep viewport media query as fallback
20
+ */
21
+
22
+ /* ConfirmNotice content root */
23
+
24
+ .taskon-confirm-notice {
25
+ text-align: center;
26
+ }
27
+
28
+ /* Status icon */
29
+
30
+ .taskon-confirm-notice-icon {
31
+ width: 46px;
32
+ height: 46px;
33
+ display: block;
34
+ margin: 0 auto;
35
+ }
36
+
37
+ /* Title */
38
+
39
+ .taskon-confirm-notice-title {
40
+ margin: 20px 0 0;
41
+ font-weight: 600;
42
+ font-size: 22px;
43
+ line-height: 28px;
44
+ color: var(--taskon-color-text);
45
+ white-space: pre-wrap;
46
+ }
47
+
48
+ /* Description */
49
+
50
+ .taskon-confirm-notice-desc {
51
+ margin: 10px 0 0;
52
+ font-size: 16px;
53
+ line-height: 20px;
54
+ color: var(--taskon-color-text-secondary);
55
+ white-space: pre-wrap;
56
+ }
57
+
58
+ /* Action container */
59
+
60
+ .taskon-confirm-notice-buttons {
61
+ margin-top: 20px;
62
+ display: flex;
63
+ flex-direction: column;
64
+ align-items: stretch;
65
+ justify-content: center;
66
+ gap: 10px;
67
+ }
68
+
69
+ .taskon-confirm-notice-buttons--col {
70
+ flex-wrap: wrap;
71
+ }
72
+
73
+ /* Base action button style */
74
+
75
+ .taskon-confirm-notice-button {
76
+ width: 100%;
77
+ min-width: 100%;
78
+ height: 36px;
79
+ padding: 0 16px;
80
+ border-radius: 8px;
81
+ border: 1px solid transparent;
82
+ font-size: 14px;
83
+ font-weight: 600;
84
+ line-height: 36px;
85
+ text-align: center;
86
+ cursor: pointer;
87
+ transition: all 0.2s ease;
88
+ }
89
+
90
+ .taskon-confirm-notice-button:disabled {
91
+ opacity: 0.5;
92
+ cursor: not-allowed;
93
+ }
94
+
95
+ /* Cancel button */
96
+
97
+ .taskon-confirm-notice-button--cancel {
98
+ color: var(--taskon-color-text);
99
+ background: var(--taskon-color-bg-surface-subtle);
100
+ border-color: var(--taskon-color-border);
101
+ }
102
+
103
+ .taskon-confirm-notice-button--cancel:hover:not(:disabled),
104
+ .taskon-confirm-notice-button--cancel:focus-visible:not(:disabled) {
105
+ background: var(--taskon-color-bg-surface);
106
+ }
107
+
108
+ /* Confirm button */
109
+
110
+ .taskon-confirm-notice-button--confirm {
111
+ color: var(--taskon-color-text-on-primary);
112
+ background: var(--taskon-color-primary);
113
+ }
114
+
115
+ .taskon-confirm-notice-button--confirm:hover:not(:disabled),
116
+ .taskon-confirm-notice-button--confirm:focus-visible:not(:disabled) {
117
+ background: var(--taskon-color-primary-hover);
118
+ }
119
+
120
+ /* Desktop 增强 */
121
+
122
+ @supports (container-type: inline-size) {
123
+ @container (min-width: 751px) {
124
+ .taskon-confirm-notice-buttons {
125
+ flex-direction: row;
126
+ align-items: center;
127
+ }
128
+
129
+ .taskon-confirm-notice-button {
130
+ width: auto;
131
+ min-width: 161px;
132
+ }
133
+ }
134
+ }
135
+
136
+ @supports not (container-type: inline-size) {
137
+ @media (min-width: 751px) {
138
+ .taskon-confirm-notice-buttons {
139
+ flex-direction: row;
140
+ align-items: center;
141
+ }
142
+
143
+ .taskon-confirm-notice-button {
144
+ width: auto;
145
+ min-width: 161px;
146
+ }
147
+ }
148
+ }
1
149
  /**
2
150
  * Input 通用组件样式
3
151
  * @description 复刻 Vue 版本 BaseInputPro.vue 样式
@@ -2267,6 +2415,174 @@
2267
2415
  margin-top: 6.4vw;
2268
2416
  }
2269
2417
  }
2418
+ /*
2419
+ * Responsive base styles
2420
+ *
2421
+ * Keep mobile breakpoints and fallback patterns centralized here.
2422
+ * Components should reuse these mixins instead of duplicating query logic.
2423
+ */
2424
+
2425
+ /*
2426
+ * Desktop-up mixin:
2427
+ * 1) Enable desktop enhancement in wider containers
2428
+ * 2) Keep viewport media query as fallback
2429
+ */
2430
+
2431
+ .taskon-withdraw-notice__tokens {
2432
+ margin-top: 14px;
2433
+ display: flex;
2434
+ flex-direction: column;
2435
+ gap: 8px;
2436
+ text-align: left;
2437
+ }
2438
+
2439
+ .taskon-withdraw-notice__token {
2440
+ display: flex;
2441
+ align-items: center;
2442
+ justify-content: space-between;
2443
+ padding: 10px 12px;
2444
+ background: var(--taskon-color-bg-surface-subtle);
2445
+ border: 1px solid var(--taskon-color-border);
2446
+ border-radius: var(--taskon-border-radius-sm);
2447
+ }
2448
+
2449
+ .taskon-withdraw-notice__token-info {
2450
+ display: flex;
2451
+ align-items: center;
2452
+ gap: 10px;
2453
+ min-width: 0;
2454
+ }
2455
+
2456
+ .taskon-withdraw-notice__token-icon {
2457
+ width: 28px;
2458
+ height: 28px;
2459
+ border-radius: 50%;
2460
+ object-fit: cover;
2461
+ flex-shrink: 0;
2462
+ }
2463
+
2464
+ .taskon-withdraw-notice__token-details {
2465
+ display: flex;
2466
+ flex-direction: column;
2467
+ min-width: 0;
2468
+ }
2469
+
2470
+ .taskon-withdraw-notice__token-symbol {
2471
+ font-size: var(--taskon-font-size);
2472
+ font-weight: 600;
2473
+ color: var(--taskon-color-text);
2474
+ line-height: 1.2;
2475
+ }
2476
+
2477
+ .taskon-withdraw-notice__token-chain {
2478
+ font-size: var(--taskon-font-size-sm);
2479
+ color: var(--taskon-color-text-secondary);
2480
+ line-height: 1.2;
2481
+ }
2482
+
2483
+ .taskon-withdraw-notice__token-amount {
2484
+ font-size: var(--taskon-font-size);
2485
+ font-weight: 600;
2486
+ color: var(--taskon-color-text);
2487
+ margin-left: 8px;
2488
+ }
2489
+
2490
+ .taskon-withdraw-notice__error {
2491
+ margin-top: 12px;
2492
+ padding: 10px 12px;
2493
+ font-size: var(--taskon-font-size-sm);
2494
+ color: var(--taskon-color-error);
2495
+ background: var(--taskon-color-error-bg);
2496
+ border-radius: var(--taskon-border-radius-sm);
2497
+ word-break: break-word;
2498
+ overflow-wrap: anywhere;
2499
+ }
2500
+
2501
+ .taskon-withdraw-notice__loading {
2502
+ margin-top: 14px;
2503
+ display: flex;
2504
+ justify-content: center;
2505
+ }
2506
+
2507
+ .taskon-withdraw-notice__spinner {
2508
+ width: 36px;
2509
+ height: 36px;
2510
+ border-radius: 50%;
2511
+ border: 3px solid var(--taskon-color-border);
2512
+ border-top-color: var(--taskon-color-primary);
2513
+ animation: taskon-withdraw-notice-spin 0.8s linear infinite;
2514
+ }
2515
+
2516
+ .taskon-withdraw-notice__tx-hash {
2517
+ margin: 12px 0 0;
2518
+ font-size: var(--taskon-font-size-sm);
2519
+ color: var(--taskon-color-text-secondary);
2520
+ word-break: break-all;
2521
+ }
2522
+
2523
+ .taskon-withdraw-notice__actions {
2524
+ display: flex;
2525
+ align-items: center;
2526
+ gap: 10px;
2527
+ width: 100%;
2528
+ }
2529
+
2530
+ .taskon-withdraw-notice__action {
2531
+ flex: 1;
2532
+ width: auto;
2533
+ min-width: 0;
2534
+ }
2535
+
2536
+ .taskon-withdraw-notice--cancel .taskon-confirm-notice-buttons {
2537
+ flex-direction: column;
2538
+ align-items: stretch;
2539
+ }
2540
+
2541
+ .taskon-withdraw-notice--cancel .taskon-confirm-notice-button {
2542
+ width: 100%;
2543
+ min-width: 0;
2544
+ }
2545
+
2546
+ @keyframes taskon-withdraw-notice-spin {
2547
+ from {
2548
+ transform: rotate(0deg);
2549
+ }
2550
+ to {
2551
+ transform: rotate(360deg);
2552
+ }
2553
+ }
2554
+
2555
+ @media (max-width: 750px) {
2556
+ .taskon-withdraw-notice__token {
2557
+ padding: 8px 10px;
2558
+ }
2559
+
2560
+ .taskon-withdraw-notice__token-symbol,
2561
+ .taskon-withdraw-notice__token-amount {
2562
+ font-size: var(--taskon-font-size-sm);
2563
+ }
2564
+
2565
+ .taskon-withdraw-notice__actions {
2566
+ flex-direction: column;
2567
+ align-items: stretch;
2568
+ }
2569
+
2570
+ .taskon-withdraw-notice__action {
2571
+ width: 100%;
2572
+ }
2573
+ }
2574
+
2575
+ @media (min-width: 751px) {
2576
+ .taskon-withdraw-notice--cancel .taskon-confirm-notice-buttons {
2577
+ flex-direction: row;
2578
+ align-items: center;
2579
+ }
2580
+
2581
+ .taskon-withdraw-notice--cancel .taskon-confirm-notice-button {
2582
+ width: auto;
2583
+ min-width: 161px;
2584
+ }
2585
+ }
2270
2586
  /**
2271
2587
  * UserCenter Widget 样式
2272
2588
  *
@@ -4,8 +4,8 @@ import { isUnauthorizedError, TaskReviewResult, formatLongNumber, EligibilityTyp
4
4
  import { c as useTranslation, e as createLocaleLoader, w as TaskOnContext, h as useTaskOnContext, E as useTaskOnPortalContainer, D as Dialog } from "./ThemeProvider-CulHkqqY.js";
5
5
  import { u as useResolvedWidgetConfig, W as WidgetShell } from "./WidgetShell-8xn-Jivw.js";
6
6
  import { c as useToast } from "./useToast-BGJhd3BX.js";
7
- import { u as useBindWallet, T as TitleExpress, C as CardDescExpress, a as useNftClaimFlow, R as RewardModuleDialog, B as BlindBoxDialog, b as TaskItem, E as EligibilityInfo, c as Textarea } from "./EligibilityInfo-Cf6hx9-a.js";
8
- import { a as useBindSocialAccount, k as useChainMap, p as TipPopover, I as Input } from "./UserCenterWidget-STq8kpV4.js";
7
+ import { u as useBindWallet, T as TitleExpress, C as CardDescExpress, a as useNftClaimFlow, R as RewardModuleDialog, B as BlindBoxDialog, b as TaskItem, E as EligibilityInfo, c as Textarea } from "./EligibilityInfo-CKTl_cdU.js";
8
+ import { a as useBindSocialAccount, k as useChainMap, p as TipPopover, I as Input } from "./UserCenterWidget-SE5hqpnZ.js";
9
9
  import { u as useIsMobile } from "./useIsMobile-D6Ybur-6.js";
10
10
  import { createPortal } from "react-dom";
11
11
  import '../CommunityTaskList.css';function CardSelector({
@@ -1,8 +1,8 @@
1
1
  import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
2
  import React__default, { isValidElement, cloneElement, Fragment as Fragment$1, useContext, useState, useRef, useMemo, useCallback, forwardRef, useEffect, useImperativeHandle } from "react";
3
3
  import { createUserApi, ChainType, parseTitleExpress, getTxExplorerUrl, RewardType, UserIdentityType, SnsType, createQuestApi, isUnauthorizedError, ErrorCode, ApiError, createCommonApi, powIcon, contractInteractiveIcon, getSwapDexTitleExpress, EligibilityTemplateId, UserEligibleStatus } from "@taskon/core";
4
- import { R as Root2, h as Trigger, i as Portal, C as Content2, j as Arrow2, k as useChainMap, l as useNftClaim, m as ClaimNftDialog, n as enMessages$2, o as PendingTxDialog, p as TipPopover, a as useBindSocialAccount, u as useUserCenterLocale, c as useTokenAssets, d as useRewardDetails, e as usePointsHistory, L as LoadingState, T as TokenRewardContent, g as PointsList, E as EmptyState, N as NftRewardContent, W as WithdrawForm } from "./UserCenterWidget-STq8kpV4.js";
5
- import { w as TaskOnContext, D as Dialog, E as useTaskOnPortalContainer, c as useTranslation, e as createLocaleLoader, u as useTaskOnAuth } from "./ThemeProvider-CulHkqqY.js";
4
+ import { R as Root2, h as Trigger, i as Portal, C as Content2, j as Arrow2, k as useChainMap, l as useNftClaim, m as ClaimNftDialog, n as enMessages$2, o as PendingTxDialog, p as TipPopover, a as useBindSocialAccount, q as ConfirmNoticeDialog, u as useUserCenterLocale, c as useTokenAssets, d as useRewardDetails, e as usePointsHistory, L as LoadingState, T as TokenRewardContent, g as PointsList, E as EmptyState, N as NftRewardContent, W as WithdrawForm } from "./UserCenterWidget-SE5hqpnZ.js";
5
+ import { w as TaskOnContext, E as useTaskOnPortalContainer, c as useTranslation, e as createLocaleLoader, u as useTaskOnAuth, D as Dialog } from "./ThemeProvider-CulHkqqY.js";
6
6
  import { u as useWallet, c as useToast } from "./useToast-BGJhd3BX.js";
7
7
  import '../EligibilityInfo.css';const SLOT_TOKEN_PREFIX = "__TASKON_I18NT_SLOT_";
8
8
  const SLOT_TOKEN_SUFFIX = "__";
@@ -238,136 +238,6 @@ function useBindWallet({
238
238
  hasAdapter
239
239
  };
240
240
  }
241
- const successIconUrl = new URL("data:image/svg+xml,%3csvg%20width='46'%20height='46'%20viewBox='0%200%2046%2046'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='23'%20cy='23'%20r='23'%20fill='%2331FF90'/%3e%3cpath%20d='M16.4281%2022.8899L20.6446%2027.1063L29.6798%2018.0711'%20stroke='black'%20stroke-width='5'%20stroke-linecap='square'%20stroke-linejoin='round'/%3e%3c/svg%3e", import.meta.url).href;
242
- const warnIconUrl = new URL("data:image/svg+xml,%3csvg%20width='46'%20height='46'%20viewBox='0%200%2046%2046'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M22.9783%200.0225143C10.2876%200.0225143%200%2010.3101%200%2023.0006C0%2035.6903%2010.2876%2045.9776%2022.9783%2045.9776C35.6682%2045.9776%2045.9556%2035.6903%2045.9556%2023.0006C45.9558%2010.3101%2035.6682%200.0225143%2022.9783%200.0225143ZM21.797%209.85031C21.797%209.01328%2022.4783%208.33197%2023.3154%208.33197C24.1524%208.33197%2024.8337%209.01328%2024.8337%209.85031V11.729C24.8337%2012.5662%2024.1524%2013.2475%2023.3154%2013.2475C22.4783%2013.2475%2021.797%2012.5662%2021.797%2011.7292V9.85031ZM12.0443%2023.1095H10.1657C9.32842%2023.1095%208.64717%2022.4282%208.64717%2021.5912C8.64717%2020.7541%209.32842%2020.0729%2010.1657%2020.0729H12.0443C12.8814%2020.0729%2013.5627%2020.7541%2013.5627%2021.5912C13.5627%2022.4282%2012.8819%2023.1095%2012.0443%2023.1095ZM12.6546%2014.9563C12.368%2014.6697%2012.2098%2014.2882%2012.2098%2013.8823C12.2098%2013.477%2012.3678%2013.0957%2012.6546%2012.8086C12.9411%2012.522%2013.3223%2012.3638%2013.7282%2012.3638C14.134%2012.3638%2014.515%2012.5216%2014.8021%2012.8086L16.1305%2014.137C16.4173%2014.4241%2016.5753%2014.8054%2016.5753%2015.2107C16.5753%2015.6165%2016.4171%2015.9976%2016.1305%2016.2847C15.843%2016.5715%2015.4617%2016.7295%2015.0565%2016.7295C14.6511%2016.7295%2014.2698%2016.5715%2013.9828%2016.2847L12.6546%2014.9563ZM24.2545%2039.3233H22.3764C21.5389%2039.3233%2020.8574%2038.642%2020.8574%2037.8045C20.8574%2036.9674%2021.5389%2036.2861%2022.3764%2036.2861H24.2545C25.0916%2036.2861%2025.7731%2036.9674%2025.7731%2037.8045C25.7732%2038.6421%2025.0916%2039.3233%2024.2545%2039.3233ZM26.1334%2035.8432H20.4976C19.6603%2035.8432%2018.9792%2035.1622%2018.9792%2034.3253C18.9792%2033.4875%2019.6603%2032.8063%2020.4976%2032.8063H26.133C26.9701%2032.8063%2027.6513%2033.4878%2027.6513%2034.3253C27.6518%2035.1624%2026.9705%2035.8432%2026.1334%2035.8432ZM23.3154%2032.033C18.335%2032.033%2014.2826%2027.9809%2014.2826%2023C14.2826%2018.0196%2018.3345%2013.9671%2023.3154%2013.9671C28.2958%2013.9671%2032.3478%2018.0191%2032.3478%2023C32.3478%2027.9809%2028.2958%2032.033%2023.3154%2032.033ZM31.574%2016.7295C31.1682%2016.7295%2030.7867%2016.5713%2030.5%2016.2843C29.9086%2015.6924%2029.9086%2014.7293%2030.5%2014.1374L31.8288%2012.8086C32.1155%2012.522%2032.4972%2012.364%2032.9026%2012.364C33.3082%2012.364%2033.6895%2012.522%2033.9762%2012.8084C34.568%2013.4009%2034.5676%2014.364%2033.9762%2014.9559L32.6478%2016.2843C32.3613%2016.5715%2031.98%2016.7295%2031.574%2016.7295ZM36.4652%2023.1095H34.5862C33.7491%2023.1095%2033.0678%2022.4282%2033.0678%2021.5912C33.0678%2020.7541%2033.7491%2020.0729%2034.5862%2020.0729H36.4652C37.3025%2020.0729%2037.9835%2020.7541%2037.9835%2021.5912C37.9836%2022.4282%2037.3025%2023.1095%2036.4652%2023.1095Z'%20fill='%23F89D35'/%3e%3c/svg%3e", import.meta.url).href;
243
- function getNoticeIcon(type) {
244
- if (type === "success") {
245
- return successIconUrl;
246
- }
247
- if (type === "warn") {
248
- return warnIconUrl;
249
- }
250
- return null;
251
- }
252
- function ConfirmNoticeDialog({
253
- open: open2,
254
- onOpenChange,
255
- type = "default",
256
- title,
257
- desc,
258
- col = false,
259
- cancelButton,
260
- confirmButton,
261
- onCancel,
262
- onConfirm,
263
- onClose,
264
- closeOnCancel = true,
265
- closeOnConfirm = true,
266
- cancelDisabled = false,
267
- confirmDisabled = false,
268
- showCloseButton = false,
269
- closeOnOverlayClick = true,
270
- closeOnEscapeKey = true,
271
- maxWidth = 470,
272
- className,
273
- contentClassName,
274
- children,
275
- actions,
276
- footer,
277
- accessibilityTitle,
278
- accessibilityDescription
279
- }) {
280
- const noticeIcon = getNoticeIcon(type);
281
- const shouldRenderDefaultActions = !actions && Boolean(cancelButton || confirmButton);
282
- const closeDialog = React__default.useCallback(() => {
283
- onOpenChange(false);
284
- onClose == null ? void 0 : onClose();
285
- }, [onOpenChange, onClose]);
286
- const handleOpenChange = React__default.useCallback(
287
- (nextOpen) => {
288
- onOpenChange(nextOpen);
289
- if (!nextOpen) {
290
- onClose == null ? void 0 : onClose();
291
- }
292
- },
293
- [onOpenChange, onClose]
294
- );
295
- const handleCancel = React__default.useCallback(() => {
296
- onCancel == null ? void 0 : onCancel();
297
- if (closeOnCancel) {
298
- closeDialog();
299
- }
300
- }, [onCancel, closeOnCancel, closeDialog]);
301
- const handleConfirm = React__default.useCallback(() => {
302
- onConfirm == null ? void 0 : onConfirm();
303
- if (closeOnConfirm) {
304
- closeDialog();
305
- }
306
- }, [onConfirm, closeOnConfirm, closeDialog]);
307
- const ariaTitle = accessibilityTitle ?? (typeof title === "string" ? title : "Confirm notice");
308
- return /* @__PURE__ */ jsx(
309
- Dialog,
310
- {
311
- open: open2,
312
- onOpenChange: handleOpenChange,
313
- title: ariaTitle,
314
- description: accessibilityDescription,
315
- showCloseButton,
316
- closeOnOverlayClick,
317
- closeOnEscapeKey,
318
- maxWidth,
319
- contentClassName,
320
- children: /* @__PURE__ */ jsxs(
321
- "div",
322
- {
323
- className: `taskon-confirm-notice taskon-confirm-notice--${type} ${className || ""}`.trim(),
324
- children: [
325
- noticeIcon && /* @__PURE__ */ jsx(
326
- "img",
327
- {
328
- className: "taskon-confirm-notice-icon",
329
- src: noticeIcon,
330
- alt: ""
331
- }
332
- ),
333
- title && /* @__PURE__ */ jsx("h3", { className: "taskon-confirm-notice-title", children: title }),
334
- desc && /* @__PURE__ */ jsx("p", { className: "taskon-confirm-notice-desc", children: desc }),
335
- children,
336
- (actions || shouldRenderDefaultActions) && /* @__PURE__ */ jsx(
337
- "div",
338
- {
339
- className: `taskon-confirm-notice-buttons ${col ? "taskon-confirm-notice-buttons--col" : ""}`.trim(),
340
- children: actions || /* @__PURE__ */ jsxs(Fragment, { children: [
341
- cancelButton && /* @__PURE__ */ jsx(
342
- "button",
343
- {
344
- type: "button",
345
- className: "taskon-confirm-notice-button taskon-confirm-notice-button--cancel",
346
- onClick: handleCancel,
347
- disabled: cancelDisabled,
348
- children: cancelButton
349
- }
350
- ),
351
- confirmButton && /* @__PURE__ */ jsx(
352
- "button",
353
- {
354
- type: "button",
355
- className: "taskon-confirm-notice-button taskon-confirm-notice-button--confirm",
356
- onClick: handleConfirm,
357
- disabled: confirmDisabled,
358
- children: confirmButton
359
- }
360
- )
361
- ] })
362
- }
363
- ),
364
- footer
365
- ]
366
- }
367
- )
368
- }
369
- );
370
- }
371
241
  const Textarea = forwardRef(
372
242
  function Textarea2({
373
243
  value: value2,
@@ -23662,7 +23532,6 @@ export {
23662
23532
  useQuestLocale as e,
23663
23533
  EligibilityList as f,
23664
23534
  getDefaultExportFromCjs as g,
23665
- ConfirmNoticeDialog as h,
23666
23535
  sanitizeHtml as s,
23667
23536
  useBindWallet as u
23668
23537
  };
@@ -1,10 +1,10 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useMemo, useRef } from "react";
3
3
  import { DEFAULT_PAGE_BUILDER_CONFIG, createPageBuilderApi, parsePageBuilderConfig, SectionLayoutType, WidgetTypeEnum, SECTION_LAYOUT_RATIOS } from "@taskon/core";
4
- import { Q as QuestWidget } from "./Quest-ySZlYd4u.js";
5
- import { C as CommunityTaskList } from "./CommunityTaskList-D0uVD8wD.js";
4
+ import { Q as QuestWidget } from "./Quest-Dqx4OCat.js";
5
+ import { C as CommunityTaskList } from "./CommunityTaskList-2nFy6l6m.js";
6
6
  import { L as LeaderboardWidget } from "./LeaderboardWidget-DyoiiNS6.js";
7
- import { U as UserCenterWidget } from "./UserCenterWidget-BJsc_GSZ.js";
7
+ import { U as UserCenterWidget } from "./UserCenterWidget-XL6LZRZM.js";
8
8
  import { h as useTaskOnContext } from "./ThemeProvider-CulHkqqY.js";
9
9
  import '../PageBuilder.css';function usePageBuilderConfig(pageId, localConfig) {
10
10
  const { client } = useTaskOnContext();
@@ -2,10 +2,10 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import React__default, { useState, useMemo, useCallback, useEffect, useRef } from "react";
3
3
  import { RewardType, UserEligibleStatus, EligibilityTemplateId, SnsType, ChainType, QuestAutomaticallyWinnerDrawType, QuestWinnerDrawType, QuestWinnerRangeType, createQuestApi, QuestRewardsDistributeType, QuestRewardType, createLeaderboardApi, MediaType, RewardDistributedByType, ApiError, ErrorCode, CampaignType } from "@taskon/core";
4
4
  import { D as Dialog, E as useTaskOnPortalContainer, h as useTaskOnContext } from "./ThemeProvider-CulHkqqY.js";
5
- import { d as useTaskWidgetLocale, b as TaskItem, e as useQuestLocale, I as I18nT, f as EligibilityList, g as getDefaultExportFromCjs, s as sanitizeHtml, R as RewardModuleDialog, h as ConfirmNoticeDialog, u as useBindWallet, a as useNftClaimFlow, E as EligibilityInfo, B as BlindBoxDialog } from "./EligibilityInfo-Cf6hx9-a.js";
5
+ import { d as useTaskWidgetLocale, b as TaskItem, e as useQuestLocale, I as I18nT, f as EligibilityList, g as getDefaultExportFromCjs, s as sanitizeHtml, R as RewardModuleDialog, u as useBindWallet, a as useNftClaimFlow, E as EligibilityInfo, B as BlindBoxDialog } from "./EligibilityInfo-CKTl_cdU.js";
6
6
  import { B as Button, T as Table, P as Pagination, u as useResolvedWidgetConfig, W as WidgetShell } from "./WidgetShell-8xn-Jivw.js";
7
7
  import { c as useToast } from "./useToast-BGJhd3BX.js";
8
- import { R as Root2, h as Trigger, i as Portal, C as Content2, q as InfoIcon, j as Arrow2, p as TipPopover, a as useBindSocialAccount } from "./UserCenterWidget-STq8kpV4.js";
8
+ import { R as Root2, h as Trigger, i as Portal, C as Content2, r as InfoIcon, j as Arrow2, p as TipPopover, q as ConfirmNoticeDialog, a as useBindSocialAccount } from "./UserCenterWidget-SE5hqpnZ.js";
9
9
  import '../Quest.css';function ButtonTabs({
10
10
  items,
11
11
  activeKey,