@aurora-is-near/intents-swap-widget 3.14.2 → 3.15.0
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/{config-r-k8Mo4x.js → config-DWuCYXia.js} +7 -7
- package/dist/{config-r-k8Mo4x.js.map → config-DWuCYXia.js.map} +1 -1
- package/dist/config.js +1 -1
- package/dist/errors.js +1 -1
- package/dist/ext/alchemy/index.js +1 -1
- package/dist/ext/index.js +1 -1
- package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
- package/dist/features/BalanceRpcLoader/index.js +1 -1
- package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
- package/dist/features/ChainsDropdown/AllNetworksIcon.js +1 -1
- package/dist/features/ChainsDropdown/AllNetworksIcon.js.map +1 -1
- package/dist/features/ChainsDropdown/index.js +1 -1
- package/dist/features/DepositMethodSwitcher.js +1 -1
- package/dist/features/ErrorBoundary.js +1 -1
- package/dist/features/ExternalDeposit.js +1 -1
- package/dist/features/SendAddress/index.js +1 -1
- package/dist/features/SendAddress/useNotification.js +1 -1
- package/dist/features/SubmitButton/index.js +1 -1
- package/dist/features/SuccessScreen/CheckIcon.js +1 -1
- package/dist/features/SuccessScreen/CheckIcon.js.map +1 -1
- package/dist/features/SuccessScreen/index.js +1 -1
- package/dist/features/SwapDirectionSwitcher.js +1 -1
- package/dist/features/SwapQuote/SwapQuote.js +1 -1
- package/dist/features/SwapQuote/index.js +1 -1
- package/dist/features/TokenInput/TokenInput.js +1 -1
- package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
- package/dist/features/TokenInput/TokenInputSource.js +1 -1
- package/dist/features/TokenInput/TokenInputTarget.js +1 -1
- package/dist/features/TokenInput/WalletBalance.js +1 -1
- package/dist/features/TokenInput/hooks/index.js +1 -1
- package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
- package/dist/features/TokenInput/index.js +1 -1
- package/dist/features/TokensList/TokenItem.js +1 -1
- package/dist/features/TokensList/TokensList.js +1 -1
- package/dist/features/TokensList/index.js +1 -1
- package/dist/features/TokensModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/index.js +1 -1
- package/dist/features/index.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useAllTokens.js +1 -1
- package/dist/hooks/useChains.js +1 -1
- package/dist/hooks/useCompatibilityCheck.js +1 -1
- package/dist/hooks/useDefaultToken.js +1 -1
- package/dist/hooks/useExternalDepositStatus/index.js +1 -1
- package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
- package/dist/hooks/useIntentsBalance.js +1 -1
- package/dist/hooks/useIsCompatibilityCheckRequired.js +1 -1
- package/dist/hooks/useMakeDepositAddress.js +1 -1
- package/dist/hooks/useMakeIntentsTransfer.js +1 -1
- package/dist/hooks/useMakeNEARFtTransferCall.js +1 -1
- package/dist/hooks/useMakeQuote.js +1 -1
- package/dist/hooks/useMakeQuoteTransfer.js +1 -1
- package/dist/hooks/useMakeTransfer.js +1 -1
- package/dist/hooks/useMergedBalance.js +1 -1
- package/dist/hooks/useSwitchChain.js +1 -1
- package/dist/hooks/useTheme.js +1 -1
- package/dist/hooks/useTokenInputPair.js +1 -1
- package/dist/hooks/useTokens.js +1 -1
- package/dist/hooks/useTokensFiltered.js +1 -1
- package/dist/hooks/useTokensIntentsUnique.js +1 -1
- package/dist/index.js +1 -1
- package/dist/machine/effects/index.js +1 -1
- package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
- package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
- package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
- package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
- package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
- package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
- package/dist/machine/effects/useWalletConnEffect.js +1 -1
- package/dist/machine/events/index.js +1 -1
- package/dist/machine/events/tokenSelect.js +1 -1
- package/dist/machine/events/validateInputAndMoveTo.js +1 -1
- package/dist/machine/events/validateInputs.js +1 -1
- package/dist/machine/index.js +1 -1
- package/dist/machine/snap.js +1 -1
- package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
- package/dist/machine/subscriptions/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/ThemeProvider.js +1 -1
- package/dist/theme/createColorPalette.d.ts +4 -1
- package/dist/theme/createColorPalette.js +26 -29
- package/dist/theme/createColorPalette.js.map +1 -1
- package/dist/types/theme.d.ts +1 -1
- package/dist/utils/intents/signers/near.js +1 -1
- package/dist/utils/intents/signers/privy.js +1 -1
- package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapContent.js +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
- package/package.json +1 -1
- package/src/features/ChainsDropdown/AllNetworksIcon.tsx +1 -1
- package/src/features/SuccessScreen/CheckIcon.tsx +1 -1
- package/src/theme/ThemeProvider.tsx +13 -9
- package/src/theme/createColorPalette.ts +13 -17
- package/src/types/theme.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "react";
|
|
2
2
|
import "../../hooks/useWalletAddressForToken.js";
|
|
3
|
-
import { I as f } from "../../config-
|
|
3
|
+
import { I as f } from "../../config-DWuCYXia.js";
|
|
4
4
|
import "../guards/index.js";
|
|
5
5
|
import "../machine.js";
|
|
6
6
|
import "../events/utils/fireEvent.js";
|
|
@@ -3,7 +3,7 @@ import "./tokenSelectRotate.js";
|
|
|
3
3
|
import "./errorSet.js";
|
|
4
4
|
import "./quoteSet.js";
|
|
5
5
|
import "./addressSet.js";
|
|
6
|
-
import { _ as b } from "../../config-
|
|
6
|
+
import { _ as b } from "../../config-DWuCYXia.js";
|
|
7
7
|
import "./tokenSetAmount.js";
|
|
8
8
|
import "./quoteSetStatus.js";
|
|
9
9
|
import "./depositTypeSet.js";
|
|
@@ -3,7 +3,7 @@ import "../../utils/near/checkNearAccountExists.js";
|
|
|
3
3
|
import "../../utils/checkers/isNotEmptyAmount.js";
|
|
4
4
|
import "../../utils/checkers/isValidBigint.js";
|
|
5
5
|
import "../../utils/near/isNearAddress.js";
|
|
6
|
-
import { K as I, L as d, N as u } from "../../config-
|
|
6
|
+
import { K as I, L as d, N as u } from "../../config-DWuCYXia.js";
|
|
7
7
|
import "../guards/index.js";
|
|
8
8
|
import "../machine.js";
|
|
9
9
|
import "../guards/checks/isBalanceSufficient.js";
|
package/dist/machine/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as o, u as t, a as r, c as a, b as f } from "../config-
|
|
1
|
+
import { r as o, u as t, a as r, c as a, b as f } from "../config-DWuCYXia.js";
|
|
2
2
|
import { guardStates as S } from "./guards/index.js";
|
|
3
3
|
import { machine as n, moveTo as u } from "./machine.js";
|
|
4
4
|
import { fireEvent as i } from "./events/utils/fireEvent.js";
|
package/dist/machine/snap.js
CHANGED
|
@@ -2,7 +2,7 @@ import "valtio";
|
|
|
2
2
|
import "derive-valtio";
|
|
3
3
|
import "./computed/getIsNativeNearDeposit.js";
|
|
4
4
|
import "./computed/getIsDirectTokenOnNearDeposit.js";
|
|
5
|
-
import { u as h, a as b, b as d } from "../config-
|
|
5
|
+
import { u as h, a as b, b as d } from "../config-DWuCYXia.js";
|
|
6
6
|
import "./machine.js";
|
|
7
7
|
import "./guards/index.js";
|
|
8
8
|
import "./computed/getUsdTradeDelta.js";
|
|
@@ -5,7 +5,7 @@ import "./checkers/isOnlyErrorChanged.js";
|
|
|
5
5
|
import "./checkers/isValidInitialState.js";
|
|
6
6
|
import "./checkers/isWalletDisconnected.js";
|
|
7
7
|
import "./checkers/isSendAddressForbidden.js";
|
|
8
|
-
import { X as g, Y as u } from "../../config-
|
|
8
|
+
import { X as g, Y as u } from "../../config-DWuCYXia.js";
|
|
9
9
|
import "./checkers/isAmountChangedFromQuote.js";
|
|
10
10
|
import "ethers";
|
|
11
11
|
import "../machine.js";
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.sw *,.sw :before,.sw :after,.sw ::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{.sw,.sw :host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--font-weight-medium:500;--font-weight-semibold:600;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius-full:99999px;--radius-sw-sm:var(--r-sw-sm);--radius-sw-md:var(--r-sw-md);--radius-sw-lg:var(--r-sw-lg);--color-sw-gray-50:var(--c-sw-gray-50);--color-sw-gray-100:var(--c-sw-gray-100);--color-sw-gray-200:var(--c-sw-gray-200);--color-sw-gray-300:var(--c-sw-gray-300);--color-sw-gray-400:var(--c-sw-gray-400);--color-sw-gray-600:var(--c-sw-gray-600);--color-sw-gray-700:var(--c-sw-gray-700);--color-sw-gray-800:var(--c-sw-gray-800);--color-sw-gray-900:var(--c-sw-gray-900);--color-sw-gray-950:var(--c-sw-gray-950);--color-sw-accent-50:var(--c-sw-accent-50);--color-sw-accent-200:var(--c-sw-accent-200);--color-sw-accent-300:var(--c-sw-accent-300);--color-sw-accent-400:var(--c-sw-accent-400);--color-sw-accent-500:var(--c-sw-accent-500);--color-sw-status-success:var(--c-sw-status-success);--color-sw-status-warning:var(--c-sw-status-warning);--color-sw-status-error:var(--c-sw-status-error);--spacing-sw-xxs:2px;--spacing-sw-xs:4px;--spacing-sw-sm:6px;--spacing-sw-md:8px;--spacing-sw-lg:12px;--spacing-sw-xl:16px;--spacing-sw-2xl:20px;--spacing-sw-3xl:24px;--spacing-sw-4xl:32px;--spacing-sw-5xl:40px;--spacing-sw-6xl:48px}}@layer base{.sw *,.sw :after,.sw :before,.sw ::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}.sw ::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}.sw,.sw :host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}.sw hr{height:0;color:inherit;border-top-width:1px}.sw abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.sw h1,.sw h2,.sw h3,.sw h4,.sw h5,.sw h6{font-size:inherit;font-weight:inherit}.sw a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.sw b,.sw strong{font-weight:bolder}.sw code,.sw kbd,.sw samp,.sw pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}.sw small{font-size:80%}.sw sub,.sw sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.sw sub{bottom:-.25em}.sw sup{top:-.5em}.sw table{text-indent:0;border-color:inherit;border-collapse:collapse}.sw :-moz-focusring{outline:auto}.sw progress{vertical-align:baseline}.sw summary{display:list-item}.sw ol,.sw ul,.sw menu{list-style:none}.sw img,.sw svg,.sw video,.sw canvas,.sw audio,.sw iframe,.sw embed,.sw object{vertical-align:middle;display:block}.sw img,.sw video{max-width:100%;height:auto}.sw button,.sw input,.sw select,.sw optgroup,.sw textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.sw ::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.sw :where(select:is([multiple],[size])) optgroup{font-weight:bolder}.sw :where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}.sw ::file-selector-button{margin-inline-end:4px}.sw ::-moz-placeholder{opacity:1}.sw ::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){.sw ::-moz-placeholder{color:currentColor}.sw ::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){.sw ::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}.sw ::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}.sw textarea{resize:vertical}.sw ::-webkit-search-decoration{-webkit-appearance:none}.sw ::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}.sw ::-webkit-datetime-edit{display:inline-flex}.sw ::-webkit-datetime-edit-fields-wrapper{padding:0}.sw ::-webkit-datetime-edit{padding-block:0}.sw ::-webkit-datetime-edit-year-field{padding-block:0}.sw ::-webkit-datetime-edit-month-field{padding-block:0}.sw ::-webkit-datetime-edit-day-field{padding-block:0}.sw ::-webkit-datetime-edit-hour-field{padding-block:0}.sw ::-webkit-datetime-edit-minute-field{padding-block:0}.sw ::-webkit-datetime-edit-second-field{padding-block:0}.sw ::-webkit-datetime-edit-millisecond-field{padding-block:0}.sw ::-webkit-datetime-edit-meridiem-field{padding-block:0}.sw ::-webkit-calendar-picker-indicator{line-height:1}.sw :-moz-ui-invalid{box-shadow:none}.sw button,.sw input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}.sw ::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}.sw ::-webkit-inner-spin-button{height:auto}.sw ::-webkit-outer-spin-button{height:auto}.sw [hidden]:where(:not([hidden=until-found])){display:none!important}.sw[data-sw-theme=light]{color-scheme:light;--c-sw-gray-50:#24262d;--c-sw-gray-100:#2e3038;--c-sw-gray-200:#41444f;--c-sw-gray-300:#555967;--c-sw-gray-400:#686d7d;--c-sw-gray-500:#7e8396;--c-sw-gray-600:#979baa;--c-sw-gray-700:#b0b3bf;--c-sw-gray-800:#caccd3;--c-sw-gray-900:#e4e5e9;--c-sw-gray-950:#f3f3f5;--c-sw-accent-50:#280045;--c-sw-accent-100:#400069;--c-sw-accent-200:#7300b7;--c-sw-accent-300:#a528ff;--c-sw-accent-400:#ba7aff;--c-sw-accent-500:#d5b7ff;--c-sw-accent-600:#dcc4ff;--c-sw-accent-700:#e6d6ff;--c-sw-accent-800:#eee4ff;--c-sw-accent-900:#f6f1ff;--c-sw-accent-950:#fbf8ff;--c-sw-status-success:#00652f;--c-sw-status-warning:#a87a04;--c-sw-status-error:#9f002b}.sw[data-sw-theme=dark]{color-scheme:dark;--c-sw-gray-50:#f3f3f5;--c-sw-gray-100:#e4e5e9;--c-sw-gray-200:#caccd3;--c-sw-gray-300:#b0b3bf;--c-sw-gray-400:#979baa;--c-sw-gray-500:#7e8396;--c-sw-gray-600:#686d7d;--c-sw-gray-700:#555967;--c-sw-gray-800:#41444f;--c-sw-gray-900:#2e3038;--c-sw-gray-950:#24262d;--c-sw-accent-50:#fbf8ff;--c-sw-accent-100:#f6f1ff;--c-sw-accent-200:#eee4ff;--c-sw-accent-300:#e6d6ff;--c-sw-accent-400:#dcc4ff;--c-sw-accent-500:#d5b7ff;--c-sw-accent-600:#ba7aff;--c-sw-accent-700:#a528ff;--c-sw-accent-800:#7300b7;--c-sw-accent-900:#400069;--c-sw-accent-950:#280045;--c-sw-status-success:#98ffb5;--c-sw-status-warning:#fadfad;--c-sw-status-error:#ffb8be}.sw .sw{font-family:var(--font-family-sw)}.sw .hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.sw .hide-scrollbar::-webkit-scrollbar{display:none}}@layer components;@layer utilities{.sw .absolute{position:absolute}.sw .fixed{position:fixed}.sw .relative{position:relative}.sw .static{position:static}.sw .top-1\/2{top:50%}.sw .top-\[14px\]{top:14px}.sw .top-\[19px\]{top:19px}.sw .top-sw-2xl{top:var(--spacing-sw-2xl)}.sw .right-\[-4px\]{right:-4px}.sw .right-sw-2xl{right:var(--spacing-sw-2xl)}.sw .left-1\/2{left:50%}.sw .z-10{z-index:10}.sw .m-sw-lg{margin:var(--spacing-sw-lg)}.sw .mx-auto{margin-inline:auto}.sw .my-sw-sm{margin-block:var(--spacing-sw-sm)}.sw .mt-sw-2xl{margin-top:var(--spacing-sw-2xl)}.sw .mt-sw-lg{margin-top:var(--spacing-sw-lg)}.sw .mt-sw-md{margin-top:var(--spacing-sw-md)}.sw .mt-sw-sm{margin-top:var(--spacing-sw-sm)}.sw .mt-sw-xl{margin-top:var(--spacing-sw-xl)}.sw .mt-sw-xs{margin-top:var(--spacing-sw-xs)}.sw .mr-auto{margin-right:auto}.sw .mr-sw-md{margin-right:var(--spacing-sw-md)}.sw .mb-sw-2xl{margin-bottom:var(--spacing-sw-2xl)}.sw .mb-sw-md{margin-bottom:var(--spacing-sw-md)}.sw .mb-sw-xl{margin-bottom:var(--spacing-sw-xl)}.sw .ml-auto{margin-left:auto}.sw .ml-sw-lg{margin-left:var(--spacing-sw-lg)}.sw .flex{display:flex}.sw .hidden{display:none}.sw .inline{display:inline}.sw .inline-block{display:inline-block}.sw .h-\[1px\]{height:1px}.sw .h-\[12px\]{height:12px}.sw .h-\[16px\]{height:16px}.sw .h-\[20px\]{height:20px}.sw .h-\[28px\]{height:28px}.sw .h-\[34px\]{height:34px}.sw .h-\[36px\]{height:36px}.sw .h-\[40px\]{height:40px}.sw .h-\[44px\]{height:44px}.sw .h-\[48px\]{height:48px}.sw .h-\[108px\]{height:108px}.sw .h-\[116px\]{height:116px}.sw .h-\[120px\]{height:120px}.sw .h-\[152px\]{height:152px}.sw .h-\[165px\]{height:165px}.sw .h-\[180px\]{height:180px}.sw .h-fit{height:-moz-fit-content;height:fit-content}.sw .h-sw-2xl{height:var(--spacing-sw-2xl)}.sw .h-sw-4xl{height:var(--spacing-sw-4xl)}.sw .h-sw-lg{height:var(--spacing-sw-lg)}.sw .h-sw-xl{height:var(--spacing-sw-xl)}.sw .max-h-\[400px\]{max-height:400px}.sw .min-h-\[200px\]{min-height:200px}.sw .min-h-screen{min-height:100vh}.sw .min-h-sw-2xl{min-height:var(--spacing-sw-2xl)}.sw .w-\[16px\]{width:16px}.sw .w-\[28px\]{width:28px}.sw .w-\[34px\]{width:34px}.sw .w-\[40px\]{width:40px}.sw .w-\[44px\]{width:44px}.sw .w-\[60px\]{width:60px}.sw .w-\[100px\]{width:100px}.sw .w-\[180px\]{width:180px}.sw .w-\[200px\]{width:200px}.sw .w-fit{width:-moz-fit-content;width:fit-content}.sw .w-full{width:100%}.sw .w-sw-2xl{width:var(--spacing-sw-2xl)}.sw .w-sw-4xl{width:var(--spacing-sw-4xl)}.sw .w-sw-lg{width:var(--spacing-sw-lg)}.sw .w-sw-xl{width:var(--spacing-sw-xl)}.sw .max-w-\[80\%\]{max-width:80%}.sw .max-w-\[265px\]{max-width:265px}.sw .max-w-\[456px\]{max-width:456px}.sw .min-w-\[80px\]{min-width:80px}.sw .min-w-\[100px\]{min-width:100px}.sw .min-w-\[200px\]{min-width:200px}.sw .min-w-\[270px\]{min-width:270px}.sw .min-w-full{min-width:100%}.sw .min-w-max{min-width:-moz-max-content;min-width:max-content}.sw .shrink-0{flex-shrink:0}.sw .-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sw .-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sw .transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.sw .animate-pulse{animation:var(--animate-pulse)}.sw .animate-spin{animation:var(--animate-spin)}.sw .cursor-default{cursor:default}.sw .cursor-not-allowed{cursor:not-allowed}.sw .cursor-pointer{cursor:pointer}.sw .list-none{list-style-type:none}.sw .flex-col{flex-direction:column}.sw .items-center{align-items:center}.sw .items-end{align-items:flex-end}.sw .justify-between{justify-content:space-between}.sw .justify-center{justify-content:center}.sw .justify-end{justify-content:flex-end}.sw .gap-\[10px\]{gap:10px}.sw .gap-sw-2xl{gap:var(--spacing-sw-2xl)}.sw .gap-sw-4xl{gap:var(--spacing-sw-4xl)}.sw .gap-sw-lg{gap:var(--spacing-sw-lg)}.sw .gap-sw-md{gap:var(--spacing-sw-md)}.sw .gap-sw-sm{gap:var(--spacing-sw-sm)}.sw .gap-sw-xl{gap:var(--spacing-sw-xl)}.sw .gap-sw-xs{gap:var(--spacing-sw-xs)}.sw .gap-sw-xxs{gap:var(--spacing-sw-xxs)}.sw .overflow-hidden{overflow:hidden}.sw .rounded-\[4px\]{border-radius:4px}.sw .rounded-full{border-radius:3.40282e38px;border-radius:var(--radius-full)}.sw .rounded-sw-lg{border-radius:var(--radius-sw-lg)}.sw .rounded-sw-md{border-radius:var(--radius-sw-md)}.sw .rounded-sw-sm{border-radius:var(--radius-sw-sm)}.sw .border-2{border-style:var(--tw-border-style);border-width:2px}.sw .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.sw .border-none{--tw-border-style:none;border-style:none}.sw .border-sw-gray-800{border-color:var(--color-sw-gray-800)}.sw .border-sw-gray-900{border-color:var(--color-sw-gray-900)}.sw .bg-\[\#fff\]{background-color:#fff}.sw .bg-sw-accent-500{background-color:var(--color-sw-accent-500)}.sw .bg-sw-gray-600{background-color:var(--color-sw-gray-600)}.sw .bg-sw-gray-700{background-color:var(--color-sw-gray-700)}.sw .bg-sw-gray-800{background-color:var(--color-sw-gray-800)}.sw .bg-sw-gray-900{background-color:var(--color-sw-gray-900)}.sw .bg-sw-gray-950{background-color:var(--color-sw-gray-950)}.sw .bg-sw-status-success{background-color:var(--color-sw-status-success)}.sw .bg-transparent{background-color:#0000}.sw .p-sw-2xl{padding:var(--spacing-sw-2xl)}.sw .p-sw-lg{padding:var(--spacing-sw-lg)}.sw .p-sw-md{padding:var(--spacing-sw-md)}.sw .px-\[1px\]{padding-inline:1px}.sw .px-sw-2xl{padding-inline:var(--spacing-sw-2xl)}.sw .px-sw-3xl{padding-inline:var(--spacing-sw-3xl)}.sw .px-sw-lg{padding-inline:var(--spacing-sw-lg)}.sw .px-sw-md{padding-inline:var(--spacing-sw-md)}.sw .px-sw-sm{padding-inline:var(--spacing-sw-sm)}.sw .px-sw-xl{padding-inline:var(--spacing-sw-xl)}.sw .py-sw-2xl{padding-block:var(--spacing-sw-2xl)}.sw .py-sw-6xl{padding-block:var(--spacing-sw-6xl)}.sw .py-sw-lg{padding-block:var(--spacing-sw-lg)}.sw .py-sw-md{padding-block:var(--spacing-sw-md)}.sw .py-sw-sm{padding-block:var(--spacing-sw-sm)}.sw .py-sw-xl{padding-block:var(--spacing-sw-xl)}.sw .py-sw-xs{padding-block:var(--spacing-sw-xs)}.sw .pt-sw-2xl{padding-top:var(--spacing-sw-2xl)}.sw .pt-sw-5xl{padding-top:var(--spacing-sw-5xl)}.sw .pt-sw-xl{padding-top:var(--spacing-sw-xl)}.sw .pr-sw-md{padding-right:var(--spacing-sw-md)}.sw .pb-sw-5xl{padding-bottom:var(--spacing-sw-5xl)}.sw .pb-sw-lg{padding-bottom:var(--spacing-sw-lg)}.sw .pl-sw-sm{padding-left:var(--spacing-sw-sm)}.sw .text-center{text-align:center}.sw .align-sub{vertical-align:sub}@layer components{.sw .text-sw-body-lg{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);letter-spacing:-.025rem;font-size:1rem;line-height:1.375rem}.sw .text-sw-body-md{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);letter-spacing:-.025rem;font-size:.875rem;line-height:1.25rem}.sw .text-sw-body-sm{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);letter-spacing:-.025rem;font-size:.75rem;line-height:1rem}.sw .text-sw-label-lg{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.025rem;font-size:1rem;line-height:1rem}.sw .text-sw-label-md{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.025rem;font-size:.875rem;line-height:1rem}.sw .text-sw-label-sm{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.01875rem;font-size:.75rem;line-height:.875rem}.sw .text-sw-value-lg{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.0625rem;font-size:2rem;line-height:2.25rem}}.sw .text-\[10px\]{font-size:10px}.sw .font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.sw .text-nowrap{text-wrap:nowrap}.sw .text-sw-accent-300{color:var(--color-sw-accent-300)}.sw .text-sw-accent-500{color:var(--color-sw-accent-500)}.sw .text-sw-gray-50{color:var(--color-sw-gray-50)}.sw .text-sw-gray-100{color:var(--color-sw-gray-100)}.sw .text-sw-gray-200{color:var(--color-sw-gray-200)}.sw .text-sw-gray-300{color:var(--color-sw-gray-300)}.sw .text-sw-gray-400{color:var(--color-sw-gray-400)}.sw .text-sw-gray-950{color:var(--color-sw-gray-950)}.sw .text-sw-status-error{color:var(--color-sw-status-error)}.sw .text-sw-status-success{color:var(--color-sw-status-success)}.sw .text-sw-status-warning{color:var(--color-sw-status-warning)}.sw .lowercase{text-transform:lowercase}.sw .opacity-0{opacity:0}.sw .opacity-50{opacity:.5}.sw .opacity-100{opacity:1}.sw .shadow-\[0_6px_48px_0_rgba\(36\,38\,45\,0\.3\)\]{--tw-shadow:0 6px 48px 0 var(--tw-shadow-color,#24262d4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sw .ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sw .ring-sw-gray-600{--tw-ring-color:var(--color-sw-gray-600)}.sw .ring-sw-gray-700{--tw-ring-color:var(--color-sw-gray-700)}.sw .ring-sw-status-error{--tw-ring-color:var(--color-sw-status-error)}.sw .ring-transparent{--tw-ring-color:transparent}.sw .grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.sw .transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .delay-0{transition-delay:0s}.sw .duration-150{--tw-duration:.15s;transition-duration:.15s}.sw .duration-250{--tw-duration:.25s;transition-duration:.25s}.sw .duration-300{--tw-duration:.3s;transition-duration:.3s}.sw .ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.sw .\[transition-timing-function\:cubic-bezier\(0\.175\,0\.885\,0\.32\,1\.275\)\]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}.sw .outline-none{--tw-outline-style:none;outline-style:none}.sw .ring-inset{--tw-ring-inset:inset}@media (hover:hover){.sw .group-hover\:rotate-180:is(:where(.group):hover *){rotate:180deg}.sw .group-hover\:border-sw-gray-700:is(:where(.group):hover *){border-color:var(--color-sw-gray-700)}.sw .group-hover\:border-sw-gray-800:is(:where(.group):hover *){border-color:var(--color-sw-gray-800)}.sw .hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .hover\:bg-sw-accent-400:hover{background-color:var(--color-sw-accent-400)}.sw .hover\:bg-sw-gray-700:hover{background-color:var(--color-sw-gray-700)}.sw .hover\:bg-sw-gray-800:hover{background-color:var(--color-sw-gray-800)}.sw .hover\:text-sw-accent-50:hover{color:var(--color-sw-accent-50)}.sw .hover\:text-sw-accent-200:hover{color:var(--color-sw-accent-200)}.sw .hover\:text-sw-gray-50:hover{color:var(--color-sw-gray-50)}.sw .hover\:ring-sw-gray-100:hover{--tw-ring-color:var(--color-sw-gray-100)}}.sw .active\:scale-x-90:active{--tw-scale-x:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .active\:scale-y-110:active{--tw-scale-y:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .data-focus\:outline-none[data-focus]{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sw .sm\:fixed{position:fixed}.sw .sm\:h-full{height:100%}.sw .sm\:max-h-screen{max-height:100vh}.sw .sm\:overflow-auto{overflow:auto}}}.sw{--font-family-sw:"Inter",sans-serif;--r-sw-sm:6px;--r-sw-md:10px;--r-sw-lg:16px;--r-sw-xl:24px;font-feature-settings:"liga" 1,"calt" 1;font-family:Inter,sans-serif}@supports (font-variation-settings:normal){.sw{font-family:InterVariable,sans-serif}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
1
|
+
/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.sw *,.sw :before,.sw :after,.sw ::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{.sw,.sw :host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--font-weight-medium:500;--font-weight-semibold:600;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius-full:99999px;--radius-sw-sm:var(--r-sw-sm);--radius-sw-md:var(--r-sw-md);--radius-sw-lg:var(--r-sw-lg);--color-sw-gray-50:var(--c-sw-gray-50);--color-sw-gray-100:var(--c-sw-gray-100);--color-sw-gray-200:var(--c-sw-gray-200);--color-sw-gray-300:var(--c-sw-gray-300);--color-sw-gray-400:var(--c-sw-gray-400);--color-sw-gray-600:var(--c-sw-gray-600);--color-sw-gray-700:var(--c-sw-gray-700);--color-sw-gray-800:var(--c-sw-gray-800);--color-sw-gray-900:var(--c-sw-gray-900);--color-sw-gray-950:var(--c-sw-gray-950);--color-sw-accent-50:var(--c-sw-accent-50);--color-sw-accent-200:var(--c-sw-accent-200);--color-sw-accent-300:var(--c-sw-accent-300);--color-sw-accent-400:var(--c-sw-accent-400);--color-sw-accent-500:var(--c-sw-accent-500);--color-sw-accent-950:var(--c-sw-accent-950);--color-sw-status-success:var(--c-sw-status-success);--color-sw-status-warning:var(--c-sw-status-warning);--color-sw-status-error:var(--c-sw-status-error);--spacing-sw-xxs:2px;--spacing-sw-xs:4px;--spacing-sw-sm:6px;--spacing-sw-md:8px;--spacing-sw-lg:12px;--spacing-sw-xl:16px;--spacing-sw-2xl:20px;--spacing-sw-3xl:24px;--spacing-sw-4xl:32px;--spacing-sw-5xl:40px;--spacing-sw-6xl:48px}}@layer base{.sw *,.sw :after,.sw :before,.sw ::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}.sw ::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}.sw,.sw :host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}.sw hr{height:0;color:inherit;border-top-width:1px}.sw abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.sw h1,.sw h2,.sw h3,.sw h4,.sw h5,.sw h6{font-size:inherit;font-weight:inherit}.sw a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.sw b,.sw strong{font-weight:bolder}.sw code,.sw kbd,.sw samp,.sw pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}.sw small{font-size:80%}.sw sub,.sw sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.sw sub{bottom:-.25em}.sw sup{top:-.5em}.sw table{text-indent:0;border-color:inherit;border-collapse:collapse}.sw :-moz-focusring{outline:auto}.sw progress{vertical-align:baseline}.sw summary{display:list-item}.sw ol,.sw ul,.sw menu{list-style:none}.sw img,.sw svg,.sw video,.sw canvas,.sw audio,.sw iframe,.sw embed,.sw object{vertical-align:middle;display:block}.sw img,.sw video{max-width:100%;height:auto}.sw button,.sw input,.sw select,.sw optgroup,.sw textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.sw ::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.sw :where(select:is([multiple],[size])) optgroup{font-weight:bolder}.sw :where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}.sw ::file-selector-button{margin-inline-end:4px}.sw ::-moz-placeholder{opacity:1}.sw ::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){.sw ::-moz-placeholder{color:currentColor}.sw ::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){.sw ::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}.sw ::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}.sw textarea{resize:vertical}.sw ::-webkit-search-decoration{-webkit-appearance:none}.sw ::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}.sw ::-webkit-datetime-edit{display:inline-flex}.sw ::-webkit-datetime-edit-fields-wrapper{padding:0}.sw ::-webkit-datetime-edit{padding-block:0}.sw ::-webkit-datetime-edit-year-field{padding-block:0}.sw ::-webkit-datetime-edit-month-field{padding-block:0}.sw ::-webkit-datetime-edit-day-field{padding-block:0}.sw ::-webkit-datetime-edit-hour-field{padding-block:0}.sw ::-webkit-datetime-edit-minute-field{padding-block:0}.sw ::-webkit-datetime-edit-second-field{padding-block:0}.sw ::-webkit-datetime-edit-millisecond-field{padding-block:0}.sw ::-webkit-datetime-edit-meridiem-field{padding-block:0}.sw ::-webkit-calendar-picker-indicator{line-height:1}.sw :-moz-ui-invalid{box-shadow:none}.sw button,.sw input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}.sw ::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}.sw ::-webkit-inner-spin-button{height:auto}.sw ::-webkit-outer-spin-button{height:auto}.sw [hidden]:where(:not([hidden=until-found])){display:none!important}.sw[data-sw-theme=light]{color-scheme:light;--c-sw-gray-50:#24262d;--c-sw-gray-100:#2e3038;--c-sw-gray-200:#41444f;--c-sw-gray-300:#555967;--c-sw-gray-400:#686d7d;--c-sw-gray-500:#7e8396;--c-sw-gray-600:#979baa;--c-sw-gray-700:#b0b3bf;--c-sw-gray-800:#caccd3;--c-sw-gray-900:#e4e5e9;--c-sw-gray-950:#f3f3f5;--c-sw-accent-50:#280045;--c-sw-accent-100:#400069;--c-sw-accent-200:#7300b7;--c-sw-accent-300:#a528ff;--c-sw-accent-400:#ba7aff;--c-sw-accent-500:#d5b7ff;--c-sw-accent-600:#dcc4ff;--c-sw-accent-700:#e6d6ff;--c-sw-accent-800:#eee4ff;--c-sw-accent-900:#f6f1ff;--c-sw-accent-950:#fbf8ff;--c-sw-status-success:#00652f;--c-sw-status-warning:#a87a04;--c-sw-status-error:#9f002b}.sw[data-sw-theme=dark]{color-scheme:dark;--c-sw-gray-50:#f3f3f5;--c-sw-gray-100:#e4e5e9;--c-sw-gray-200:#caccd3;--c-sw-gray-300:#b0b3bf;--c-sw-gray-400:#979baa;--c-sw-gray-500:#7e8396;--c-sw-gray-600:#686d7d;--c-sw-gray-700:#555967;--c-sw-gray-800:#41444f;--c-sw-gray-900:#2e3038;--c-sw-gray-950:#24262d;--c-sw-accent-50:#fbf8ff;--c-sw-accent-100:#f6f1ff;--c-sw-accent-200:#eee4ff;--c-sw-accent-300:#e6d6ff;--c-sw-accent-400:#dcc4ff;--c-sw-accent-500:#d5b7ff;--c-sw-accent-600:#ba7aff;--c-sw-accent-700:#a528ff;--c-sw-accent-800:#7300b7;--c-sw-accent-900:#400069;--c-sw-accent-950:#280045;--c-sw-status-success:#98ffb5;--c-sw-status-warning:#fadfad;--c-sw-status-error:#ffb8be}.sw .sw{font-family:var(--font-family-sw)}.sw .hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.sw .hide-scrollbar::-webkit-scrollbar{display:none}}@layer components;@layer utilities{.sw .absolute{position:absolute}.sw .fixed{position:fixed}.sw .relative{position:relative}.sw .static{position:static}.sw .top-1\/2{top:50%}.sw .top-\[14px\]{top:14px}.sw .top-\[19px\]{top:19px}.sw .top-sw-2xl{top:var(--spacing-sw-2xl)}.sw .right-\[-4px\]{right:-4px}.sw .right-sw-2xl{right:var(--spacing-sw-2xl)}.sw .left-1\/2{left:50%}.sw .z-10{z-index:10}.sw .m-sw-lg{margin:var(--spacing-sw-lg)}.sw .mx-auto{margin-inline:auto}.sw .my-sw-sm{margin-block:var(--spacing-sw-sm)}.sw .mt-sw-2xl{margin-top:var(--spacing-sw-2xl)}.sw .mt-sw-lg{margin-top:var(--spacing-sw-lg)}.sw .mt-sw-md{margin-top:var(--spacing-sw-md)}.sw .mt-sw-sm{margin-top:var(--spacing-sw-sm)}.sw .mt-sw-xl{margin-top:var(--spacing-sw-xl)}.sw .mt-sw-xs{margin-top:var(--spacing-sw-xs)}.sw .mr-auto{margin-right:auto}.sw .mr-sw-md{margin-right:var(--spacing-sw-md)}.sw .mb-sw-2xl{margin-bottom:var(--spacing-sw-2xl)}.sw .mb-sw-md{margin-bottom:var(--spacing-sw-md)}.sw .mb-sw-xl{margin-bottom:var(--spacing-sw-xl)}.sw .ml-auto{margin-left:auto}.sw .ml-sw-lg{margin-left:var(--spacing-sw-lg)}.sw .flex{display:flex}.sw .hidden{display:none}.sw .inline{display:inline}.sw .inline-block{display:inline-block}.sw .h-\[1px\]{height:1px}.sw .h-\[12px\]{height:12px}.sw .h-\[16px\]{height:16px}.sw .h-\[20px\]{height:20px}.sw .h-\[28px\]{height:28px}.sw .h-\[34px\]{height:34px}.sw .h-\[36px\]{height:36px}.sw .h-\[40px\]{height:40px}.sw .h-\[44px\]{height:44px}.sw .h-\[48px\]{height:48px}.sw .h-\[108px\]{height:108px}.sw .h-\[116px\]{height:116px}.sw .h-\[120px\]{height:120px}.sw .h-\[152px\]{height:152px}.sw .h-\[165px\]{height:165px}.sw .h-\[180px\]{height:180px}.sw .h-fit{height:-moz-fit-content;height:fit-content}.sw .h-sw-2xl{height:var(--spacing-sw-2xl)}.sw .h-sw-4xl{height:var(--spacing-sw-4xl)}.sw .h-sw-lg{height:var(--spacing-sw-lg)}.sw .h-sw-xl{height:var(--spacing-sw-xl)}.sw .max-h-\[400px\]{max-height:400px}.sw .min-h-\[200px\]{min-height:200px}.sw .min-h-screen{min-height:100vh}.sw .min-h-sw-2xl{min-height:var(--spacing-sw-2xl)}.sw .w-\[16px\]{width:16px}.sw .w-\[28px\]{width:28px}.sw .w-\[34px\]{width:34px}.sw .w-\[40px\]{width:40px}.sw .w-\[44px\]{width:44px}.sw .w-\[60px\]{width:60px}.sw .w-\[100px\]{width:100px}.sw .w-\[180px\]{width:180px}.sw .w-\[200px\]{width:200px}.sw .w-fit{width:-moz-fit-content;width:fit-content}.sw .w-full{width:100%}.sw .w-sw-2xl{width:var(--spacing-sw-2xl)}.sw .w-sw-4xl{width:var(--spacing-sw-4xl)}.sw .w-sw-lg{width:var(--spacing-sw-lg)}.sw .w-sw-xl{width:var(--spacing-sw-xl)}.sw .max-w-\[80\%\]{max-width:80%}.sw .max-w-\[265px\]{max-width:265px}.sw .max-w-\[456px\]{max-width:456px}.sw .min-w-\[80px\]{min-width:80px}.sw .min-w-\[100px\]{min-width:100px}.sw .min-w-\[200px\]{min-width:200px}.sw .min-w-\[270px\]{min-width:270px}.sw .min-w-full{min-width:100%}.sw .min-w-max{min-width:-moz-max-content;min-width:max-content}.sw .shrink-0{flex-shrink:0}.sw .-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sw .-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sw .transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.sw .animate-pulse{animation:var(--animate-pulse)}.sw .animate-spin{animation:var(--animate-spin)}.sw .cursor-default{cursor:default}.sw .cursor-not-allowed{cursor:not-allowed}.sw .cursor-pointer{cursor:pointer}.sw .list-none{list-style-type:none}.sw .flex-col{flex-direction:column}.sw .items-center{align-items:center}.sw .items-end{align-items:flex-end}.sw .justify-between{justify-content:space-between}.sw .justify-center{justify-content:center}.sw .justify-end{justify-content:flex-end}.sw .gap-\[10px\]{gap:10px}.sw .gap-sw-2xl{gap:var(--spacing-sw-2xl)}.sw .gap-sw-4xl{gap:var(--spacing-sw-4xl)}.sw .gap-sw-lg{gap:var(--spacing-sw-lg)}.sw .gap-sw-md{gap:var(--spacing-sw-md)}.sw .gap-sw-sm{gap:var(--spacing-sw-sm)}.sw .gap-sw-xl{gap:var(--spacing-sw-xl)}.sw .gap-sw-xs{gap:var(--spacing-sw-xs)}.sw .gap-sw-xxs{gap:var(--spacing-sw-xxs)}.sw .overflow-hidden{overflow:hidden}.sw .rounded-\[4px\]{border-radius:4px}.sw .rounded-full{border-radius:3.40282e38px;border-radius:var(--radius-full)}.sw .rounded-sw-lg{border-radius:var(--radius-sw-lg)}.sw .rounded-sw-md{border-radius:var(--radius-sw-md)}.sw .rounded-sw-sm{border-radius:var(--radius-sw-sm)}.sw .border-2{border-style:var(--tw-border-style);border-width:2px}.sw .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.sw .border-none{--tw-border-style:none;border-style:none}.sw .border-sw-gray-800{border-color:var(--color-sw-gray-800)}.sw .border-sw-gray-900{border-color:var(--color-sw-gray-900)}.sw .bg-\[\#fff\]{background-color:#fff}.sw .bg-sw-accent-500{background-color:var(--color-sw-accent-500)}.sw .bg-sw-gray-600{background-color:var(--color-sw-gray-600)}.sw .bg-sw-gray-700{background-color:var(--color-sw-gray-700)}.sw .bg-sw-gray-800{background-color:var(--color-sw-gray-800)}.sw .bg-sw-gray-900{background-color:var(--color-sw-gray-900)}.sw .bg-sw-gray-950{background-color:var(--color-sw-gray-950)}.sw .bg-sw-status-success{background-color:var(--color-sw-status-success)}.sw .bg-transparent{background-color:#0000}.sw .p-sw-2xl{padding:var(--spacing-sw-2xl)}.sw .p-sw-lg{padding:var(--spacing-sw-lg)}.sw .p-sw-md{padding:var(--spacing-sw-md)}.sw .px-\[1px\]{padding-inline:1px}.sw .px-sw-2xl{padding-inline:var(--spacing-sw-2xl)}.sw .px-sw-3xl{padding-inline:var(--spacing-sw-3xl)}.sw .px-sw-lg{padding-inline:var(--spacing-sw-lg)}.sw .px-sw-md{padding-inline:var(--spacing-sw-md)}.sw .px-sw-sm{padding-inline:var(--spacing-sw-sm)}.sw .px-sw-xl{padding-inline:var(--spacing-sw-xl)}.sw .py-sw-2xl{padding-block:var(--spacing-sw-2xl)}.sw .py-sw-6xl{padding-block:var(--spacing-sw-6xl)}.sw .py-sw-lg{padding-block:var(--spacing-sw-lg)}.sw .py-sw-md{padding-block:var(--spacing-sw-md)}.sw .py-sw-sm{padding-block:var(--spacing-sw-sm)}.sw .py-sw-xl{padding-block:var(--spacing-sw-xl)}.sw .py-sw-xs{padding-block:var(--spacing-sw-xs)}.sw .pt-sw-2xl{padding-top:var(--spacing-sw-2xl)}.sw .pt-sw-5xl{padding-top:var(--spacing-sw-5xl)}.sw .pt-sw-xl{padding-top:var(--spacing-sw-xl)}.sw .pr-sw-md{padding-right:var(--spacing-sw-md)}.sw .pb-sw-5xl{padding-bottom:var(--spacing-sw-5xl)}.sw .pb-sw-lg{padding-bottom:var(--spacing-sw-lg)}.sw .pl-sw-sm{padding-left:var(--spacing-sw-sm)}.sw .text-center{text-align:center}.sw .align-sub{vertical-align:sub}@layer components{.sw .text-sw-body-lg{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);letter-spacing:-.025rem;font-size:1rem;line-height:1.375rem}.sw .text-sw-body-md{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);letter-spacing:-.025rem;font-size:.875rem;line-height:1.25rem}.sw .text-sw-body-sm{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);letter-spacing:-.025rem;font-size:.75rem;line-height:1rem}.sw .text-sw-label-lg{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.025rem;font-size:1rem;line-height:1rem}.sw .text-sw-label-md{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.025rem;font-size:.875rem;line-height:1rem}.sw .text-sw-label-sm{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.01875rem;font-size:.75rem;line-height:.875rem}.sw .text-sw-value-lg{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);letter-spacing:-.0625rem;font-size:2rem;line-height:2.25rem}}.sw .text-\[10px\]{font-size:10px}.sw .font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.sw .text-nowrap{text-wrap:nowrap}.sw .text-sw-accent-300{color:var(--color-sw-accent-300)}.sw .text-sw-accent-500{color:var(--color-sw-accent-500)}.sw .text-sw-accent-950{color:var(--color-sw-accent-950)}.sw .text-sw-gray-50{color:var(--color-sw-gray-50)}.sw .text-sw-gray-100{color:var(--color-sw-gray-100)}.sw .text-sw-gray-200{color:var(--color-sw-gray-200)}.sw .text-sw-gray-300{color:var(--color-sw-gray-300)}.sw .text-sw-gray-400{color:var(--color-sw-gray-400)}.sw .text-sw-gray-950{color:var(--color-sw-gray-950)}.sw .text-sw-status-error{color:var(--color-sw-status-error)}.sw .text-sw-status-success{color:var(--color-sw-status-success)}.sw .text-sw-status-warning{color:var(--color-sw-status-warning)}.sw .lowercase{text-transform:lowercase}.sw .opacity-0{opacity:0}.sw .opacity-50{opacity:.5}.sw .opacity-100{opacity:1}.sw .shadow-\[0_6px_48px_0_rgba\(36\,38\,45\,0\.3\)\]{--tw-shadow:0 6px 48px 0 var(--tw-shadow-color,#24262d4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sw .ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sw .ring-sw-gray-600{--tw-ring-color:var(--color-sw-gray-600)}.sw .ring-sw-gray-700{--tw-ring-color:var(--color-sw-gray-700)}.sw .ring-sw-status-error{--tw-ring-color:var(--color-sw-status-error)}.sw .ring-transparent{--tw-ring-color:transparent}.sw .grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.sw .transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sw .delay-0{transition-delay:0s}.sw .duration-150{--tw-duration:.15s;transition-duration:.15s}.sw .duration-250{--tw-duration:.25s;transition-duration:.25s}.sw .duration-300{--tw-duration:.3s;transition-duration:.3s}.sw .ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.sw .\[transition-timing-function\:cubic-bezier\(0\.175\,0\.885\,0\.32\,1\.275\)\]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}.sw .outline-none{--tw-outline-style:none;outline-style:none}.sw .ring-inset{--tw-ring-inset:inset}@media (hover:hover){.sw .group-hover\:rotate-180:is(:where(.group):hover *){rotate:180deg}.sw .group-hover\:border-sw-gray-700:is(:where(.group):hover *){border-color:var(--color-sw-gray-700)}.sw .group-hover\:border-sw-gray-800:is(:where(.group):hover *){border-color:var(--color-sw-gray-800)}.sw .hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .hover\:bg-sw-accent-400:hover{background-color:var(--color-sw-accent-400)}.sw .hover\:bg-sw-gray-700:hover{background-color:var(--color-sw-gray-700)}.sw .hover\:bg-sw-gray-800:hover{background-color:var(--color-sw-gray-800)}.sw .hover\:text-sw-accent-50:hover{color:var(--color-sw-accent-50)}.sw .hover\:text-sw-accent-200:hover{color:var(--color-sw-accent-200)}.sw .hover\:text-sw-gray-50:hover{color:var(--color-sw-gray-50)}.sw .hover\:ring-sw-gray-100:hover{--tw-ring-color:var(--color-sw-gray-100)}}.sw .active\:scale-x-90:active{--tw-scale-x:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .active\:scale-y-110:active{--tw-scale-y:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sw .data-focus\:outline-none[data-focus]{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sw .sm\:fixed{position:fixed}.sw .sm\:h-full{height:100%}.sw .sm\:max-h-screen{max-height:100vh}.sw .sm\:overflow-auto{overflow:auto}}}.sw{--font-family-sw:"Inter",sans-serif;--r-sw-sm:6px;--r-sw-md:10px;--r-sw-lg:16px;--r-sw-xl:24px;font-feature-settings:"liga" 1,"calt" 1;font-family:Inter,sans-serif}@supports (font-variation-settings:normal){.sw{font-family:InterVariable,sans-serif}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -2,7 +2,7 @@ import "react/jsx-runtime";
|
|
|
2
2
|
import "browser-or-node";
|
|
3
3
|
import "react";
|
|
4
4
|
import "./createColorPalette.js";
|
|
5
|
-
import { C as p, ae as a } from "../config-
|
|
5
|
+
import { C as p, ae as a } from "../config-DWuCYXia.js";
|
|
6
6
|
export {
|
|
7
7
|
p as ThemeContext,
|
|
8
8
|
a as ThemeProvider
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ColorPalette } from '../types/theme';
|
|
2
|
+
declare const ALL_STOPS: readonly [0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950, 1000];
|
|
3
|
+
export type ColorStop = (typeof ALL_STOPS)[number];
|
|
2
4
|
/**
|
|
3
5
|
* Chroma-js based implementation for stable palette generation.
|
|
4
6
|
*
|
|
5
7
|
* Based on the approach from tints.dev.
|
|
6
8
|
* @see https://github.com/SimeonGriggs/tints.dev/blob/main/app/lib/createhexColors.ts
|
|
7
9
|
*/
|
|
8
|
-
export declare const createColorPalette: (baseColor: `#${string}`, mode: "light" | "dark") => ColorPalette;
|
|
10
|
+
export declare const createColorPalette: (baseColor: `#${string}`, mode: "light" | "dark", colorStop: ColorStop) => ColorPalette;
|
|
11
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Hsluv as
|
|
3
|
-
const r =
|
|
1
|
+
import M from "chroma-js";
|
|
2
|
+
import { Hsluv as p } from "hsluv";
|
|
3
|
+
const r = [
|
|
4
4
|
0,
|
|
5
5
|
50,
|
|
6
6
|
100,
|
|
@@ -14,36 +14,34 @@ const r = 500, l = [
|
|
|
14
14
|
900,
|
|
15
15
|
950,
|
|
16
16
|
1e3
|
|
17
|
-
], C = (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const x =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
{ stop:
|
|
24
|
-
|
|
25
|
-
{ stop: 1e3, tweak: 100 }
|
|
26
|
-
], S = l.map((t) => {
|
|
17
|
+
], N = 0, V = 100, C = (l, H, c) => {
|
|
18
|
+
const f = r.map((t) => ({ stop: t, tweak: 0 })), _ = r.map((t) => ({ stop: t, tweak: Math.min(0, 100) })), u = new p();
|
|
19
|
+
u.hex = l, u.hexToHsluv();
|
|
20
|
+
const x = u.hsluv_l, h = [
|
|
21
|
+
{ stop: 0, tweak: V },
|
|
22
|
+
{ stop: c, tweak: x },
|
|
23
|
+
{ stop: 1e3, tweak: N }
|
|
24
|
+
], S = r.map((t) => {
|
|
27
25
|
const o = h.find((v) => v.stop === t);
|
|
28
26
|
if (o)
|
|
29
27
|
return o;
|
|
30
|
-
let
|
|
31
|
-
if (t <
|
|
28
|
+
let n, a;
|
|
29
|
+
if (t < c ? [n, a] = h : [n, a] = h.slice(1), !n || !a)
|
|
32
30
|
throw new Error("Invalid anchor points for interpolation");
|
|
33
|
-
const i = a.stop -
|
|
31
|
+
const i = a.stop - n.stop, m = (t - n.stop) / i, w = n.tweak + (a.tweak - n.tweak) * m;
|
|
34
32
|
return { stop: t, tweak: Math.round(w) };
|
|
35
|
-
}),
|
|
36
|
-
if (t ===
|
|
37
|
-
return
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const w = ((Number.isNaN(
|
|
33
|
+
}), k = r.map((t, o) => {
|
|
34
|
+
if (t === c)
|
|
35
|
+
return l.toUpperCase();
|
|
36
|
+
const n = f[o]?.tweak ?? 0, a = _[o]?.tweak ?? 0, i = S[o]?.tweak ?? 0, s = new p();
|
|
37
|
+
s.hex = l, s.hexToHsluv();
|
|
38
|
+
const w = ((Number.isNaN(s.hsluv_h) ? 0 : s.hsluv_h) + n) % 360, v = Math.max(
|
|
41
39
|
0,
|
|
42
|
-
Math.min(100,
|
|
43
|
-
),
|
|
44
|
-
return
|
|
45
|
-
}),
|
|
46
|
-
const o =
|
|
40
|
+
Math.min(100, s.hsluv_s + a)
|
|
41
|
+
), d = Math.max(0, Math.min(100, i));
|
|
42
|
+
return s.hsluv_h = w, s.hsluv_s = v, s.hsluv_l = d, s.hsluvToHex(), M(s.hex).hex().toUpperCase();
|
|
43
|
+
}), T = H === "dark" ? k : [...k].reverse(), e = (t) => {
|
|
44
|
+
const o = T[t];
|
|
47
45
|
if (!o)
|
|
48
46
|
throw new Error(`No color found for stop index: ${t}`);
|
|
49
47
|
return o;
|
|
@@ -59,8 +57,7 @@ const r = 500, l = [
|
|
|
59
57
|
700: e(8),
|
|
60
58
|
800: e(9),
|
|
61
59
|
900: e(10),
|
|
62
|
-
950: e(11)
|
|
63
|
-
975: e(12)
|
|
60
|
+
950: e(11)
|
|
64
61
|
};
|
|
65
62
|
};
|
|
66
63
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createColorPalette.js","sources":["../../src/theme/createColorPalette.ts"],"sourcesContent":["import chroma from 'chroma-js';\nimport { Hsluv } from 'hsluv';\nimport { ColorPalette } from '../types/theme';\n\
|
|
1
|
+
{"version":3,"file":"createColorPalette.js","sources":["../../src/theme/createColorPalette.ts"],"sourcesContent":["import chroma from 'chroma-js';\nimport { Hsluv } from 'hsluv';\nimport { ColorPalette } from '../types/theme';\n\n// All available stops (including 0 and 1000 for calculation)\nconst ALL_STOPS = [\n 0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950, 1000,\n] as const;\n\nconst LIGHTNESS_MIN = 0;\nconst LIGHTNESS_MAX = 100;\n\nexport type ColorStop = (typeof ALL_STOPS)[number];\n\n/**\n * Chroma-js based implementation for stable palette generation.\n *\n * Based on the approach from tints.dev.\n * @see https://github.com/SimeonGriggs/tints.dev/blob/main/app/lib/createhexColors.ts\n */\nexport const createColorPalette = (\n baseColor: `#${string}`,\n mode: 'light' | 'dark',\n colorStop: ColorStop,\n): ColorPalette => {\n const hueScale = ALL_STOPS.map((stop) => {\n const tweakValue = 0;\n\n return { stop, tweak: tweakValue };\n });\n\n // 2. Create saturation scale\n const saturationScale = ALL_STOPS.map((stop) => {\n const tweakValue = 0;\n\n return { stop, tweak: Math.min(tweakValue, 100) };\n });\n\n // 3. Create lightness distribution\n const hsluvLightness = new Hsluv();\n\n hsluvLightness.hex = baseColor;\n hsluvLightness.hexToHsluv();\n\n const lightnessValue = hsluvLightness.hsluv_l;\n\n // Create the three anchor points\n const distributionAnchors = [\n { stop: 0, tweak: LIGHTNESS_MAX },\n { stop: colorStop, tweak: lightnessValue },\n { stop: 1000, tweak: LIGHTNESS_MIN },\n ];\n\n // Interpolate for missing stops\n const distributionScale = ALL_STOPS.map((stop) => {\n // If it's an anchor point, use the anchor value\n const anchor = distributionAnchors.find((a) => a.stop === stop);\n\n if (anchor) {\n return anchor;\n }\n\n // Otherwise interpolate between anchor points\n let leftAnchor;\n let rightAnchor;\n\n if (stop < colorStop) {\n [leftAnchor, rightAnchor] = distributionAnchors;\n } else {\n [leftAnchor, rightAnchor] = distributionAnchors.slice(1);\n }\n\n if (!leftAnchor || !rightAnchor) {\n throw new Error('Invalid anchor points for interpolation');\n }\n\n // Linear interpolation\n const range = rightAnchor.stop - leftAnchor.stop;\n const position = stop - leftAnchor.stop;\n const ratio = position / range;\n const tweak =\n leftAnchor.tweak + (rightAnchor.tweak - leftAnchor.tweak) * ratio;\n\n return { stop, tweak: Math.round(tweak) };\n });\n\n const hexColors = ALL_STOPS.map((stop, stopIndex): string => {\n if (stop === colorStop) {\n return baseColor.toUpperCase();\n }\n\n // Get tweaks for this stop\n const hTweak = hueScale[stopIndex]?.tweak ?? 0;\n const sTweak = saturationScale[stopIndex]?.tweak ?? 0;\n const lTweak = distributionScale[stopIndex]?.tweak ?? 0;\n\n // HSLuv for perceived mode\n const hsluvPerceived = new Hsluv();\n\n hsluvPerceived.hex = baseColor;\n hsluvPerceived.hexToHsluv();\n\n // Handle grayscale colors in HSLuv (NaN hue)\n const normalizedHsluvH = Number.isNaN(hsluvPerceived.hsluv_h)\n ? 0\n : hsluvPerceived.hsluv_h;\n\n const newHsluvH = (normalizedHsluvH + hTweak) % 360;\n const newHsluvS = Math.max(\n 0,\n Math.min(100, hsluvPerceived.hsluv_s + sTweak),\n );\n\n const newHsluvL = Math.max(0, Math.min(100, lTweak));\n\n hsluvPerceived.hsluv_h = newHsluvH;\n hsluvPerceived.hsluv_s = newHsluvS;\n hsluvPerceived.hsluv_l = newHsluvL;\n hsluvPerceived.hsluvToHex();\n\n const newColor = chroma(hsluvPerceived.hex);\n\n return newColor.hex().toUpperCase();\n });\n\n const themeValues = mode === 'dark' ? hexColors : [...hexColors].reverse();\n\n const getStopValue = (index: number): string => {\n const value = themeValues[index];\n\n if (!value) {\n throw new Error(`No color found for stop index: ${index}`);\n }\n\n return value;\n };\n\n return {\n 50: getStopValue(1),\n 100: getStopValue(2),\n 200: getStopValue(3),\n 300: getStopValue(4),\n 400: getStopValue(5),\n 500: getStopValue(6),\n 600: getStopValue(7),\n 700: getStopValue(8),\n 800: getStopValue(9),\n 900: getStopValue(10),\n 950: getStopValue(11),\n };\n};\n"],"names":["ALL_STOPS","LIGHTNESS_MIN","LIGHTNESS_MAX","createColorPalette","baseColor","mode","colorStop","hueScale","stop","saturationScale","hsluvLightness","Hsluv","lightnessValue","distributionAnchors","distributionScale","anchor","a","leftAnchor","rightAnchor","range","ratio","tweak","hexColors","stopIndex","hTweak","sTweak","lTweak","hsluvPerceived","newHsluvH","newHsluvS","newHsluvL","chroma","themeValues","getStopValue","index","value"],"mappings":";;AAKA,MAAMA,IAAY;AAAA,EAChB;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAC3D,GAEMC,IAAgB,GAChBC,IAAgB,KAUTC,IAAqB,CAChCC,GACAC,GACAC,MACiB;AACjB,QAAMC,IAAWP,EAAU,IAAI,CAACQ,OAGvB,EAAE,MAAAA,GAAM,OAAO,EAAA,EACvB,GAGKC,IAAkBT,EAAU,IAAI,CAACQ,OAG9B,EAAE,MAAAA,GAAM,OAAO,KAAK,IAAI,GAAY,GAAG,EAAA,EAC/C,GAGKE,IAAiB,IAAIC,EAAA;AAE3B,EAAAD,EAAe,MAAMN,GACrBM,EAAe,WAAA;AAEf,QAAME,IAAiBF,EAAe,SAGhCG,IAAsB;AAAA,IAC1B,EAAE,MAAM,GAAG,OAAOX,EAAA;AAAA,IAClB,EAAE,MAAMI,GAAW,OAAOM,EAAA;AAAA,IAC1B,EAAE,MAAM,KAAM,OAAOX,EAAA;AAAA,EAAc,GAI/Ba,IAAoBd,EAAU,IAAI,CAACQ,MAAS;AAEhD,UAAMO,IAASF,EAAoB,KAAK,CAACG,MAAMA,EAAE,SAASR,CAAI;AAE9D,QAAIO;AACF,aAAOA;AAIT,QAAIE,GACAC;AAQJ,QANIV,IAAOF,IACT,CAACW,GAAYC,CAAW,IAAIL,IAE5B,CAACI,GAAYC,CAAW,IAAIL,EAAoB,MAAM,CAAC,GAGrD,CAACI,KAAc,CAACC;AAClB,YAAM,IAAI,MAAM,yCAAyC;AAI3D,UAAMC,IAAQD,EAAY,OAAOD,EAAW,MAEtCG,KADWZ,IAAOS,EAAW,QACVE,GACnBE,IACJJ,EAAW,SAASC,EAAY,QAAQD,EAAW,SAASG;AAE9D,WAAO,EAAE,MAAAZ,GAAM,OAAO,KAAK,MAAMa,CAAK,EAAA;AAAA,EACxC,CAAC,GAEKC,IAAYtB,EAAU,IAAI,CAACQ,GAAMe,MAAsB;AAC3D,QAAIf,MAASF;AACX,aAAOF,EAAU,YAAA;AAInB,UAAMoB,IAASjB,EAASgB,CAAS,GAAG,SAAS,GACvCE,IAAShB,EAAgBc,CAAS,GAAG,SAAS,GAC9CG,IAASZ,EAAkBS,CAAS,GAAG,SAAS,GAGhDI,IAAiB,IAAIhB,EAAA;AAE3B,IAAAgB,EAAe,MAAMvB,GACrBuB,EAAe,WAAA;AAOf,UAAMC,MAJmB,OAAO,MAAMD,EAAe,OAAO,IACxD,IACAA,EAAe,WAEmBH,KAAU,KAC1CK,IAAY,KAAK;AAAA,MACrB;AAAA,MACA,KAAK,IAAI,KAAKF,EAAe,UAAUF,CAAM;AAAA,IAAA,GAGzCK,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,KAAKJ,CAAM,CAAC;AAEnD,WAAAC,EAAe,UAAUC,GACzBD,EAAe,UAAUE,GACzBF,EAAe,UAAUG,GACzBH,EAAe,WAAA,GAEEI,EAAOJ,EAAe,GAAG,EAE1B,IAAA,EAAM,YAAA;AAAA,EACxB,CAAC,GAEKK,IAAc3B,MAAS,SAASiB,IAAY,CAAC,GAAGA,CAAS,EAAE,QAAA,GAE3DW,IAAe,CAACC,MAA0B;AAC9C,UAAMC,IAAQH,EAAYE,CAAK;AAE/B,QAAI,CAACC;AACH,YAAM,IAAI,MAAM,kCAAkCD,CAAK,EAAE;AAG3D,WAAOC;AAAA,EACT;AAEA,SAAO;AAAA,IACL,IAAIF,EAAa,CAAC;AAAA,IAClB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,CAAC;AAAA,IACnB,KAAKA,EAAa,EAAE;AAAA,IACpB,KAAKA,EAAa,EAAE;AAAA,EAAA;AAExB;"}
|
package/dist/types/theme.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export type Theme = {
|
|
|
6
6
|
primaryColor?: HexColor;
|
|
7
7
|
surfaceColor?: HexColor;
|
|
8
8
|
};
|
|
9
|
-
export type ColorPalette = Record<50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950
|
|
9
|
+
export type ColorPalette = Record<50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950, string>;
|
|
@@ -3,7 +3,7 @@ import { useState as y, useEffect as l, useCallback as B } from "react";
|
|
|
3
3
|
import { useTokenModal as R } from "../../hooks/useTokenModal.js";
|
|
4
4
|
import { useTypedTranslation as A } from "../../localisation.js";
|
|
5
5
|
import { WidgetDepositSkeleton as b } from "./WidgetDepositSkeleton.js";
|
|
6
|
-
import { b as F, u as q, y as N, n as j, c as O, p as Q, o as U, S as K } from "../../config-
|
|
6
|
+
import { b as F, u as q, y as N, n as j, c as O, p as Q, o as U, S as K } from "../../config-DWuCYXia.js";
|
|
7
7
|
import "@tanstack/react-query";
|
|
8
8
|
import "@headlessui/react";
|
|
9
9
|
import "framer-motion";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as o, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import a from "clsx";
|
|
3
3
|
import { SkeletonBox as s } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as i } from "../../config-
|
|
4
|
+
import { y as i } from "../../config-DWuCYXia.js";
|
|
5
5
|
const p = () => {
|
|
6
6
|
const { hideTokenInputHeadings: l } = i();
|
|
7
7
|
return /* @__PURE__ */ o("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
|
|
@@ -3,7 +3,7 @@ import { useState as b, useEffect as y } from "react";
|
|
|
3
3
|
import { useTokenModal as R } from "../../hooks/useTokenModal.js";
|
|
4
4
|
import { WidgetSwapSkeleton as S } from "./WidgetSwapSkeleton.js";
|
|
5
5
|
import { useTypedTranslation as D } from "../../localisation.js";
|
|
6
|
-
import { b as N, u as O, y as Q, n as j, c as q, p as w, o as F, S as U } from "../../config-
|
|
6
|
+
import { b as N, u as O, y as Q, n as j, c as q, p as w, o as F, S as U } from "../../config-DWuCYXia.js";
|
|
7
7
|
import "@tanstack/react-query";
|
|
8
8
|
import "@headlessui/react";
|
|
9
9
|
import "framer-motion";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as a, jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import o from "clsx";
|
|
3
3
|
import { SkeletonBox as s } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as i } from "../../config-
|
|
4
|
+
import { y as i } from "../../config-DWuCYXia.js";
|
|
5
5
|
const m = () => {
|
|
6
6
|
const { hideTokenInputHeadings: e } = i();
|
|
7
7
|
return /* @__PURE__ */ a("div", { className: "w-full gap-sw-lg relative flex flex-col", children: [
|
|
@@ -3,7 +3,7 @@ import { useState as w, useEffect as b } from "react";
|
|
|
3
3
|
import { useTokenModal as B } from "../../hooks/useTokenModal.js";
|
|
4
4
|
import { WidgetWithdrawSkeleton as y } from "./WidgetWithdrawSkeleton.js";
|
|
5
5
|
import { useTypedTranslation as D } from "../../localisation.js";
|
|
6
|
-
import { b as N, u as O, y as Q, n as j, c as q, p as S, o as F, S as U } from "../../config-
|
|
6
|
+
import { b as N, u as O, y as Q, n as j, c as q, p as S, o as F, S as U } from "../../config-DWuCYXia.js";
|
|
7
7
|
import "@tanstack/react-query";
|
|
8
8
|
import "@headlessui/react";
|
|
9
9
|
import "framer-motion";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import o from "clsx";
|
|
3
3
|
import { SkeletonBox as l } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as x } from "../../config-
|
|
4
|
+
import { y as x } from "../../config-DWuCYXia.js";
|
|
5
5
|
const p = () => {
|
|
6
6
|
const { hideTokenInputHeadings: s } = x();
|
|
7
7
|
return /* @__PURE__ */ a("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
|
package/package.json
CHANGED
|
@@ -2,6 +2,6 @@ import * as Icons from 'lucide-react';
|
|
|
2
2
|
|
|
3
3
|
export const AllNetworksIcon = () => (
|
|
4
4
|
<div className="bg-sw-accent-500 flex h-[28px] w-[28px] items-center justify-center">
|
|
5
|
-
<Icons.Target size={16} className="text-sw-accent-
|
|
5
|
+
<Icons.Target size={16} className="text-sw-accent-950" />
|
|
6
6
|
</div>
|
|
7
7
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Icons from 'lucide-react';
|
|
2
2
|
|
|
3
3
|
export const CheckIcon = () => (
|
|
4
|
-
<div className="mb-sw-xl bg-sw-status-success text-sw-gray-
|
|
4
|
+
<div className="mb-sw-xl bg-sw-status-success text-sw-gray-950 flex h-[44px] w-[44px] items-center justify-center rounded-full">
|
|
5
5
|
<Icons.Check size={24} />
|
|
6
6
|
</div>
|
|
7
7
|
);
|
|
@@ -2,7 +2,7 @@ import { isBrowser } from 'browser-or-node';
|
|
|
2
2
|
import { createContext, type ReactNode, useEffect, useMemo } from 'react';
|
|
3
3
|
|
|
4
4
|
import { ColorPalette, ColorScheme, HexColor, Theme } from '../types/theme';
|
|
5
|
-
import { createColorPalette } from './createColorPalette';
|
|
5
|
+
import { ColorStop, createColorPalette } from './createColorPalette';
|
|
6
6
|
import { useConfig } from '@/config';
|
|
7
7
|
|
|
8
8
|
const setColorVariables = (
|
|
@@ -25,13 +25,12 @@ const setColorVariables = (
|
|
|
25
25
|
|
|
26
26
|
const setColorPalette = (
|
|
27
27
|
colorKey: string,
|
|
28
|
+
colorStop: ColorStop,
|
|
28
29
|
parentEl: Element | null,
|
|
29
|
-
baseColor
|
|
30
|
-
colorScheme
|
|
30
|
+
baseColor: HexColor,
|
|
31
|
+
colorScheme: ColorScheme,
|
|
31
32
|
) => {
|
|
32
|
-
const palette = baseColor
|
|
33
|
-
? createColorPalette(baseColor, colorScheme ?? 'dark')
|
|
34
|
-
: null;
|
|
33
|
+
const palette = createColorPalette(baseColor, colorScheme, colorStop);
|
|
35
34
|
|
|
36
35
|
if (!palette) {
|
|
37
36
|
return;
|
|
@@ -41,10 +40,15 @@ const setColorPalette = (
|
|
|
41
40
|
};
|
|
42
41
|
|
|
43
42
|
const loadTheme = (parentEl: Element | null, theme: Theme) => {
|
|
44
|
-
const { primaryColor, surfaceColor, colorScheme } = theme;
|
|
43
|
+
const { primaryColor, surfaceColor, colorScheme = 'dark' } = theme;
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
if (primaryColor) {
|
|
46
|
+
setColorPalette('accent', 500, parentEl, primaryColor, colorScheme);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (surfaceColor) {
|
|
50
|
+
setColorPalette('gray', 950, parentEl, surfaceColor, colorScheme);
|
|
51
|
+
}
|
|
48
52
|
};
|
|
49
53
|
|
|
50
54
|
export const ThemeContext = createContext<Theme | undefined>(undefined);
|
|
@@ -2,12 +2,15 @@ import chroma from 'chroma-js';
|
|
|
2
2
|
import { Hsluv } from 'hsluv';
|
|
3
3
|
import { ColorPalette } from '../types/theme';
|
|
4
4
|
|
|
5
|
-
const VALUE_STOP = 500;
|
|
6
|
-
|
|
7
5
|
// All available stops (including 0 and 1000 for calculation)
|
|
8
6
|
const ALL_STOPS = [
|
|
9
7
|
0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950, 1000,
|
|
10
|
-
];
|
|
8
|
+
] as const;
|
|
9
|
+
|
|
10
|
+
const LIGHTNESS_MIN = 0;
|
|
11
|
+
const LIGHTNESS_MAX = 100;
|
|
12
|
+
|
|
13
|
+
export type ColorStop = (typeof ALL_STOPS)[number];
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Chroma-js based implementation for stable palette generation.
|
|
@@ -18,14 +21,8 @@ const ALL_STOPS = [
|
|
|
18
21
|
export const createColorPalette = (
|
|
19
22
|
baseColor: `#${string}`,
|
|
20
23
|
mode: 'light' | 'dark',
|
|
24
|
+
colorStop: ColorStop,
|
|
21
25
|
): ColorPalette => {
|
|
22
|
-
// 1. Create hue scale
|
|
23
|
-
const valueStopIndex = ALL_STOPS.indexOf(VALUE_STOP);
|
|
24
|
-
|
|
25
|
-
if (valueStopIndex === -1) {
|
|
26
|
-
throw new Error(`Invalid valueStop: ${VALUE_STOP}`);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
26
|
const hueScale = ALL_STOPS.map((stop) => {
|
|
30
27
|
const tweakValue = 0;
|
|
31
28
|
|
|
@@ -49,9 +46,9 @@ export const createColorPalette = (
|
|
|
49
46
|
|
|
50
47
|
// Create the three anchor points
|
|
51
48
|
const distributionAnchors = [
|
|
52
|
-
{ stop: 0, tweak:
|
|
53
|
-
{ stop:
|
|
54
|
-
{ stop: 1000, tweak:
|
|
49
|
+
{ stop: 0, tweak: LIGHTNESS_MAX },
|
|
50
|
+
{ stop: colorStop, tweak: lightnessValue },
|
|
51
|
+
{ stop: 1000, tweak: LIGHTNESS_MIN },
|
|
55
52
|
];
|
|
56
53
|
|
|
57
54
|
// Interpolate for missing stops
|
|
@@ -67,7 +64,7 @@ export const createColorPalette = (
|
|
|
67
64
|
let leftAnchor;
|
|
68
65
|
let rightAnchor;
|
|
69
66
|
|
|
70
|
-
if (stop <
|
|
67
|
+
if (stop < colorStop) {
|
|
71
68
|
[leftAnchor, rightAnchor] = distributionAnchors;
|
|
72
69
|
} else {
|
|
73
70
|
[leftAnchor, rightAnchor] = distributionAnchors.slice(1);
|
|
@@ -88,7 +85,7 @@ export const createColorPalette = (
|
|
|
88
85
|
});
|
|
89
86
|
|
|
90
87
|
const hexColors = ALL_STOPS.map((stop, stopIndex): string => {
|
|
91
|
-
if (stop ===
|
|
88
|
+
if (stop === colorStop) {
|
|
92
89
|
return baseColor.toUpperCase();
|
|
93
90
|
}
|
|
94
91
|
|
|
@@ -126,7 +123,7 @@ export const createColorPalette = (
|
|
|
126
123
|
return newColor.hex().toUpperCase();
|
|
127
124
|
});
|
|
128
125
|
|
|
129
|
-
const themeValues = mode === '
|
|
126
|
+
const themeValues = mode === 'dark' ? hexColors : [...hexColors].reverse();
|
|
130
127
|
|
|
131
128
|
const getStopValue = (index: number): string => {
|
|
132
129
|
const value = themeValues[index];
|
|
@@ -150,6 +147,5 @@ export const createColorPalette = (
|
|
|
150
147
|
800: getStopValue(9),
|
|
151
148
|
900: getStopValue(10),
|
|
152
149
|
950: getStopValue(11),
|
|
153
|
-
975: getStopValue(12),
|
|
154
150
|
};
|
|
155
151
|
};
|