diff --git a/.github/ISSUE_TEMPLATE/DEBT.yml b/.github/ISSUE_TEMPLATE/DEBT.yml index 2b6b376a7b..e79209c203 100644 --- a/.github/ISSUE_TEMPLATE/DEBT.yml +++ b/.github/ISSUE_TEMPLATE/DEBT.yml @@ -1,16 +1,16 @@ name: Technical Debt description: File technical debt -title: "[Tech Debt]: " -labels: ["technical debt"] +title: '[Tech Debt]: ' +labels: ['technical debt'] body: - - type: markdown - attributes: - value: "Thanks for taking the time to document deferred engineering work!" - - type: textarea - id: work-required - attributes: - label: What is needed? - description: Tell / show what work is being deferred, (link back to the codebase with TODO if possible). - placeholder: What work is being deferred? (NOTE solutioning is not needed here) - validations: - required: true + - type: markdown + attributes: + value: 'Thanks for taking the time to document deferred engineering work!' + - type: textarea + id: work-required + attributes: + label: What is needed? + description: Tell / show what work is being deferred, (link back to the codebase with TODO if possible). + placeholder: What work is being deferred? (NOTE solutioning is not needed here) + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/NEW.yml b/.github/ISSUE_TEMPLATE/NEW.yml index afb654610f..52e3ce912f 100644 --- a/.github/ISSUE_TEMPLATE/NEW.yml +++ b/.github/ISSUE_TEMPLATE/NEW.yml @@ -1,32 +1,32 @@ name: Enhancement description: File an Enhancement -title: "[Enhancement]: " -labels: ["enhancement"] +title: '[Enhancement]: ' +labels: ['enhancement'] body: - - type: markdown - attributes: - value: "Thanks for taking the time to fill out this ticket!" - - type: textarea - id: requirements - attributes: - label: Requirements - description: Tell / show the feature requirements, screenshots are helpful! - placeholder: e.x. A new modal needs to open when the user... - validations: - required: true - - type: textarea - id: figma - attributes: - label: Figma - description: Drop a Figma link if this enhancement impacts the UX. - placeholder: https://... - validations: - required: false - - type: textarea - id: assumptions - attributes: - label: Assumptions - description: What are the underlying assumptions guiding implementation? - placeholder: e.x. 1. users are not able to access this modal without... - validations: - required: false + - type: markdown + attributes: + value: 'Thanks for taking the time to fill out this ticket!' + - type: textarea + id: requirements + attributes: + label: Requirements + description: Tell / show the feature requirements, screenshots are helpful! + placeholder: e.x. A new modal needs to open when the user... + validations: + required: true + - type: textarea + id: figma + attributes: + label: Figma + description: Drop a Figma link if this enhancement impacts the UX. + placeholder: https://... + validations: + required: false + - type: textarea + id: assumptions + attributes: + label: Assumptions + description: What are the underlying assumptions guiding implementation? + placeholder: e.x. 1. users are not able to access this modal without... + validations: + required: false diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5f0889ce91..545d533463 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,7 @@ version: 2 updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "weekly" + - package-ecosystem: 'npm' # See documentation for possible values + directory: '/' # Location of package manifests + schedule: + interval: 'weekly' diff --git a/.github/issue_template.md b/.github/issue_template.md index e19f0af259..8b7db0ad0c 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -6,17 +6,14 @@ _Describe the Issue_ 2. click button ... 3. ... - ### Expected _Describe what was expected_ - ### Actual _Describe what actually occurred_ - ------- +--- _Attach screen caps here_ diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 326e0006ec..c33fab8323 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,16 +1,20 @@ -### Describe your changes +### Describe your changes + _Describe the purpose + content of these changes_ ### Link the related issue + _Closes #0000_ ### Checklist before requesting a review -- [ ] Is this PR ready for merge? (Please convert to a draft PR otherwise) -- [ ] I have performed a self-review of my code. -- [ ] Did I request feedback from a team member prior to the merge? -- [ ] Does my code following the style guide at `docs/CODING-STYLE.md`? + +- [ ] Is this PR ready for merge? (Please convert to a draft PR otherwise) +- [ ] I have performed a self-review of my code. +- [ ] Did I request feedback from a team member prior to the merge? +- [ ] Does my code following the style guide at `docs/CODING-STYLE.md`? ### Instructions for Reviewers + **Functionalities or workflows that should specifically be tested.** 1. diff --git a/docs/CODING-STYLE.md b/docs/CODING-STYLE.md index d0f8b9516a..330c4874f3 100644 --- a/docs/CODING-STYLE.md +++ b/docs/CODING-STYLE.md @@ -1,42 +1,48 @@ #### Coding Style Checklist -Please follow these items as close to as possible for your PR. Please add a description or link a Git issue for context. Check off relevant items and remove them as not needed. These will help your reviewer find similar ground for starting their review from. +Please follow these items as close to as possible for your PR. Please add a description or link a Git issue for context. Check off relevant items and remove them as not needed. These will help your reviewer find similar ground for starting their review from. #### Workflow Adherence -- [ ] Has an issue been created that this PR addresses? -- [ ] Has the PR been set to close relevant issues on GitHub? -- [ ] Did you pull code from branch `origin/develop` prior to submitting the PR? + +- [ ] Has an issue been created that this PR addresses? +- [ ] Has the PR been set to close relevant issues on GitHub? +- [ ] Did you pull code from branch `origin/develop` prior to submitting the PR? #### Code Quality -- [ ] Does the code stick to our formatting and code standards? -- [ ] Are magic numbers declared in centralized `const` variables? -- [ ] Did you run Prettier before creating the PR? -- [ ] Really? (Emily this means you) -- [ ] Do functions return a value through a single exit point? -- [ ] Does the app compile without errors or warnings? -- [ ] Has commented-out code been deleted or marked with a note to request preservation? -- [ ] Does error handling use `console.warn` or `console.error` for handled and unhandled exceptions, respectively? Does this logging reference the generating file? -- [ ] Have console commands been restricted with environmental variables (e.g. dev environment only) as appropriate? -- [ ] Are keyboard events tracked with `e.key` or `e.code` instead of `e.charCode` or `e.keyCode`? + +- [ ] Does the code stick to our formatting and code standards? +- [ ] Are magic numbers declared in centralized `const` variables? +- [ ] Did you run Prettier before creating the PR? +- [ ] Really? (Emily this means you) +- [ ] Do functions return a value through a single exit point? +- [ ] Does the app compile without errors or warnings? +- [ ] Has commented-out code been deleted or marked with a note to request preservation? +- [ ] Does error handling use `console.warn` or `console.error` for handled and unhandled exceptions, respectively? Does this logging reference the generating file? +- [ ] Have console commands been restricted with environmental variables (e.g. dev environment only) as appropriate? +- [ ] Are keyboard events tracked with `e.key` or `e.code` instead of `e.charCode` or `e.keyCode`? #### TypeScript -- [ ] Are all functions given a typed return? -- [ ] Are overloads used where a function has multiple possible return types? + +- [ ] Are all functions given a typed return? +- [ ] Are overloads used where a function has multiple possible return types? #### JSX Files -- [ ] Do JSX files contain one and only one React functional component? -- [ ] Are props checked against an interface defined locally and declared as `propsIF`? -- [ ] Is each JSX file located in its own sub-directory? -- [ ] Do JSX files map 1:1 with related files? (eg CSS modules, test files, etc) -- [ ] Are React functional components declared as a default export? + +- [ ] Do JSX files contain one and only one React functional component? +- [ ] Are props checked against an interface defined locally and declared as `propsIF`? +- [ ] Is each JSX file located in its own sub-directory? +- [ ] Do JSX files map 1:1 with related files? (eg CSS modules, test files, etc) +- [ ] Are React functional components declared as a default export? #### Data Management -- [ ] Are data fetches described with an interface for the incoming data shape and an extended interface for the internal post-decorating specification? -- [ ] Are data and relevant methods packaged together in objects? -- [ ] Are objects instantiated through a centralized process when made in parallel? (factory function, class constructor, etc) -- [ ] Are classes checked against an interface via the `implements` keyword? -- [ ] Is newly-written logic necessary due to a lack of centralized logic? -- [ ] Is every top-level code block explained with a comment? + +- [ ] Are data fetches described with an interface for the incoming data shape and an extended interface for the internal post-decorating specification? +- [ ] Are data and relevant methods packaged together in objects? +- [ ] Are objects instantiated through a centralized process when made in parallel? (factory function, class constructor, etc) +- [ ] Are classes checked against an interface via the `implements` keyword? +- [ ] Is newly-written logic necessary due to a lack of centralized logic? +- [ ] Is every top-level code block explained with a comment? #### Testing -- [ ] Are unit tests used where possible? In most cases, tests should be present for APIs, interfaces with data access, transformation, backend elements and models, with the Arrange/Act/Assert pattern and documentation. + +- [ ] Are unit tests used where possible? In most cases, tests should be present for APIs, interfaces with data access, transformation, backend elements and models, with the Arrange/Act/Assert pattern and documentation. diff --git a/src/App/App.css b/src/App/App.css index 8257c8b18f..a3ebf0b499 100644 --- a/src/App/App.css +++ b/src/App/App.css @@ -83,8 +83,6 @@ body { /* padding: 0 1rem; */ } - - h3:focus-visible, h2:focus-visible, h1:focus-visible, @@ -347,26 +345,22 @@ input[type='number'] { .custom_scroll_ambient::-webkit-scrollbar { width: 5px !important; - } - - - /* Handle */ - .custom_scroll_ambient::-webkit-scrollbar-thumb { - background: - linear-gradient( + } + + /* Handle */ + .custom_scroll_ambient::-webkit-scrollbar-thumb { + background: linear-gradient( 0deg, var(--accent1) 0%, var(--accent5) 49.48%, var(--accent1) 100% ) !important; - } + } - /* .custom_scroll_ambient{ + /* .custom_scroll_ambient{ scrollbar-width: thin; scrollbar-color: transparent; } */ - - } @media only screen and (min-width: 1280px) { diff --git a/src/App/components/GlobalPopup/GlobalPopup.tsx b/src/App/components/GlobalPopup/GlobalPopup.tsx index db59b5734e..f8e9be904d 100644 --- a/src/App/components/GlobalPopup/GlobalPopup.tsx +++ b/src/App/components/GlobalPopup/GlobalPopup.tsx @@ -14,10 +14,10 @@ function GlobalPopup() { placement === 'left' ? styles.popup_left : placement === 'center' - ? styles.popup_center - : placement === 'right' - ? styles.popup_right - : styles.popup_right; + ? styles.popup_center + : placement === 'right' + ? styles.popup_right + : styles.popup_right; return (
{ const [fullLayoutActive, setFullLayoutActive] = useState(false); const [tokenModalOpen, setTokenModalOpen] = useState(false); const escapePressed = useKeyPress('Escape'); - useEffect(() => { if (fullLayoutActive && !tokenModalOpen && escapePressed) { diff --git a/src/App/components/PageHeader/MobileDropdown/MobileDropdown.module.css b/src/App/components/PageHeader/MobileDropdown/MobileDropdown.module.css index 3f6f21f7fb..5bee22f742 100644 --- a/src/App/components/PageHeader/MobileDropdown/MobileDropdown.module.css +++ b/src/App/components/PageHeader/MobileDropdown/MobileDropdown.module.css @@ -1,4 +1,4 @@ -.container{ +.container { padding: 8px; position: absolute; @@ -6,8 +6,6 @@ z-index: 999; background: var(--dark1); border-radius: 16px; - - width: 100%; height: 100%; @@ -16,25 +14,20 @@ gap: 1rem; overflow-y: auto; /* justify-content: space-between; */ - height: calc(100dvh - 114px); - background: rgba( 18, 18, 26, 0.88 ); -box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 ); -backdrop-filter: blur( 17.5px ); --webkit-backdrop-filter: blur( 17.5px ); -border-radius: 10px; -border-top: 1px solid rgba( 255, 255, 255, 0.18 ); - - - /* trial*/ - - + background: rgba(18, 18, 26, 0.88); + box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); + backdrop-filter: blur(17.5px); + -webkit-backdrop-filter: blur(17.5px); + border-radius: 10px; + border-top: 1px solid rgba(255, 255, 255, 0.18); + /* trial*/ } -.navigationContainer{ +.navigationContainer { width: 100%; display: flex; flex-direction: column; @@ -42,7 +35,7 @@ border-top: 1px solid rgba( 255, 255, 255, 0.18 ); align-items: center; } -.navIcons{ +.navIcons { width: 100%; display: flex; flex-direction: row; @@ -51,36 +44,32 @@ border-top: 1px solid rgba( 255, 255, 255, 0.18 ); gap: 8px; } -.navIcon{ +.navIcon { width: 30px; height: 30px; border-radius: 50%; - background: var(--dark3); + background: var(--dark3); display: flex; justify-content: center; align-items: center; } -.userContentContainer{ +.userContentContainer { display: flex; flex-direction: column; gap: 16px; } -.linksContainer{ +.linksContainer { display: flex; flex-direction: column; gap: 8px; } -.linksContent{ +.linksContent { display: flex; flex-direction: column; width: 100%; } - - - - -.actionsContainer{ +.actionsContainer { width: 100%; display: grid; grid-template-columns: repeat(2, 1fr); @@ -93,7 +82,7 @@ border-top: 1px solid rgba( 255, 255, 255, 0.18 ); color: var(--text-grey-white); } -.accountLink{ +.accountLink { cursor: pointer; border: none; outline: none; @@ -108,4 +97,4 @@ border-top: 1px solid rgba( 255, 255, 255, 0.18 ); background: var(--dark3); text-decoration: none; color: var(--text2); -} \ No newline at end of file +} diff --git a/src/App/components/PageHeader/NavItem/NavItem.module.css b/src/App/components/PageHeader/NavItem/NavItem.module.css index f2094236b8..007e4b5fad 100644 --- a/src/App/components/PageHeader/NavItem/NavItem.module.css +++ b/src/App/components/PageHeader/NavItem/NavItem.module.css @@ -16,7 +16,7 @@ width: 30px; height: 30px; background-color: var(--dark2); - border-radius: 4px; + border-radius: 4px; padding: 5px; transition: var(--transition); cursor: pointer; @@ -40,10 +40,8 @@ @media only screen and (max-width: 768px) { .navItemIconButton { - -border-radius: 50%; -width: 35px; -height: 35px; + border-radius: 50%; + width: 35px; + height: 35px; } - -} \ No newline at end of file +} diff --git a/src/App/components/PageHeader/NavItem/NavItem.tsx b/src/App/components/PageHeader/NavItem/NavItem.tsx index 2a066f39c6..09a3d64529 100644 --- a/src/App/components/PageHeader/NavItem/NavItem.tsx +++ b/src/App/components/PageHeader/NavItem/NavItem.tsx @@ -12,7 +12,7 @@ import React, { import UseOnClickOutside from '../../../../utils/hooks/useOnClickOutside'; import { AppStateContext } from '../../../../contexts/AppStateContext'; -import styles from './NavItem.module.css' +import styles from './NavItem.module.css'; interface NavItemPropsIF { children: ReactNode; icon: ReactNode; @@ -51,13 +51,14 @@ function NavItem(props: NavItemPropsIF) { }); return ( -
-
+
)} diff --git a/src/components/Chat/EmojiMeta.ts b/src/components/Chat/EmojiMeta.ts index fbfefbbc93..c266c23770 100644 --- a/src/components/Chat/EmojiMeta.ts +++ b/src/components/Chat/EmojiMeta.ts @@ -3,4 +3,1978 @@ export interface EmojiMetaData { unifiedChar: string; } -export const emojiMeta:EmojiMetaData[] = [{'ariaLabel':'smiley','unifiedChar':'1f603'},{'ariaLabel':'grinning','unifiedChar':'1f600'},{'ariaLabel':'smiley','unifiedChar':'1f603'},{'ariaLabel':'smile','unifiedChar':'1f604'},{'ariaLabel':'grin','unifiedChar':'1f601'},{'ariaLabel':'laughing','unifiedChar':'1f606'},{'ariaLabel':'sweat smile','unifiedChar':'1f605'},{'ariaLabel':'rolling on the floor laughing','unifiedChar':'1f923'},{'ariaLabel':'joy','unifiedChar':'1f602'},{'ariaLabel':'slightly smiling face','unifiedChar':'1f642'},{'ariaLabel':'upside-down face','unifiedChar':'1f643'},{'ariaLabel':'melting face','unifiedChar':'1fae0'},{'ariaLabel':'wink','unifiedChar':'1f609'},{'ariaLabel':'blush','unifiedChar':'1f60a'},{'ariaLabel':'innocent','unifiedChar':'1f607'},{'ariaLabel':'smiling face with 3 hearts','unifiedChar':'1f970'},{'ariaLabel':'heart eyes','unifiedChar':'1f60d'},{'ariaLabel':'star-struck','unifiedChar':'1f929'},{'ariaLabel':'kissing heart','unifiedChar':'1f618'},{'ariaLabel':'kissing','unifiedChar':'1f617'},{'ariaLabel':'relaxed','unifiedChar':'263a-fe0f'},{'ariaLabel':'kissing closed eyes','unifiedChar':'1f61a'},{'ariaLabel':'kissing smiling eyes','unifiedChar':'1f619'},{'ariaLabel':'smiling face with tear','unifiedChar':'1f972'},{'ariaLabel':'yum','unifiedChar':'1f60b'},{'ariaLabel':'stuck out tongue','unifiedChar':'1f61b'},{'ariaLabel':'stuck out tongue winking eye','unifiedChar':'1f61c'},{'ariaLabel':'zany face','unifiedChar':'1f92a'},{'ariaLabel':'stuck out tongue closed eyes','unifiedChar':'1f61d'},{'ariaLabel':'money-mouth face','unifiedChar':'1f911'},{'ariaLabel':'hugging face','unifiedChar':'1f917'},{'ariaLabel':'face with hand over mouth','unifiedChar':'1f92d'},{'ariaLabel':'face with open eyes and hand over mouth','unifiedChar':'1fae2'},{'ariaLabel':'face with peeking eye','unifiedChar':'1fae3'},{'ariaLabel':'shushing face','unifiedChar':'1f92b'},{'ariaLabel':'thinking face','unifiedChar':'1f914'},{'ariaLabel':'saluting face','unifiedChar':'1fae1'},{'ariaLabel':'zipper-mouth face','unifiedChar':'1f910'},{'ariaLabel':'face with raised eyebrow','unifiedChar':'1f928'},{'ariaLabel':'neutral face','unifiedChar':'1f610'},{'ariaLabel':'expressionless','unifiedChar':'1f611'},{'ariaLabel':'no mouth','unifiedChar':'1f636'},{'ariaLabel':'dotted line face','unifiedChar':'1fae5'},{'ariaLabel':'face in clouds','unifiedChar':'1f636-200d-1f32b-fe0f'},{'ariaLabel':'smirk','unifiedChar':'1f60f'},{'ariaLabel':'unamused','unifiedChar':'1f612'},{'ariaLabel':'face with rolling eyes','unifiedChar':'1f644'},{'ariaLabel':'grimacing','unifiedChar':'1f62c'},{'ariaLabel':'face exhaling','unifiedChar':'1f62e-200d-1f4a8'},{'ariaLabel':'lying face','unifiedChar':'1f925'},{'ariaLabel':'relieved','unifiedChar':'1f60c'},{'ariaLabel':'pensive','unifiedChar':'1f614'},{'ariaLabel':'sleepy','unifiedChar':'1f62a'},{'ariaLabel':'drooling face','unifiedChar':'1f924'},{'ariaLabel':'sleeping','unifiedChar':'1f634'},{'ariaLabel':'mask','unifiedChar':'1f637'},{'ariaLabel':'face with thermometer','unifiedChar':'1f912'},{'ariaLabel':'face with head-bandage','unifiedChar':'1f915'},{'ariaLabel':'nauseated face','unifiedChar':'1f922'},{'ariaLabel':'face vomiting','unifiedChar':'1f92e'},{'ariaLabel':'sneezing face','unifiedChar':'1f927'},{'ariaLabel':'hot face','unifiedChar':'1f975'},{'ariaLabel':'cold face','unifiedChar':'1f976'},{'ariaLabel':'woozy face','unifiedChar':'1f974'},{'ariaLabel':'dizzy face','unifiedChar':'1f635'},{'ariaLabel':'face with spiral eyes','unifiedChar':'1f635-200d-1f4ab'},{'ariaLabel':'exploding head','unifiedChar':'1f92f'},{'ariaLabel':'face with cowboy hat','unifiedChar':'1f920'},{'ariaLabel':'partying face','unifiedChar':'1f973'},{'ariaLabel':'disguised face','unifiedChar':'1f978'},{'ariaLabel':'sunglasses','unifiedChar':'1f60e'},{'ariaLabel':'nerd face','unifiedChar':'1f913'},{'ariaLabel':'face with monocle','unifiedChar':'1f9d0'},{'ariaLabel':'confused','unifiedChar':'1f615'},{'ariaLabel':'face with diagonal mouth','unifiedChar':'1fae4'},{'ariaLabel':'worried','unifiedChar':'1f61f'},{'ariaLabel':'slightly frowning face','unifiedChar':'1f641'},{'ariaLabel':'frowning face','unifiedChar':'2639-fe0f'},{'ariaLabel':'open mouth','unifiedChar':'1f62e'},{'ariaLabel':'hushed','unifiedChar':'1f62f'},{'ariaLabel':'astonished','unifiedChar':'1f632'},{'ariaLabel':'flushed','unifiedChar':'1f633'},{'ariaLabel':'pleading face','unifiedChar':'1f97a'},{'ariaLabel':'face holding back tears','unifiedChar':'1f979'},{'ariaLabel':'frowning','unifiedChar':'1f626'},{'ariaLabel':'anguished','unifiedChar':'1f627'},{'ariaLabel':'fearful','unifiedChar':'1f628'},{'ariaLabel':'cold sweat','unifiedChar':'1f630'},{'ariaLabel':'disappointed relieved','unifiedChar':'1f625'},{'ariaLabel':'cry','unifiedChar':'1f622'},{'ariaLabel':'sob','unifiedChar':'1f62d'},{'ariaLabel':'scream','unifiedChar':'1f631'},{'ariaLabel':'confounded','unifiedChar':'1f616'},{'ariaLabel':'persevere','unifiedChar':'1f623'},{'ariaLabel':'disappointed','unifiedChar':'1f61e'},{'ariaLabel':'sweat','unifiedChar':'1f613'},{'ariaLabel':'weary','unifiedChar':'1f629'},{'ariaLabel':'tired face','unifiedChar':'1f62b'},{'ariaLabel':'yawning face','unifiedChar':'1f971'},{'ariaLabel':'triumph','unifiedChar':'1f624'},{'ariaLabel':'rage','unifiedChar':'1f621'},{'ariaLabel':'angry','unifiedChar':'1f620'},{'ariaLabel':'face with symbols on mouth','unifiedChar':'1f92c'},{'ariaLabel':'smiling imp','unifiedChar':'1f608'},{'ariaLabel':'imp','unifiedChar':'1f47f'},{'ariaLabel':'skull','unifiedChar':'1f480'},{'ariaLabel':'skull and crossbones','unifiedChar':'2620-fe0f'},{'ariaLabel':'poop','unifiedChar':'1f4a9'},{'ariaLabel':'clown face','unifiedChar':'1f921'},{'ariaLabel':'japanese ogre','unifiedChar':'1f479'},{'ariaLabel':'japanese goblin','unifiedChar':'1f47a'},{'ariaLabel':'ghost','unifiedChar':'1f47b'},{'ariaLabel':'alien','unifiedChar':'1f47d'},{'ariaLabel':'alien monster','unifiedChar':'1f47e'},{'ariaLabel':'robot face','unifiedChar':'1f916'},{'ariaLabel':'smiley cat','unifiedChar':'1f63a'},{'ariaLabel':'smile cat','unifiedChar':'1f638'},{'ariaLabel':'joy cat','unifiedChar':'1f639'},{'ariaLabel':'heart eyes cat','unifiedChar':'1f63b'},{'ariaLabel':'smirk cat','unifiedChar':'1f63c'},{'ariaLabel':'kissing cat','unifiedChar':'1f63d'},{'ariaLabel':'scream cat','unifiedChar':'1f640'},{'ariaLabel':'crying cat face','unifiedChar':'1f63f'},{'ariaLabel':'pouting cat','unifiedChar':'1f63e'},{'ariaLabel':'see no evil','unifiedChar':'1f648'},{'ariaLabel':'hear no evil','unifiedChar':'1f649'},{'ariaLabel':'speak no evil','unifiedChar':'1f64a'},{'ariaLabel':'kiss','unifiedChar':'1f48b'},{'ariaLabel':'love letter','unifiedChar':'1f48c'},{'ariaLabel':'cupid','unifiedChar':'1f498'},{'ariaLabel':'gift heart','unifiedChar':'1f49d'},{'ariaLabel':'sparkling heart','unifiedChar':'1f496'},{'ariaLabel':'heartpulse','unifiedChar':'1f497'},{'ariaLabel':'heartbeat','unifiedChar':'1f493'},{'ariaLabel':'revolving hearts','unifiedChar':'1f49e'},{'ariaLabel':'two hearts','unifiedChar':'1f495'},{'ariaLabel':'heart decoration','unifiedChar':'1f49f'},{'ariaLabel':'heart exclamation','unifiedChar':'2763-fe0f'},{'ariaLabel':'broken heart','unifiedChar':'1f494'},{'ariaLabel':'heart on fire','unifiedChar':'2764-fe0f-200d-1f525'},{'ariaLabel':'mending heart','unifiedChar':'2764-fe0f-200d-1fa79'},{'ariaLabel':'heart','unifiedChar':'2764-fe0f'},{'ariaLabel':'orange heart','unifiedChar':'1f9e1'},{'ariaLabel':'yellow heart','unifiedChar':'1f49b'},{'ariaLabel':'green heart','unifiedChar':'1f49a'},{'ariaLabel':'blue heart','unifiedChar':'1f499'},{'ariaLabel':'purple heart','unifiedChar':'1f49c'},{'ariaLabel':'brown heart','unifiedChar':'1f90e'},{'ariaLabel':'black heart','unifiedChar':'1f5a4'},{'ariaLabel':'white heart','unifiedChar':'1f90d'},{'ariaLabel':'100','unifiedChar':'1f4af'},{'ariaLabel':'anger','unifiedChar':'1f4a2'},{'ariaLabel':'boom','unifiedChar':'1f4a5'},{'ariaLabel':'dizzy','unifiedChar':'1f4ab'},{'ariaLabel':'sweat drops','unifiedChar':'1f4a6'},{'ariaLabel':'dash','unifiedChar':'1f4a8'},{'ariaLabel':'hole','unifiedChar':'1f573-fe0f'},{'ariaLabel':'bomb','unifiedChar':'1f4a3'},{'ariaLabel':'speech balloon','unifiedChar':'1f4ac'},{'ariaLabel':'eye in speech bubble','unifiedChar':'1f441-fe0f-200d-1f5e8-fe0f'},{'ariaLabel':'left speech bubble','unifiedChar':'1f5e8-fe0f'},{'ariaLabel':'right anger bubble','unifiedChar':'1f5ef-fe0f'},{'ariaLabel':'thought balloon','unifiedChar':'1f4ad'},{'ariaLabel':'zzz','unifiedChar':'1f4a4'},{'ariaLabel':'wave','unifiedChar':'1f44b'},{'ariaLabel':'raised back of hand','unifiedChar':'1f91a'},{'ariaLabel':'hand with fingers splayed','unifiedChar':'1f590-fe0f'},{'ariaLabel':'hand','unifiedChar':'270b'},{'ariaLabel':'spock-hand','unifiedChar':'1f596'},{'ariaLabel':'rightwards hand','unifiedChar':'1faf1'},{'ariaLabel':'leftwards hand','unifiedChar':'1faf2'},{'ariaLabel':'palm down hand','unifiedChar':'1faf3'},{'ariaLabel':'palm up hand','unifiedChar':'1faf4'},{'ariaLabel':'ok hand','unifiedChar':'1f44c'},{'ariaLabel':'pinched fingers','unifiedChar':'1f90c'},{'ariaLabel':'pinching hand','unifiedChar':'1f90f'},{'ariaLabel':'v','unifiedChar':'270c-fe0f'},{'ariaLabel':'crossed fingers','unifiedChar':'1f91e'},{'ariaLabel':'hand with index finger and thumb crossed','unifiedChar':'1faf0'},{'ariaLabel':'i love you hand sign','unifiedChar':'1f91f'},{'ariaLabel':'the horns','unifiedChar':'1f918'},{'ariaLabel':'call me hand','unifiedChar':'1f919'},{'ariaLabel':'point left','unifiedChar':'1f448'},{'ariaLabel':'point right','unifiedChar':'1f449'},{'ariaLabel':'point up 2','unifiedChar':'1f446'},{'ariaLabel':'middle finger','unifiedChar':'1f595'},{'ariaLabel':'point down','unifiedChar':'1f447'},{'ariaLabel':'point up','unifiedChar':'261d-fe0f'},{'ariaLabel':'index pointing at the viewer','unifiedChar':'1faf5'},{'ariaLabel':'+1','unifiedChar':'1f44d'},{'ariaLabel':'-1','unifiedChar':'1f44e'},{'ariaLabel':'fist','unifiedChar':'270a'},{'ariaLabel':'punch','unifiedChar':'1f44a'},{'ariaLabel':'left-facing fist','unifiedChar':'1f91b'},{'ariaLabel':'right-facing fist','unifiedChar':'1f91c'},{'ariaLabel':'clap','unifiedChar':'1f44f'},{'ariaLabel':'raised hands','unifiedChar':'1f64c'},{'ariaLabel':'heart hands','unifiedChar':'1faf6'},{'ariaLabel':'open hands','unifiedChar':'1f450'},{'ariaLabel':'palms up together','unifiedChar':'1f932'},{'ariaLabel':'handshake','unifiedChar':'1f91d'},{'ariaLabel':'pray','unifiedChar':'1f64f'},{'ariaLabel':'writing hand','unifiedChar':'270d-fe0f'},{'ariaLabel':'nail care','unifiedChar':'1f485'},{'ariaLabel':'selfie','unifiedChar':'1f933'},{'ariaLabel':'muscle','unifiedChar':'1f4aa'},{'ariaLabel':'mechanical arm','unifiedChar':'1f9be'},{'ariaLabel':'mechanical leg','unifiedChar':'1f9bf'},{'ariaLabel':'leg','unifiedChar':'1f9b5'},{'ariaLabel':'foot','unifiedChar':'1f9b6'},{'ariaLabel':'ear','unifiedChar':'1f442'},{'ariaLabel':'ear with hearing aid','unifiedChar':'1f9bb'},{'ariaLabel':'nose','unifiedChar':'1f443'},{'ariaLabel':'brain','unifiedChar':'1f9e0'},{'ariaLabel':'anatomical heart','unifiedChar':'1fac0'},{'ariaLabel':'lungs','unifiedChar':'1fac1'},{'ariaLabel':'tooth','unifiedChar':'1f9b7'},{'ariaLabel':'bone','unifiedChar':'1f9b4'},{'ariaLabel':'eyes','unifiedChar':'1f440'},{'ariaLabel':'eye','unifiedChar':'1f441-fe0f'},{'ariaLabel':'tongue','unifiedChar':'1f445'},{'ariaLabel':'lips','unifiedChar':'1f444'},{'ariaLabel':'biting lip','unifiedChar':'1fae6'},{'ariaLabel':'baby','unifiedChar':'1f476'},{'ariaLabel':'child','unifiedChar':'1f9d2'},{'ariaLabel':'boy','unifiedChar':'1f466'},{'ariaLabel':'girl','unifiedChar':'1f467'},{'ariaLabel':'adult','unifiedChar':'1f9d1'},{'ariaLabel':'person with blond hair','unifiedChar':'1f471'},{'ariaLabel':'man','unifiedChar':'1f468'},{'ariaLabel':'bearded person','unifiedChar':'1f9d4'},{'ariaLabel':'man: beard','unifiedChar':'1f9d4-200d-2642-fe0f'},{'ariaLabel':'woman: beard','unifiedChar':'1f9d4-200d-2640-fe0f'},{'ariaLabel':'man: red hair','unifiedChar':'1f468-200d-1f9b0'},{'ariaLabel':'man: curly hair','unifiedChar':'1f468-200d-1f9b1'},{'ariaLabel':'man: white hair','unifiedChar':'1f468-200d-1f9b3'},{'ariaLabel':'bald man','unifiedChar':'1f468-200d-1f9b2'},{'ariaLabel':'woman','unifiedChar':'1f469'},{'ariaLabel':'woman: red hair','unifiedChar':'1f469-200d-1f9b0'},{'ariaLabel':'person: red hair','unifiedChar':'1f9d1-200d-1f9b0'},{'ariaLabel':'woman: curly hair','unifiedChar':'1f469-200d-1f9b1'},{'ariaLabel':'person: curly hair','unifiedChar':'1f9d1-200d-1f9b1'},{'ariaLabel':'woman: white hair','unifiedChar':'1f469-200d-1f9b3'},{'ariaLabel':'person: white hair','unifiedChar':'1f9d1-200d-1f9b3'},{'ariaLabel':'bald woman','unifiedChar':'1f469-200d-1f9b2'},{'ariaLabel':'bald person','unifiedChar':'1f9d1-200d-1f9b2'},{'ariaLabel':'woman: blond hair','unifiedChar':'1f471-200d-2640-fe0f'},{'ariaLabel':'man: blond hair','unifiedChar':'1f471-200d-2642-fe0f'},{'ariaLabel':'older adult','unifiedChar':'1f9d3'},{'ariaLabel':'older man','unifiedChar':'1f474'},{'ariaLabel':'older woman','unifiedChar':'1f475'},{'ariaLabel':'person frowning','unifiedChar':'1f64d'},{'ariaLabel':'man frowning','unifiedChar':'1f64d-200d-2642-fe0f'},{'ariaLabel':'woman frowning','unifiedChar':'1f64d-200d-2640-fe0f'},{'ariaLabel':'person with pouting face','unifiedChar':'1f64e'},{'ariaLabel':'man pouting','unifiedChar':'1f64e-200d-2642-fe0f'},{'ariaLabel':'woman pouting','unifiedChar':'1f64e-200d-2640-fe0f'},{'ariaLabel':'no good','unifiedChar':'1f645'},{'ariaLabel':'man gesturing no','unifiedChar':'1f645-200d-2642-fe0f'},{'ariaLabel':'woman gesturing no','unifiedChar':'1f645-200d-2640-fe0f'},{'ariaLabel':'ok woman','unifiedChar':'1f646'},{'ariaLabel':'man gesturing ok','unifiedChar':'1f646-200d-2642-fe0f'},{'ariaLabel':'woman gesturing ok','unifiedChar':'1f646-200d-2640-fe0f'},{'ariaLabel':'information desk person','unifiedChar':'1f481'},{'ariaLabel':'man tipping hand','unifiedChar':'1f481-200d-2642-fe0f'},{'ariaLabel':'woman tipping hand','unifiedChar':'1f481-200d-2640-fe0f'},{'ariaLabel':'raising hand','unifiedChar':'1f64b'},{'ariaLabel':'man raising hand','unifiedChar':'1f64b-200d-2642-fe0f'},{'ariaLabel':'woman raising hand','unifiedChar':'1f64b-200d-2640-fe0f'},{'ariaLabel':'deaf person','unifiedChar':'1f9cf'},{'ariaLabel':'deaf man','unifiedChar':'1f9cf-200d-2642-fe0f'},{'ariaLabel':'deaf woman','unifiedChar':'1f9cf-200d-2640-fe0f'},{'ariaLabel':'bow','unifiedChar':'1f647'},{'ariaLabel':'man bowing','unifiedChar':'1f647-200d-2642-fe0f'},{'ariaLabel':'woman bowing','unifiedChar':'1f647-200d-2640-fe0f'},{'ariaLabel':'face palm','unifiedChar':'1f926'},{'ariaLabel':'man facepalming','unifiedChar':'1f926-200d-2642-fe0f'},{'ariaLabel':'woman facepalming','unifiedChar':'1f926-200d-2640-fe0f'},{'ariaLabel':'shrug','unifiedChar':'1f937'},{'ariaLabel':'man shrugging','unifiedChar':'1f937-200d-2642-fe0f'},{'ariaLabel':'woman shrugging','unifiedChar':'1f937-200d-2640-fe0f'},{'ariaLabel':'health worker','unifiedChar':'1f9d1-200d-2695-fe0f'},{'ariaLabel':'male-doctor','unifiedChar':'1f468-200d-2695-fe0f'},{'ariaLabel':'female-doctor','unifiedChar':'1f469-200d-2695-fe0f'},{'ariaLabel':'student','unifiedChar':'1f9d1-200d-1f393'},{'ariaLabel':'man student','unifiedChar':'1f468-200d-1f393'},{'ariaLabel':'woman student','unifiedChar':'1f469-200d-1f393'},{'ariaLabel':'teacher','unifiedChar':'1f9d1-200d-1f3eb'},{'ariaLabel':'man teacher','unifiedChar':'1f468-200d-1f3eb'},{'ariaLabel':'woman teacher','unifiedChar':'1f469-200d-1f3eb'},{'ariaLabel':'judge','unifiedChar':'1f9d1-200d-2696-fe0f'},{'ariaLabel':'man judge','unifiedChar':'1f468-200d-2696-fe0f'},{'ariaLabel':'woman judge','unifiedChar':'1f469-200d-2696-fe0f'},{'ariaLabel':'farmer','unifiedChar':'1f9d1-200d-1f33e'},{'ariaLabel':'man farmer','unifiedChar':'1f468-200d-1f33e'},{'ariaLabel':'woman farmer','unifiedChar':'1f469-200d-1f33e'},{'ariaLabel':'cook','unifiedChar':'1f9d1-200d-1f373'},{'ariaLabel':'man cook','unifiedChar':'1f468-200d-1f373'},{'ariaLabel':'woman cook','unifiedChar':'1f469-200d-1f373'},{'ariaLabel':'mechanic','unifiedChar':'1f9d1-200d-1f527'},{'ariaLabel':'man mechanic','unifiedChar':'1f468-200d-1f527'},{'ariaLabel':'woman mechanic','unifiedChar':'1f469-200d-1f527'},{'ariaLabel':'factory worker','unifiedChar':'1f9d1-200d-1f3ed'},{'ariaLabel':'man factory worker','unifiedChar':'1f468-200d-1f3ed'},{'ariaLabel':'woman factory worker','unifiedChar':'1f469-200d-1f3ed'},{'ariaLabel':'office worker','unifiedChar':'1f9d1-200d-1f4bc'},{'ariaLabel':'man office worker','unifiedChar':'1f468-200d-1f4bc'},{'ariaLabel':'woman office worker','unifiedChar':'1f469-200d-1f4bc'},{'ariaLabel':'scientist','unifiedChar':'1f9d1-200d-1f52c'},{'ariaLabel':'man scientist','unifiedChar':'1f468-200d-1f52c'},{'ariaLabel':'woman scientist','unifiedChar':'1f469-200d-1f52c'},{'ariaLabel':'technologist','unifiedChar':'1f9d1-200d-1f4bb'},{'ariaLabel':'man technologist','unifiedChar':'1f468-200d-1f4bb'},{'ariaLabel':'woman technologist','unifiedChar':'1f469-200d-1f4bb'},{'ariaLabel':'singer','unifiedChar':'1f9d1-200d-1f3a4'},{'ariaLabel':'man singer','unifiedChar':'1f468-200d-1f3a4'},{'ariaLabel':'woman singer','unifiedChar':'1f469-200d-1f3a4'},{'ariaLabel':'artist','unifiedChar':'1f9d1-200d-1f3a8'},{'ariaLabel':'man artist','unifiedChar':'1f468-200d-1f3a8'},{'ariaLabel':'woman artist','unifiedChar':'1f469-200d-1f3a8'},{'ariaLabel':'pilot','unifiedChar':'1f9d1-200d-2708-fe0f'},{'ariaLabel':'man pilot','unifiedChar':'1f468-200d-2708-fe0f'},{'ariaLabel':'woman pilot','unifiedChar':'1f469-200d-2708-fe0f'},{'ariaLabel':'astronaut','unifiedChar':'1f9d1-200d-1f680'},{'ariaLabel':'man astronaut','unifiedChar':'1f468-200d-1f680'},{'ariaLabel':'woman astronaut','unifiedChar':'1f469-200d-1f680'},{'ariaLabel':'firefighter','unifiedChar':'1f9d1-200d-1f692'},{'ariaLabel':'man firefighter','unifiedChar':'1f468-200d-1f692'},{'ariaLabel':'woman firefighter','unifiedChar':'1f469-200d-1f692'},{'ariaLabel':'cop','unifiedChar':'1f46e'},{'ariaLabel':'man police officer','unifiedChar':'1f46e-200d-2642-fe0f'},{'ariaLabel':'woman police officer','unifiedChar':'1f46e-200d-2640-fe0f'},{'ariaLabel':'detective','unifiedChar':'1f575-fe0f'},{'ariaLabel':'man detective','unifiedChar':'1f575-fe0f-200d-2642-fe0f'},{'ariaLabel':'woman detective','unifiedChar':'1f575-fe0f-200d-2640-fe0f'},{'ariaLabel':'guardsman','unifiedChar':'1f482'},{'ariaLabel':'man guard','unifiedChar':'1f482-200d-2642-fe0f'},{'ariaLabel':'woman guard','unifiedChar':'1f482-200d-2640-fe0f'},{'ariaLabel':'ninja','unifiedChar':'1f977'},{'ariaLabel':'construction worker','unifiedChar':'1f477'},{'ariaLabel':'man construction worker','unifiedChar':'1f477-200d-2642-fe0f'},{'ariaLabel':'woman construction worker','unifiedChar':'1f477-200d-2640-fe0f'},{'ariaLabel':'person with crown','unifiedChar':'1fac5'},{'ariaLabel':'prince','unifiedChar':'1f934'},{'ariaLabel':'princess','unifiedChar':'1f478'},{'ariaLabel':'man with turban','unifiedChar':'1f473'},{'ariaLabel':'man wearing turban','unifiedChar':'1f473-200d-2642-fe0f'},{'ariaLabel':'woman wearing turban','unifiedChar':'1f473-200d-2640-fe0f'},{'ariaLabel':'man with gua pi mao','unifiedChar':'1f472'},{'ariaLabel':'person with headscarf','unifiedChar':'1f9d5'},{'ariaLabel':'man in tuxedo','unifiedChar':'1f935'},{'ariaLabel':'man in tuxedo','unifiedChar':'1f935-200d-2642-fe0f'},{'ariaLabel':'woman in tuxedo','unifiedChar':'1f935-200d-2640-fe0f'},{'ariaLabel':'bride with veil','unifiedChar':'1f470'},{'ariaLabel':'man with veil','unifiedChar':'1f470-200d-2642-fe0f'},{'ariaLabel':'woman with veil','unifiedChar':'1f470-200d-2640-fe0f'},{'ariaLabel':'pregnant woman','unifiedChar':'1f930'},{'ariaLabel':'pregnant man','unifiedChar':'1fac3'},{'ariaLabel':'pregnant person','unifiedChar':'1fac4'},{'ariaLabel':'breast-feeding','unifiedChar':'1f931'},{'ariaLabel':'woman feeding baby','unifiedChar':'1f469-200d-1f37c'},{'ariaLabel':'man feeding baby','unifiedChar':'1f468-200d-1f37c'},{'ariaLabel':'person feeding baby','unifiedChar':'1f9d1-200d-1f37c'},{'ariaLabel':'angel','unifiedChar':'1f47c'},{'ariaLabel':'santa','unifiedChar':'1f385'},{'ariaLabel':'mrs claus','unifiedChar':'1f936'},{'ariaLabel':'mx claus','unifiedChar':'1f9d1-200d-1f384'},{'ariaLabel':'superhero','unifiedChar':'1f9b8'},{'ariaLabel':'man superhero','unifiedChar':'1f9b8-200d-2642-fe0f'},{'ariaLabel':'woman superhero','unifiedChar':'1f9b8-200d-2640-fe0f'},{'ariaLabel':'supervillain','unifiedChar':'1f9b9'},{'ariaLabel':'man supervillain','unifiedChar':'1f9b9-200d-2642-fe0f'},{'ariaLabel':'woman supervillain','unifiedChar':'1f9b9-200d-2640-fe0f'},{'ariaLabel':'mage','unifiedChar':'1f9d9'},{'ariaLabel':'man mage','unifiedChar':'1f9d9-200d-2642-fe0f'},{'ariaLabel':'woman mage','unifiedChar':'1f9d9-200d-2640-fe0f'},{'ariaLabel':'fairy','unifiedChar':'1f9da'},{'ariaLabel':'man fairy','unifiedChar':'1f9da-200d-2642-fe0f'},{'ariaLabel':'woman fairy','unifiedChar':'1f9da-200d-2640-fe0f'},{'ariaLabel':'vampire','unifiedChar':'1f9db'},{'ariaLabel':'man vampire','unifiedChar':'1f9db-200d-2642-fe0f'},{'ariaLabel':'woman vampire','unifiedChar':'1f9db-200d-2640-fe0f'},{'ariaLabel':'merperson','unifiedChar':'1f9dc'},{'ariaLabel':'merman','unifiedChar':'1f9dc-200d-2642-fe0f'},{'ariaLabel':'mermaid','unifiedChar':'1f9dc-200d-2640-fe0f'},{'ariaLabel':'elf','unifiedChar':'1f9dd'},{'ariaLabel':'man elf','unifiedChar':'1f9dd-200d-2642-fe0f'},{'ariaLabel':'woman elf','unifiedChar':'1f9dd-200d-2640-fe0f'},{'ariaLabel':'genie','unifiedChar':'1f9de'},{'ariaLabel':'man genie','unifiedChar':'1f9de-200d-2642-fe0f'},{'ariaLabel':'woman genie','unifiedChar':'1f9de-200d-2640-fe0f'},{'ariaLabel':'zombie','unifiedChar':'1f9df'},{'ariaLabel':'man zombie','unifiedChar':'1f9df-200d-2642-fe0f'},{'ariaLabel':'woman zombie','unifiedChar':'1f9df-200d-2640-fe0f'},{'ariaLabel':'troll','unifiedChar':'1f9cc'},{'ariaLabel':'massage','unifiedChar':'1f486'},{'ariaLabel':'man getting massage','unifiedChar':'1f486-200d-2642-fe0f'},{'ariaLabel':'woman getting massage','unifiedChar':'1f486-200d-2640-fe0f'},{'ariaLabel':'haircut','unifiedChar':'1f487'},{'ariaLabel':'man getting haircut','unifiedChar':'1f487-200d-2642-fe0f'},{'ariaLabel':'woman getting haircut','unifiedChar':'1f487-200d-2640-fe0f'},{'ariaLabel':'walking','unifiedChar':'1f6b6'},{'ariaLabel':'man walking','unifiedChar':'1f6b6-200d-2642-fe0f'},{'ariaLabel':'woman walking','unifiedChar':'1f6b6-200d-2640-fe0f'},{'ariaLabel':'standing person','unifiedChar':'1f9cd'},{'ariaLabel':'man standing','unifiedChar':'1f9cd-200d-2642-fe0f'},{'ariaLabel':'woman standing','unifiedChar':'1f9cd-200d-2640-fe0f'},{'ariaLabel':'kneeling person','unifiedChar':'1f9ce'},{'ariaLabel':'man kneeling','unifiedChar':'1f9ce-200d-2642-fe0f'},{'ariaLabel':'woman kneeling','unifiedChar':'1f9ce-200d-2640-fe0f'},{'ariaLabel':'person with white cane','unifiedChar':'1f9d1-200d-1f9af'},{'ariaLabel':'man with white cane','unifiedChar':'1f468-200d-1f9af'},{'ariaLabel':'woman with white cane','unifiedChar':'1f469-200d-1f9af'},{'ariaLabel':'person in motorized wheelchair','unifiedChar':'1f9d1-200d-1f9bc'},{'ariaLabel':'man in motorized wheelchair','unifiedChar':'1f468-200d-1f9bc'},{'ariaLabel':'woman in motorized wheelchair','unifiedChar':'1f469-200d-1f9bc'},{'ariaLabel':'person in manual wheelchair','unifiedChar':'1f9d1-200d-1f9bd'},{'ariaLabel':'man in manual wheelchair','unifiedChar':'1f468-200d-1f9bd'},{'ariaLabel':'woman in manual wheelchair','unifiedChar':'1f469-200d-1f9bd'},{'ariaLabel':'runner','unifiedChar':'1f3c3'},{'ariaLabel':'man running','unifiedChar':'1f3c3-200d-2642-fe0f'},{'ariaLabel':'woman running','unifiedChar':'1f3c3-200d-2640-fe0f'},{'ariaLabel':'dancer','unifiedChar':'1f483'},{'ariaLabel':'man dancing','unifiedChar':'1f57a'},{'ariaLabel':'person in suit levitating','unifiedChar':'1f574-fe0f'},{'ariaLabel':'dancers','unifiedChar':'1f46f'},{'ariaLabel':'men with bunny ears','unifiedChar':'1f46f-200d-2642-fe0f'},{'ariaLabel':'women with bunny ears','unifiedChar':'1f46f-200d-2640-fe0f'},{'ariaLabel':'person in steamy room','unifiedChar':'1f9d6'},{'ariaLabel':'man in steamy room','unifiedChar':'1f9d6-200d-2642-fe0f'},{'ariaLabel':'woman in steamy room','unifiedChar':'1f9d6-200d-2640-fe0f'},{'ariaLabel':'person climbing','unifiedChar':'1f9d7'},{'ariaLabel':'man climbing','unifiedChar':'1f9d7-200d-2642-fe0f'},{'ariaLabel':'woman climbing','unifiedChar':'1f9d7-200d-2640-fe0f'},{'ariaLabel':'fencer','unifiedChar':'1f93a'},{'ariaLabel':'horse racing','unifiedChar':'1f3c7'},{'ariaLabel':'skier','unifiedChar':'26f7-fe0f'},{'ariaLabel':'snowboarder','unifiedChar':'1f3c2'},{'ariaLabel':'golfer','unifiedChar':'1f3cc-fe0f'},{'ariaLabel':'man golfing','unifiedChar':'1f3cc-fe0f-200d-2642-fe0f'},{'ariaLabel':'woman golfing','unifiedChar':'1f3cc-fe0f-200d-2640-fe0f'},{'ariaLabel':'surfer','unifiedChar':'1f3c4'},{'ariaLabel':'man surfing','unifiedChar':'1f3c4-200d-2642-fe0f'},{'ariaLabel':'woman surfing','unifiedChar':'1f3c4-200d-2640-fe0f'},{'ariaLabel':'rowboat','unifiedChar':'1f6a3'},{'ariaLabel':'man rowing boat','unifiedChar':'1f6a3-200d-2642-fe0f'},{'ariaLabel':'woman rowing boat','unifiedChar':'1f6a3-200d-2640-fe0f'},{'ariaLabel':'swimmer','unifiedChar':'1f3ca'},{'ariaLabel':'man swimming','unifiedChar':'1f3ca-200d-2642-fe0f'},{'ariaLabel':'woman swimming','unifiedChar':'1f3ca-200d-2640-fe0f'},{'ariaLabel':'person with ball','unifiedChar':'26f9-fe0f'},{'ariaLabel':'man bouncing ball','unifiedChar':'26f9-fe0f-200d-2642-fe0f'},{'ariaLabel':'woman bouncing ball','unifiedChar':'26f9-fe0f-200d-2640-fe0f'},{'ariaLabel':'weight lifter','unifiedChar':'1f3cb-fe0f'},{'ariaLabel':'man lifting weights','unifiedChar':'1f3cb-fe0f-200d-2642-fe0f'},{'ariaLabel':'woman lifting weights','unifiedChar':'1f3cb-fe0f-200d-2640-fe0f'},{'ariaLabel':'bicyclist','unifiedChar':'1f6b4'},{'ariaLabel':'man biking','unifiedChar':'1f6b4-200d-2642-fe0f'},{'ariaLabel':'woman biking','unifiedChar':'1f6b4-200d-2640-fe0f'},{'ariaLabel':'mountain bicyclist','unifiedChar':'1f6b5'},{'ariaLabel':'man mountain biking','unifiedChar':'1f6b5-200d-2642-fe0f'},{'ariaLabel':'woman mountain biking','unifiedChar':'1f6b5-200d-2640-fe0f'},{'ariaLabel':'person doing cartwheel','unifiedChar':'1f938'},{'ariaLabel':'man cartwheeling','unifiedChar':'1f938-200d-2642-fe0f'},{'ariaLabel':'woman cartwheeling','unifiedChar':'1f938-200d-2640-fe0f'},{'ariaLabel':'wrestlers','unifiedChar':'1f93c'},{'ariaLabel':'men wrestling','unifiedChar':'1f93c-200d-2642-fe0f'},{'ariaLabel':'women wrestling','unifiedChar':'1f93c-200d-2640-fe0f'},{'ariaLabel':'water polo','unifiedChar':'1f93d'},{'ariaLabel':'man playing water polo','unifiedChar':'1f93d-200d-2642-fe0f'},{'ariaLabel':'woman playing water polo','unifiedChar':'1f93d-200d-2640-fe0f'},{'ariaLabel':'handball','unifiedChar':'1f93e'},{'ariaLabel':'man playing handball','unifiedChar':'1f93e-200d-2642-fe0f'},{'ariaLabel':'woman playing handball','unifiedChar':'1f93e-200d-2640-fe0f'},{'ariaLabel':'juggling','unifiedChar':'1f939'},{'ariaLabel':'man juggling','unifiedChar':'1f939-200d-2642-fe0f'},{'ariaLabel':'woman juggling','unifiedChar':'1f939-200d-2640-fe0f'},{'ariaLabel':'person in lotus position','unifiedChar':'1f9d8'},{'ariaLabel':'man in lotus position','unifiedChar':'1f9d8-200d-2642-fe0f'},{'ariaLabel':'woman in lotus position','unifiedChar':'1f9d8-200d-2640-fe0f'},{'ariaLabel':'bath','unifiedChar':'1f6c0'},{'ariaLabel':'sleeping accommodation','unifiedChar':'1f6cc'},{'ariaLabel':'people holding hands','unifiedChar':'1f9d1-200d-1f91d-200d-1f9d1'},{'ariaLabel':'women holding hands','unifiedChar':'1f46d'},{'ariaLabel':'couple','unifiedChar':'1f46b'},{'ariaLabel':'men holding hands','unifiedChar':'1f46c'},{'ariaLabel':'kiss','unifiedChar':'1f48f'},{'ariaLabel':'woman-kiss-man','unifiedChar':'1f469-200d-2764-fe0f-200d-1f48b-200d-1f468'},{'ariaLabel':'man-kiss-man','unifiedChar':'1f468-200d-2764-fe0f-200d-1f48b-200d-1f468'},{'ariaLabel':'woman-kiss-woman','unifiedChar':'1f469-200d-2764-fe0f-200d-1f48b-200d-1f469'},{'ariaLabel':'couple with heart','unifiedChar':'1f491'},{'ariaLabel':'woman-heart-man','unifiedChar':'1f469-200d-2764-fe0f-200d-1f468'},{'ariaLabel':'man-heart-man','unifiedChar':'1f468-200d-2764-fe0f-200d-1f468'},{'ariaLabel':'woman-heart-woman','unifiedChar':'1f469-200d-2764-fe0f-200d-1f469'},{'ariaLabel':'family','unifiedChar':'1f46a'},{'ariaLabel':'man-woman-boy','unifiedChar':'1f468-200d-1f469-200d-1f466'},{'ariaLabel':'man-woman-girl','unifiedChar':'1f468-200d-1f469-200d-1f467'},{'ariaLabel':'man-woman-girl-boy','unifiedChar':'1f468-200d-1f469-200d-1f467-200d-1f466'},{'ariaLabel':'man-woman-boy-boy','unifiedChar':'1f468-200d-1f469-200d-1f466-200d-1f466'},{'ariaLabel':'man-woman-girl-girl','unifiedChar':'1f468-200d-1f469-200d-1f467-200d-1f467'},{'ariaLabel':'man-man-boy','unifiedChar':'1f468-200d-1f468-200d-1f466'},{'ariaLabel':'man-man-girl','unifiedChar':'1f468-200d-1f468-200d-1f467'},{'ariaLabel':'man-man-girl-boy','unifiedChar':'1f468-200d-1f468-200d-1f467-200d-1f466'},{'ariaLabel':'man-man-boy-boy','unifiedChar':'1f468-200d-1f468-200d-1f466-200d-1f466'},{'ariaLabel':'man-man-girl-girl','unifiedChar':'1f468-200d-1f468-200d-1f467-200d-1f467'},{'ariaLabel':'woman-woman-boy','unifiedChar':'1f469-200d-1f469-200d-1f466'},{'ariaLabel':'woman-woman-girl','unifiedChar':'1f469-200d-1f469-200d-1f467'},{'ariaLabel':'woman-woman-girl-boy','unifiedChar':'1f469-200d-1f469-200d-1f467-200d-1f466'},{'ariaLabel':'woman-woman-boy-boy','unifiedChar':'1f469-200d-1f469-200d-1f466-200d-1f466'},{'ariaLabel':'woman-woman-girl-girl','unifiedChar':'1f469-200d-1f469-200d-1f467-200d-1f467'},{'ariaLabel':'man-boy','unifiedChar':'1f468-200d-1f466'},{'ariaLabel':'man-boy-boy','unifiedChar':'1f468-200d-1f466-200d-1f466'},{'ariaLabel':'man-girl','unifiedChar':'1f468-200d-1f467'},{'ariaLabel':'man-girl-boy','unifiedChar':'1f468-200d-1f467-200d-1f466'},{'ariaLabel':'man-girl-girl','unifiedChar':'1f468-200d-1f467-200d-1f467'},{'ariaLabel':'woman-boy','unifiedChar':'1f469-200d-1f466'},{'ariaLabel':'woman-boy-boy','unifiedChar':'1f469-200d-1f466-200d-1f466'},{'ariaLabel':'woman-girl','unifiedChar':'1f469-200d-1f467'},{'ariaLabel':'woman-girl-boy','unifiedChar':'1f469-200d-1f467-200d-1f466'},{'ariaLabel':'woman-girl-girl','unifiedChar':'1f469-200d-1f467-200d-1f467'},{'ariaLabel':'speaking head','unifiedChar':'1f5e3-fe0f'},{'ariaLabel':'bust in silhouette','unifiedChar':'1f464'},{'ariaLabel':'busts in silhouette','unifiedChar':'1f465'},{'ariaLabel':'people hugging','unifiedChar':'1fac2'},{'ariaLabel':'footprints','unifiedChar':'1f463'},{'ariaLabel':'monkey face','unifiedChar':'1f435'},{'ariaLabel':'monkey','unifiedChar':'1f412'},{'ariaLabel':'gorilla','unifiedChar':'1f98d'},{'ariaLabel':'orangutan','unifiedChar':'1f9a7'},{'ariaLabel':'dog','unifiedChar':'1f436'},{'ariaLabel':'dog','unifiedChar':'1f415'},{'ariaLabel':'guide dog','unifiedChar':'1f9ae'},{'ariaLabel':'service dog','unifiedChar':'1f415-200d-1f9ba'},{'ariaLabel':'poodle','unifiedChar':'1f429'},{'ariaLabel':'wolf','unifiedChar':'1f43a'},{'ariaLabel':'fox face','unifiedChar':'1f98a'},{'ariaLabel':'raccoon','unifiedChar':'1f99d'},{'ariaLabel':'cat','unifiedChar':'1f431'},{'ariaLabel':'cat','unifiedChar':'1f408'},{'ariaLabel':'black cat','unifiedChar':'1f408-200d-2b1b'},{'ariaLabel':'lion face','unifiedChar':'1f981'},{'ariaLabel':'tiger','unifiedChar':'1f42f'},{'ariaLabel':'tiger','unifiedChar':'1f405'},{'ariaLabel':'leopard','unifiedChar':'1f406'},{'ariaLabel':'horse','unifiedChar':'1f434'},{'ariaLabel':'horse','unifiedChar':'1f40e'},{'ariaLabel':'unicorn face','unifiedChar':'1f984'},{'ariaLabel':'zebra face','unifiedChar':'1f993'},{'ariaLabel':'deer','unifiedChar':'1f98c'},{'ariaLabel':'bison','unifiedChar':'1f9ac'},{'ariaLabel':'cow','unifiedChar':'1f42e'},{'ariaLabel':'ox','unifiedChar':'1f402'},{'ariaLabel':'water buffalo','unifiedChar':'1f403'},{'ariaLabel':'cow','unifiedChar':'1f404'},{'ariaLabel':'pig','unifiedChar':'1f437'},{'ariaLabel':'pig','unifiedChar':'1f416'},{'ariaLabel':'boar','unifiedChar':'1f417'},{'ariaLabel':'pig nose','unifiedChar':'1f43d'},{'ariaLabel':'ram','unifiedChar':'1f40f'},{'ariaLabel':'sheep','unifiedChar':'1f411'},{'ariaLabel':'goat','unifiedChar':'1f410'},{'ariaLabel':'dromedary camel','unifiedChar':'1f42a'},{'ariaLabel':'camel','unifiedChar':'1f42b'},{'ariaLabel':'llama','unifiedChar':'1f999'},{'ariaLabel':'giraffe face','unifiedChar':'1f992'},{'ariaLabel':'elephant','unifiedChar':'1f418'},{'ariaLabel':'mammoth','unifiedChar':'1f9a3'},{'ariaLabel':'rhinoceros','unifiedChar':'1f98f'},{'ariaLabel':'hippopotamus','unifiedChar':'1f99b'},{'ariaLabel':'mouse','unifiedChar':'1f42d'},{'ariaLabel':'mouse','unifiedChar':'1f401'},{'ariaLabel':'rat','unifiedChar':'1f400'},{'ariaLabel':'hamster','unifiedChar':'1f439'},{'ariaLabel':'rabbit','unifiedChar':'1f430'},{'ariaLabel':'rabbit','unifiedChar':'1f407'},{'ariaLabel':'chipmunk','unifiedChar':'1f43f-fe0f'},{'ariaLabel':'beaver','unifiedChar':'1f9ab'},{'ariaLabel':'hedgehog','unifiedChar':'1f994'},{'ariaLabel':'bat','unifiedChar':'1f987'},{'ariaLabel':'bear','unifiedChar':'1f43b'},{'ariaLabel':'polar bear','unifiedChar':'1f43b-200d-2744-fe0f'},{'ariaLabel':'koala','unifiedChar':'1f428'},{'ariaLabel':'panda face','unifiedChar':'1f43c'},{'ariaLabel':'sloth','unifiedChar':'1f9a5'},{'ariaLabel':'otter','unifiedChar':'1f9a6'},{'ariaLabel':'skunk','unifiedChar':'1f9a8'},{'ariaLabel':'kangaroo','unifiedChar':'1f998'},{'ariaLabel':'badger','unifiedChar':'1f9a1'},{'ariaLabel':'feet','unifiedChar':'1f43e'},{'ariaLabel':'turkey','unifiedChar':'1f983'},{'ariaLabel':'chicken','unifiedChar':'1f414'},{'ariaLabel':'rooster','unifiedChar':'1f413'},{'ariaLabel':'hatching chick','unifiedChar':'1f423'},{'ariaLabel':'baby chick','unifiedChar':'1f424'},{'ariaLabel':'hatched chick','unifiedChar':'1f425'},{'ariaLabel':'bird','unifiedChar':'1f426'},{'ariaLabel':'penguin','unifiedChar':'1f427'},{'ariaLabel':'dove','unifiedChar':'1f54a-fe0f'},{'ariaLabel':'eagle','unifiedChar':'1f985'},{'ariaLabel':'duck','unifiedChar':'1f986'},{'ariaLabel':'swan','unifiedChar':'1f9a2'},{'ariaLabel':'owl','unifiedChar':'1f989'},{'ariaLabel':'dodo','unifiedChar':'1f9a4'},{'ariaLabel':'feather','unifiedChar':'1fab6'},{'ariaLabel':'flamingo','unifiedChar':'1f9a9'},{'ariaLabel':'peacock','unifiedChar':'1f99a'},{'ariaLabel':'parrot','unifiedChar':'1f99c'},{'ariaLabel':'frog','unifiedChar':'1f438'},{'ariaLabel':'crocodile','unifiedChar':'1f40a'},{'ariaLabel':'turtle','unifiedChar':'1f422'},{'ariaLabel':'lizard','unifiedChar':'1f98e'},{'ariaLabel':'snake','unifiedChar':'1f40d'},{'ariaLabel':'dragon face','unifiedChar':'1f432'},{'ariaLabel':'dragon','unifiedChar':'1f409'},{'ariaLabel':'sauropod','unifiedChar':'1f995'},{'ariaLabel':'t-rex','unifiedChar':'1f996'},{'ariaLabel':'whale','unifiedChar':'1f433'},{'ariaLabel':'whale','unifiedChar':'1f40b'},{'ariaLabel':'dolphin','unifiedChar':'1f42c'},{'ariaLabel':'seal','unifiedChar':'1f9ad'},{'ariaLabel':'fish','unifiedChar':'1f41f'},{'ariaLabel':'tropical fish','unifiedChar':'1f420'},{'ariaLabel':'blowfish','unifiedChar':'1f421'},{'ariaLabel':'shark','unifiedChar':'1f988'},{'ariaLabel':'octopus','unifiedChar':'1f419'},{'ariaLabel':'shell','unifiedChar':'1f41a'},{'ariaLabel':'coral','unifiedChar':'1fab8'},{'ariaLabel':'snail','unifiedChar':'1f40c'},{'ariaLabel':'butterfly','unifiedChar':'1f98b'},{'ariaLabel':'bug','unifiedChar':'1f41b'},{'ariaLabel':'ant','unifiedChar':'1f41c'},{'ariaLabel':'bee','unifiedChar':'1f41d'},{'ariaLabel':'beetle','unifiedChar':'1fab2'},{'ariaLabel':'ladybug','unifiedChar':'1f41e'},{'ariaLabel':'cricket','unifiedChar':'1f997'},{'ariaLabel':'cockroach','unifiedChar':'1fab3'},{'ariaLabel':'spider','unifiedChar':'1f577-fe0f'},{'ariaLabel':'spider web','unifiedChar':'1f578-fe0f'},{'ariaLabel':'scorpion','unifiedChar':'1f982'},{'ariaLabel':'mosquito','unifiedChar':'1f99f'},{'ariaLabel':'fly','unifiedChar':'1fab0'},{'ariaLabel':'worm','unifiedChar':'1fab1'},{'ariaLabel':'microbe','unifiedChar':'1f9a0'},{'ariaLabel':'bouquet','unifiedChar':'1f490'},{'ariaLabel':'cherry blossom','unifiedChar':'1f338'},{'ariaLabel':'white flower','unifiedChar':'1f4ae'},{'ariaLabel':'lotus','unifiedChar':'1fab7'},{'ariaLabel':'rosette','unifiedChar':'1f3f5-fe0f'},{'ariaLabel':'rose','unifiedChar':'1f339'},{'ariaLabel':'wilted flower','unifiedChar':'1f940'},{'ariaLabel':'hibiscus','unifiedChar':'1f33a'},{'ariaLabel':'sunflower','unifiedChar':'1f33b'},{'ariaLabel':'blossom','unifiedChar':'1f33c'},{'ariaLabel':'tulip','unifiedChar':'1f337'},{'ariaLabel':'seedling','unifiedChar':'1f331'},{'ariaLabel':'potted plant','unifiedChar':'1fab4'},{'ariaLabel':'evergreen tree','unifiedChar':'1f332'},{'ariaLabel':'deciduous tree','unifiedChar':'1f333'},{'ariaLabel':'palm tree','unifiedChar':'1f334'},{'ariaLabel':'cactus','unifiedChar':'1f335'},{'ariaLabel':'ear of rice','unifiedChar':'1f33e'},{'ariaLabel':'herb','unifiedChar':'1f33f'},{'ariaLabel':'shamrock','unifiedChar':'2618-fe0f'},{'ariaLabel':'four leaf clover','unifiedChar':'1f340'},{'ariaLabel':'maple leaf','unifiedChar':'1f341'},{'ariaLabel':'fallen leaf','unifiedChar':'1f342'},{'ariaLabel':'leaves','unifiedChar':'1f343'},{'ariaLabel':'empty nest','unifiedChar':'1fab9'},{'ariaLabel':'nest with eggs','unifiedChar':'1faba'},{'ariaLabel':'grapes','unifiedChar':'1f347'},{'ariaLabel':'melon','unifiedChar':'1f348'},{'ariaLabel':'watermelon','unifiedChar':'1f349'},{'ariaLabel':'tangerine','unifiedChar':'1f34a'},{'ariaLabel':'lemon','unifiedChar':'1f34b'},{'ariaLabel':'banana','unifiedChar':'1f34c'},{'ariaLabel':'pineapple','unifiedChar':'1f34d'},{'ariaLabel':'mango','unifiedChar':'1f96d'},{'ariaLabel':'apple','unifiedChar':'1f34e'},{'ariaLabel':'green apple','unifiedChar':'1f34f'},{'ariaLabel':'pear','unifiedChar':'1f350'},{'ariaLabel':'peach','unifiedChar':'1f351'},{'ariaLabel':'cherries','unifiedChar':'1f352'},{'ariaLabel':'strawberry','unifiedChar':'1f353'},{'ariaLabel':'blueberries','unifiedChar':'1fad0'},{'ariaLabel':'kiwifruit','unifiedChar':'1f95d'},{'ariaLabel':'tomato','unifiedChar':'1f345'},{'ariaLabel':'olive','unifiedChar':'1fad2'},{'ariaLabel':'coconut','unifiedChar':'1f965'},{'ariaLabel':'avocado','unifiedChar':'1f951'},{'ariaLabel':'eggplant','unifiedChar':'1f346'},{'ariaLabel':'potato','unifiedChar':'1f954'},{'ariaLabel':'carrot','unifiedChar':'1f955'},{'ariaLabel':'corn','unifiedChar':'1f33d'},{'ariaLabel':'hot pepper','unifiedChar':'1f336-fe0f'},{'ariaLabel':'bell pepper','unifiedChar':'1fad1'},{'ariaLabel':'cucumber','unifiedChar':'1f952'},{'ariaLabel':'leafy green','unifiedChar':'1f96c'},{'ariaLabel':'broccoli','unifiedChar':'1f966'},{'ariaLabel':'garlic','unifiedChar':'1f9c4'},{'ariaLabel':'onion','unifiedChar':'1f9c5'},{'ariaLabel':'mushroom','unifiedChar':'1f344'},{'ariaLabel':'peanuts','unifiedChar':'1f95c'},{'ariaLabel':'beans','unifiedChar':'1fad8'},{'ariaLabel':'chestnut','unifiedChar':'1f330'},{'ariaLabel':'bread','unifiedChar':'1f35e'},{'ariaLabel':'croissant','unifiedChar':'1f950'},{'ariaLabel':'baguette bread','unifiedChar':'1f956'},{'ariaLabel':'flatbread','unifiedChar':'1fad3'},{'ariaLabel':'pretzel','unifiedChar':'1f968'},{'ariaLabel':'bagel','unifiedChar':'1f96f'},{'ariaLabel':'pancakes','unifiedChar':'1f95e'},{'ariaLabel':'waffle','unifiedChar':'1f9c7'},{'ariaLabel':'cheese wedge','unifiedChar':'1f9c0'},{'ariaLabel':'meat on bone','unifiedChar':'1f356'},{'ariaLabel':'poultry leg','unifiedChar':'1f357'},{'ariaLabel':'cut of meat','unifiedChar':'1f969'},{'ariaLabel':'bacon','unifiedChar':'1f953'},{'ariaLabel':'hamburger','unifiedChar':'1f354'},{'ariaLabel':'fries','unifiedChar':'1f35f'},{'ariaLabel':'pizza','unifiedChar':'1f355'},{'ariaLabel':'hotdog','unifiedChar':'1f32d'},{'ariaLabel':'sandwich','unifiedChar':'1f96a'},{'ariaLabel':'taco','unifiedChar':'1f32e'},{'ariaLabel':'burrito','unifiedChar':'1f32f'},{'ariaLabel':'tamale','unifiedChar':'1fad4'},{'ariaLabel':'stuffed flatbread','unifiedChar':'1f959'},{'ariaLabel':'falafel','unifiedChar':'1f9c6'},{'ariaLabel':'egg','unifiedChar':'1f95a'},{'ariaLabel':'cooking','unifiedChar':'1f373'},{'ariaLabel':'shallow pan of food','unifiedChar':'1f958'},{'ariaLabel':'stew','unifiedChar':'1f372'},{'ariaLabel':'fondue','unifiedChar':'1fad5'},{'ariaLabel':'bowl with spoon','unifiedChar':'1f963'},{'ariaLabel':'green salad','unifiedChar':'1f957'},{'ariaLabel':'popcorn','unifiedChar':'1f37f'},{'ariaLabel':'butter','unifiedChar':'1f9c8'},{'ariaLabel':'salt','unifiedChar':'1f9c2'},{'ariaLabel':'canned food','unifiedChar':'1f96b'},{'ariaLabel':'bento','unifiedChar':'1f371'},{'ariaLabel':'rice cracker','unifiedChar':'1f358'},{'ariaLabel':'rice ball','unifiedChar':'1f359'},{'ariaLabel':'rice','unifiedChar':'1f35a'},{'ariaLabel':'curry','unifiedChar':'1f35b'},{'ariaLabel':'ramen','unifiedChar':'1f35c'},{'ariaLabel':'spaghetti','unifiedChar':'1f35d'},{'ariaLabel':'sweet potato','unifiedChar':'1f360'},{'ariaLabel':'oden','unifiedChar':'1f362'},{'ariaLabel':'sushi','unifiedChar':'1f363'},{'ariaLabel':'fried shrimp','unifiedChar':'1f364'},{'ariaLabel':'fish cake','unifiedChar':'1f365'},{'ariaLabel':'moon cake','unifiedChar':'1f96e'},{'ariaLabel':'dango','unifiedChar':'1f361'},{'ariaLabel':'dumpling','unifiedChar':'1f95f'},{'ariaLabel':'fortune cookie','unifiedChar':'1f960'},{'ariaLabel':'takeout box','unifiedChar':'1f961'},{'ariaLabel':'crab','unifiedChar':'1f980'},{'ariaLabel':'lobster','unifiedChar':'1f99e'},{'ariaLabel':'shrimp','unifiedChar':'1f990'},{'ariaLabel':'squid','unifiedChar':'1f991'},{'ariaLabel':'oyster','unifiedChar':'1f9aa'},{'ariaLabel':'icecream','unifiedChar':'1f366'},{'ariaLabel':'shaved ice','unifiedChar':'1f367'},{'ariaLabel':'ice cream','unifiedChar':'1f368'},{'ariaLabel':'doughnut','unifiedChar':'1f369'},{'ariaLabel':'cookie','unifiedChar':'1f36a'},{'ariaLabel':'birthday','unifiedChar':'1f382'},{'ariaLabel':'cake','unifiedChar':'1f370'},{'ariaLabel':'cupcake','unifiedChar':'1f9c1'},{'ariaLabel':'pie','unifiedChar':'1f967'},{'ariaLabel':'chocolate bar','unifiedChar':'1f36b'},{'ariaLabel':'candy','unifiedChar':'1f36c'},{'ariaLabel':'lollipop','unifiedChar':'1f36d'},{'ariaLabel':'custard','unifiedChar':'1f36e'},{'ariaLabel':'honey pot','unifiedChar':'1f36f'},{'ariaLabel':'baby bottle','unifiedChar':'1f37c'},{'ariaLabel':'glass of milk','unifiedChar':'1f95b'},{'ariaLabel':'coffee','unifiedChar':'2615'},{'ariaLabel':'teapot','unifiedChar':'1fad6'},{'ariaLabel':'tea','unifiedChar':'1f375'},{'ariaLabel':'sake','unifiedChar':'1f376'},{'ariaLabel':'champagne','unifiedChar':'1f37e'},{'ariaLabel':'wine glass','unifiedChar':'1f377'},{'ariaLabel':'cocktail','unifiedChar':'1f378'},{'ariaLabel':'tropical drink','unifiedChar':'1f379'},{'ariaLabel':'beer','unifiedChar':'1f37a'},{'ariaLabel':'beers','unifiedChar':'1f37b'},{'ariaLabel':'clinking glasses','unifiedChar':'1f942'},{'ariaLabel':'tumbler glass','unifiedChar':'1f943'},{'ariaLabel':'pouring liquid','unifiedChar':'1fad7'},{'ariaLabel':'cup with straw','unifiedChar':'1f964'},{'ariaLabel':'bubble tea','unifiedChar':'1f9cb'},{'ariaLabel':'beverage box','unifiedChar':'1f9c3'},{'ariaLabel':'mate drink','unifiedChar':'1f9c9'},{'ariaLabel':'ice cube','unifiedChar':'1f9ca'},{'ariaLabel':'chopsticks','unifiedChar':'1f962'},{'ariaLabel':'knife fork plate','unifiedChar':'1f37d-fe0f'},{'ariaLabel':'fork and knife','unifiedChar':'1f374'},{'ariaLabel':'spoon','unifiedChar':'1f944'},{'ariaLabel':'hocho','unifiedChar':'1f52a'},{'ariaLabel':'jar','unifiedChar':'1fad9'},{'ariaLabel':'amphora','unifiedChar':'1f3fa'},{'ariaLabel':'earth africa','unifiedChar':'1f30d'},{'ariaLabel':'earth americas','unifiedChar':'1f30e'},{'ariaLabel':'earth asia','unifiedChar':'1f30f'},{'ariaLabel':'globe with meridians','unifiedChar':'1f310'},{'ariaLabel':'world map','unifiedChar':'1f5fa-fe0f'},{'ariaLabel':'japan','unifiedChar':'1f5fe'},{'ariaLabel':'compass','unifiedChar':'1f9ed'},{'ariaLabel':'snow-capped mountain','unifiedChar':'1f3d4-fe0f'},{'ariaLabel':'mountain','unifiedChar':'26f0-fe0f'},{'ariaLabel':'volcano','unifiedChar':'1f30b'},{'ariaLabel':'mount fuji','unifiedChar':'1f5fb'},{'ariaLabel':'camping','unifiedChar':'1f3d5-fe0f'},{'ariaLabel':'beach with umbrella','unifiedChar':'1f3d6-fe0f'},{'ariaLabel':'desert','unifiedChar':'1f3dc-fe0f'},{'ariaLabel':'desert island','unifiedChar':'1f3dd-fe0f'},{'ariaLabel':'national park','unifiedChar':'1f3de-fe0f'},{'ariaLabel':'stadium','unifiedChar':'1f3df-fe0f'},{'ariaLabel':'classical building','unifiedChar':'1f3db-fe0f'},{'ariaLabel':'building construction','unifiedChar':'1f3d7-fe0f'},{'ariaLabel':'brick','unifiedChar':'1f9f1'},{'ariaLabel':'rock','unifiedChar':'1faa8'},{'ariaLabel':'wood','unifiedChar':'1fab5'},{'ariaLabel':'hut','unifiedChar':'1f6d6'},{'ariaLabel':'houses','unifiedChar':'1f3d8-fe0f'},{'ariaLabel':'derelict house','unifiedChar':'1f3da-fe0f'},{'ariaLabel':'house','unifiedChar':'1f3e0'},{'ariaLabel':'house with garden','unifiedChar':'1f3e1'},{'ariaLabel':'office','unifiedChar':'1f3e2'},{'ariaLabel':'post office','unifiedChar':'1f3e3'},{'ariaLabel':'european post office','unifiedChar':'1f3e4'},{'ariaLabel':'hospital','unifiedChar':'1f3e5'},{'ariaLabel':'bank','unifiedChar':'1f3e6'},{'ariaLabel':'hotel','unifiedChar':'1f3e8'},{'ariaLabel':'love hotel','unifiedChar':'1f3e9'},{'ariaLabel':'convenience store','unifiedChar':'1f3ea'},{'ariaLabel':'school','unifiedChar':'1f3eb'},{'ariaLabel':'department store','unifiedChar':'1f3ec'},{'ariaLabel':'factory','unifiedChar':'1f3ed'},{'ariaLabel':'japanese castle','unifiedChar':'1f3ef'},{'ariaLabel':'european castle','unifiedChar':'1f3f0'},{'ariaLabel':'wedding','unifiedChar':'1f492'},{'ariaLabel':'tokyo tower','unifiedChar':'1f5fc'},{'ariaLabel':'statue of liberty','unifiedChar':'1f5fd'},{'ariaLabel':'church','unifiedChar':'26ea'},{'ariaLabel':'mosque','unifiedChar':'1f54c'},{'ariaLabel':'hindu temple','unifiedChar':'1f6d5'},{'ariaLabel':'synagogue','unifiedChar':'1f54d'},{'ariaLabel':'shinto shrine','unifiedChar':'26e9-fe0f'},{'ariaLabel':'kaaba','unifiedChar':'1f54b'},{'ariaLabel':'fountain','unifiedChar':'26f2'},{'ariaLabel':'tent','unifiedChar':'26fa'},{'ariaLabel':'foggy','unifiedChar':'1f301'},{'ariaLabel':'night with stars','unifiedChar':'1f303'},{'ariaLabel':'cityscape','unifiedChar':'1f3d9-fe0f'},{'ariaLabel':'sunrise over mountains','unifiedChar':'1f304'},{'ariaLabel':'sunrise','unifiedChar':'1f305'},{'ariaLabel':'city sunset','unifiedChar':'1f306'},{'ariaLabel':'city sunrise','unifiedChar':'1f307'},{'ariaLabel':'bridge at night','unifiedChar':'1f309'},{'ariaLabel':'hotsprings','unifiedChar':'2668-fe0f'},{'ariaLabel':'carousel horse','unifiedChar':'1f3a0'},{'ariaLabel':'playground slide','unifiedChar':'1f6dd'},{'ariaLabel':'ferris wheel','unifiedChar':'1f3a1'},{'ariaLabel':'roller coaster','unifiedChar':'1f3a2'},{'ariaLabel':'barber','unifiedChar':'1f488'},{'ariaLabel':'circus tent','unifiedChar':'1f3aa'},{'ariaLabel':'steam locomotive','unifiedChar':'1f682'},{'ariaLabel':'railway car','unifiedChar':'1f683'},{'ariaLabel':'high-speed train','unifiedChar':'1f684'},{'ariaLabel':'bullettrain front','unifiedChar':'1f685'},{'ariaLabel':'train','unifiedChar':'1f686'},{'ariaLabel':'metro','unifiedChar':'1f687'},{'ariaLabel':'light rail','unifiedChar':'1f688'},{'ariaLabel':'station','unifiedChar':'1f689'},{'ariaLabel':'tram','unifiedChar':'1f68a'},{'ariaLabel':'monorail','unifiedChar':'1f69d'},{'ariaLabel':'mountain railway','unifiedChar':'1f69e'},{'ariaLabel':'train','unifiedChar':'1f68b'},{'ariaLabel':'bus','unifiedChar':'1f68c'},{'ariaLabel':'oncoming bus','unifiedChar':'1f68d'},{'ariaLabel':'trolleybus','unifiedChar':'1f68e'},{'ariaLabel':'minibus','unifiedChar':'1f690'},{'ariaLabel':'ambulance','unifiedChar':'1f691'},{'ariaLabel':'fire engine','unifiedChar':'1f692'},{'ariaLabel':'police car','unifiedChar':'1f693'},{'ariaLabel':'oncoming police car','unifiedChar':'1f694'},{'ariaLabel':'taxi','unifiedChar':'1f695'},{'ariaLabel':'oncoming taxi','unifiedChar':'1f696'},{'ariaLabel':'car','unifiedChar':'1f697'},{'ariaLabel':'oncoming automobile','unifiedChar':'1f698'},{'ariaLabel':'blue car','unifiedChar':'1f699'},{'ariaLabel':'pickup truck','unifiedChar':'1f6fb'},{'ariaLabel':'truck','unifiedChar':'1f69a'},{'ariaLabel':'articulated lorry','unifiedChar':'1f69b'},{'ariaLabel':'tractor','unifiedChar':'1f69c'},{'ariaLabel':'racing car','unifiedChar':'1f3ce-fe0f'},{'ariaLabel':'motorcycle','unifiedChar':'1f3cd-fe0f'},{'ariaLabel':'motor scooter','unifiedChar':'1f6f5'},{'ariaLabel':'manual wheelchair','unifiedChar':'1f9bd'},{'ariaLabel':'motorized wheelchair','unifiedChar':'1f9bc'},{'ariaLabel':'auto rickshaw','unifiedChar':'1f6fa'},{'ariaLabel':'bike','unifiedChar':'1f6b2'},{'ariaLabel':'scooter','unifiedChar':'1f6f4'},{'ariaLabel':'skateboard','unifiedChar':'1f6f9'},{'ariaLabel':'roller skate','unifiedChar':'1f6fc'},{'ariaLabel':'busstop','unifiedChar':'1f68f'},{'ariaLabel':'motorway','unifiedChar':'1f6e3-fe0f'},{'ariaLabel':'railway track','unifiedChar':'1f6e4-fe0f'},{'ariaLabel':'oil drum','unifiedChar':'1f6e2-fe0f'},{'ariaLabel':'fuelpump','unifiedChar':'26fd'},{'ariaLabel':'wheel','unifiedChar':'1f6de'},{'ariaLabel':'rotating light','unifiedChar':'1f6a8'},{'ariaLabel':'traffic light','unifiedChar':'1f6a5'},{'ariaLabel':'vertical traffic light','unifiedChar':'1f6a6'},{'ariaLabel':'octagonal sign','unifiedChar':'1f6d1'},{'ariaLabel':'construction','unifiedChar':'1f6a7'},{'ariaLabel':'anchor','unifiedChar':'2693'},{'ariaLabel':'ring buoy','unifiedChar':'1f6df'},{'ariaLabel':'boat','unifiedChar':'26f5'},{'ariaLabel':'canoe','unifiedChar':'1f6f6'},{'ariaLabel':'speedboat','unifiedChar':'1f6a4'},{'ariaLabel':'passenger ship','unifiedChar':'1f6f3-fe0f'},{'ariaLabel':'ferry','unifiedChar':'26f4-fe0f'},{'ariaLabel':'motor boat','unifiedChar':'1f6e5-fe0f'},{'ariaLabel':'ship','unifiedChar':'1f6a2'},{'ariaLabel':'airplane','unifiedChar':'2708-fe0f'},{'ariaLabel':'small airplane','unifiedChar':'1f6e9-fe0f'},{'ariaLabel':'airplane departure','unifiedChar':'1f6eb'},{'ariaLabel':'airplane arriving','unifiedChar':'1f6ec'},{'ariaLabel':'parachute','unifiedChar':'1fa82'},{'ariaLabel':'seat','unifiedChar':'1f4ba'},{'ariaLabel':'helicopter','unifiedChar':'1f681'},{'ariaLabel':'suspension railway','unifiedChar':'1f69f'},{'ariaLabel':'mountain cableway','unifiedChar':'1f6a0'},{'ariaLabel':'aerial tramway','unifiedChar':'1f6a1'},{'ariaLabel':'satellite','unifiedChar':'1f6f0-fe0f'},{'ariaLabel':'rocket','unifiedChar':'1f680'},{'ariaLabel':'flying saucer','unifiedChar':'1f6f8'},{'ariaLabel':'bellhop bell','unifiedChar':'1f6ce-fe0f'},{'ariaLabel':'luggage','unifiedChar':'1f9f3'},{'ariaLabel':'hourglass','unifiedChar':'231b'},{'ariaLabel':'hourglass flowing sand','unifiedChar':'23f3'},{'ariaLabel':'watch','unifiedChar':'231a'},{'ariaLabel':'alarm clock','unifiedChar':'23f0'},{'ariaLabel':'stopwatch','unifiedChar':'23f1-fe0f'},{'ariaLabel':'timer clock','unifiedChar':'23f2-fe0f'},{'ariaLabel':'mantelpiece clock','unifiedChar':'1f570-fe0f'},{'ariaLabel':'clock12','unifiedChar':'1f55b'},{'ariaLabel':'clock1230','unifiedChar':'1f567'},{'ariaLabel':'clock1','unifiedChar':'1f550'},{'ariaLabel':'clock130','unifiedChar':'1f55c'},{'ariaLabel':'clock2','unifiedChar':'1f551'},{'ariaLabel':'clock230','unifiedChar':'1f55d'},{'ariaLabel':'clock3','unifiedChar':'1f552'},{'ariaLabel':'clock330','unifiedChar':'1f55e'},{'ariaLabel':'clock4','unifiedChar':'1f553'},{'ariaLabel':'clock430','unifiedChar':'1f55f'},{'ariaLabel':'clock5','unifiedChar':'1f554'},{'ariaLabel':'clock530','unifiedChar':'1f560'},{'ariaLabel':'clock6','unifiedChar':'1f555'},{'ariaLabel':'clock630','unifiedChar':'1f561'},{'ariaLabel':'clock7','unifiedChar':'1f556'},{'ariaLabel':'clock730','unifiedChar':'1f562'},{'ariaLabel':'clock8','unifiedChar':'1f557'},{'ariaLabel':'clock830','unifiedChar':'1f563'},{'ariaLabel':'clock9','unifiedChar':'1f558'},{'ariaLabel':'clock930','unifiedChar':'1f564'},{'ariaLabel':'clock10','unifiedChar':'1f559'},{'ariaLabel':'clock1030','unifiedChar':'1f565'},{'ariaLabel':'clock11','unifiedChar':'1f55a'},{'ariaLabel':'clock1130','unifiedChar':'1f566'},{'ariaLabel':'new moon','unifiedChar':'1f311'},{'ariaLabel':'waxing crescent moon','unifiedChar':'1f312'},{'ariaLabel':'first quarter moon','unifiedChar':'1f313'},{'ariaLabel':'moon','unifiedChar':'1f314'},{'ariaLabel':'full moon','unifiedChar':'1f315'},{'ariaLabel':'waning gibbous moon','unifiedChar':'1f316'},{'ariaLabel':'last quarter moon','unifiedChar':'1f317'},{'ariaLabel':'waning crescent moon','unifiedChar':'1f318'},{'ariaLabel':'crescent moon','unifiedChar':'1f319'},{'ariaLabel':'new moon with face','unifiedChar':'1f31a'},{'ariaLabel':'first quarter moon with face','unifiedChar':'1f31b'},{'ariaLabel':'last quarter moon with face','unifiedChar':'1f31c'},{'ariaLabel':'thermometer','unifiedChar':'1f321-fe0f'},{'ariaLabel':'sunny','unifiedChar':'2600-fe0f'},{'ariaLabel':'full moon with face','unifiedChar':'1f31d'},{'ariaLabel':'sun with face','unifiedChar':'1f31e'},{'ariaLabel':'ringed planet','unifiedChar':'1fa90'},{'ariaLabel':'star','unifiedChar':'2b50'},{'ariaLabel':'star2','unifiedChar':'1f31f'},{'ariaLabel':'stars','unifiedChar':'1f320'},{'ariaLabel':'milky way','unifiedChar':'1f30c'},{'ariaLabel':'cloud','unifiedChar':'2601-fe0f'},{'ariaLabel':'partly sunny','unifiedChar':'26c5'},{'ariaLabel':'thunder cloud and rain','unifiedChar':'26c8-fe0f'},{'ariaLabel':'mostly sunny','unifiedChar':'1f324-fe0f'},{'ariaLabel':'barely sunny','unifiedChar':'1f325-fe0f'},{'ariaLabel':'partly sunny rain','unifiedChar':'1f326-fe0f'},{'ariaLabel':'rain cloud','unifiedChar':'1f327-fe0f'},{'ariaLabel':'snow cloud','unifiedChar':'1f328-fe0f'},{'ariaLabel':'lightning','unifiedChar':'1f329-fe0f'},{'ariaLabel':'tornado','unifiedChar':'1f32a-fe0f'},{'ariaLabel':'fog','unifiedChar':'1f32b-fe0f'},{'ariaLabel':'wind face','unifiedChar':'1f32c-fe0f'},{'ariaLabel':'cyclone','unifiedChar':'1f300'},{'ariaLabel':'rainbow','unifiedChar':'1f308'},{'ariaLabel':'closed umbrella','unifiedChar':'1f302'},{'ariaLabel':'umbrella','unifiedChar':'2602-fe0f'},{'ariaLabel':'umbrella with rain drops','unifiedChar':'2614'},{'ariaLabel':'umbrella on ground','unifiedChar':'26f1-fe0f'},{'ariaLabel':'zap','unifiedChar':'26a1'},{'ariaLabel':'snowflake','unifiedChar':'2744-fe0f'},{'ariaLabel':'snowman','unifiedChar':'2603-fe0f'},{'ariaLabel':'snowman without snow','unifiedChar':'26c4'},{'ariaLabel':'comet','unifiedChar':'2604-fe0f'},{'ariaLabel':'fire','unifiedChar':'1f525'},{'ariaLabel':'droplet','unifiedChar':'1f4a7'},{'ariaLabel':'ocean','unifiedChar':'1f30a'},{'ariaLabel':'jack-o-lantern','unifiedChar':'1f383'},{'ariaLabel':'christmas tree','unifiedChar':'1f384'},{'ariaLabel':'fireworks','unifiedChar':'1f386'},{'ariaLabel':'sparkler','unifiedChar':'1f387'},{'ariaLabel':'firecracker','unifiedChar':'1f9e8'},{'ariaLabel':'sparkles','unifiedChar':'2728'},{'ariaLabel':'balloon','unifiedChar':'1f388'},{'ariaLabel':'tada','unifiedChar':'1f389'},{'ariaLabel':'confetti ball','unifiedChar':'1f38a'},{'ariaLabel':'tanabata tree','unifiedChar':'1f38b'},{'ariaLabel':'bamboo','unifiedChar':'1f38d'},{'ariaLabel':'dolls','unifiedChar':'1f38e'},{'ariaLabel':'flags','unifiedChar':'1f38f'},{'ariaLabel':'wind chime','unifiedChar':'1f390'},{'ariaLabel':'rice scene','unifiedChar':'1f391'},{'ariaLabel':'red envelope','unifiedChar':'1f9e7'},{'ariaLabel':'ribbon','unifiedChar':'1f380'},{'ariaLabel':'gift','unifiedChar':'1f381'},{'ariaLabel':'reminder ribbon','unifiedChar':'1f397-fe0f'},{'ariaLabel':'admission tickets','unifiedChar':'1f39f-fe0f'},{'ariaLabel':'ticket','unifiedChar':'1f3ab'},{'ariaLabel':'medal','unifiedChar':'1f396-fe0f'},{'ariaLabel':'trophy','unifiedChar':'1f3c6'},{'ariaLabel':'sports medal','unifiedChar':'1f3c5'},{'ariaLabel':'first place medal','unifiedChar':'1f947'},{'ariaLabel':'second place medal','unifiedChar':'1f948'},{'ariaLabel':'third place medal','unifiedChar':'1f949'},{'ariaLabel':'soccer','unifiedChar':'26bd'},{'ariaLabel':'baseball','unifiedChar':'26be'},{'ariaLabel':'softball','unifiedChar':'1f94e'},{'ariaLabel':'basketball','unifiedChar':'1f3c0'},{'ariaLabel':'volleyball','unifiedChar':'1f3d0'},{'ariaLabel':'football','unifiedChar':'1f3c8'},{'ariaLabel':'rugby football','unifiedChar':'1f3c9'},{'ariaLabel':'tennis','unifiedChar':'1f3be'},{'ariaLabel':'flying disc','unifiedChar':'1f94f'},{'ariaLabel':'bowling','unifiedChar':'1f3b3'},{'ariaLabel':'cricket bat and ball','unifiedChar':'1f3cf'},{'ariaLabel':'field hockey stick and ball','unifiedChar':'1f3d1'},{'ariaLabel':'ice hockey stick and puck','unifiedChar':'1f3d2'},{'ariaLabel':'lacrosse','unifiedChar':'1f94d'},{'ariaLabel':'table tennis paddle and ball','unifiedChar':'1f3d3'},{'ariaLabel':'badminton racquet and shuttlecock','unifiedChar':'1f3f8'},{'ariaLabel':'boxing glove','unifiedChar':'1f94a'},{'ariaLabel':'martial arts uniform','unifiedChar':'1f94b'},{'ariaLabel':'goal net','unifiedChar':'1f945'},{'ariaLabel':'golf','unifiedChar':'26f3'},{'ariaLabel':'ice skate','unifiedChar':'26f8-fe0f'},{'ariaLabel':'fishing pole and fish','unifiedChar':'1f3a3'},{'ariaLabel':'diving mask','unifiedChar':'1f93f'},{'ariaLabel':'running shirt with sash','unifiedChar':'1f3bd'},{'ariaLabel':'ski','unifiedChar':'1f3bf'},{'ariaLabel':'sled','unifiedChar':'1f6f7'},{'ariaLabel':'curling stone','unifiedChar':'1f94c'},{'ariaLabel':'dart','unifiedChar':'1f3af'},{'ariaLabel':'yo-yo','unifiedChar':'1fa80'},{'ariaLabel':'kite','unifiedChar':'1fa81'},{'ariaLabel':'8ball','unifiedChar':'1f3b1'},{'ariaLabel':'crystal ball','unifiedChar':'1f52e'},{'ariaLabel':'magic wand','unifiedChar':'1fa84'},{'ariaLabel':'nazar amulet','unifiedChar':'1f9ff'},{'ariaLabel':'hamsa','unifiedChar':'1faac'},{'ariaLabel':'video game','unifiedChar':'1f3ae'},{'ariaLabel':'joystick','unifiedChar':'1f579-fe0f'},{'ariaLabel':'slot machine','unifiedChar':'1f3b0'},{'ariaLabel':'game die','unifiedChar':'1f3b2'},{'ariaLabel':'jigsaw','unifiedChar':'1f9e9'},{'ariaLabel':'teddy bear','unifiedChar':'1f9f8'},{'ariaLabel':'pinata','unifiedChar':'1fa85'},{'ariaLabel':'mirror ball','unifiedChar':'1faa9'},{'ariaLabel':'nesting dolls','unifiedChar':'1fa86'},{'ariaLabel':'spades','unifiedChar':'2660-fe0f'},{'ariaLabel':'hearts','unifiedChar':'2665-fe0f'},{'ariaLabel':'diamonds','unifiedChar':'2666-fe0f'},{'ariaLabel':'clubs','unifiedChar':'2663-fe0f'},{'ariaLabel':'chess pawn','unifiedChar':'265f-fe0f'},{'ariaLabel':'black joker','unifiedChar':'1f0cf'},{'ariaLabel':'mahjong','unifiedChar':'1f004'},{'ariaLabel':'flower playing cards','unifiedChar':'1f3b4'},{'ariaLabel':'performing arts','unifiedChar':'1f3ad'},{'ariaLabel':'framed picture','unifiedChar':'1f5bc-fe0f'},{'ariaLabel':'art','unifiedChar':'1f3a8'},{'ariaLabel':'thread','unifiedChar':'1f9f5'},{'ariaLabel':'sewing needle','unifiedChar':'1faa1'},{'ariaLabel':'yarn','unifiedChar':'1f9f6'},{'ariaLabel':'knot','unifiedChar':'1faa2'},{'ariaLabel':'eyeglasses','unifiedChar':'1f453'},{'ariaLabel':'sunglasses','unifiedChar':'1f576-fe0f'},{'ariaLabel':'goggles','unifiedChar':'1f97d'},{'ariaLabel':'lab coat','unifiedChar':'1f97c'},{'ariaLabel':'safety vest','unifiedChar':'1f9ba'},{'ariaLabel':'necktie','unifiedChar':'1f454'},{'ariaLabel':'shirt','unifiedChar':'1f455'},{'ariaLabel':'jeans','unifiedChar':'1f456'},{'ariaLabel':'scarf','unifiedChar':'1f9e3'},{'ariaLabel':'gloves','unifiedChar':'1f9e4'},{'ariaLabel':'coat','unifiedChar':'1f9e5'},{'ariaLabel':'socks','unifiedChar':'1f9e6'},{'ariaLabel':'dress','unifiedChar':'1f457'},{'ariaLabel':'kimono','unifiedChar':'1f458'},{'ariaLabel':'sari','unifiedChar':'1f97b'},{'ariaLabel':'one-piece swimsuit','unifiedChar':'1fa71'},{'ariaLabel':'briefs','unifiedChar':'1fa72'},{'ariaLabel':'shorts','unifiedChar':'1fa73'},{'ariaLabel':'bikini','unifiedChar':'1f459'},{'ariaLabel':'womans clothes','unifiedChar':'1f45a'},{'ariaLabel':'purse','unifiedChar':'1f45b'},{'ariaLabel':'handbag','unifiedChar':'1f45c'},{'ariaLabel':'pouch','unifiedChar':'1f45d'},{'ariaLabel':'shopping bags','unifiedChar':'1f6cd-fe0f'},{'ariaLabel':'school satchel','unifiedChar':'1f392'},{'ariaLabel':'thong sandal','unifiedChar':'1fa74'},{'ariaLabel':'shoe','unifiedChar':'1f45e'},{'ariaLabel':'athletic shoe','unifiedChar':'1f45f'},{'ariaLabel':'hiking boot','unifiedChar':'1f97e'},{'ariaLabel':'flat shoe','unifiedChar':'1f97f'},{'ariaLabel':'high heel','unifiedChar':'1f460'},{'ariaLabel':'sandal','unifiedChar':'1f461'},{'ariaLabel':'ballet shoes','unifiedChar':'1fa70'},{'ariaLabel':'boot','unifiedChar':'1f462'},{'ariaLabel':'crown','unifiedChar':'1f451'},{'ariaLabel':'womans hat','unifiedChar':'1f452'},{'ariaLabel':'tophat','unifiedChar':'1f3a9'},{'ariaLabel':'mortar board','unifiedChar':'1f393'},{'ariaLabel':'billed cap','unifiedChar':'1f9e2'},{'ariaLabel':'military helmet','unifiedChar':'1fa96'},{'ariaLabel':'rescue worker’s helmet','unifiedChar':'26d1-fe0f'},{'ariaLabel':'prayer beads','unifiedChar':'1f4ff'},{'ariaLabel':'lipstick','unifiedChar':'1f484'},{'ariaLabel':'ring','unifiedChar':'1f48d'},{'ariaLabel':'gem','unifiedChar':'1f48e'},{'ariaLabel':'mute','unifiedChar':'1f507'},{'ariaLabel':'speaker','unifiedChar':'1f508'},{'ariaLabel':'sound','unifiedChar':'1f509'},{'ariaLabel':'loud sound','unifiedChar':'1f50a'},{'ariaLabel':'loudspeaker','unifiedChar':'1f4e2'},{'ariaLabel':'mega','unifiedChar':'1f4e3'},{'ariaLabel':'postal horn','unifiedChar':'1f4ef'},{'ariaLabel':'bell','unifiedChar':'1f514'},{'ariaLabel':'no bell','unifiedChar':'1f515'},{'ariaLabel':'musical score','unifiedChar':'1f3bc'},{'ariaLabel':'musical note','unifiedChar':'1f3b5'},{'ariaLabel':'notes','unifiedChar':'1f3b6'},{'ariaLabel':'studio microphone','unifiedChar':'1f399-fe0f'},{'ariaLabel':'level slider','unifiedChar':'1f39a-fe0f'},{'ariaLabel':'control knobs','unifiedChar':'1f39b-fe0f'},{'ariaLabel':'microphone','unifiedChar':'1f3a4'},{'ariaLabel':'headphone','unifiedChar':'1f3a7'},{'ariaLabel':'radio','unifiedChar':'1f4fb'},{'ariaLabel':'saxophone','unifiedChar':'1f3b7'},{'ariaLabel':'accordion','unifiedChar':'1fa97'},{'ariaLabel':'guitar','unifiedChar':'1f3b8'},{'ariaLabel':'musical keyboard','unifiedChar':'1f3b9'},{'ariaLabel':'trumpet','unifiedChar':'1f3ba'},{'ariaLabel':'violin','unifiedChar':'1f3bb'},{'ariaLabel':'banjo','unifiedChar':'1fa95'},{'ariaLabel':'drum with drumsticks','unifiedChar':'1f941'},{'ariaLabel':'long drum','unifiedChar':'1fa98'},{'ariaLabel':'iphone','unifiedChar':'1f4f1'},{'ariaLabel':'calling','unifiedChar':'1f4f2'},{'ariaLabel':'phone','unifiedChar':'260e-fe0f'},{'ariaLabel':'telephone receiver','unifiedChar':'1f4de'},{'ariaLabel':'pager','unifiedChar':'1f4df'},{'ariaLabel':'fax','unifiedChar':'1f4e0'},{'ariaLabel':'battery','unifiedChar':'1f50b'},{'ariaLabel':'low battery','unifiedChar':'1faab'},{'ariaLabel':'electric plug','unifiedChar':'1f50c'},{'ariaLabel':'computer','unifiedChar':'1f4bb'},{'ariaLabel':'desktop computer','unifiedChar':'1f5a5-fe0f'},{'ariaLabel':'printer','unifiedChar':'1f5a8-fe0f'},{'ariaLabel':'keyboard','unifiedChar':'2328-fe0f'},{'ariaLabel':'computer mouse','unifiedChar':'1f5b1-fe0f'},{'ariaLabel':'trackball','unifiedChar':'1f5b2-fe0f'},{'ariaLabel':'minidisc','unifiedChar':'1f4bd'},{'ariaLabel':'floppy disk','unifiedChar':'1f4be'},{'ariaLabel':'cd','unifiedChar':'1f4bf'},{'ariaLabel':'dvd','unifiedChar':'1f4c0'},{'ariaLabel':'abacus','unifiedChar':'1f9ee'},{'ariaLabel':'movie camera','unifiedChar':'1f3a5'},{'ariaLabel':'film frames','unifiedChar':'1f39e-fe0f'},{'ariaLabel':'film projector','unifiedChar':'1f4fd-fe0f'},{'ariaLabel':'clapper','unifiedChar':'1f3ac'},{'ariaLabel':'tv','unifiedChar':'1f4fa'},{'ariaLabel':'camera','unifiedChar':'1f4f7'},{'ariaLabel':'camera with flash','unifiedChar':'1f4f8'},{'ariaLabel':'video camera','unifiedChar':'1f4f9'},{'ariaLabel':'vhs','unifiedChar':'1f4fc'},{'ariaLabel':'mag','unifiedChar':'1f50d'},{'ariaLabel':'mag right','unifiedChar':'1f50e'},{'ariaLabel':'candle','unifiedChar':'1f56f-fe0f'},{'ariaLabel':'bulb','unifiedChar':'1f4a1'},{'ariaLabel':'flashlight','unifiedChar':'1f526'},{'ariaLabel':'lantern','unifiedChar':'1f3ee'},{'ariaLabel':'diya lamp','unifiedChar':'1fa94'},{'ariaLabel':'notebook with decorative cover','unifiedChar':'1f4d4'},{'ariaLabel':'closed book','unifiedChar':'1f4d5'},{'ariaLabel':'book','unifiedChar':'1f4d6'},{'ariaLabel':'green book','unifiedChar':'1f4d7'},{'ariaLabel':'blue book','unifiedChar':'1f4d8'},{'ariaLabel':'orange book','unifiedChar':'1f4d9'},{'ariaLabel':'books','unifiedChar':'1f4da'},{'ariaLabel':'notebook','unifiedChar':'1f4d3'},{'ariaLabel':'ledger','unifiedChar':'1f4d2'},{'ariaLabel':'page with curl','unifiedChar':'1f4c3'},{'ariaLabel':'scroll','unifiedChar':'1f4dc'},{'ariaLabel':'page facing up','unifiedChar':'1f4c4'},{'ariaLabel':'newspaper','unifiedChar':'1f4f0'},{'ariaLabel':'rolled-up newspaper','unifiedChar':'1f5de-fe0f'},{'ariaLabel':'bookmark tabs','unifiedChar':'1f4d1'},{'ariaLabel':'bookmark','unifiedChar':'1f516'},{'ariaLabel':'label','unifiedChar':'1f3f7-fe0f'},{'ariaLabel':'moneybag','unifiedChar':'1f4b0'},{'ariaLabel':'coin','unifiedChar':'1fa99'},{'ariaLabel':'yen','unifiedChar':'1f4b4'},{'ariaLabel':'dollar','unifiedChar':'1f4b5'},{'ariaLabel':'euro','unifiedChar':'1f4b6'},{'ariaLabel':'pound','unifiedChar':'1f4b7'},{'ariaLabel':'money with wings','unifiedChar':'1f4b8'},{'ariaLabel':'credit card','unifiedChar':'1f4b3'},{'ariaLabel':'receipt','unifiedChar':'1f9fe'},{'ariaLabel':'chart','unifiedChar':'1f4b9'},{'ariaLabel':'email','unifiedChar':'2709-fe0f'},{'ariaLabel':'e-mail','unifiedChar':'1f4e7'},{'ariaLabel':'incoming envelope','unifiedChar':'1f4e8'},{'ariaLabel':'envelope with arrow','unifiedChar':'1f4e9'},{'ariaLabel':'outbox tray','unifiedChar':'1f4e4'},{'ariaLabel':'inbox tray','unifiedChar':'1f4e5'},{'ariaLabel':'package','unifiedChar':'1f4e6'},{'ariaLabel':'mailbox','unifiedChar':'1f4eb'},{'ariaLabel':'mailbox closed','unifiedChar':'1f4ea'},{'ariaLabel':'mailbox with mail','unifiedChar':'1f4ec'},{'ariaLabel':'mailbox with no mail','unifiedChar':'1f4ed'},{'ariaLabel':'postbox','unifiedChar':'1f4ee'},{'ariaLabel':'ballot box with ballot','unifiedChar':'1f5f3-fe0f'},{'ariaLabel':'pencil','unifiedChar':'270f-fe0f'},{'ariaLabel':'black nib','unifiedChar':'2712-fe0f'},{'ariaLabel':'fountain pen','unifiedChar':'1f58b-fe0f'},{'ariaLabel':'pen','unifiedChar':'1f58a-fe0f'},{'ariaLabel':'paintbrush','unifiedChar':'1f58c-fe0f'},{'ariaLabel':'crayon','unifiedChar':'1f58d-fe0f'},{'ariaLabel':'memo','unifiedChar':'1f4dd'},{'ariaLabel':'briefcase','unifiedChar':'1f4bc'},{'ariaLabel':'file folder','unifiedChar':'1f4c1'},{'ariaLabel':'open file folder','unifiedChar':'1f4c2'},{'ariaLabel':'card index dividers','unifiedChar':'1f5c2-fe0f'},{'ariaLabel':'date','unifiedChar':'1f4c5'},{'ariaLabel':'calendar','unifiedChar':'1f4c6'},{'ariaLabel':'spiral notepad','unifiedChar':'1f5d2-fe0f'},{'ariaLabel':'spiral calendar','unifiedChar':'1f5d3-fe0f'},{'ariaLabel':'card index','unifiedChar':'1f4c7'},{'ariaLabel':'chart with upwards trend','unifiedChar':'1f4c8'},{'ariaLabel':'chart with downwards trend','unifiedChar':'1f4c9'},{'ariaLabel':'bar chart','unifiedChar':'1f4ca'},{'ariaLabel':'clipboard','unifiedChar':'1f4cb'},{'ariaLabel':'pushpin','unifiedChar':'1f4cc'},{'ariaLabel':'round pushpin','unifiedChar':'1f4cd'},{'ariaLabel':'paperclip','unifiedChar':'1f4ce'},{'ariaLabel':'linked paperclips','unifiedChar':'1f587-fe0f'},{'ariaLabel':'straight ruler','unifiedChar':'1f4cf'},{'ariaLabel':'triangular ruler','unifiedChar':'1f4d0'},{'ariaLabel':'scissors','unifiedChar':'2702-fe0f'},{'ariaLabel':'card file box','unifiedChar':'1f5c3-fe0f'},{'ariaLabel':'file cabinet','unifiedChar':'1f5c4-fe0f'},{'ariaLabel':'wastebasket','unifiedChar':'1f5d1-fe0f'},{'ariaLabel':'lock','unifiedChar':'1f512'},{'ariaLabel':'unlock','unifiedChar':'1f513'},{'ariaLabel':'lock with ink pen','unifiedChar':'1f50f'},{'ariaLabel':'closed lock with key','unifiedChar':'1f510'},{'ariaLabel':'key','unifiedChar':'1f511'},{'ariaLabel':'old key','unifiedChar':'1f5dd-fe0f'},{'ariaLabel':'hammer','unifiedChar':'1f528'},{'ariaLabel':'axe','unifiedChar':'1fa93'},{'ariaLabel':'pick','unifiedChar':'26cf-fe0f'},{'ariaLabel':'hammer and pick','unifiedChar':'2692-fe0f'},{'ariaLabel':'hammer and wrench','unifiedChar':'1f6e0-fe0f'},{'ariaLabel':'dagger','unifiedChar':'1f5e1-fe0f'},{'ariaLabel':'crossed swords','unifiedChar':'2694-fe0f'},{'ariaLabel':'gun','unifiedChar':'1f52b'},{'ariaLabel':'boomerang','unifiedChar':'1fa83'},{'ariaLabel':'bow and arrow','unifiedChar':'1f3f9'},{'ariaLabel':'shield','unifiedChar':'1f6e1-fe0f'},{'ariaLabel':'carpentry saw','unifiedChar':'1fa9a'},{'ariaLabel':'wrench','unifiedChar':'1f527'},{'ariaLabel':'screwdriver','unifiedChar':'1fa9b'},{'ariaLabel':'nut and bolt','unifiedChar':'1f529'},{'ariaLabel':'gear','unifiedChar':'2699-fe0f'},{'ariaLabel':'clamp','unifiedChar':'1f5dc-fe0f'},{'ariaLabel':'scales','unifiedChar':'2696-fe0f'},{'ariaLabel':'probing cane','unifiedChar':'1f9af'},{'ariaLabel':'link','unifiedChar':'1f517'},{'ariaLabel':'chains','unifiedChar':'26d3-fe0f'},{'ariaLabel':'hook','unifiedChar':'1fa9d'},{'ariaLabel':'toolbox','unifiedChar':'1f9f0'},{'ariaLabel':'magnet','unifiedChar':'1f9f2'},{'ariaLabel':'ladder','unifiedChar':'1fa9c'},{'ariaLabel':'alembic','unifiedChar':'2697-fe0f'},{'ariaLabel':'test tube','unifiedChar':'1f9ea'},{'ariaLabel':'petri dish','unifiedChar':'1f9eb'},{'ariaLabel':'dna','unifiedChar':'1f9ec'},{'ariaLabel':'microscope','unifiedChar':'1f52c'},{'ariaLabel':'telescope','unifiedChar':'1f52d'},{'ariaLabel':'satellite antenna','unifiedChar':'1f4e1'},{'ariaLabel':'syringe','unifiedChar':'1f489'},{'ariaLabel':'drop of blood','unifiedChar':'1fa78'},{'ariaLabel':'pill','unifiedChar':'1f48a'},{'ariaLabel':'adhesive bandage','unifiedChar':'1fa79'},{'ariaLabel':'crutch','unifiedChar':'1fa7c'},{'ariaLabel':'stethoscope','unifiedChar':'1fa7a'},{'ariaLabel':'x-ray','unifiedChar':'1fa7b'},{'ariaLabel':'door','unifiedChar':'1f6aa'},{'ariaLabel':'elevator','unifiedChar':'1f6d7'},{'ariaLabel':'mirror','unifiedChar':'1fa9e'},{'ariaLabel':'window','unifiedChar':'1fa9f'},{'ariaLabel':'bed','unifiedChar':'1f6cf-fe0f'},{'ariaLabel':'couch and lamp','unifiedChar':'1f6cb-fe0f'},{'ariaLabel':'chair','unifiedChar':'1fa91'},{'ariaLabel':'toilet','unifiedChar':'1f6bd'},{'ariaLabel':'plunger','unifiedChar':'1faa0'},{'ariaLabel':'shower','unifiedChar':'1f6bf'},{'ariaLabel':'bathtub','unifiedChar':'1f6c1'},{'ariaLabel':'mouse trap','unifiedChar':'1faa4'},{'ariaLabel':'razor','unifiedChar':'1fa92'},{'ariaLabel':'lotion bottle','unifiedChar':'1f9f4'},{'ariaLabel':'safety pin','unifiedChar':'1f9f7'},{'ariaLabel':'broom','unifiedChar':'1f9f9'},{'ariaLabel':'basket','unifiedChar':'1f9fa'},{'ariaLabel':'roll of paper','unifiedChar':'1f9fb'},{'ariaLabel':'bucket','unifiedChar':'1faa3'},{'ariaLabel':'soap','unifiedChar':'1f9fc'},{'ariaLabel':'bubbles','unifiedChar':'1fae7'},{'ariaLabel':'toothbrush','unifiedChar':'1faa5'},{'ariaLabel':'sponge','unifiedChar':'1f9fd'},{'ariaLabel':'fire extinguisher','unifiedChar':'1f9ef'},{'ariaLabel':'shopping trolley','unifiedChar':'1f6d2'},{'ariaLabel':'smoking','unifiedChar':'1f6ac'},{'ariaLabel':'coffin','unifiedChar':'26b0-fe0f'},{'ariaLabel':'headstone','unifiedChar':'1faa6'},{'ariaLabel':'funeral urn','unifiedChar':'26b1-fe0f'},{'ariaLabel':'moyai','unifiedChar':'1f5ff'},{'ariaLabel':'placard','unifiedChar':'1faa7'},{'ariaLabel':'identification card','unifiedChar':'1faaa'},{'ariaLabel':'atm','unifiedChar':'1f3e7'},{'ariaLabel':'put litter in its place','unifiedChar':'1f6ae'},{'ariaLabel':'potable water','unifiedChar':'1f6b0'},{'ariaLabel':'wheelchair','unifiedChar':'267f'},{'ariaLabel':'mens','unifiedChar':'1f6b9'},{'ariaLabel':'womens','unifiedChar':'1f6ba'},{'ariaLabel':'restroom','unifiedChar':'1f6bb'},{'ariaLabel':'baby symbol','unifiedChar':'1f6bc'},{'ariaLabel':'wc','unifiedChar':'1f6be'},{'ariaLabel':'passport control','unifiedChar':'1f6c2'},{'ariaLabel':'customs','unifiedChar':'1f6c3'},{'ariaLabel':'baggage claim','unifiedChar':'1f6c4'},{'ariaLabel':'left luggage','unifiedChar':'1f6c5'},{'ariaLabel':'warning','unifiedChar':'26a0-fe0f'},{'ariaLabel':'children crossing','unifiedChar':'1f6b8'},{'ariaLabel':'no entry','unifiedChar':'26d4'},{'ariaLabel':'no entry sign','unifiedChar':'1f6ab'},{'ariaLabel':'no bicycles','unifiedChar':'1f6b3'},{'ariaLabel':'no smoking','unifiedChar':'1f6ad'},{'ariaLabel':'do not litter','unifiedChar':'1f6af'},{'ariaLabel':'non-potable water','unifiedChar':'1f6b1'},{'ariaLabel':'no pedestrians','unifiedChar':'1f6b7'},{'ariaLabel':'no mobile phones','unifiedChar':'1f4f5'},{'ariaLabel':'underage','unifiedChar':'1f51e'},{'ariaLabel':'radioactive','unifiedChar':'2622-fe0f'},{'ariaLabel':'biohazard','unifiedChar':'2623-fe0f'},{'ariaLabel':'arrow up','unifiedChar':'2b06-fe0f'},{'ariaLabel':'north east arrow','unifiedChar':'2197-fe0f'},{'ariaLabel':'arrow right','unifiedChar':'27a1-fe0f'},{'ariaLabel':'south east arrow','unifiedChar':'2198-fe0f'},{'ariaLabel':'arrow down','unifiedChar':'2b07-fe0f'},{'ariaLabel':'south west arrow','unifiedChar':'2199-fe0f'},{'ariaLabel':'arrow left','unifiedChar':'2b05-fe0f'},{'ariaLabel':'north west arrow','unifiedChar':'2196-fe0f'},{'ariaLabel':'up down arrow','unifiedChar':'2195-fe0f'},{'ariaLabel':'left right arrow','unifiedChar':'2194-fe0f'},{'ariaLabel':'leftwards arrow with hook','unifiedChar':'21a9-fe0f'},{'ariaLabel':'arrow right hook','unifiedChar':'21aa-fe0f'},{'ariaLabel':'arrow heading up','unifiedChar':'2934-fe0f'},{'ariaLabel':'arrow heading down','unifiedChar':'2935-fe0f'},{'ariaLabel':'arrows clockwise','unifiedChar':'1f503'},{'ariaLabel':'arrows counterclockwise','unifiedChar':'1f504'},{'ariaLabel':'back','unifiedChar':'1f519'},{'ariaLabel':'end','unifiedChar':'1f51a'},{'ariaLabel':'on','unifiedChar':'1f51b'},{'ariaLabel':'soon','unifiedChar':'1f51c'},{'ariaLabel':'top','unifiedChar':'1f51d'},{'ariaLabel':'place of worship','unifiedChar':'1f6d0'},{'ariaLabel':'atom symbol','unifiedChar':'269b-fe0f'},{'ariaLabel':'om','unifiedChar':'1f549-fe0f'},{'ariaLabel':'star of david','unifiedChar':'2721-fe0f'},{'ariaLabel':'wheel of dharma','unifiedChar':'2638-fe0f'},{'ariaLabel':'yin yang','unifiedChar':'262f-fe0f'},{'ariaLabel':'latin cross','unifiedChar':'271d-fe0f'},{'ariaLabel':'orthodox cross','unifiedChar':'2626-fe0f'},{'ariaLabel':'star and crescent','unifiedChar':'262a-fe0f'},{'ariaLabel':'peace symbol','unifiedChar':'262e-fe0f'},{'ariaLabel':'menorah with nine branches','unifiedChar':'1f54e'},{'ariaLabel':'six pointed star','unifiedChar':'1f52f'},{'ariaLabel':'aries','unifiedChar':'2648'},{'ariaLabel':'taurus','unifiedChar':'2649'},{'ariaLabel':'gemini','unifiedChar':'264a'},{'ariaLabel':'cancer','unifiedChar':'264b'},{'ariaLabel':'leo','unifiedChar':'264c'},{'ariaLabel':'virgo','unifiedChar':'264d'},{'ariaLabel':'libra','unifiedChar':'264e'},{'ariaLabel':'scorpius','unifiedChar':'264f'},{'ariaLabel':'sagittarius','unifiedChar':'2650'},{'ariaLabel':'capricorn','unifiedChar':'2651'},{'ariaLabel':'aquarius','unifiedChar':'2652'},{'ariaLabel':'pisces','unifiedChar':'2653'},{'ariaLabel':'ophiuchus','unifiedChar':'26ce'},{'ariaLabel':'twisted rightwards arrows','unifiedChar':'1f500'},{'ariaLabel':'repeat','unifiedChar':'1f501'},{'ariaLabel':'repeat one','unifiedChar':'1f502'},{'ariaLabel':'arrow forward','unifiedChar':'25b6-fe0f'},{'ariaLabel':'fast forward','unifiedChar':'23e9'},{'ariaLabel':'next track button','unifiedChar':'23ed-fe0f'},{'ariaLabel':'play or pause button','unifiedChar':'23ef-fe0f'},{'ariaLabel':'arrow backward','unifiedChar':'25c0-fe0f'},{'ariaLabel':'rewind','unifiedChar':'23ea'},{'ariaLabel':'last track button','unifiedChar':'23ee-fe0f'},{'ariaLabel':'arrow up small','unifiedChar':'1f53c'},{'ariaLabel':'arrow double up','unifiedChar':'23eb'},{'ariaLabel':'arrow down small','unifiedChar':'1f53d'},{'ariaLabel':'arrow double down','unifiedChar':'23ec'},{'ariaLabel':'pause button','unifiedChar':'23f8-fe0f'},{'ariaLabel':'stop button','unifiedChar':'23f9-fe0f'},{'ariaLabel':'record button','unifiedChar':'23fa-fe0f'},{'ariaLabel':'eject','unifiedChar':'23cf-fe0f'},{'ariaLabel':'cinema','unifiedChar':'1f3a6'},{'ariaLabel':'low brightness','unifiedChar':'1f505'},{'ariaLabel':'high brightness','unifiedChar':'1f506'},{'ariaLabel':'signal strength','unifiedChar':'1f4f6'},{'ariaLabel':'vibration mode','unifiedChar':'1f4f3'},{'ariaLabel':'mobile phone off','unifiedChar':'1f4f4'},{'ariaLabel':'transgender symbol','unifiedChar':'26a7-fe0f'},{'ariaLabel':'heavy multiplication x','unifiedChar':'2716-fe0f'},{'ariaLabel':'heavy plus sign','unifiedChar':'2795'},{'ariaLabel':'heavy minus sign','unifiedChar':'2796'},{'ariaLabel':'heavy division sign','unifiedChar':'2797'},{'ariaLabel':'heavy equals sign','unifiedChar':'1f7f0'},{'ariaLabel':'infinity','unifiedChar':'267e-fe0f'},{'ariaLabel':'bangbang','unifiedChar':'203c-fe0f'},{'ariaLabel':'interrobang','unifiedChar':'2049-fe0f'},{'ariaLabel':'question','unifiedChar':'2753'},{'ariaLabel':'grey question','unifiedChar':'2754'},{'ariaLabel':'grey exclamation','unifiedChar':'2755'},{'ariaLabel':'exclamation','unifiedChar':'2757'},{'ariaLabel':'wavy dash','unifiedChar':'3030-fe0f'},{'ariaLabel':'currency exchange','unifiedChar':'1f4b1'},{'ariaLabel':'heavy dollar sign','unifiedChar':'1f4b2'},{'ariaLabel':'recycle','unifiedChar':'267b-fe0f'},{'ariaLabel':'fleur-de-lis','unifiedChar':'269c-fe0f'},{'ariaLabel':'trident','unifiedChar':'1f531'},{'ariaLabel':'name badge','unifiedChar':'1f4db'},{'ariaLabel':'beginner','unifiedChar':'1f530'},{'ariaLabel':'o','unifiedChar':'2b55'},{'ariaLabel':'white check mark','unifiedChar':'2705'},{'ariaLabel':'ballot box with check','unifiedChar':'2611-fe0f'},{'ariaLabel':'heavy check mark','unifiedChar':'2714-fe0f'},{'ariaLabel':'x','unifiedChar':'274c'},{'ariaLabel':'negative squared cross mark','unifiedChar':'274e'},{'ariaLabel':'curly loop','unifiedChar':'27b0'},{'ariaLabel':'loop','unifiedChar':'27bf'},{'ariaLabel':'part alternation mark','unifiedChar':'303d-fe0f'},{'ariaLabel':'eight spoked asterisk','unifiedChar':'2733-fe0f'},{'ariaLabel':'eight pointed black star','unifiedChar':'2734-fe0f'},{'ariaLabel':'sparkle','unifiedChar':'2747-fe0f'},{'ariaLabel':'copyright','unifiedChar':'00a9-fe0f'},{'ariaLabel':'registered','unifiedChar':'00ae-fe0f'},{'ariaLabel':'tm','unifiedChar':'2122-fe0f'},{'ariaLabel':'hash','unifiedChar':'0023-fe0f-20e3'},{'ariaLabel':'keycap: *','unifiedChar':'002a-fe0f-20e3'},{'ariaLabel':'zero','unifiedChar':'0030-fe0f-20e3'},{'ariaLabel':'one','unifiedChar':'0031-fe0f-20e3'},{'ariaLabel':'two','unifiedChar':'0032-fe0f-20e3'},{'ariaLabel':'three','unifiedChar':'0033-fe0f-20e3'},{'ariaLabel':'four','unifiedChar':'0034-fe0f-20e3'},{'ariaLabel':'five','unifiedChar':'0035-fe0f-20e3'},{'ariaLabel':'six','unifiedChar':'0036-fe0f-20e3'},{'ariaLabel':'seven','unifiedChar':'0037-fe0f-20e3'},{'ariaLabel':'eight','unifiedChar':'0038-fe0f-20e3'},{'ariaLabel':'nine','unifiedChar':'0039-fe0f-20e3'},{'ariaLabel':'keycap ten','unifiedChar':'1f51f'},{'ariaLabel':'capital abcd','unifiedChar':'1f520'},{'ariaLabel':'abcd','unifiedChar':'1f521'},{'ariaLabel':'1234','unifiedChar':'1f522'},{'ariaLabel':'symbols','unifiedChar':'1f523'},{'ariaLabel':'abc','unifiedChar':'1f524'},{'ariaLabel':'a','unifiedChar':'1f170-fe0f'},{'ariaLabel':'ab','unifiedChar':'1f18e'},{'ariaLabel':'b','unifiedChar':'1f171-fe0f'},{'ariaLabel':'cl','unifiedChar':'1f191'},{'ariaLabel':'cool','unifiedChar':'1f192'},{'ariaLabel':'free','unifiedChar':'1f193'},{'ariaLabel':'information source','unifiedChar':'2139-fe0f'},{'ariaLabel':'id','unifiedChar':'1f194'},{'ariaLabel':'m','unifiedChar':'24c2-fe0f'},{'ariaLabel':'new','unifiedChar':'1f195'},{'ariaLabel':'ng','unifiedChar':'1f196'},{'ariaLabel':'o2','unifiedChar':'1f17e-fe0f'},{'ariaLabel':'ok','unifiedChar':'1f197'},{'ariaLabel':'parking','unifiedChar':'1f17f-fe0f'},{'ariaLabel':'sos','unifiedChar':'1f198'},{'ariaLabel':'up','unifiedChar':'1f199'},{'ariaLabel':'vs','unifiedChar':'1f19a'},{'ariaLabel':'koko','unifiedChar':'1f201'},{'ariaLabel':'sa','unifiedChar':'1f202-fe0f'},{'ariaLabel':'u6708','unifiedChar':'1f237-fe0f'},{'ariaLabel':'u6709','unifiedChar':'1f236'},{'ariaLabel':'u6307','unifiedChar':'1f22f'},{'ariaLabel':'ideograph advantage','unifiedChar':'1f250'},{'ariaLabel':'u5272','unifiedChar':'1f239'},{'ariaLabel':'u7121','unifiedChar':'1f21a'},{'ariaLabel':'u7981','unifiedChar':'1f232'},{'ariaLabel':'accept','unifiedChar':'1f251'},{'ariaLabel':'u7533','unifiedChar':'1f238'},{'ariaLabel':'u5408','unifiedChar':'1f234'},{'ariaLabel':'u7a7a','unifiedChar':'1f233'},{'ariaLabel':'congratulations','unifiedChar':'3297-fe0f'},{'ariaLabel':'secret','unifiedChar':'3299-fe0f'},{'ariaLabel':'u55b6','unifiedChar':'1f23a'},{'ariaLabel':'u6e80','unifiedChar':'1f235'},{'ariaLabel':'red circle','unifiedChar':'1f534'},{'ariaLabel':'large orange circle','unifiedChar':'1f7e0'},{'ariaLabel':'large yellow circle','unifiedChar':'1f7e1'},{'ariaLabel':'large green circle','unifiedChar':'1f7e2'},{'ariaLabel':'large blue circle','unifiedChar':'1f535'},{'ariaLabel':'large purple circle','unifiedChar':'1f7e3'},{'ariaLabel':'large brown circle','unifiedChar':'1f7e4'},{'ariaLabel':'black circle','unifiedChar':'26ab'},{'ariaLabel':'white circle','unifiedChar':'26aa'},{'ariaLabel':'large red square','unifiedChar':'1f7e5'},{'ariaLabel':'large orange square','unifiedChar':'1f7e7'},{'ariaLabel':'large yellow square','unifiedChar':'1f7e8'},{'ariaLabel':'large green square','unifiedChar':'1f7e9'},{'ariaLabel':'large blue square','unifiedChar':'1f7e6'},{'ariaLabel':'large purple square','unifiedChar':'1f7ea'},{'ariaLabel':'large brown square','unifiedChar':'1f7eb'},{'ariaLabel':'black large square','unifiedChar':'2b1b'},{'ariaLabel':'white large square','unifiedChar':'2b1c'},{'ariaLabel':'black medium square','unifiedChar':'25fc-fe0f'},{'ariaLabel':'white medium square','unifiedChar':'25fb-fe0f'},{'ariaLabel':'black medium small square','unifiedChar':'25fe'},{'ariaLabel':'white medium small square','unifiedChar':'25fd'},{'ariaLabel':'black small square','unifiedChar':'25aa-fe0f'},{'ariaLabel':'white small square','unifiedChar':'25ab-fe0f'},{'ariaLabel':'large orange diamond','unifiedChar':'1f536'},{'ariaLabel':'large blue diamond','unifiedChar':'1f537'},{'ariaLabel':'small orange diamond','unifiedChar':'1f538'},{'ariaLabel':'small blue diamond','unifiedChar':'1f539'},{'ariaLabel':'small red triangle','unifiedChar':'1f53a'},{'ariaLabel':'small red triangle down','unifiedChar':'1f53b'},{'ariaLabel':'diamond shape with a dot inside','unifiedChar':'1f4a0'},{'ariaLabel':'radio button','unifiedChar':'1f518'},{'ariaLabel':'white square button','unifiedChar':'1f533'},{'ariaLabel':'black square button','unifiedChar':'1f532'},{'ariaLabel':'chequered flag','unifiedChar':'1f3c1'},{'ariaLabel':'triangular flag on post','unifiedChar':'1f6a9'},{'ariaLabel':'crossed flags','unifiedChar':'1f38c'},{'ariaLabel':'waving black flag','unifiedChar':'1f3f4'},{'ariaLabel':'white flag','unifiedChar':'1f3f3-fe0f'},{'ariaLabel':'rainbow flag','unifiedChar':'1f3f3-fe0f-200d-1f308'},{'ariaLabel':'transgender flag','unifiedChar':'1f3f3-fe0f-200d-26a7-fe0f'},{'ariaLabel':'pirate flag','unifiedChar':'1f3f4-200d-2620-fe0f'},{'ariaLabel':'ascension island flag','unifiedChar':'1f1e6-1f1e8'},{'ariaLabel':'andorra flag','unifiedChar':'1f1e6-1f1e9'},{'ariaLabel':'united arab emirates flag','unifiedChar':'1f1e6-1f1ea'},{'ariaLabel':'afghanistan flag','unifiedChar':'1f1e6-1f1eb'},{'ariaLabel':'antigua & barbuda flag','unifiedChar':'1f1e6-1f1ec'},{'ariaLabel':'anguilla flag','unifiedChar':'1f1e6-1f1ee'},{'ariaLabel':'albania flag','unifiedChar':'1f1e6-1f1f1'},{'ariaLabel':'armenia flag','unifiedChar':'1f1e6-1f1f2'},{'ariaLabel':'angola flag','unifiedChar':'1f1e6-1f1f4'},{'ariaLabel':'antarctica flag','unifiedChar':'1f1e6-1f1f6'},{'ariaLabel':'argentina flag','unifiedChar':'1f1e6-1f1f7'},{'ariaLabel':'american samoa flag','unifiedChar':'1f1e6-1f1f8'},{'ariaLabel':'austria flag','unifiedChar':'1f1e6-1f1f9'},{'ariaLabel':'australia flag','unifiedChar':'1f1e6-1f1fa'},{'ariaLabel':'aruba flag','unifiedChar':'1f1e6-1f1fc'},{'ariaLabel':'åland islands flag','unifiedChar':'1f1e6-1f1fd'},{'ariaLabel':'azerbaijan flag','unifiedChar':'1f1e6-1f1ff'},{'ariaLabel':'bosnia & herzegovina flag','unifiedChar':'1f1e7-1f1e6'},{'ariaLabel':'barbados flag','unifiedChar':'1f1e7-1f1e7'},{'ariaLabel':'bangladesh flag','unifiedChar':'1f1e7-1f1e9'},{'ariaLabel':'belgium flag','unifiedChar':'1f1e7-1f1ea'},{'ariaLabel':'burkina faso flag','unifiedChar':'1f1e7-1f1eb'},{'ariaLabel':'bulgaria flag','unifiedChar':'1f1e7-1f1ec'},{'ariaLabel':'bahrain flag','unifiedChar':'1f1e7-1f1ed'},{'ariaLabel':'burundi flag','unifiedChar':'1f1e7-1f1ee'},{'ariaLabel':'benin flag','unifiedChar':'1f1e7-1f1ef'},{'ariaLabel':'st. barthélemy flag','unifiedChar':'1f1e7-1f1f1'},{'ariaLabel':'bermuda flag','unifiedChar':'1f1e7-1f1f2'},{'ariaLabel':'brunei flag','unifiedChar':'1f1e7-1f1f3'},{'ariaLabel':'bolivia flag','unifiedChar':'1f1e7-1f1f4'},{'ariaLabel':'caribbean netherlands flag','unifiedChar':'1f1e7-1f1f6'},{'ariaLabel':'brazil flag','unifiedChar':'1f1e7-1f1f7'},{'ariaLabel':'bahamas flag','unifiedChar':'1f1e7-1f1f8'},{'ariaLabel':'bhutan flag','unifiedChar':'1f1e7-1f1f9'},{'ariaLabel':'bouvet island flag','unifiedChar':'1f1e7-1f1fb'},{'ariaLabel':'botswana flag','unifiedChar':'1f1e7-1f1fc'},{'ariaLabel':'belarus flag','unifiedChar':'1f1e7-1f1fe'},{'ariaLabel':'belize flag','unifiedChar':'1f1e7-1f1ff'},{'ariaLabel':'canada flag','unifiedChar':'1f1e8-1f1e6'},{'ariaLabel':'cocos (keeling) islands flag','unifiedChar':'1f1e8-1f1e8'},{'ariaLabel':'congo - kinshasa flag','unifiedChar':'1f1e8-1f1e9'},{'ariaLabel':'central african republic flag','unifiedChar':'1f1e8-1f1eb'},{'ariaLabel':'congo - brazzaville flag','unifiedChar':'1f1e8-1f1ec'},{'ariaLabel':'switzerland flag','unifiedChar':'1f1e8-1f1ed'},{'ariaLabel':'côte d’ivoire flag','unifiedChar':'1f1e8-1f1ee'},{'ariaLabel':'cook islands flag','unifiedChar':'1f1e8-1f1f0'},{'ariaLabel':'chile flag','unifiedChar':'1f1e8-1f1f1'},{'ariaLabel':'cameroon flag','unifiedChar':'1f1e8-1f1f2'},{'ariaLabel':'cn','unifiedChar':'1f1e8-1f1f3'},{'ariaLabel':'colombia flag','unifiedChar':'1f1e8-1f1f4'},{'ariaLabel':'clipperton island flag','unifiedChar':'1f1e8-1f1f5'},{'ariaLabel':'costa rica flag','unifiedChar':'1f1e8-1f1f7'},{'ariaLabel':'cuba flag','unifiedChar':'1f1e8-1f1fa'},{'ariaLabel':'cape verde flag','unifiedChar':'1f1e8-1f1fb'},{'ariaLabel':'curaçao flag','unifiedChar':'1f1e8-1f1fc'},{'ariaLabel':'christmas island flag','unifiedChar':'1f1e8-1f1fd'},{'ariaLabel':'cyprus flag','unifiedChar':'1f1e8-1f1fe'},{'ariaLabel':'czechia flag','unifiedChar':'1f1e8-1f1ff'},{'ariaLabel':'de','unifiedChar':'1f1e9-1f1ea'},{'ariaLabel':'diego garcia flag','unifiedChar':'1f1e9-1f1ec'},{'ariaLabel':'djibouti flag','unifiedChar':'1f1e9-1f1ef'},{'ariaLabel':'denmark flag','unifiedChar':'1f1e9-1f1f0'},{'ariaLabel':'dominica flag','unifiedChar':'1f1e9-1f1f2'},{'ariaLabel':'dominican republic flag','unifiedChar':'1f1e9-1f1f4'},{'ariaLabel':'algeria flag','unifiedChar':'1f1e9-1f1ff'},{'ariaLabel':'ceuta & melilla flag','unifiedChar':'1f1ea-1f1e6'},{'ariaLabel':'ecuador flag','unifiedChar':'1f1ea-1f1e8'},{'ariaLabel':'estonia flag','unifiedChar':'1f1ea-1f1ea'},{'ariaLabel':'egypt flag','unifiedChar':'1f1ea-1f1ec'},{'ariaLabel':'western sahara flag','unifiedChar':'1f1ea-1f1ed'},{'ariaLabel':'eritrea flag','unifiedChar':'1f1ea-1f1f7'},{'ariaLabel':'es','unifiedChar':'1f1ea-1f1f8'},{'ariaLabel':'ethiopia flag','unifiedChar':'1f1ea-1f1f9'},{'ariaLabel':'european union flag','unifiedChar':'1f1ea-1f1fa'},{'ariaLabel':'finland flag','unifiedChar':'1f1eb-1f1ee'},{'ariaLabel':'fiji flag','unifiedChar':'1f1eb-1f1ef'},{'ariaLabel':'falkland islands flag','unifiedChar':'1f1eb-1f1f0'},{'ariaLabel':'micronesia flag','unifiedChar':'1f1eb-1f1f2'},{'ariaLabel':'faroe islands flag','unifiedChar':'1f1eb-1f1f4'},{'ariaLabel':'fr','unifiedChar':'1f1eb-1f1f7'},{'ariaLabel':'gabon flag','unifiedChar':'1f1ec-1f1e6'},{'ariaLabel':'gb','unifiedChar':'1f1ec-1f1e7'},{'ariaLabel':'grenada flag','unifiedChar':'1f1ec-1f1e9'},{'ariaLabel':'georgia flag','unifiedChar':'1f1ec-1f1ea'},{'ariaLabel':'french guiana flag','unifiedChar':'1f1ec-1f1eb'},{'ariaLabel':'guernsey flag','unifiedChar':'1f1ec-1f1ec'},{'ariaLabel':'ghana flag','unifiedChar':'1f1ec-1f1ed'},{'ariaLabel':'gibraltar flag','unifiedChar':'1f1ec-1f1ee'},{'ariaLabel':'greenland flag','unifiedChar':'1f1ec-1f1f1'},{'ariaLabel':'gambia flag','unifiedChar':'1f1ec-1f1f2'},{'ariaLabel':'guinea flag','unifiedChar':'1f1ec-1f1f3'},{'ariaLabel':'guadeloupe flag','unifiedChar':'1f1ec-1f1f5'},{'ariaLabel':'equatorial guinea flag','unifiedChar':'1f1ec-1f1f6'},{'ariaLabel':'greece flag','unifiedChar':'1f1ec-1f1f7'},{'ariaLabel':'south georgia & south sandwich islands flag','unifiedChar':'1f1ec-1f1f8'},{'ariaLabel':'guatemala flag','unifiedChar':'1f1ec-1f1f9'},{'ariaLabel':'guam flag','unifiedChar':'1f1ec-1f1fa'},{'ariaLabel':'guinea-bissau flag','unifiedChar':'1f1ec-1f1fc'},{'ariaLabel':'guyana flag','unifiedChar':'1f1ec-1f1fe'},{'ariaLabel':'hong kong sar china flag','unifiedChar':'1f1ed-1f1f0'},{'ariaLabel':'heard & mcdonald islands flag','unifiedChar':'1f1ed-1f1f2'},{'ariaLabel':'honduras flag','unifiedChar':'1f1ed-1f1f3'},{'ariaLabel':'croatia flag','unifiedChar':'1f1ed-1f1f7'},{'ariaLabel':'haiti flag','unifiedChar':'1f1ed-1f1f9'},{'ariaLabel':'hungary flag','unifiedChar':'1f1ed-1f1fa'},{'ariaLabel':'canary islands flag','unifiedChar':'1f1ee-1f1e8'},{'ariaLabel':'indonesia flag','unifiedChar':'1f1ee-1f1e9'},{'ariaLabel':'ireland flag','unifiedChar':'1f1ee-1f1ea'},{'ariaLabel':'israel flag','unifiedChar':'1f1ee-1f1f1'},{'ariaLabel':'isle of man flag','unifiedChar':'1f1ee-1f1f2'},{'ariaLabel':'india flag','unifiedChar':'1f1ee-1f1f3'},{'ariaLabel':'british indian ocean territory flag','unifiedChar':'1f1ee-1f1f4'},{'ariaLabel':'iraq flag','unifiedChar':'1f1ee-1f1f6'},{'ariaLabel':'iran flag','unifiedChar':'1f1ee-1f1f7'},{'ariaLabel':'iceland flag','unifiedChar':'1f1ee-1f1f8'},{'ariaLabel':'it','unifiedChar':'1f1ee-1f1f9'},{'ariaLabel':'jersey flag','unifiedChar':'1f1ef-1f1ea'},{'ariaLabel':'jamaica flag','unifiedChar':'1f1ef-1f1f2'},{'ariaLabel':'jordan flag','unifiedChar':'1f1ef-1f1f4'},{'ariaLabel':'jp','unifiedChar':'1f1ef-1f1f5'},{'ariaLabel':'kenya flag','unifiedChar':'1f1f0-1f1ea'},{'ariaLabel':'kyrgyzstan flag','unifiedChar':'1f1f0-1f1ec'},{'ariaLabel':'cambodia flag','unifiedChar':'1f1f0-1f1ed'},{'ariaLabel':'kiribati flag','unifiedChar':'1f1f0-1f1ee'},{'ariaLabel':'comoros flag','unifiedChar':'1f1f0-1f1f2'},{'ariaLabel':'st. kitts & nevis flag','unifiedChar':'1f1f0-1f1f3'},{'ariaLabel':'north korea flag','unifiedChar':'1f1f0-1f1f5'},{'ariaLabel':'kr','unifiedChar':'1f1f0-1f1f7'},{'ariaLabel':'kuwait flag','unifiedChar':'1f1f0-1f1fc'},{'ariaLabel':'cayman islands flag','unifiedChar':'1f1f0-1f1fe'},{'ariaLabel':'kazakhstan flag','unifiedChar':'1f1f0-1f1ff'},{'ariaLabel':'laos flag','unifiedChar':'1f1f1-1f1e6'},{'ariaLabel':'lebanon flag','unifiedChar':'1f1f1-1f1e7'},{'ariaLabel':'st. lucia flag','unifiedChar':'1f1f1-1f1e8'},{'ariaLabel':'liechtenstein flag','unifiedChar':'1f1f1-1f1ee'},{'ariaLabel':'sri lanka flag','unifiedChar':'1f1f1-1f1f0'},{'ariaLabel':'liberia flag','unifiedChar':'1f1f1-1f1f7'},{'ariaLabel':'lesotho flag','unifiedChar':'1f1f1-1f1f8'},{'ariaLabel':'lithuania flag','unifiedChar':'1f1f1-1f1f9'},{'ariaLabel':'luxembourg flag','unifiedChar':'1f1f1-1f1fa'},{'ariaLabel':'latvia flag','unifiedChar':'1f1f1-1f1fb'},{'ariaLabel':'libya flag','unifiedChar':'1f1f1-1f1fe'},{'ariaLabel':'morocco flag','unifiedChar':'1f1f2-1f1e6'},{'ariaLabel':'monaco flag','unifiedChar':'1f1f2-1f1e8'},{'ariaLabel':'moldova flag','unifiedChar':'1f1f2-1f1e9'},{'ariaLabel':'montenegro flag','unifiedChar':'1f1f2-1f1ea'},{'ariaLabel':'st. martin flag','unifiedChar':'1f1f2-1f1eb'},{'ariaLabel':'madagascar flag','unifiedChar':'1f1f2-1f1ec'},{'ariaLabel':'marshall islands flag','unifiedChar':'1f1f2-1f1ed'},{'ariaLabel':'north macedonia flag','unifiedChar':'1f1f2-1f1f0'},{'ariaLabel':'mali flag','unifiedChar':'1f1f2-1f1f1'},{'ariaLabel':'myanmar (burma) flag','unifiedChar':'1f1f2-1f1f2'},{'ariaLabel':'mongolia flag','unifiedChar':'1f1f2-1f1f3'},{'ariaLabel':'macao sar china flag','unifiedChar':'1f1f2-1f1f4'},{'ariaLabel':'northern mariana islands flag','unifiedChar':'1f1f2-1f1f5'},{'ariaLabel':'martinique flag','unifiedChar':'1f1f2-1f1f6'},{'ariaLabel':'mauritania flag','unifiedChar':'1f1f2-1f1f7'},{'ariaLabel':'montserrat flag','unifiedChar':'1f1f2-1f1f8'},{'ariaLabel':'malta flag','unifiedChar':'1f1f2-1f1f9'},{'ariaLabel':'mauritius flag','unifiedChar':'1f1f2-1f1fa'},{'ariaLabel':'maldives flag','unifiedChar':'1f1f2-1f1fb'},{'ariaLabel':'malawi flag','unifiedChar':'1f1f2-1f1fc'},{'ariaLabel':'mexico flag','unifiedChar':'1f1f2-1f1fd'},{'ariaLabel':'malaysia flag','unifiedChar':'1f1f2-1f1fe'},{'ariaLabel':'mozambique flag','unifiedChar':'1f1f2-1f1ff'},{'ariaLabel':'namibia flag','unifiedChar':'1f1f3-1f1e6'},{'ariaLabel':'new caledonia flag','unifiedChar':'1f1f3-1f1e8'},{'ariaLabel':'niger flag','unifiedChar':'1f1f3-1f1ea'},{'ariaLabel':'norfolk island flag','unifiedChar':'1f1f3-1f1eb'},{'ariaLabel':'nigeria flag','unifiedChar':'1f1f3-1f1ec'},{'ariaLabel':'nicaragua flag','unifiedChar':'1f1f3-1f1ee'},{'ariaLabel':'netherlands flag','unifiedChar':'1f1f3-1f1f1'},{'ariaLabel':'norway flag','unifiedChar':'1f1f3-1f1f4'},{'ariaLabel':'nepal flag','unifiedChar':'1f1f3-1f1f5'},{'ariaLabel':'nauru flag','unifiedChar':'1f1f3-1f1f7'},{'ariaLabel':'niue flag','unifiedChar':'1f1f3-1f1fa'},{'ariaLabel':'new zealand flag','unifiedChar':'1f1f3-1f1ff'},{'ariaLabel':'oman flag','unifiedChar':'1f1f4-1f1f2'},{'ariaLabel':'panama flag','unifiedChar':'1f1f5-1f1e6'},{'ariaLabel':'peru flag','unifiedChar':'1f1f5-1f1ea'},{'ariaLabel':'french polynesia flag','unifiedChar':'1f1f5-1f1eb'},{'ariaLabel':'papua new guinea flag','unifiedChar':'1f1f5-1f1ec'},{'ariaLabel':'philippines flag','unifiedChar':'1f1f5-1f1ed'},{'ariaLabel':'pakistan flag','unifiedChar':'1f1f5-1f1f0'},{'ariaLabel':'poland flag','unifiedChar':'1f1f5-1f1f1'},{'ariaLabel':'st. pierre & miquelon flag','unifiedChar':'1f1f5-1f1f2'},{'ariaLabel':'pitcairn islands flag','unifiedChar':'1f1f5-1f1f3'},{'ariaLabel':'puerto rico flag','unifiedChar':'1f1f5-1f1f7'},{'ariaLabel':'palestinian territories flag','unifiedChar':'1f1f5-1f1f8'},{'ariaLabel':'portugal flag','unifiedChar':'1f1f5-1f1f9'},{'ariaLabel':'palau flag','unifiedChar':'1f1f5-1f1fc'},{'ariaLabel':'paraguay flag','unifiedChar':'1f1f5-1f1fe'},{'ariaLabel':'qatar flag','unifiedChar':'1f1f6-1f1e6'},{'ariaLabel':'réunion flag','unifiedChar':'1f1f7-1f1ea'},{'ariaLabel':'romania flag','unifiedChar':'1f1f7-1f1f4'},{'ariaLabel':'serbia flag','unifiedChar':'1f1f7-1f1f8'},{'ariaLabel':'ru','unifiedChar':'1f1f7-1f1fa'},{'ariaLabel':'rwanda flag','unifiedChar':'1f1f7-1f1fc'},{'ariaLabel':'saudi arabia flag','unifiedChar':'1f1f8-1f1e6'},{'ariaLabel':'solomon islands flag','unifiedChar':'1f1f8-1f1e7'},{'ariaLabel':'seychelles flag','unifiedChar':'1f1f8-1f1e8'},{'ariaLabel':'sudan flag','unifiedChar':'1f1f8-1f1e9'},{'ariaLabel':'sweden flag','unifiedChar':'1f1f8-1f1ea'},{'ariaLabel':'singapore flag','unifiedChar':'1f1f8-1f1ec'},{'ariaLabel':'st. helena flag','unifiedChar':'1f1f8-1f1ed'},{'ariaLabel':'slovenia flag','unifiedChar':'1f1f8-1f1ee'},{'ariaLabel':'svalbard & jan mayen flag','unifiedChar':'1f1f8-1f1ef'},{'ariaLabel':'slovakia flag','unifiedChar':'1f1f8-1f1f0'},{'ariaLabel':'sierra leone flag','unifiedChar':'1f1f8-1f1f1'},{'ariaLabel':'san marino flag','unifiedChar':'1f1f8-1f1f2'},{'ariaLabel':'senegal flag','unifiedChar':'1f1f8-1f1f3'},{'ariaLabel':'somalia flag','unifiedChar':'1f1f8-1f1f4'},{'ariaLabel':'suriname flag','unifiedChar':'1f1f8-1f1f7'},{'ariaLabel':'south sudan flag','unifiedChar':'1f1f8-1f1f8'},{'ariaLabel':'são tomé & príncipe flag','unifiedChar':'1f1f8-1f1f9'},{'ariaLabel':'el salvador flag','unifiedChar':'1f1f8-1f1fb'},{'ariaLabel':'sint maarten flag','unifiedChar':'1f1f8-1f1fd'},{'ariaLabel':'syria flag','unifiedChar':'1f1f8-1f1fe'},{'ariaLabel':'eswatini flag','unifiedChar':'1f1f8-1f1ff'},{'ariaLabel':'tristan da cunha flag','unifiedChar':'1f1f9-1f1e6'},{'ariaLabel':'turks & caicos islands flag','unifiedChar':'1f1f9-1f1e8'},{'ariaLabel':'chad flag','unifiedChar':'1f1f9-1f1e9'},{'ariaLabel':'french southern territories flag','unifiedChar':'1f1f9-1f1eb'},{'ariaLabel':'togo flag','unifiedChar':'1f1f9-1f1ec'},{'ariaLabel':'thailand flag','unifiedChar':'1f1f9-1f1ed'},{'ariaLabel':'tajikistan flag','unifiedChar':'1f1f9-1f1ef'},{'ariaLabel':'tokelau flag','unifiedChar':'1f1f9-1f1f0'},{'ariaLabel':'timor-leste flag','unifiedChar':'1f1f9-1f1f1'},{'ariaLabel':'turkmenistan flag','unifiedChar':'1f1f9-1f1f2'},{'ariaLabel':'tunisia flag','unifiedChar':'1f1f9-1f1f3'},{'ariaLabel':'tonga flag','unifiedChar':'1f1f9-1f1f4'},{'ariaLabel':'turkey flag','unifiedChar':'1f1f9-1f1f7'},{'ariaLabel':'trinidad & tobago flag','unifiedChar':'1f1f9-1f1f9'},{'ariaLabel':'tuvalu flag','unifiedChar':'1f1f9-1f1fb'},{'ariaLabel':'taiwan flag','unifiedChar':'1f1f9-1f1fc'},{'ariaLabel':'tanzania flag','unifiedChar':'1f1f9-1f1ff'},{'ariaLabel':'ukraine flag','unifiedChar':'1f1fa-1f1e6'},{'ariaLabel':'uganda flag','unifiedChar':'1f1fa-1f1ec'},{'ariaLabel':'u.s. outlying islands flag','unifiedChar':'1f1fa-1f1f2'},{'ariaLabel':'united nations flag','unifiedChar':'1f1fa-1f1f3'},{'ariaLabel':'us','unifiedChar':'1f1fa-1f1f8'},{'ariaLabel':'uruguay flag','unifiedChar':'1f1fa-1f1fe'},{'ariaLabel':'uzbekistan flag','unifiedChar':'1f1fa-1f1ff'},{'ariaLabel':'vatican city flag','unifiedChar':'1f1fb-1f1e6'},{'ariaLabel':'st. vincent & grenadines flag','unifiedChar':'1f1fb-1f1e8'},{'ariaLabel':'venezuela flag','unifiedChar':'1f1fb-1f1ea'},{'ariaLabel':'british virgin islands flag','unifiedChar':'1f1fb-1f1ec'},{'ariaLabel':'u.s. virgin islands flag','unifiedChar':'1f1fb-1f1ee'},{'ariaLabel':'vietnam flag','unifiedChar':'1f1fb-1f1f3'},{'ariaLabel':'vanuatu flag','unifiedChar':'1f1fb-1f1fa'},{'ariaLabel':'wallis & futuna flag','unifiedChar':'1f1fc-1f1eb'},{'ariaLabel':'samoa flag','unifiedChar':'1f1fc-1f1f8'},{'ariaLabel':'kosovo flag','unifiedChar':'1f1fd-1f1f0'},{'ariaLabel':'yemen flag','unifiedChar':'1f1fe-1f1ea'},{'ariaLabel':'mayotte flag','unifiedChar':'1f1fe-1f1f9'},{'ariaLabel':'south africa flag','unifiedChar':'1f1ff-1f1e6'},{'ariaLabel':'zambia flag','unifiedChar':'1f1ff-1f1f2'},{'ariaLabel':'zimbabwe flag','unifiedChar':'1f1ff-1f1fc'},{'ariaLabel':'england flag','unifiedChar':'1f3f4-e0067-e0062-e0065-e006e-e0067-e007f'},{'ariaLabel':'scotland flag','unifiedChar':'1f3f4-e0067-e0062-e0073-e0063-e0074-e007f'},{'ariaLabel':'wales flag','unifiedChar':'1f3f4-e0067-e0062-e0077-e006c-e0073-e007f'}] \ No newline at end of file +export const emojiMeta: EmojiMetaData[] = [ + { ariaLabel: 'smiley', unifiedChar: '1f603' }, + { ariaLabel: 'grinning', unifiedChar: '1f600' }, + { ariaLabel: 'smiley', unifiedChar: '1f603' }, + { ariaLabel: 'smile', unifiedChar: '1f604' }, + { ariaLabel: 'grin', unifiedChar: '1f601' }, + { ariaLabel: 'laughing', unifiedChar: '1f606' }, + { ariaLabel: 'sweat smile', unifiedChar: '1f605' }, + { ariaLabel: 'rolling on the floor laughing', unifiedChar: '1f923' }, + { ariaLabel: 'joy', unifiedChar: '1f602' }, + { ariaLabel: 'slightly smiling face', unifiedChar: '1f642' }, + { ariaLabel: 'upside-down face', unifiedChar: '1f643' }, + { ariaLabel: 'melting face', unifiedChar: '1fae0' }, + { ariaLabel: 'wink', unifiedChar: '1f609' }, + { ariaLabel: 'blush', unifiedChar: '1f60a' }, + { ariaLabel: 'innocent', unifiedChar: '1f607' }, + { ariaLabel: 'smiling face with 3 hearts', unifiedChar: '1f970' }, + { ariaLabel: 'heart eyes', unifiedChar: '1f60d' }, + { ariaLabel: 'star-struck', unifiedChar: '1f929' }, + { ariaLabel: 'kissing heart', unifiedChar: '1f618' }, + { ariaLabel: 'kissing', unifiedChar: '1f617' }, + { ariaLabel: 'relaxed', unifiedChar: '263a-fe0f' }, + { ariaLabel: 'kissing closed eyes', unifiedChar: '1f61a' }, + { ariaLabel: 'kissing smiling eyes', unifiedChar: '1f619' }, + { ariaLabel: 'smiling face with tear', unifiedChar: '1f972' }, + { ariaLabel: 'yum', unifiedChar: '1f60b' }, + { ariaLabel: 'stuck out tongue', unifiedChar: '1f61b' }, + { ariaLabel: 'stuck out tongue winking eye', unifiedChar: '1f61c' }, + { ariaLabel: 'zany face', unifiedChar: '1f92a' }, + { ariaLabel: 'stuck out tongue closed eyes', unifiedChar: '1f61d' }, + { ariaLabel: 'money-mouth face', unifiedChar: '1f911' }, + { ariaLabel: 'hugging face', unifiedChar: '1f917' }, + { ariaLabel: 'face with hand over mouth', unifiedChar: '1f92d' }, + { + ariaLabel: 'face with open eyes and hand over mouth', + unifiedChar: '1fae2', + }, + { ariaLabel: 'face with peeking eye', unifiedChar: '1fae3' }, + { ariaLabel: 'shushing face', unifiedChar: '1f92b' }, + { ariaLabel: 'thinking face', unifiedChar: '1f914' }, + { ariaLabel: 'saluting face', unifiedChar: '1fae1' }, + { ariaLabel: 'zipper-mouth face', unifiedChar: '1f910' }, + { ariaLabel: 'face with raised eyebrow', unifiedChar: '1f928' }, + { ariaLabel: 'neutral face', unifiedChar: '1f610' }, + { ariaLabel: 'expressionless', unifiedChar: '1f611' }, + { ariaLabel: 'no mouth', unifiedChar: '1f636' }, + { ariaLabel: 'dotted line face', unifiedChar: '1fae5' }, + { ariaLabel: 'face in clouds', unifiedChar: '1f636-200d-1f32b-fe0f' }, + { ariaLabel: 'smirk', unifiedChar: '1f60f' }, + { ariaLabel: 'unamused', unifiedChar: '1f612' }, + { ariaLabel: 'face with rolling eyes', unifiedChar: '1f644' }, + { ariaLabel: 'grimacing', unifiedChar: '1f62c' }, + { ariaLabel: 'face exhaling', unifiedChar: '1f62e-200d-1f4a8' }, + { ariaLabel: 'lying face', unifiedChar: '1f925' }, + { ariaLabel: 'relieved', unifiedChar: '1f60c' }, + { ariaLabel: 'pensive', unifiedChar: '1f614' }, + { ariaLabel: 'sleepy', unifiedChar: '1f62a' }, + { ariaLabel: 'drooling face', unifiedChar: '1f924' }, + { ariaLabel: 'sleeping', unifiedChar: '1f634' }, + { ariaLabel: 'mask', unifiedChar: '1f637' }, + { ariaLabel: 'face with thermometer', unifiedChar: '1f912' }, + { ariaLabel: 'face with head-bandage', unifiedChar: '1f915' }, + { ariaLabel: 'nauseated face', unifiedChar: '1f922' }, + { ariaLabel: 'face vomiting', unifiedChar: '1f92e' }, + { ariaLabel: 'sneezing face', unifiedChar: '1f927' }, + { ariaLabel: 'hot face', unifiedChar: '1f975' }, + { ariaLabel: 'cold face', unifiedChar: '1f976' }, + { ariaLabel: 'woozy face', unifiedChar: '1f974' }, + { ariaLabel: 'dizzy face', unifiedChar: '1f635' }, + { ariaLabel: 'face with spiral eyes', unifiedChar: '1f635-200d-1f4ab' }, + { ariaLabel: 'exploding head', unifiedChar: '1f92f' }, + { ariaLabel: 'face with cowboy hat', unifiedChar: '1f920' }, + { ariaLabel: 'partying face', unifiedChar: '1f973' }, + { ariaLabel: 'disguised face', unifiedChar: '1f978' }, + { ariaLabel: 'sunglasses', unifiedChar: '1f60e' }, + { ariaLabel: 'nerd face', unifiedChar: '1f913' }, + { ariaLabel: 'face with monocle', unifiedChar: '1f9d0' }, + { ariaLabel: 'confused', unifiedChar: '1f615' }, + { ariaLabel: 'face with diagonal mouth', unifiedChar: '1fae4' }, + { ariaLabel: 'worried', unifiedChar: '1f61f' }, + { ariaLabel: 'slightly frowning face', unifiedChar: '1f641' }, + { ariaLabel: 'frowning face', unifiedChar: '2639-fe0f' }, + { ariaLabel: 'open mouth', unifiedChar: '1f62e' }, + { ariaLabel: 'hushed', unifiedChar: '1f62f' }, + { ariaLabel: 'astonished', unifiedChar: '1f632' }, + { ariaLabel: 'flushed', unifiedChar: '1f633' }, + { ariaLabel: 'pleading face', unifiedChar: '1f97a' }, + { ariaLabel: 'face holding back tears', unifiedChar: '1f979' }, + { ariaLabel: 'frowning', unifiedChar: '1f626' }, + { ariaLabel: 'anguished', unifiedChar: '1f627' }, + { ariaLabel: 'fearful', unifiedChar: '1f628' }, + { ariaLabel: 'cold sweat', unifiedChar: '1f630' }, + { ariaLabel: 'disappointed relieved', unifiedChar: '1f625' }, + { ariaLabel: 'cry', unifiedChar: '1f622' }, + { ariaLabel: 'sob', unifiedChar: '1f62d' }, + { ariaLabel: 'scream', unifiedChar: '1f631' }, + { ariaLabel: 'confounded', unifiedChar: '1f616' }, + { ariaLabel: 'persevere', unifiedChar: '1f623' }, + { ariaLabel: 'disappointed', unifiedChar: '1f61e' }, + { ariaLabel: 'sweat', unifiedChar: '1f613' }, + { ariaLabel: 'weary', unifiedChar: '1f629' }, + { ariaLabel: 'tired face', unifiedChar: '1f62b' }, + { ariaLabel: 'yawning face', unifiedChar: '1f971' }, + { ariaLabel: 'triumph', unifiedChar: '1f624' }, + { ariaLabel: 'rage', unifiedChar: '1f621' }, + { ariaLabel: 'angry', unifiedChar: '1f620' }, + { ariaLabel: 'face with symbols on mouth', unifiedChar: '1f92c' }, + { ariaLabel: 'smiling imp', unifiedChar: '1f608' }, + { ariaLabel: 'imp', unifiedChar: '1f47f' }, + { ariaLabel: 'skull', unifiedChar: '1f480' }, + { ariaLabel: 'skull and crossbones', unifiedChar: '2620-fe0f' }, + { ariaLabel: 'poop', unifiedChar: '1f4a9' }, + { ariaLabel: 'clown face', unifiedChar: '1f921' }, + { ariaLabel: 'japanese ogre', unifiedChar: '1f479' }, + { ariaLabel: 'japanese goblin', unifiedChar: '1f47a' }, + { ariaLabel: 'ghost', unifiedChar: '1f47b' }, + { ariaLabel: 'alien', unifiedChar: '1f47d' }, + { ariaLabel: 'alien monster', unifiedChar: '1f47e' }, + { ariaLabel: 'robot face', unifiedChar: '1f916' }, + { ariaLabel: 'smiley cat', unifiedChar: '1f63a' }, + { ariaLabel: 'smile cat', unifiedChar: '1f638' }, + { ariaLabel: 'joy cat', unifiedChar: '1f639' }, + { ariaLabel: 'heart eyes cat', unifiedChar: '1f63b' }, + { ariaLabel: 'smirk cat', unifiedChar: '1f63c' }, + { ariaLabel: 'kissing cat', unifiedChar: '1f63d' }, + { ariaLabel: 'scream cat', unifiedChar: '1f640' }, + { ariaLabel: 'crying cat face', unifiedChar: '1f63f' }, + { ariaLabel: 'pouting cat', unifiedChar: '1f63e' }, + { ariaLabel: 'see no evil', unifiedChar: '1f648' }, + { ariaLabel: 'hear no evil', unifiedChar: '1f649' }, + { ariaLabel: 'speak no evil', unifiedChar: '1f64a' }, + { ariaLabel: 'kiss', unifiedChar: '1f48b' }, + { ariaLabel: 'love letter', unifiedChar: '1f48c' }, + { ariaLabel: 'cupid', unifiedChar: '1f498' }, + { ariaLabel: 'gift heart', unifiedChar: '1f49d' }, + { ariaLabel: 'sparkling heart', unifiedChar: '1f496' }, + { ariaLabel: 'heartpulse', unifiedChar: '1f497' }, + { ariaLabel: 'heartbeat', unifiedChar: '1f493' }, + { ariaLabel: 'revolving hearts', unifiedChar: '1f49e' }, + { ariaLabel: 'two hearts', unifiedChar: '1f495' }, + { ariaLabel: 'heart decoration', unifiedChar: '1f49f' }, + { ariaLabel: 'heart exclamation', unifiedChar: '2763-fe0f' }, + { ariaLabel: 'broken heart', unifiedChar: '1f494' }, + { ariaLabel: 'heart on fire', unifiedChar: '2764-fe0f-200d-1f525' }, + { ariaLabel: 'mending heart', unifiedChar: '2764-fe0f-200d-1fa79' }, + { ariaLabel: 'heart', unifiedChar: '2764-fe0f' }, + { ariaLabel: 'orange heart', unifiedChar: '1f9e1' }, + { ariaLabel: 'yellow heart', unifiedChar: '1f49b' }, + { ariaLabel: 'green heart', unifiedChar: '1f49a' }, + { ariaLabel: 'blue heart', unifiedChar: '1f499' }, + { ariaLabel: 'purple heart', unifiedChar: '1f49c' }, + { ariaLabel: 'brown heart', unifiedChar: '1f90e' }, + { ariaLabel: 'black heart', unifiedChar: '1f5a4' }, + { ariaLabel: 'white heart', unifiedChar: '1f90d' }, + { ariaLabel: '100', unifiedChar: '1f4af' }, + { ariaLabel: 'anger', unifiedChar: '1f4a2' }, + { ariaLabel: 'boom', unifiedChar: '1f4a5' }, + { ariaLabel: 'dizzy', unifiedChar: '1f4ab' }, + { ariaLabel: 'sweat drops', unifiedChar: '1f4a6' }, + { ariaLabel: 'dash', unifiedChar: '1f4a8' }, + { ariaLabel: 'hole', unifiedChar: '1f573-fe0f' }, + { ariaLabel: 'bomb', unifiedChar: '1f4a3' }, + { ariaLabel: 'speech balloon', unifiedChar: '1f4ac' }, + { + ariaLabel: 'eye in speech bubble', + unifiedChar: '1f441-fe0f-200d-1f5e8-fe0f', + }, + { ariaLabel: 'left speech bubble', unifiedChar: '1f5e8-fe0f' }, + { ariaLabel: 'right anger bubble', unifiedChar: '1f5ef-fe0f' }, + { ariaLabel: 'thought balloon', unifiedChar: '1f4ad' }, + { ariaLabel: 'zzz', unifiedChar: '1f4a4' }, + { ariaLabel: 'wave', unifiedChar: '1f44b' }, + { ariaLabel: 'raised back of hand', unifiedChar: '1f91a' }, + { ariaLabel: 'hand with fingers splayed', unifiedChar: '1f590-fe0f' }, + { ariaLabel: 'hand', unifiedChar: '270b' }, + { ariaLabel: 'spock-hand', unifiedChar: '1f596' }, + { ariaLabel: 'rightwards hand', unifiedChar: '1faf1' }, + { ariaLabel: 'leftwards hand', unifiedChar: '1faf2' }, + { ariaLabel: 'palm down hand', unifiedChar: '1faf3' }, + { ariaLabel: 'palm up hand', unifiedChar: '1faf4' }, + { ariaLabel: 'ok hand', unifiedChar: '1f44c' }, + { ariaLabel: 'pinched fingers', unifiedChar: '1f90c' }, + { ariaLabel: 'pinching hand', unifiedChar: '1f90f' }, + { ariaLabel: 'v', unifiedChar: '270c-fe0f' }, + { ariaLabel: 'crossed fingers', unifiedChar: '1f91e' }, + { + ariaLabel: 'hand with index finger and thumb crossed', + unifiedChar: '1faf0', + }, + { ariaLabel: 'i love you hand sign', unifiedChar: '1f91f' }, + { ariaLabel: 'the horns', unifiedChar: '1f918' }, + { ariaLabel: 'call me hand', unifiedChar: '1f919' }, + { ariaLabel: 'point left', unifiedChar: '1f448' }, + { ariaLabel: 'point right', unifiedChar: '1f449' }, + { ariaLabel: 'point up 2', unifiedChar: '1f446' }, + { ariaLabel: 'middle finger', unifiedChar: '1f595' }, + { ariaLabel: 'point down', unifiedChar: '1f447' }, + { ariaLabel: 'point up', unifiedChar: '261d-fe0f' }, + { ariaLabel: 'index pointing at the viewer', unifiedChar: '1faf5' }, + { ariaLabel: '+1', unifiedChar: '1f44d' }, + { ariaLabel: '-1', unifiedChar: '1f44e' }, + { ariaLabel: 'fist', unifiedChar: '270a' }, + { ariaLabel: 'punch', unifiedChar: '1f44a' }, + { ariaLabel: 'left-facing fist', unifiedChar: '1f91b' }, + { ariaLabel: 'right-facing fist', unifiedChar: '1f91c' }, + { ariaLabel: 'clap', unifiedChar: '1f44f' }, + { ariaLabel: 'raised hands', unifiedChar: '1f64c' }, + { ariaLabel: 'heart hands', unifiedChar: '1faf6' }, + { ariaLabel: 'open hands', unifiedChar: '1f450' }, + { ariaLabel: 'palms up together', unifiedChar: '1f932' }, + { ariaLabel: 'handshake', unifiedChar: '1f91d' }, + { ariaLabel: 'pray', unifiedChar: '1f64f' }, + { ariaLabel: 'writing hand', unifiedChar: '270d-fe0f' }, + { ariaLabel: 'nail care', unifiedChar: '1f485' }, + { ariaLabel: 'selfie', unifiedChar: '1f933' }, + { ariaLabel: 'muscle', unifiedChar: '1f4aa' }, + { ariaLabel: 'mechanical arm', unifiedChar: '1f9be' }, + { ariaLabel: 'mechanical leg', unifiedChar: '1f9bf' }, + { ariaLabel: 'leg', unifiedChar: '1f9b5' }, + { ariaLabel: 'foot', unifiedChar: '1f9b6' }, + { ariaLabel: 'ear', unifiedChar: '1f442' }, + { ariaLabel: 'ear with hearing aid', unifiedChar: '1f9bb' }, + { ariaLabel: 'nose', unifiedChar: '1f443' }, + { ariaLabel: 'brain', unifiedChar: '1f9e0' }, + { ariaLabel: 'anatomical heart', unifiedChar: '1fac0' }, + { ariaLabel: 'lungs', unifiedChar: '1fac1' }, + { ariaLabel: 'tooth', unifiedChar: '1f9b7' }, + { ariaLabel: 'bone', unifiedChar: '1f9b4' }, + { ariaLabel: 'eyes', unifiedChar: '1f440' }, + { ariaLabel: 'eye', unifiedChar: '1f441-fe0f' }, + { ariaLabel: 'tongue', unifiedChar: '1f445' }, + { ariaLabel: 'lips', unifiedChar: '1f444' }, + { ariaLabel: 'biting lip', unifiedChar: '1fae6' }, + { ariaLabel: 'baby', unifiedChar: '1f476' }, + { ariaLabel: 'child', unifiedChar: '1f9d2' }, + { ariaLabel: 'boy', unifiedChar: '1f466' }, + { ariaLabel: 'girl', unifiedChar: '1f467' }, + { ariaLabel: 'adult', unifiedChar: '1f9d1' }, + { ariaLabel: 'person with blond hair', unifiedChar: '1f471' }, + { ariaLabel: 'man', unifiedChar: '1f468' }, + { ariaLabel: 'bearded person', unifiedChar: '1f9d4' }, + { ariaLabel: 'man: beard', unifiedChar: '1f9d4-200d-2642-fe0f' }, + { ariaLabel: 'woman: beard', unifiedChar: '1f9d4-200d-2640-fe0f' }, + { ariaLabel: 'man: red hair', unifiedChar: '1f468-200d-1f9b0' }, + { ariaLabel: 'man: curly hair', unifiedChar: '1f468-200d-1f9b1' }, + { ariaLabel: 'man: white hair', unifiedChar: '1f468-200d-1f9b3' }, + { ariaLabel: 'bald man', unifiedChar: '1f468-200d-1f9b2' }, + { ariaLabel: 'woman', unifiedChar: '1f469' }, + { ariaLabel: 'woman: red hair', unifiedChar: '1f469-200d-1f9b0' }, + { ariaLabel: 'person: red hair', unifiedChar: '1f9d1-200d-1f9b0' }, + { ariaLabel: 'woman: curly hair', unifiedChar: '1f469-200d-1f9b1' }, + { ariaLabel: 'person: curly hair', unifiedChar: '1f9d1-200d-1f9b1' }, + { ariaLabel: 'woman: white hair', unifiedChar: '1f469-200d-1f9b3' }, + { ariaLabel: 'person: white hair', unifiedChar: '1f9d1-200d-1f9b3' }, + { ariaLabel: 'bald woman', unifiedChar: '1f469-200d-1f9b2' }, + { ariaLabel: 'bald person', unifiedChar: '1f9d1-200d-1f9b2' }, + { ariaLabel: 'woman: blond hair', unifiedChar: '1f471-200d-2640-fe0f' }, + { ariaLabel: 'man: blond hair', unifiedChar: '1f471-200d-2642-fe0f' }, + { ariaLabel: 'older adult', unifiedChar: '1f9d3' }, + { ariaLabel: 'older man', unifiedChar: '1f474' }, + { ariaLabel: 'older woman', unifiedChar: '1f475' }, + { ariaLabel: 'person frowning', unifiedChar: '1f64d' }, + { ariaLabel: 'man frowning', unifiedChar: '1f64d-200d-2642-fe0f' }, + { ariaLabel: 'woman frowning', unifiedChar: '1f64d-200d-2640-fe0f' }, + { ariaLabel: 'person with pouting face', unifiedChar: '1f64e' }, + { ariaLabel: 'man pouting', unifiedChar: '1f64e-200d-2642-fe0f' }, + { ariaLabel: 'woman pouting', unifiedChar: '1f64e-200d-2640-fe0f' }, + { ariaLabel: 'no good', unifiedChar: '1f645' }, + { ariaLabel: 'man gesturing no', unifiedChar: '1f645-200d-2642-fe0f' }, + { ariaLabel: 'woman gesturing no', unifiedChar: '1f645-200d-2640-fe0f' }, + { ariaLabel: 'ok woman', unifiedChar: '1f646' }, + { ariaLabel: 'man gesturing ok', unifiedChar: '1f646-200d-2642-fe0f' }, + { ariaLabel: 'woman gesturing ok', unifiedChar: '1f646-200d-2640-fe0f' }, + { ariaLabel: 'information desk person', unifiedChar: '1f481' }, + { ariaLabel: 'man tipping hand', unifiedChar: '1f481-200d-2642-fe0f' }, + { ariaLabel: 'woman tipping hand', unifiedChar: '1f481-200d-2640-fe0f' }, + { ariaLabel: 'raising hand', unifiedChar: '1f64b' }, + { ariaLabel: 'man raising hand', unifiedChar: '1f64b-200d-2642-fe0f' }, + { ariaLabel: 'woman raising hand', unifiedChar: '1f64b-200d-2640-fe0f' }, + { ariaLabel: 'deaf person', unifiedChar: '1f9cf' }, + { ariaLabel: 'deaf man', unifiedChar: '1f9cf-200d-2642-fe0f' }, + { ariaLabel: 'deaf woman', unifiedChar: '1f9cf-200d-2640-fe0f' }, + { ariaLabel: 'bow', unifiedChar: '1f647' }, + { ariaLabel: 'man bowing', unifiedChar: '1f647-200d-2642-fe0f' }, + { ariaLabel: 'woman bowing', unifiedChar: '1f647-200d-2640-fe0f' }, + { ariaLabel: 'face palm', unifiedChar: '1f926' }, + { ariaLabel: 'man facepalming', unifiedChar: '1f926-200d-2642-fe0f' }, + { ariaLabel: 'woman facepalming', unifiedChar: '1f926-200d-2640-fe0f' }, + { ariaLabel: 'shrug', unifiedChar: '1f937' }, + { ariaLabel: 'man shrugging', unifiedChar: '1f937-200d-2642-fe0f' }, + { ariaLabel: 'woman shrugging', unifiedChar: '1f937-200d-2640-fe0f' }, + { ariaLabel: 'health worker', unifiedChar: '1f9d1-200d-2695-fe0f' }, + { ariaLabel: 'male-doctor', unifiedChar: '1f468-200d-2695-fe0f' }, + { ariaLabel: 'female-doctor', unifiedChar: '1f469-200d-2695-fe0f' }, + { ariaLabel: 'student', unifiedChar: '1f9d1-200d-1f393' }, + { ariaLabel: 'man student', unifiedChar: '1f468-200d-1f393' }, + { ariaLabel: 'woman student', unifiedChar: '1f469-200d-1f393' }, + { ariaLabel: 'teacher', unifiedChar: '1f9d1-200d-1f3eb' }, + { ariaLabel: 'man teacher', unifiedChar: '1f468-200d-1f3eb' }, + { ariaLabel: 'woman teacher', unifiedChar: '1f469-200d-1f3eb' }, + { ariaLabel: 'judge', unifiedChar: '1f9d1-200d-2696-fe0f' }, + { ariaLabel: 'man judge', unifiedChar: '1f468-200d-2696-fe0f' }, + { ariaLabel: 'woman judge', unifiedChar: '1f469-200d-2696-fe0f' }, + { ariaLabel: 'farmer', unifiedChar: '1f9d1-200d-1f33e' }, + { ariaLabel: 'man farmer', unifiedChar: '1f468-200d-1f33e' }, + { ariaLabel: 'woman farmer', unifiedChar: '1f469-200d-1f33e' }, + { ariaLabel: 'cook', unifiedChar: '1f9d1-200d-1f373' }, + { ariaLabel: 'man cook', unifiedChar: '1f468-200d-1f373' }, + { ariaLabel: 'woman cook', unifiedChar: '1f469-200d-1f373' }, + { ariaLabel: 'mechanic', unifiedChar: '1f9d1-200d-1f527' }, + { ariaLabel: 'man mechanic', unifiedChar: '1f468-200d-1f527' }, + { ariaLabel: 'woman mechanic', unifiedChar: '1f469-200d-1f527' }, + { ariaLabel: 'factory worker', unifiedChar: '1f9d1-200d-1f3ed' }, + { ariaLabel: 'man factory worker', unifiedChar: '1f468-200d-1f3ed' }, + { ariaLabel: 'woman factory worker', unifiedChar: '1f469-200d-1f3ed' }, + { ariaLabel: 'office worker', unifiedChar: '1f9d1-200d-1f4bc' }, + { ariaLabel: 'man office worker', unifiedChar: '1f468-200d-1f4bc' }, + { ariaLabel: 'woman office worker', unifiedChar: '1f469-200d-1f4bc' }, + { ariaLabel: 'scientist', unifiedChar: '1f9d1-200d-1f52c' }, + { ariaLabel: 'man scientist', unifiedChar: '1f468-200d-1f52c' }, + { ariaLabel: 'woman scientist', unifiedChar: '1f469-200d-1f52c' }, + { ariaLabel: 'technologist', unifiedChar: '1f9d1-200d-1f4bb' }, + { ariaLabel: 'man technologist', unifiedChar: '1f468-200d-1f4bb' }, + { ariaLabel: 'woman technologist', unifiedChar: '1f469-200d-1f4bb' }, + { ariaLabel: 'singer', unifiedChar: '1f9d1-200d-1f3a4' }, + { ariaLabel: 'man singer', unifiedChar: '1f468-200d-1f3a4' }, + { ariaLabel: 'woman singer', unifiedChar: '1f469-200d-1f3a4' }, + { ariaLabel: 'artist', unifiedChar: '1f9d1-200d-1f3a8' }, + { ariaLabel: 'man artist', unifiedChar: '1f468-200d-1f3a8' }, + { ariaLabel: 'woman artist', unifiedChar: '1f469-200d-1f3a8' }, + { ariaLabel: 'pilot', unifiedChar: '1f9d1-200d-2708-fe0f' }, + { ariaLabel: 'man pilot', unifiedChar: '1f468-200d-2708-fe0f' }, + { ariaLabel: 'woman pilot', unifiedChar: '1f469-200d-2708-fe0f' }, + { ariaLabel: 'astronaut', unifiedChar: '1f9d1-200d-1f680' }, + { ariaLabel: 'man astronaut', unifiedChar: '1f468-200d-1f680' }, + { ariaLabel: 'woman astronaut', unifiedChar: '1f469-200d-1f680' }, + { ariaLabel: 'firefighter', unifiedChar: '1f9d1-200d-1f692' }, + { ariaLabel: 'man firefighter', unifiedChar: '1f468-200d-1f692' }, + { ariaLabel: 'woman firefighter', unifiedChar: '1f469-200d-1f692' }, + { ariaLabel: 'cop', unifiedChar: '1f46e' }, + { ariaLabel: 'man police officer', unifiedChar: '1f46e-200d-2642-fe0f' }, + { ariaLabel: 'woman police officer', unifiedChar: '1f46e-200d-2640-fe0f' }, + { ariaLabel: 'detective', unifiedChar: '1f575-fe0f' }, + { ariaLabel: 'man detective', unifiedChar: '1f575-fe0f-200d-2642-fe0f' }, + { ariaLabel: 'woman detective', unifiedChar: '1f575-fe0f-200d-2640-fe0f' }, + { ariaLabel: 'guardsman', unifiedChar: '1f482' }, + { ariaLabel: 'man guard', unifiedChar: '1f482-200d-2642-fe0f' }, + { ariaLabel: 'woman guard', unifiedChar: '1f482-200d-2640-fe0f' }, + { ariaLabel: 'ninja', unifiedChar: '1f977' }, + { ariaLabel: 'construction worker', unifiedChar: '1f477' }, + { + ariaLabel: 'man construction worker', + unifiedChar: '1f477-200d-2642-fe0f', + }, + { + ariaLabel: 'woman construction worker', + unifiedChar: '1f477-200d-2640-fe0f', + }, + { ariaLabel: 'person with crown', unifiedChar: '1fac5' }, + { ariaLabel: 'prince', unifiedChar: '1f934' }, + { ariaLabel: 'princess', unifiedChar: '1f478' }, + { ariaLabel: 'man with turban', unifiedChar: '1f473' }, + { ariaLabel: 'man wearing turban', unifiedChar: '1f473-200d-2642-fe0f' }, + { ariaLabel: 'woman wearing turban', unifiedChar: '1f473-200d-2640-fe0f' }, + { ariaLabel: 'man with gua pi mao', unifiedChar: '1f472' }, + { ariaLabel: 'person with headscarf', unifiedChar: '1f9d5' }, + { ariaLabel: 'man in tuxedo', unifiedChar: '1f935' }, + { ariaLabel: 'man in tuxedo', unifiedChar: '1f935-200d-2642-fe0f' }, + { ariaLabel: 'woman in tuxedo', unifiedChar: '1f935-200d-2640-fe0f' }, + { ariaLabel: 'bride with veil', unifiedChar: '1f470' }, + { ariaLabel: 'man with veil', unifiedChar: '1f470-200d-2642-fe0f' }, + { ariaLabel: 'woman with veil', unifiedChar: '1f470-200d-2640-fe0f' }, + { ariaLabel: 'pregnant woman', unifiedChar: '1f930' }, + { ariaLabel: 'pregnant man', unifiedChar: '1fac3' }, + { ariaLabel: 'pregnant person', unifiedChar: '1fac4' }, + { ariaLabel: 'breast-feeding', unifiedChar: '1f931' }, + { ariaLabel: 'woman feeding baby', unifiedChar: '1f469-200d-1f37c' }, + { ariaLabel: 'man feeding baby', unifiedChar: '1f468-200d-1f37c' }, + { ariaLabel: 'person feeding baby', unifiedChar: '1f9d1-200d-1f37c' }, + { ariaLabel: 'angel', unifiedChar: '1f47c' }, + { ariaLabel: 'santa', unifiedChar: '1f385' }, + { ariaLabel: 'mrs claus', unifiedChar: '1f936' }, + { ariaLabel: 'mx claus', unifiedChar: '1f9d1-200d-1f384' }, + { ariaLabel: 'superhero', unifiedChar: '1f9b8' }, + { ariaLabel: 'man superhero', unifiedChar: '1f9b8-200d-2642-fe0f' }, + { ariaLabel: 'woman superhero', unifiedChar: '1f9b8-200d-2640-fe0f' }, + { ariaLabel: 'supervillain', unifiedChar: '1f9b9' }, + { ariaLabel: 'man supervillain', unifiedChar: '1f9b9-200d-2642-fe0f' }, + { ariaLabel: 'woman supervillain', unifiedChar: '1f9b9-200d-2640-fe0f' }, + { ariaLabel: 'mage', unifiedChar: '1f9d9' }, + { ariaLabel: 'man mage', unifiedChar: '1f9d9-200d-2642-fe0f' }, + { ariaLabel: 'woman mage', unifiedChar: '1f9d9-200d-2640-fe0f' }, + { ariaLabel: 'fairy', unifiedChar: '1f9da' }, + { ariaLabel: 'man fairy', unifiedChar: '1f9da-200d-2642-fe0f' }, + { ariaLabel: 'woman fairy', unifiedChar: '1f9da-200d-2640-fe0f' }, + { ariaLabel: 'vampire', unifiedChar: '1f9db' }, + { ariaLabel: 'man vampire', unifiedChar: '1f9db-200d-2642-fe0f' }, + { ariaLabel: 'woman vampire', unifiedChar: '1f9db-200d-2640-fe0f' }, + { ariaLabel: 'merperson', unifiedChar: '1f9dc' }, + { ariaLabel: 'merman', unifiedChar: '1f9dc-200d-2642-fe0f' }, + { ariaLabel: 'mermaid', unifiedChar: '1f9dc-200d-2640-fe0f' }, + { ariaLabel: 'elf', unifiedChar: '1f9dd' }, + { ariaLabel: 'man elf', unifiedChar: '1f9dd-200d-2642-fe0f' }, + { ariaLabel: 'woman elf', unifiedChar: '1f9dd-200d-2640-fe0f' }, + { ariaLabel: 'genie', unifiedChar: '1f9de' }, + { ariaLabel: 'man genie', unifiedChar: '1f9de-200d-2642-fe0f' }, + { ariaLabel: 'woman genie', unifiedChar: '1f9de-200d-2640-fe0f' }, + { ariaLabel: 'zombie', unifiedChar: '1f9df' }, + { ariaLabel: 'man zombie', unifiedChar: '1f9df-200d-2642-fe0f' }, + { ariaLabel: 'woman zombie', unifiedChar: '1f9df-200d-2640-fe0f' }, + { ariaLabel: 'troll', unifiedChar: '1f9cc' }, + { ariaLabel: 'massage', unifiedChar: '1f486' }, + { ariaLabel: 'man getting massage', unifiedChar: '1f486-200d-2642-fe0f' }, + { ariaLabel: 'woman getting massage', unifiedChar: '1f486-200d-2640-fe0f' }, + { ariaLabel: 'haircut', unifiedChar: '1f487' }, + { ariaLabel: 'man getting haircut', unifiedChar: '1f487-200d-2642-fe0f' }, + { ariaLabel: 'woman getting haircut', unifiedChar: '1f487-200d-2640-fe0f' }, + { ariaLabel: 'walking', unifiedChar: '1f6b6' }, + { ariaLabel: 'man walking', unifiedChar: '1f6b6-200d-2642-fe0f' }, + { ariaLabel: 'woman walking', unifiedChar: '1f6b6-200d-2640-fe0f' }, + { ariaLabel: 'standing person', unifiedChar: '1f9cd' }, + { ariaLabel: 'man standing', unifiedChar: '1f9cd-200d-2642-fe0f' }, + { ariaLabel: 'woman standing', unifiedChar: '1f9cd-200d-2640-fe0f' }, + { ariaLabel: 'kneeling person', unifiedChar: '1f9ce' }, + { ariaLabel: 'man kneeling', unifiedChar: '1f9ce-200d-2642-fe0f' }, + { ariaLabel: 'woman kneeling', unifiedChar: '1f9ce-200d-2640-fe0f' }, + { ariaLabel: 'person with white cane', unifiedChar: '1f9d1-200d-1f9af' }, + { ariaLabel: 'man with white cane', unifiedChar: '1f468-200d-1f9af' }, + { ariaLabel: 'woman with white cane', unifiedChar: '1f469-200d-1f9af' }, + { + ariaLabel: 'person in motorized wheelchair', + unifiedChar: '1f9d1-200d-1f9bc', + }, + { + ariaLabel: 'man in motorized wheelchair', + unifiedChar: '1f468-200d-1f9bc', + }, + { + ariaLabel: 'woman in motorized wheelchair', + unifiedChar: '1f469-200d-1f9bc', + }, + { + ariaLabel: 'person in manual wheelchair', + unifiedChar: '1f9d1-200d-1f9bd', + }, + { ariaLabel: 'man in manual wheelchair', unifiedChar: '1f468-200d-1f9bd' }, + { + ariaLabel: 'woman in manual wheelchair', + unifiedChar: '1f469-200d-1f9bd', + }, + { ariaLabel: 'runner', unifiedChar: '1f3c3' }, + { ariaLabel: 'man running', unifiedChar: '1f3c3-200d-2642-fe0f' }, + { ariaLabel: 'woman running', unifiedChar: '1f3c3-200d-2640-fe0f' }, + { ariaLabel: 'dancer', unifiedChar: '1f483' }, + { ariaLabel: 'man dancing', unifiedChar: '1f57a' }, + { ariaLabel: 'person in suit levitating', unifiedChar: '1f574-fe0f' }, + { ariaLabel: 'dancers', unifiedChar: '1f46f' }, + { ariaLabel: 'men with bunny ears', unifiedChar: '1f46f-200d-2642-fe0f' }, + { ariaLabel: 'women with bunny ears', unifiedChar: '1f46f-200d-2640-fe0f' }, + { ariaLabel: 'person in steamy room', unifiedChar: '1f9d6' }, + { ariaLabel: 'man in steamy room', unifiedChar: '1f9d6-200d-2642-fe0f' }, + { ariaLabel: 'woman in steamy room', unifiedChar: '1f9d6-200d-2640-fe0f' }, + { ariaLabel: 'person climbing', unifiedChar: '1f9d7' }, + { ariaLabel: 'man climbing', unifiedChar: '1f9d7-200d-2642-fe0f' }, + { ariaLabel: 'woman climbing', unifiedChar: '1f9d7-200d-2640-fe0f' }, + { ariaLabel: 'fencer', unifiedChar: '1f93a' }, + { ariaLabel: 'horse racing', unifiedChar: '1f3c7' }, + { ariaLabel: 'skier', unifiedChar: '26f7-fe0f' }, + { ariaLabel: 'snowboarder', unifiedChar: '1f3c2' }, + { ariaLabel: 'golfer', unifiedChar: '1f3cc-fe0f' }, + { ariaLabel: 'man golfing', unifiedChar: '1f3cc-fe0f-200d-2642-fe0f' }, + { ariaLabel: 'woman golfing', unifiedChar: '1f3cc-fe0f-200d-2640-fe0f' }, + { ariaLabel: 'surfer', unifiedChar: '1f3c4' }, + { ariaLabel: 'man surfing', unifiedChar: '1f3c4-200d-2642-fe0f' }, + { ariaLabel: 'woman surfing', unifiedChar: '1f3c4-200d-2640-fe0f' }, + { ariaLabel: 'rowboat', unifiedChar: '1f6a3' }, + { ariaLabel: 'man rowing boat', unifiedChar: '1f6a3-200d-2642-fe0f' }, + { ariaLabel: 'woman rowing boat', unifiedChar: '1f6a3-200d-2640-fe0f' }, + { ariaLabel: 'swimmer', unifiedChar: '1f3ca' }, + { ariaLabel: 'man swimming', unifiedChar: '1f3ca-200d-2642-fe0f' }, + { ariaLabel: 'woman swimming', unifiedChar: '1f3ca-200d-2640-fe0f' }, + { ariaLabel: 'person with ball', unifiedChar: '26f9-fe0f' }, + { ariaLabel: 'man bouncing ball', unifiedChar: '26f9-fe0f-200d-2642-fe0f' }, + { + ariaLabel: 'woman bouncing ball', + unifiedChar: '26f9-fe0f-200d-2640-fe0f', + }, + { ariaLabel: 'weight lifter', unifiedChar: '1f3cb-fe0f' }, + { + ariaLabel: 'man lifting weights', + unifiedChar: '1f3cb-fe0f-200d-2642-fe0f', + }, + { + ariaLabel: 'woman lifting weights', + unifiedChar: '1f3cb-fe0f-200d-2640-fe0f', + }, + { ariaLabel: 'bicyclist', unifiedChar: '1f6b4' }, + { ariaLabel: 'man biking', unifiedChar: '1f6b4-200d-2642-fe0f' }, + { ariaLabel: 'woman biking', unifiedChar: '1f6b4-200d-2640-fe0f' }, + { ariaLabel: 'mountain bicyclist', unifiedChar: '1f6b5' }, + { ariaLabel: 'man mountain biking', unifiedChar: '1f6b5-200d-2642-fe0f' }, + { ariaLabel: 'woman mountain biking', unifiedChar: '1f6b5-200d-2640-fe0f' }, + { ariaLabel: 'person doing cartwheel', unifiedChar: '1f938' }, + { ariaLabel: 'man cartwheeling', unifiedChar: '1f938-200d-2642-fe0f' }, + { ariaLabel: 'woman cartwheeling', unifiedChar: '1f938-200d-2640-fe0f' }, + { ariaLabel: 'wrestlers', unifiedChar: '1f93c' }, + { ariaLabel: 'men wrestling', unifiedChar: '1f93c-200d-2642-fe0f' }, + { ariaLabel: 'women wrestling', unifiedChar: '1f93c-200d-2640-fe0f' }, + { ariaLabel: 'water polo', unifiedChar: '1f93d' }, + { + ariaLabel: 'man playing water polo', + unifiedChar: '1f93d-200d-2642-fe0f', + }, + { + ariaLabel: 'woman playing water polo', + unifiedChar: '1f93d-200d-2640-fe0f', + }, + { ariaLabel: 'handball', unifiedChar: '1f93e' }, + { ariaLabel: 'man playing handball', unifiedChar: '1f93e-200d-2642-fe0f' }, + { + ariaLabel: 'woman playing handball', + unifiedChar: '1f93e-200d-2640-fe0f', + }, + { ariaLabel: 'juggling', unifiedChar: '1f939' }, + { ariaLabel: 'man juggling', unifiedChar: '1f939-200d-2642-fe0f' }, + { ariaLabel: 'woman juggling', unifiedChar: '1f939-200d-2640-fe0f' }, + { ariaLabel: 'person in lotus position', unifiedChar: '1f9d8' }, + { ariaLabel: 'man in lotus position', unifiedChar: '1f9d8-200d-2642-fe0f' }, + { + ariaLabel: 'woman in lotus position', + unifiedChar: '1f9d8-200d-2640-fe0f', + }, + { ariaLabel: 'bath', unifiedChar: '1f6c0' }, + { ariaLabel: 'sleeping accommodation', unifiedChar: '1f6cc' }, + { + ariaLabel: 'people holding hands', + unifiedChar: '1f9d1-200d-1f91d-200d-1f9d1', + }, + { ariaLabel: 'women holding hands', unifiedChar: '1f46d' }, + { ariaLabel: 'couple', unifiedChar: '1f46b' }, + { ariaLabel: 'men holding hands', unifiedChar: '1f46c' }, + { ariaLabel: 'kiss', unifiedChar: '1f48f' }, + { + ariaLabel: 'woman-kiss-man', + unifiedChar: '1f469-200d-2764-fe0f-200d-1f48b-200d-1f468', + }, + { + ariaLabel: 'man-kiss-man', + unifiedChar: '1f468-200d-2764-fe0f-200d-1f48b-200d-1f468', + }, + { + ariaLabel: 'woman-kiss-woman', + unifiedChar: '1f469-200d-2764-fe0f-200d-1f48b-200d-1f469', + }, + { ariaLabel: 'couple with heart', unifiedChar: '1f491' }, + { + ariaLabel: 'woman-heart-man', + unifiedChar: '1f469-200d-2764-fe0f-200d-1f468', + }, + { + ariaLabel: 'man-heart-man', + unifiedChar: '1f468-200d-2764-fe0f-200d-1f468', + }, + { + ariaLabel: 'woman-heart-woman', + unifiedChar: '1f469-200d-2764-fe0f-200d-1f469', + }, + { ariaLabel: 'family', unifiedChar: '1f46a' }, + { ariaLabel: 'man-woman-boy', unifiedChar: '1f468-200d-1f469-200d-1f466' }, + { ariaLabel: 'man-woman-girl', unifiedChar: '1f468-200d-1f469-200d-1f467' }, + { + ariaLabel: 'man-woman-girl-boy', + unifiedChar: '1f468-200d-1f469-200d-1f467-200d-1f466', + }, + { + ariaLabel: 'man-woman-boy-boy', + unifiedChar: '1f468-200d-1f469-200d-1f466-200d-1f466', + }, + { + ariaLabel: 'man-woman-girl-girl', + unifiedChar: '1f468-200d-1f469-200d-1f467-200d-1f467', + }, + { ariaLabel: 'man-man-boy', unifiedChar: '1f468-200d-1f468-200d-1f466' }, + { ariaLabel: 'man-man-girl', unifiedChar: '1f468-200d-1f468-200d-1f467' }, + { + ariaLabel: 'man-man-girl-boy', + unifiedChar: '1f468-200d-1f468-200d-1f467-200d-1f466', + }, + { + ariaLabel: 'man-man-boy-boy', + unifiedChar: '1f468-200d-1f468-200d-1f466-200d-1f466', + }, + { + ariaLabel: 'man-man-girl-girl', + unifiedChar: '1f468-200d-1f468-200d-1f467-200d-1f467', + }, + { + ariaLabel: 'woman-woman-boy', + unifiedChar: '1f469-200d-1f469-200d-1f466', + }, + { + ariaLabel: 'woman-woman-girl', + unifiedChar: '1f469-200d-1f469-200d-1f467', + }, + { + ariaLabel: 'woman-woman-girl-boy', + unifiedChar: '1f469-200d-1f469-200d-1f467-200d-1f466', + }, + { + ariaLabel: 'woman-woman-boy-boy', + unifiedChar: '1f469-200d-1f469-200d-1f466-200d-1f466', + }, + { + ariaLabel: 'woman-woman-girl-girl', + unifiedChar: '1f469-200d-1f469-200d-1f467-200d-1f467', + }, + { ariaLabel: 'man-boy', unifiedChar: '1f468-200d-1f466' }, + { ariaLabel: 'man-boy-boy', unifiedChar: '1f468-200d-1f466-200d-1f466' }, + { ariaLabel: 'man-girl', unifiedChar: '1f468-200d-1f467' }, + { ariaLabel: 'man-girl-boy', unifiedChar: '1f468-200d-1f467-200d-1f466' }, + { ariaLabel: 'man-girl-girl', unifiedChar: '1f468-200d-1f467-200d-1f467' }, + { ariaLabel: 'woman-boy', unifiedChar: '1f469-200d-1f466' }, + { ariaLabel: 'woman-boy-boy', unifiedChar: '1f469-200d-1f466-200d-1f466' }, + { ariaLabel: 'woman-girl', unifiedChar: '1f469-200d-1f467' }, + { ariaLabel: 'woman-girl-boy', unifiedChar: '1f469-200d-1f467-200d-1f466' }, + { + ariaLabel: 'woman-girl-girl', + unifiedChar: '1f469-200d-1f467-200d-1f467', + }, + { ariaLabel: 'speaking head', unifiedChar: '1f5e3-fe0f' }, + { ariaLabel: 'bust in silhouette', unifiedChar: '1f464' }, + { ariaLabel: 'busts in silhouette', unifiedChar: '1f465' }, + { ariaLabel: 'people hugging', unifiedChar: '1fac2' }, + { ariaLabel: 'footprints', unifiedChar: '1f463' }, + { ariaLabel: 'monkey face', unifiedChar: '1f435' }, + { ariaLabel: 'monkey', unifiedChar: '1f412' }, + { ariaLabel: 'gorilla', unifiedChar: '1f98d' }, + { ariaLabel: 'orangutan', unifiedChar: '1f9a7' }, + { ariaLabel: 'dog', unifiedChar: '1f436' }, + { ariaLabel: 'dog', unifiedChar: '1f415' }, + { ariaLabel: 'guide dog', unifiedChar: '1f9ae' }, + { ariaLabel: 'service dog', unifiedChar: '1f415-200d-1f9ba' }, + { ariaLabel: 'poodle', unifiedChar: '1f429' }, + { ariaLabel: 'wolf', unifiedChar: '1f43a' }, + { ariaLabel: 'fox face', unifiedChar: '1f98a' }, + { ariaLabel: 'raccoon', unifiedChar: '1f99d' }, + { ariaLabel: 'cat', unifiedChar: '1f431' }, + { ariaLabel: 'cat', unifiedChar: '1f408' }, + { ariaLabel: 'black cat', unifiedChar: '1f408-200d-2b1b' }, + { ariaLabel: 'lion face', unifiedChar: '1f981' }, + { ariaLabel: 'tiger', unifiedChar: '1f42f' }, + { ariaLabel: 'tiger', unifiedChar: '1f405' }, + { ariaLabel: 'leopard', unifiedChar: '1f406' }, + { ariaLabel: 'horse', unifiedChar: '1f434' }, + { ariaLabel: 'horse', unifiedChar: '1f40e' }, + { ariaLabel: 'unicorn face', unifiedChar: '1f984' }, + { ariaLabel: 'zebra face', unifiedChar: '1f993' }, + { ariaLabel: 'deer', unifiedChar: '1f98c' }, + { ariaLabel: 'bison', unifiedChar: '1f9ac' }, + { ariaLabel: 'cow', unifiedChar: '1f42e' }, + { ariaLabel: 'ox', unifiedChar: '1f402' }, + { ariaLabel: 'water buffalo', unifiedChar: '1f403' }, + { ariaLabel: 'cow', unifiedChar: '1f404' }, + { ariaLabel: 'pig', unifiedChar: '1f437' }, + { ariaLabel: 'pig', unifiedChar: '1f416' }, + { ariaLabel: 'boar', unifiedChar: '1f417' }, + { ariaLabel: 'pig nose', unifiedChar: '1f43d' }, + { ariaLabel: 'ram', unifiedChar: '1f40f' }, + { ariaLabel: 'sheep', unifiedChar: '1f411' }, + { ariaLabel: 'goat', unifiedChar: '1f410' }, + { ariaLabel: 'dromedary camel', unifiedChar: '1f42a' }, + { ariaLabel: 'camel', unifiedChar: '1f42b' }, + { ariaLabel: 'llama', unifiedChar: '1f999' }, + { ariaLabel: 'giraffe face', unifiedChar: '1f992' }, + { ariaLabel: 'elephant', unifiedChar: '1f418' }, + { ariaLabel: 'mammoth', unifiedChar: '1f9a3' }, + { ariaLabel: 'rhinoceros', unifiedChar: '1f98f' }, + { ariaLabel: 'hippopotamus', unifiedChar: '1f99b' }, + { ariaLabel: 'mouse', unifiedChar: '1f42d' }, + { ariaLabel: 'mouse', unifiedChar: '1f401' }, + { ariaLabel: 'rat', unifiedChar: '1f400' }, + { ariaLabel: 'hamster', unifiedChar: '1f439' }, + { ariaLabel: 'rabbit', unifiedChar: '1f430' }, + { ariaLabel: 'rabbit', unifiedChar: '1f407' }, + { ariaLabel: 'chipmunk', unifiedChar: '1f43f-fe0f' }, + { ariaLabel: 'beaver', unifiedChar: '1f9ab' }, + { ariaLabel: 'hedgehog', unifiedChar: '1f994' }, + { ariaLabel: 'bat', unifiedChar: '1f987' }, + { ariaLabel: 'bear', unifiedChar: '1f43b' }, + { ariaLabel: 'polar bear', unifiedChar: '1f43b-200d-2744-fe0f' }, + { ariaLabel: 'koala', unifiedChar: '1f428' }, + { ariaLabel: 'panda face', unifiedChar: '1f43c' }, + { ariaLabel: 'sloth', unifiedChar: '1f9a5' }, + { ariaLabel: 'otter', unifiedChar: '1f9a6' }, + { ariaLabel: 'skunk', unifiedChar: '1f9a8' }, + { ariaLabel: 'kangaroo', unifiedChar: '1f998' }, + { ariaLabel: 'badger', unifiedChar: '1f9a1' }, + { ariaLabel: 'feet', unifiedChar: '1f43e' }, + { ariaLabel: 'turkey', unifiedChar: '1f983' }, + { ariaLabel: 'chicken', unifiedChar: '1f414' }, + { ariaLabel: 'rooster', unifiedChar: '1f413' }, + { ariaLabel: 'hatching chick', unifiedChar: '1f423' }, + { ariaLabel: 'baby chick', unifiedChar: '1f424' }, + { ariaLabel: 'hatched chick', unifiedChar: '1f425' }, + { ariaLabel: 'bird', unifiedChar: '1f426' }, + { ariaLabel: 'penguin', unifiedChar: '1f427' }, + { ariaLabel: 'dove', unifiedChar: '1f54a-fe0f' }, + { ariaLabel: 'eagle', unifiedChar: '1f985' }, + { ariaLabel: 'duck', unifiedChar: '1f986' }, + { ariaLabel: 'swan', unifiedChar: '1f9a2' }, + { ariaLabel: 'owl', unifiedChar: '1f989' }, + { ariaLabel: 'dodo', unifiedChar: '1f9a4' }, + { ariaLabel: 'feather', unifiedChar: '1fab6' }, + { ariaLabel: 'flamingo', unifiedChar: '1f9a9' }, + { ariaLabel: 'peacock', unifiedChar: '1f99a' }, + { ariaLabel: 'parrot', unifiedChar: '1f99c' }, + { ariaLabel: 'frog', unifiedChar: '1f438' }, + { ariaLabel: 'crocodile', unifiedChar: '1f40a' }, + { ariaLabel: 'turtle', unifiedChar: '1f422' }, + { ariaLabel: 'lizard', unifiedChar: '1f98e' }, + { ariaLabel: 'snake', unifiedChar: '1f40d' }, + { ariaLabel: 'dragon face', unifiedChar: '1f432' }, + { ariaLabel: 'dragon', unifiedChar: '1f409' }, + { ariaLabel: 'sauropod', unifiedChar: '1f995' }, + { ariaLabel: 't-rex', unifiedChar: '1f996' }, + { ariaLabel: 'whale', unifiedChar: '1f433' }, + { ariaLabel: 'whale', unifiedChar: '1f40b' }, + { ariaLabel: 'dolphin', unifiedChar: '1f42c' }, + { ariaLabel: 'seal', unifiedChar: '1f9ad' }, + { ariaLabel: 'fish', unifiedChar: '1f41f' }, + { ariaLabel: 'tropical fish', unifiedChar: '1f420' }, + { ariaLabel: 'blowfish', unifiedChar: '1f421' }, + { ariaLabel: 'shark', unifiedChar: '1f988' }, + { ariaLabel: 'octopus', unifiedChar: '1f419' }, + { ariaLabel: 'shell', unifiedChar: '1f41a' }, + { ariaLabel: 'coral', unifiedChar: '1fab8' }, + { ariaLabel: 'snail', unifiedChar: '1f40c' }, + { ariaLabel: 'butterfly', unifiedChar: '1f98b' }, + { ariaLabel: 'bug', unifiedChar: '1f41b' }, + { ariaLabel: 'ant', unifiedChar: '1f41c' }, + { ariaLabel: 'bee', unifiedChar: '1f41d' }, + { ariaLabel: 'beetle', unifiedChar: '1fab2' }, + { ariaLabel: 'ladybug', unifiedChar: '1f41e' }, + { ariaLabel: 'cricket', unifiedChar: '1f997' }, + { ariaLabel: 'cockroach', unifiedChar: '1fab3' }, + { ariaLabel: 'spider', unifiedChar: '1f577-fe0f' }, + { ariaLabel: 'spider web', unifiedChar: '1f578-fe0f' }, + { ariaLabel: 'scorpion', unifiedChar: '1f982' }, + { ariaLabel: 'mosquito', unifiedChar: '1f99f' }, + { ariaLabel: 'fly', unifiedChar: '1fab0' }, + { ariaLabel: 'worm', unifiedChar: '1fab1' }, + { ariaLabel: 'microbe', unifiedChar: '1f9a0' }, + { ariaLabel: 'bouquet', unifiedChar: '1f490' }, + { ariaLabel: 'cherry blossom', unifiedChar: '1f338' }, + { ariaLabel: 'white flower', unifiedChar: '1f4ae' }, + { ariaLabel: 'lotus', unifiedChar: '1fab7' }, + { ariaLabel: 'rosette', unifiedChar: '1f3f5-fe0f' }, + { ariaLabel: 'rose', unifiedChar: '1f339' }, + { ariaLabel: 'wilted flower', unifiedChar: '1f940' }, + { ariaLabel: 'hibiscus', unifiedChar: '1f33a' }, + { ariaLabel: 'sunflower', unifiedChar: '1f33b' }, + { ariaLabel: 'blossom', unifiedChar: '1f33c' }, + { ariaLabel: 'tulip', unifiedChar: '1f337' }, + { ariaLabel: 'seedling', unifiedChar: '1f331' }, + { ariaLabel: 'potted plant', unifiedChar: '1fab4' }, + { ariaLabel: 'evergreen tree', unifiedChar: '1f332' }, + { ariaLabel: 'deciduous tree', unifiedChar: '1f333' }, + { ariaLabel: 'palm tree', unifiedChar: '1f334' }, + { ariaLabel: 'cactus', unifiedChar: '1f335' }, + { ariaLabel: 'ear of rice', unifiedChar: '1f33e' }, + { ariaLabel: 'herb', unifiedChar: '1f33f' }, + { ariaLabel: 'shamrock', unifiedChar: '2618-fe0f' }, + { ariaLabel: 'four leaf clover', unifiedChar: '1f340' }, + { ariaLabel: 'maple leaf', unifiedChar: '1f341' }, + { ariaLabel: 'fallen leaf', unifiedChar: '1f342' }, + { ariaLabel: 'leaves', unifiedChar: '1f343' }, + { ariaLabel: 'empty nest', unifiedChar: '1fab9' }, + { ariaLabel: 'nest with eggs', unifiedChar: '1faba' }, + { ariaLabel: 'grapes', unifiedChar: '1f347' }, + { ariaLabel: 'melon', unifiedChar: '1f348' }, + { ariaLabel: 'watermelon', unifiedChar: '1f349' }, + { ariaLabel: 'tangerine', unifiedChar: '1f34a' }, + { ariaLabel: 'lemon', unifiedChar: '1f34b' }, + { ariaLabel: 'banana', unifiedChar: '1f34c' }, + { ariaLabel: 'pineapple', unifiedChar: '1f34d' }, + { ariaLabel: 'mango', unifiedChar: '1f96d' }, + { ariaLabel: 'apple', unifiedChar: '1f34e' }, + { ariaLabel: 'green apple', unifiedChar: '1f34f' }, + { ariaLabel: 'pear', unifiedChar: '1f350' }, + { ariaLabel: 'peach', unifiedChar: '1f351' }, + { ariaLabel: 'cherries', unifiedChar: '1f352' }, + { ariaLabel: 'strawberry', unifiedChar: '1f353' }, + { ariaLabel: 'blueberries', unifiedChar: '1fad0' }, + { ariaLabel: 'kiwifruit', unifiedChar: '1f95d' }, + { ariaLabel: 'tomato', unifiedChar: '1f345' }, + { ariaLabel: 'olive', unifiedChar: '1fad2' }, + { ariaLabel: 'coconut', unifiedChar: '1f965' }, + { ariaLabel: 'avocado', unifiedChar: '1f951' }, + { ariaLabel: 'eggplant', unifiedChar: '1f346' }, + { ariaLabel: 'potato', unifiedChar: '1f954' }, + { ariaLabel: 'carrot', unifiedChar: '1f955' }, + { ariaLabel: 'corn', unifiedChar: '1f33d' }, + { ariaLabel: 'hot pepper', unifiedChar: '1f336-fe0f' }, + { ariaLabel: 'bell pepper', unifiedChar: '1fad1' }, + { ariaLabel: 'cucumber', unifiedChar: '1f952' }, + { ariaLabel: 'leafy green', unifiedChar: '1f96c' }, + { ariaLabel: 'broccoli', unifiedChar: '1f966' }, + { ariaLabel: 'garlic', unifiedChar: '1f9c4' }, + { ariaLabel: 'onion', unifiedChar: '1f9c5' }, + { ariaLabel: 'mushroom', unifiedChar: '1f344' }, + { ariaLabel: 'peanuts', unifiedChar: '1f95c' }, + { ariaLabel: 'beans', unifiedChar: '1fad8' }, + { ariaLabel: 'chestnut', unifiedChar: '1f330' }, + { ariaLabel: 'bread', unifiedChar: '1f35e' }, + { ariaLabel: 'croissant', unifiedChar: '1f950' }, + { ariaLabel: 'baguette bread', unifiedChar: '1f956' }, + { ariaLabel: 'flatbread', unifiedChar: '1fad3' }, + { ariaLabel: 'pretzel', unifiedChar: '1f968' }, + { ariaLabel: 'bagel', unifiedChar: '1f96f' }, + { ariaLabel: 'pancakes', unifiedChar: '1f95e' }, + { ariaLabel: 'waffle', unifiedChar: '1f9c7' }, + { ariaLabel: 'cheese wedge', unifiedChar: '1f9c0' }, + { ariaLabel: 'meat on bone', unifiedChar: '1f356' }, + { ariaLabel: 'poultry leg', unifiedChar: '1f357' }, + { ariaLabel: 'cut of meat', unifiedChar: '1f969' }, + { ariaLabel: 'bacon', unifiedChar: '1f953' }, + { ariaLabel: 'hamburger', unifiedChar: '1f354' }, + { ariaLabel: 'fries', unifiedChar: '1f35f' }, + { ariaLabel: 'pizza', unifiedChar: '1f355' }, + { ariaLabel: 'hotdog', unifiedChar: '1f32d' }, + { ariaLabel: 'sandwich', unifiedChar: '1f96a' }, + { ariaLabel: 'taco', unifiedChar: '1f32e' }, + { ariaLabel: 'burrito', unifiedChar: '1f32f' }, + { ariaLabel: 'tamale', unifiedChar: '1fad4' }, + { ariaLabel: 'stuffed flatbread', unifiedChar: '1f959' }, + { ariaLabel: 'falafel', unifiedChar: '1f9c6' }, + { ariaLabel: 'egg', unifiedChar: '1f95a' }, + { ariaLabel: 'cooking', unifiedChar: '1f373' }, + { ariaLabel: 'shallow pan of food', unifiedChar: '1f958' }, + { ariaLabel: 'stew', unifiedChar: '1f372' }, + { ariaLabel: 'fondue', unifiedChar: '1fad5' }, + { ariaLabel: 'bowl with spoon', unifiedChar: '1f963' }, + { ariaLabel: 'green salad', unifiedChar: '1f957' }, + { ariaLabel: 'popcorn', unifiedChar: '1f37f' }, + { ariaLabel: 'butter', unifiedChar: '1f9c8' }, + { ariaLabel: 'salt', unifiedChar: '1f9c2' }, + { ariaLabel: 'canned food', unifiedChar: '1f96b' }, + { ariaLabel: 'bento', unifiedChar: '1f371' }, + { ariaLabel: 'rice cracker', unifiedChar: '1f358' }, + { ariaLabel: 'rice ball', unifiedChar: '1f359' }, + { ariaLabel: 'rice', unifiedChar: '1f35a' }, + { ariaLabel: 'curry', unifiedChar: '1f35b' }, + { ariaLabel: 'ramen', unifiedChar: '1f35c' }, + { ariaLabel: 'spaghetti', unifiedChar: '1f35d' }, + { ariaLabel: 'sweet potato', unifiedChar: '1f360' }, + { ariaLabel: 'oden', unifiedChar: '1f362' }, + { ariaLabel: 'sushi', unifiedChar: '1f363' }, + { ariaLabel: 'fried shrimp', unifiedChar: '1f364' }, + { ariaLabel: 'fish cake', unifiedChar: '1f365' }, + { ariaLabel: 'moon cake', unifiedChar: '1f96e' }, + { ariaLabel: 'dango', unifiedChar: '1f361' }, + { ariaLabel: 'dumpling', unifiedChar: '1f95f' }, + { ariaLabel: 'fortune cookie', unifiedChar: '1f960' }, + { ariaLabel: 'takeout box', unifiedChar: '1f961' }, + { ariaLabel: 'crab', unifiedChar: '1f980' }, + { ariaLabel: 'lobster', unifiedChar: '1f99e' }, + { ariaLabel: 'shrimp', unifiedChar: '1f990' }, + { ariaLabel: 'squid', unifiedChar: '1f991' }, + { ariaLabel: 'oyster', unifiedChar: '1f9aa' }, + { ariaLabel: 'icecream', unifiedChar: '1f366' }, + { ariaLabel: 'shaved ice', unifiedChar: '1f367' }, + { ariaLabel: 'ice cream', unifiedChar: '1f368' }, + { ariaLabel: 'doughnut', unifiedChar: '1f369' }, + { ariaLabel: 'cookie', unifiedChar: '1f36a' }, + { ariaLabel: 'birthday', unifiedChar: '1f382' }, + { ariaLabel: 'cake', unifiedChar: '1f370' }, + { ariaLabel: 'cupcake', unifiedChar: '1f9c1' }, + { ariaLabel: 'pie', unifiedChar: '1f967' }, + { ariaLabel: 'chocolate bar', unifiedChar: '1f36b' }, + { ariaLabel: 'candy', unifiedChar: '1f36c' }, + { ariaLabel: 'lollipop', unifiedChar: '1f36d' }, + { ariaLabel: 'custard', unifiedChar: '1f36e' }, + { ariaLabel: 'honey pot', unifiedChar: '1f36f' }, + { ariaLabel: 'baby bottle', unifiedChar: '1f37c' }, + { ariaLabel: 'glass of milk', unifiedChar: '1f95b' }, + { ariaLabel: 'coffee', unifiedChar: '2615' }, + { ariaLabel: 'teapot', unifiedChar: '1fad6' }, + { ariaLabel: 'tea', unifiedChar: '1f375' }, + { ariaLabel: 'sake', unifiedChar: '1f376' }, + { ariaLabel: 'champagne', unifiedChar: '1f37e' }, + { ariaLabel: 'wine glass', unifiedChar: '1f377' }, + { ariaLabel: 'cocktail', unifiedChar: '1f378' }, + { ariaLabel: 'tropical drink', unifiedChar: '1f379' }, + { ariaLabel: 'beer', unifiedChar: '1f37a' }, + { ariaLabel: 'beers', unifiedChar: '1f37b' }, + { ariaLabel: 'clinking glasses', unifiedChar: '1f942' }, + { ariaLabel: 'tumbler glass', unifiedChar: '1f943' }, + { ariaLabel: 'pouring liquid', unifiedChar: '1fad7' }, + { ariaLabel: 'cup with straw', unifiedChar: '1f964' }, + { ariaLabel: 'bubble tea', unifiedChar: '1f9cb' }, + { ariaLabel: 'beverage box', unifiedChar: '1f9c3' }, + { ariaLabel: 'mate drink', unifiedChar: '1f9c9' }, + { ariaLabel: 'ice cube', unifiedChar: '1f9ca' }, + { ariaLabel: 'chopsticks', unifiedChar: '1f962' }, + { ariaLabel: 'knife fork plate', unifiedChar: '1f37d-fe0f' }, + { ariaLabel: 'fork and knife', unifiedChar: '1f374' }, + { ariaLabel: 'spoon', unifiedChar: '1f944' }, + { ariaLabel: 'hocho', unifiedChar: '1f52a' }, + { ariaLabel: 'jar', unifiedChar: '1fad9' }, + { ariaLabel: 'amphora', unifiedChar: '1f3fa' }, + { ariaLabel: 'earth africa', unifiedChar: '1f30d' }, + { ariaLabel: 'earth americas', unifiedChar: '1f30e' }, + { ariaLabel: 'earth asia', unifiedChar: '1f30f' }, + { ariaLabel: 'globe with meridians', unifiedChar: '1f310' }, + { ariaLabel: 'world map', unifiedChar: '1f5fa-fe0f' }, + { ariaLabel: 'japan', unifiedChar: '1f5fe' }, + { ariaLabel: 'compass', unifiedChar: '1f9ed' }, + { ariaLabel: 'snow-capped mountain', unifiedChar: '1f3d4-fe0f' }, + { ariaLabel: 'mountain', unifiedChar: '26f0-fe0f' }, + { ariaLabel: 'volcano', unifiedChar: '1f30b' }, + { ariaLabel: 'mount fuji', unifiedChar: '1f5fb' }, + { ariaLabel: 'camping', unifiedChar: '1f3d5-fe0f' }, + { ariaLabel: 'beach with umbrella', unifiedChar: '1f3d6-fe0f' }, + { ariaLabel: 'desert', unifiedChar: '1f3dc-fe0f' }, + { ariaLabel: 'desert island', unifiedChar: '1f3dd-fe0f' }, + { ariaLabel: 'national park', unifiedChar: '1f3de-fe0f' }, + { ariaLabel: 'stadium', unifiedChar: '1f3df-fe0f' }, + { ariaLabel: 'classical building', unifiedChar: '1f3db-fe0f' }, + { ariaLabel: 'building construction', unifiedChar: '1f3d7-fe0f' }, + { ariaLabel: 'brick', unifiedChar: '1f9f1' }, + { ariaLabel: 'rock', unifiedChar: '1faa8' }, + { ariaLabel: 'wood', unifiedChar: '1fab5' }, + { ariaLabel: 'hut', unifiedChar: '1f6d6' }, + { ariaLabel: 'houses', unifiedChar: '1f3d8-fe0f' }, + { ariaLabel: 'derelict house', unifiedChar: '1f3da-fe0f' }, + { ariaLabel: 'house', unifiedChar: '1f3e0' }, + { ariaLabel: 'house with garden', unifiedChar: '1f3e1' }, + { ariaLabel: 'office', unifiedChar: '1f3e2' }, + { ariaLabel: 'post office', unifiedChar: '1f3e3' }, + { ariaLabel: 'european post office', unifiedChar: '1f3e4' }, + { ariaLabel: 'hospital', unifiedChar: '1f3e5' }, + { ariaLabel: 'bank', unifiedChar: '1f3e6' }, + { ariaLabel: 'hotel', unifiedChar: '1f3e8' }, + { ariaLabel: 'love hotel', unifiedChar: '1f3e9' }, + { ariaLabel: 'convenience store', unifiedChar: '1f3ea' }, + { ariaLabel: 'school', unifiedChar: '1f3eb' }, + { ariaLabel: 'department store', unifiedChar: '1f3ec' }, + { ariaLabel: 'factory', unifiedChar: '1f3ed' }, + { ariaLabel: 'japanese castle', unifiedChar: '1f3ef' }, + { ariaLabel: 'european castle', unifiedChar: '1f3f0' }, + { ariaLabel: 'wedding', unifiedChar: '1f492' }, + { ariaLabel: 'tokyo tower', unifiedChar: '1f5fc' }, + { ariaLabel: 'statue of liberty', unifiedChar: '1f5fd' }, + { ariaLabel: 'church', unifiedChar: '26ea' }, + { ariaLabel: 'mosque', unifiedChar: '1f54c' }, + { ariaLabel: 'hindu temple', unifiedChar: '1f6d5' }, + { ariaLabel: 'synagogue', unifiedChar: '1f54d' }, + { ariaLabel: 'shinto shrine', unifiedChar: '26e9-fe0f' }, + { ariaLabel: 'kaaba', unifiedChar: '1f54b' }, + { ariaLabel: 'fountain', unifiedChar: '26f2' }, + { ariaLabel: 'tent', unifiedChar: '26fa' }, + { ariaLabel: 'foggy', unifiedChar: '1f301' }, + { ariaLabel: 'night with stars', unifiedChar: '1f303' }, + { ariaLabel: 'cityscape', unifiedChar: '1f3d9-fe0f' }, + { ariaLabel: 'sunrise over mountains', unifiedChar: '1f304' }, + { ariaLabel: 'sunrise', unifiedChar: '1f305' }, + { ariaLabel: 'city sunset', unifiedChar: '1f306' }, + { ariaLabel: 'city sunrise', unifiedChar: '1f307' }, + { ariaLabel: 'bridge at night', unifiedChar: '1f309' }, + { ariaLabel: 'hotsprings', unifiedChar: '2668-fe0f' }, + { ariaLabel: 'carousel horse', unifiedChar: '1f3a0' }, + { ariaLabel: 'playground slide', unifiedChar: '1f6dd' }, + { ariaLabel: 'ferris wheel', unifiedChar: '1f3a1' }, + { ariaLabel: 'roller coaster', unifiedChar: '1f3a2' }, + { ariaLabel: 'barber', unifiedChar: '1f488' }, + { ariaLabel: 'circus tent', unifiedChar: '1f3aa' }, + { ariaLabel: 'steam locomotive', unifiedChar: '1f682' }, + { ariaLabel: 'railway car', unifiedChar: '1f683' }, + { ariaLabel: 'high-speed train', unifiedChar: '1f684' }, + { ariaLabel: 'bullettrain front', unifiedChar: '1f685' }, + { ariaLabel: 'train', unifiedChar: '1f686' }, + { ariaLabel: 'metro', unifiedChar: '1f687' }, + { ariaLabel: 'light rail', unifiedChar: '1f688' }, + { ariaLabel: 'station', unifiedChar: '1f689' }, + { ariaLabel: 'tram', unifiedChar: '1f68a' }, + { ariaLabel: 'monorail', unifiedChar: '1f69d' }, + { ariaLabel: 'mountain railway', unifiedChar: '1f69e' }, + { ariaLabel: 'train', unifiedChar: '1f68b' }, + { ariaLabel: 'bus', unifiedChar: '1f68c' }, + { ariaLabel: 'oncoming bus', unifiedChar: '1f68d' }, + { ariaLabel: 'trolleybus', unifiedChar: '1f68e' }, + { ariaLabel: 'minibus', unifiedChar: '1f690' }, + { ariaLabel: 'ambulance', unifiedChar: '1f691' }, + { ariaLabel: 'fire engine', unifiedChar: '1f692' }, + { ariaLabel: 'police car', unifiedChar: '1f693' }, + { ariaLabel: 'oncoming police car', unifiedChar: '1f694' }, + { ariaLabel: 'taxi', unifiedChar: '1f695' }, + { ariaLabel: 'oncoming taxi', unifiedChar: '1f696' }, + { ariaLabel: 'car', unifiedChar: '1f697' }, + { ariaLabel: 'oncoming automobile', unifiedChar: '1f698' }, + { ariaLabel: 'blue car', unifiedChar: '1f699' }, + { ariaLabel: 'pickup truck', unifiedChar: '1f6fb' }, + { ariaLabel: 'truck', unifiedChar: '1f69a' }, + { ariaLabel: 'articulated lorry', unifiedChar: '1f69b' }, + { ariaLabel: 'tractor', unifiedChar: '1f69c' }, + { ariaLabel: 'racing car', unifiedChar: '1f3ce-fe0f' }, + { ariaLabel: 'motorcycle', unifiedChar: '1f3cd-fe0f' }, + { ariaLabel: 'motor scooter', unifiedChar: '1f6f5' }, + { ariaLabel: 'manual wheelchair', unifiedChar: '1f9bd' }, + { ariaLabel: 'motorized wheelchair', unifiedChar: '1f9bc' }, + { ariaLabel: 'auto rickshaw', unifiedChar: '1f6fa' }, + { ariaLabel: 'bike', unifiedChar: '1f6b2' }, + { ariaLabel: 'scooter', unifiedChar: '1f6f4' }, + { ariaLabel: 'skateboard', unifiedChar: '1f6f9' }, + { ariaLabel: 'roller skate', unifiedChar: '1f6fc' }, + { ariaLabel: 'busstop', unifiedChar: '1f68f' }, + { ariaLabel: 'motorway', unifiedChar: '1f6e3-fe0f' }, + { ariaLabel: 'railway track', unifiedChar: '1f6e4-fe0f' }, + { ariaLabel: 'oil drum', unifiedChar: '1f6e2-fe0f' }, + { ariaLabel: 'fuelpump', unifiedChar: '26fd' }, + { ariaLabel: 'wheel', unifiedChar: '1f6de' }, + { ariaLabel: 'rotating light', unifiedChar: '1f6a8' }, + { ariaLabel: 'traffic light', unifiedChar: '1f6a5' }, + { ariaLabel: 'vertical traffic light', unifiedChar: '1f6a6' }, + { ariaLabel: 'octagonal sign', unifiedChar: '1f6d1' }, + { ariaLabel: 'construction', unifiedChar: '1f6a7' }, + { ariaLabel: 'anchor', unifiedChar: '2693' }, + { ariaLabel: 'ring buoy', unifiedChar: '1f6df' }, + { ariaLabel: 'boat', unifiedChar: '26f5' }, + { ariaLabel: 'canoe', unifiedChar: '1f6f6' }, + { ariaLabel: 'speedboat', unifiedChar: '1f6a4' }, + { ariaLabel: 'passenger ship', unifiedChar: '1f6f3-fe0f' }, + { ariaLabel: 'ferry', unifiedChar: '26f4-fe0f' }, + { ariaLabel: 'motor boat', unifiedChar: '1f6e5-fe0f' }, + { ariaLabel: 'ship', unifiedChar: '1f6a2' }, + { ariaLabel: 'airplane', unifiedChar: '2708-fe0f' }, + { ariaLabel: 'small airplane', unifiedChar: '1f6e9-fe0f' }, + { ariaLabel: 'airplane departure', unifiedChar: '1f6eb' }, + { ariaLabel: 'airplane arriving', unifiedChar: '1f6ec' }, + { ariaLabel: 'parachute', unifiedChar: '1fa82' }, + { ariaLabel: 'seat', unifiedChar: '1f4ba' }, + { ariaLabel: 'helicopter', unifiedChar: '1f681' }, + { ariaLabel: 'suspension railway', unifiedChar: '1f69f' }, + { ariaLabel: 'mountain cableway', unifiedChar: '1f6a0' }, + { ariaLabel: 'aerial tramway', unifiedChar: '1f6a1' }, + { ariaLabel: 'satellite', unifiedChar: '1f6f0-fe0f' }, + { ariaLabel: 'rocket', unifiedChar: '1f680' }, + { ariaLabel: 'flying saucer', unifiedChar: '1f6f8' }, + { ariaLabel: 'bellhop bell', unifiedChar: '1f6ce-fe0f' }, + { ariaLabel: 'luggage', unifiedChar: '1f9f3' }, + { ariaLabel: 'hourglass', unifiedChar: '231b' }, + { ariaLabel: 'hourglass flowing sand', unifiedChar: '23f3' }, + { ariaLabel: 'watch', unifiedChar: '231a' }, + { ariaLabel: 'alarm clock', unifiedChar: '23f0' }, + { ariaLabel: 'stopwatch', unifiedChar: '23f1-fe0f' }, + { ariaLabel: 'timer clock', unifiedChar: '23f2-fe0f' }, + { ariaLabel: 'mantelpiece clock', unifiedChar: '1f570-fe0f' }, + { ariaLabel: 'clock12', unifiedChar: '1f55b' }, + { ariaLabel: 'clock1230', unifiedChar: '1f567' }, + { ariaLabel: 'clock1', unifiedChar: '1f550' }, + { ariaLabel: 'clock130', unifiedChar: '1f55c' }, + { ariaLabel: 'clock2', unifiedChar: '1f551' }, + { ariaLabel: 'clock230', unifiedChar: '1f55d' }, + { ariaLabel: 'clock3', unifiedChar: '1f552' }, + { ariaLabel: 'clock330', unifiedChar: '1f55e' }, + { ariaLabel: 'clock4', unifiedChar: '1f553' }, + { ariaLabel: 'clock430', unifiedChar: '1f55f' }, + { ariaLabel: 'clock5', unifiedChar: '1f554' }, + { ariaLabel: 'clock530', unifiedChar: '1f560' }, + { ariaLabel: 'clock6', unifiedChar: '1f555' }, + { ariaLabel: 'clock630', unifiedChar: '1f561' }, + { ariaLabel: 'clock7', unifiedChar: '1f556' }, + { ariaLabel: 'clock730', unifiedChar: '1f562' }, + { ariaLabel: 'clock8', unifiedChar: '1f557' }, + { ariaLabel: 'clock830', unifiedChar: '1f563' }, + { ariaLabel: 'clock9', unifiedChar: '1f558' }, + { ariaLabel: 'clock930', unifiedChar: '1f564' }, + { ariaLabel: 'clock10', unifiedChar: '1f559' }, + { ariaLabel: 'clock1030', unifiedChar: '1f565' }, + { ariaLabel: 'clock11', unifiedChar: '1f55a' }, + { ariaLabel: 'clock1130', unifiedChar: '1f566' }, + { ariaLabel: 'new moon', unifiedChar: '1f311' }, + { ariaLabel: 'waxing crescent moon', unifiedChar: '1f312' }, + { ariaLabel: 'first quarter moon', unifiedChar: '1f313' }, + { ariaLabel: 'moon', unifiedChar: '1f314' }, + { ariaLabel: 'full moon', unifiedChar: '1f315' }, + { ariaLabel: 'waning gibbous moon', unifiedChar: '1f316' }, + { ariaLabel: 'last quarter moon', unifiedChar: '1f317' }, + { ariaLabel: 'waning crescent moon', unifiedChar: '1f318' }, + { ariaLabel: 'crescent moon', unifiedChar: '1f319' }, + { ariaLabel: 'new moon with face', unifiedChar: '1f31a' }, + { ariaLabel: 'first quarter moon with face', unifiedChar: '1f31b' }, + { ariaLabel: 'last quarter moon with face', unifiedChar: '1f31c' }, + { ariaLabel: 'thermometer', unifiedChar: '1f321-fe0f' }, + { ariaLabel: 'sunny', unifiedChar: '2600-fe0f' }, + { ariaLabel: 'full moon with face', unifiedChar: '1f31d' }, + { ariaLabel: 'sun with face', unifiedChar: '1f31e' }, + { ariaLabel: 'ringed planet', unifiedChar: '1fa90' }, + { ariaLabel: 'star', unifiedChar: '2b50' }, + { ariaLabel: 'star2', unifiedChar: '1f31f' }, + { ariaLabel: 'stars', unifiedChar: '1f320' }, + { ariaLabel: 'milky way', unifiedChar: '1f30c' }, + { ariaLabel: 'cloud', unifiedChar: '2601-fe0f' }, + { ariaLabel: 'partly sunny', unifiedChar: '26c5' }, + { ariaLabel: 'thunder cloud and rain', unifiedChar: '26c8-fe0f' }, + { ariaLabel: 'mostly sunny', unifiedChar: '1f324-fe0f' }, + { ariaLabel: 'barely sunny', unifiedChar: '1f325-fe0f' }, + { ariaLabel: 'partly sunny rain', unifiedChar: '1f326-fe0f' }, + { ariaLabel: 'rain cloud', unifiedChar: '1f327-fe0f' }, + { ariaLabel: 'snow cloud', unifiedChar: '1f328-fe0f' }, + { ariaLabel: 'lightning', unifiedChar: '1f329-fe0f' }, + { ariaLabel: 'tornado', unifiedChar: '1f32a-fe0f' }, + { ariaLabel: 'fog', unifiedChar: '1f32b-fe0f' }, + { ariaLabel: 'wind face', unifiedChar: '1f32c-fe0f' }, + { ariaLabel: 'cyclone', unifiedChar: '1f300' }, + { ariaLabel: 'rainbow', unifiedChar: '1f308' }, + { ariaLabel: 'closed umbrella', unifiedChar: '1f302' }, + { ariaLabel: 'umbrella', unifiedChar: '2602-fe0f' }, + { ariaLabel: 'umbrella with rain drops', unifiedChar: '2614' }, + { ariaLabel: 'umbrella on ground', unifiedChar: '26f1-fe0f' }, + { ariaLabel: 'zap', unifiedChar: '26a1' }, + { ariaLabel: 'snowflake', unifiedChar: '2744-fe0f' }, + { ariaLabel: 'snowman', unifiedChar: '2603-fe0f' }, + { ariaLabel: 'snowman without snow', unifiedChar: '26c4' }, + { ariaLabel: 'comet', unifiedChar: '2604-fe0f' }, + { ariaLabel: 'fire', unifiedChar: '1f525' }, + { ariaLabel: 'droplet', unifiedChar: '1f4a7' }, + { ariaLabel: 'ocean', unifiedChar: '1f30a' }, + { ariaLabel: 'jack-o-lantern', unifiedChar: '1f383' }, + { ariaLabel: 'christmas tree', unifiedChar: '1f384' }, + { ariaLabel: 'fireworks', unifiedChar: '1f386' }, + { ariaLabel: 'sparkler', unifiedChar: '1f387' }, + { ariaLabel: 'firecracker', unifiedChar: '1f9e8' }, + { ariaLabel: 'sparkles', unifiedChar: '2728' }, + { ariaLabel: 'balloon', unifiedChar: '1f388' }, + { ariaLabel: 'tada', unifiedChar: '1f389' }, + { ariaLabel: 'confetti ball', unifiedChar: '1f38a' }, + { ariaLabel: 'tanabata tree', unifiedChar: '1f38b' }, + { ariaLabel: 'bamboo', unifiedChar: '1f38d' }, + { ariaLabel: 'dolls', unifiedChar: '1f38e' }, + { ariaLabel: 'flags', unifiedChar: '1f38f' }, + { ariaLabel: 'wind chime', unifiedChar: '1f390' }, + { ariaLabel: 'rice scene', unifiedChar: '1f391' }, + { ariaLabel: 'red envelope', unifiedChar: '1f9e7' }, + { ariaLabel: 'ribbon', unifiedChar: '1f380' }, + { ariaLabel: 'gift', unifiedChar: '1f381' }, + { ariaLabel: 'reminder ribbon', unifiedChar: '1f397-fe0f' }, + { ariaLabel: 'admission tickets', unifiedChar: '1f39f-fe0f' }, + { ariaLabel: 'ticket', unifiedChar: '1f3ab' }, + { ariaLabel: 'medal', unifiedChar: '1f396-fe0f' }, + { ariaLabel: 'trophy', unifiedChar: '1f3c6' }, + { ariaLabel: 'sports medal', unifiedChar: '1f3c5' }, + { ariaLabel: 'first place medal', unifiedChar: '1f947' }, + { ariaLabel: 'second place medal', unifiedChar: '1f948' }, + { ariaLabel: 'third place medal', unifiedChar: '1f949' }, + { ariaLabel: 'soccer', unifiedChar: '26bd' }, + { ariaLabel: 'baseball', unifiedChar: '26be' }, + { ariaLabel: 'softball', unifiedChar: '1f94e' }, + { ariaLabel: 'basketball', unifiedChar: '1f3c0' }, + { ariaLabel: 'volleyball', unifiedChar: '1f3d0' }, + { ariaLabel: 'football', unifiedChar: '1f3c8' }, + { ariaLabel: 'rugby football', unifiedChar: '1f3c9' }, + { ariaLabel: 'tennis', unifiedChar: '1f3be' }, + { ariaLabel: 'flying disc', unifiedChar: '1f94f' }, + { ariaLabel: 'bowling', unifiedChar: '1f3b3' }, + { ariaLabel: 'cricket bat and ball', unifiedChar: '1f3cf' }, + { ariaLabel: 'field hockey stick and ball', unifiedChar: '1f3d1' }, + { ariaLabel: 'ice hockey stick and puck', unifiedChar: '1f3d2' }, + { ariaLabel: 'lacrosse', unifiedChar: '1f94d' }, + { ariaLabel: 'table tennis paddle and ball', unifiedChar: '1f3d3' }, + { ariaLabel: 'badminton racquet and shuttlecock', unifiedChar: '1f3f8' }, + { ariaLabel: 'boxing glove', unifiedChar: '1f94a' }, + { ariaLabel: 'martial arts uniform', unifiedChar: '1f94b' }, + { ariaLabel: 'goal net', unifiedChar: '1f945' }, + { ariaLabel: 'golf', unifiedChar: '26f3' }, + { ariaLabel: 'ice skate', unifiedChar: '26f8-fe0f' }, + { ariaLabel: 'fishing pole and fish', unifiedChar: '1f3a3' }, + { ariaLabel: 'diving mask', unifiedChar: '1f93f' }, + { ariaLabel: 'running shirt with sash', unifiedChar: '1f3bd' }, + { ariaLabel: 'ski', unifiedChar: '1f3bf' }, + { ariaLabel: 'sled', unifiedChar: '1f6f7' }, + { ariaLabel: 'curling stone', unifiedChar: '1f94c' }, + { ariaLabel: 'dart', unifiedChar: '1f3af' }, + { ariaLabel: 'yo-yo', unifiedChar: '1fa80' }, + { ariaLabel: 'kite', unifiedChar: '1fa81' }, + { ariaLabel: '8ball', unifiedChar: '1f3b1' }, + { ariaLabel: 'crystal ball', unifiedChar: '1f52e' }, + { ariaLabel: 'magic wand', unifiedChar: '1fa84' }, + { ariaLabel: 'nazar amulet', unifiedChar: '1f9ff' }, + { ariaLabel: 'hamsa', unifiedChar: '1faac' }, + { ariaLabel: 'video game', unifiedChar: '1f3ae' }, + { ariaLabel: 'joystick', unifiedChar: '1f579-fe0f' }, + { ariaLabel: 'slot machine', unifiedChar: '1f3b0' }, + { ariaLabel: 'game die', unifiedChar: '1f3b2' }, + { ariaLabel: 'jigsaw', unifiedChar: '1f9e9' }, + { ariaLabel: 'teddy bear', unifiedChar: '1f9f8' }, + { ariaLabel: 'pinata', unifiedChar: '1fa85' }, + { ariaLabel: 'mirror ball', unifiedChar: '1faa9' }, + { ariaLabel: 'nesting dolls', unifiedChar: '1fa86' }, + { ariaLabel: 'spades', unifiedChar: '2660-fe0f' }, + { ariaLabel: 'hearts', unifiedChar: '2665-fe0f' }, + { ariaLabel: 'diamonds', unifiedChar: '2666-fe0f' }, + { ariaLabel: 'clubs', unifiedChar: '2663-fe0f' }, + { ariaLabel: 'chess pawn', unifiedChar: '265f-fe0f' }, + { ariaLabel: 'black joker', unifiedChar: '1f0cf' }, + { ariaLabel: 'mahjong', unifiedChar: '1f004' }, + { ariaLabel: 'flower playing cards', unifiedChar: '1f3b4' }, + { ariaLabel: 'performing arts', unifiedChar: '1f3ad' }, + { ariaLabel: 'framed picture', unifiedChar: '1f5bc-fe0f' }, + { ariaLabel: 'art', unifiedChar: '1f3a8' }, + { ariaLabel: 'thread', unifiedChar: '1f9f5' }, + { ariaLabel: 'sewing needle', unifiedChar: '1faa1' }, + { ariaLabel: 'yarn', unifiedChar: '1f9f6' }, + { ariaLabel: 'knot', unifiedChar: '1faa2' }, + { ariaLabel: 'eyeglasses', unifiedChar: '1f453' }, + { ariaLabel: 'sunglasses', unifiedChar: '1f576-fe0f' }, + { ariaLabel: 'goggles', unifiedChar: '1f97d' }, + { ariaLabel: 'lab coat', unifiedChar: '1f97c' }, + { ariaLabel: 'safety vest', unifiedChar: '1f9ba' }, + { ariaLabel: 'necktie', unifiedChar: '1f454' }, + { ariaLabel: 'shirt', unifiedChar: '1f455' }, + { ariaLabel: 'jeans', unifiedChar: '1f456' }, + { ariaLabel: 'scarf', unifiedChar: '1f9e3' }, + { ariaLabel: 'gloves', unifiedChar: '1f9e4' }, + { ariaLabel: 'coat', unifiedChar: '1f9e5' }, + { ariaLabel: 'socks', unifiedChar: '1f9e6' }, + { ariaLabel: 'dress', unifiedChar: '1f457' }, + { ariaLabel: 'kimono', unifiedChar: '1f458' }, + { ariaLabel: 'sari', unifiedChar: '1f97b' }, + { ariaLabel: 'one-piece swimsuit', unifiedChar: '1fa71' }, + { ariaLabel: 'briefs', unifiedChar: '1fa72' }, + { ariaLabel: 'shorts', unifiedChar: '1fa73' }, + { ariaLabel: 'bikini', unifiedChar: '1f459' }, + { ariaLabel: 'womans clothes', unifiedChar: '1f45a' }, + { ariaLabel: 'purse', unifiedChar: '1f45b' }, + { ariaLabel: 'handbag', unifiedChar: '1f45c' }, + { ariaLabel: 'pouch', unifiedChar: '1f45d' }, + { ariaLabel: 'shopping bags', unifiedChar: '1f6cd-fe0f' }, + { ariaLabel: 'school satchel', unifiedChar: '1f392' }, + { ariaLabel: 'thong sandal', unifiedChar: '1fa74' }, + { ariaLabel: 'shoe', unifiedChar: '1f45e' }, + { ariaLabel: 'athletic shoe', unifiedChar: '1f45f' }, + { ariaLabel: 'hiking boot', unifiedChar: '1f97e' }, + { ariaLabel: 'flat shoe', unifiedChar: '1f97f' }, + { ariaLabel: 'high heel', unifiedChar: '1f460' }, + { ariaLabel: 'sandal', unifiedChar: '1f461' }, + { ariaLabel: 'ballet shoes', unifiedChar: '1fa70' }, + { ariaLabel: 'boot', unifiedChar: '1f462' }, + { ariaLabel: 'crown', unifiedChar: '1f451' }, + { ariaLabel: 'womans hat', unifiedChar: '1f452' }, + { ariaLabel: 'tophat', unifiedChar: '1f3a9' }, + { ariaLabel: 'mortar board', unifiedChar: '1f393' }, + { ariaLabel: 'billed cap', unifiedChar: '1f9e2' }, + { ariaLabel: 'military helmet', unifiedChar: '1fa96' }, + { ariaLabel: 'rescue worker’s helmet', unifiedChar: '26d1-fe0f' }, + { ariaLabel: 'prayer beads', unifiedChar: '1f4ff' }, + { ariaLabel: 'lipstick', unifiedChar: '1f484' }, + { ariaLabel: 'ring', unifiedChar: '1f48d' }, + { ariaLabel: 'gem', unifiedChar: '1f48e' }, + { ariaLabel: 'mute', unifiedChar: '1f507' }, + { ariaLabel: 'speaker', unifiedChar: '1f508' }, + { ariaLabel: 'sound', unifiedChar: '1f509' }, + { ariaLabel: 'loud sound', unifiedChar: '1f50a' }, + { ariaLabel: 'loudspeaker', unifiedChar: '1f4e2' }, + { ariaLabel: 'mega', unifiedChar: '1f4e3' }, + { ariaLabel: 'postal horn', unifiedChar: '1f4ef' }, + { ariaLabel: 'bell', unifiedChar: '1f514' }, + { ariaLabel: 'no bell', unifiedChar: '1f515' }, + { ariaLabel: 'musical score', unifiedChar: '1f3bc' }, + { ariaLabel: 'musical note', unifiedChar: '1f3b5' }, + { ariaLabel: 'notes', unifiedChar: '1f3b6' }, + { ariaLabel: 'studio microphone', unifiedChar: '1f399-fe0f' }, + { ariaLabel: 'level slider', unifiedChar: '1f39a-fe0f' }, + { ariaLabel: 'control knobs', unifiedChar: '1f39b-fe0f' }, + { ariaLabel: 'microphone', unifiedChar: '1f3a4' }, + { ariaLabel: 'headphone', unifiedChar: '1f3a7' }, + { ariaLabel: 'radio', unifiedChar: '1f4fb' }, + { ariaLabel: 'saxophone', unifiedChar: '1f3b7' }, + { ariaLabel: 'accordion', unifiedChar: '1fa97' }, + { ariaLabel: 'guitar', unifiedChar: '1f3b8' }, + { ariaLabel: 'musical keyboard', unifiedChar: '1f3b9' }, + { ariaLabel: 'trumpet', unifiedChar: '1f3ba' }, + { ariaLabel: 'violin', unifiedChar: '1f3bb' }, + { ariaLabel: 'banjo', unifiedChar: '1fa95' }, + { ariaLabel: 'drum with drumsticks', unifiedChar: '1f941' }, + { ariaLabel: 'long drum', unifiedChar: '1fa98' }, + { ariaLabel: 'iphone', unifiedChar: '1f4f1' }, + { ariaLabel: 'calling', unifiedChar: '1f4f2' }, + { ariaLabel: 'phone', unifiedChar: '260e-fe0f' }, + { ariaLabel: 'telephone receiver', unifiedChar: '1f4de' }, + { ariaLabel: 'pager', unifiedChar: '1f4df' }, + { ariaLabel: 'fax', unifiedChar: '1f4e0' }, + { ariaLabel: 'battery', unifiedChar: '1f50b' }, + { ariaLabel: 'low battery', unifiedChar: '1faab' }, + { ariaLabel: 'electric plug', unifiedChar: '1f50c' }, + { ariaLabel: 'computer', unifiedChar: '1f4bb' }, + { ariaLabel: 'desktop computer', unifiedChar: '1f5a5-fe0f' }, + { ariaLabel: 'printer', unifiedChar: '1f5a8-fe0f' }, + { ariaLabel: 'keyboard', unifiedChar: '2328-fe0f' }, + { ariaLabel: 'computer mouse', unifiedChar: '1f5b1-fe0f' }, + { ariaLabel: 'trackball', unifiedChar: '1f5b2-fe0f' }, + { ariaLabel: 'minidisc', unifiedChar: '1f4bd' }, + { ariaLabel: 'floppy disk', unifiedChar: '1f4be' }, + { ariaLabel: 'cd', unifiedChar: '1f4bf' }, + { ariaLabel: 'dvd', unifiedChar: '1f4c0' }, + { ariaLabel: 'abacus', unifiedChar: '1f9ee' }, + { ariaLabel: 'movie camera', unifiedChar: '1f3a5' }, + { ariaLabel: 'film frames', unifiedChar: '1f39e-fe0f' }, + { ariaLabel: 'film projector', unifiedChar: '1f4fd-fe0f' }, + { ariaLabel: 'clapper', unifiedChar: '1f3ac' }, + { ariaLabel: 'tv', unifiedChar: '1f4fa' }, + { ariaLabel: 'camera', unifiedChar: '1f4f7' }, + { ariaLabel: 'camera with flash', unifiedChar: '1f4f8' }, + { ariaLabel: 'video camera', unifiedChar: '1f4f9' }, + { ariaLabel: 'vhs', unifiedChar: '1f4fc' }, + { ariaLabel: 'mag', unifiedChar: '1f50d' }, + { ariaLabel: 'mag right', unifiedChar: '1f50e' }, + { ariaLabel: 'candle', unifiedChar: '1f56f-fe0f' }, + { ariaLabel: 'bulb', unifiedChar: '1f4a1' }, + { ariaLabel: 'flashlight', unifiedChar: '1f526' }, + { ariaLabel: 'lantern', unifiedChar: '1f3ee' }, + { ariaLabel: 'diya lamp', unifiedChar: '1fa94' }, + { ariaLabel: 'notebook with decorative cover', unifiedChar: '1f4d4' }, + { ariaLabel: 'closed book', unifiedChar: '1f4d5' }, + { ariaLabel: 'book', unifiedChar: '1f4d6' }, + { ariaLabel: 'green book', unifiedChar: '1f4d7' }, + { ariaLabel: 'blue book', unifiedChar: '1f4d8' }, + { ariaLabel: 'orange book', unifiedChar: '1f4d9' }, + { ariaLabel: 'books', unifiedChar: '1f4da' }, + { ariaLabel: 'notebook', unifiedChar: '1f4d3' }, + { ariaLabel: 'ledger', unifiedChar: '1f4d2' }, + { ariaLabel: 'page with curl', unifiedChar: '1f4c3' }, + { ariaLabel: 'scroll', unifiedChar: '1f4dc' }, + { ariaLabel: 'page facing up', unifiedChar: '1f4c4' }, + { ariaLabel: 'newspaper', unifiedChar: '1f4f0' }, + { ariaLabel: 'rolled-up newspaper', unifiedChar: '1f5de-fe0f' }, + { ariaLabel: 'bookmark tabs', unifiedChar: '1f4d1' }, + { ariaLabel: 'bookmark', unifiedChar: '1f516' }, + { ariaLabel: 'label', unifiedChar: '1f3f7-fe0f' }, + { ariaLabel: 'moneybag', unifiedChar: '1f4b0' }, + { ariaLabel: 'coin', unifiedChar: '1fa99' }, + { ariaLabel: 'yen', unifiedChar: '1f4b4' }, + { ariaLabel: 'dollar', unifiedChar: '1f4b5' }, + { ariaLabel: 'euro', unifiedChar: '1f4b6' }, + { ariaLabel: 'pound', unifiedChar: '1f4b7' }, + { ariaLabel: 'money with wings', unifiedChar: '1f4b8' }, + { ariaLabel: 'credit card', unifiedChar: '1f4b3' }, + { ariaLabel: 'receipt', unifiedChar: '1f9fe' }, + { ariaLabel: 'chart', unifiedChar: '1f4b9' }, + { ariaLabel: 'email', unifiedChar: '2709-fe0f' }, + { ariaLabel: 'e-mail', unifiedChar: '1f4e7' }, + { ariaLabel: 'incoming envelope', unifiedChar: '1f4e8' }, + { ariaLabel: 'envelope with arrow', unifiedChar: '1f4e9' }, + { ariaLabel: 'outbox tray', unifiedChar: '1f4e4' }, + { ariaLabel: 'inbox tray', unifiedChar: '1f4e5' }, + { ariaLabel: 'package', unifiedChar: '1f4e6' }, + { ariaLabel: 'mailbox', unifiedChar: '1f4eb' }, + { ariaLabel: 'mailbox closed', unifiedChar: '1f4ea' }, + { ariaLabel: 'mailbox with mail', unifiedChar: '1f4ec' }, + { ariaLabel: 'mailbox with no mail', unifiedChar: '1f4ed' }, + { ariaLabel: 'postbox', unifiedChar: '1f4ee' }, + { ariaLabel: 'ballot box with ballot', unifiedChar: '1f5f3-fe0f' }, + { ariaLabel: 'pencil', unifiedChar: '270f-fe0f' }, + { ariaLabel: 'black nib', unifiedChar: '2712-fe0f' }, + { ariaLabel: 'fountain pen', unifiedChar: '1f58b-fe0f' }, + { ariaLabel: 'pen', unifiedChar: '1f58a-fe0f' }, + { ariaLabel: 'paintbrush', unifiedChar: '1f58c-fe0f' }, + { ariaLabel: 'crayon', unifiedChar: '1f58d-fe0f' }, + { ariaLabel: 'memo', unifiedChar: '1f4dd' }, + { ariaLabel: 'briefcase', unifiedChar: '1f4bc' }, + { ariaLabel: 'file folder', unifiedChar: '1f4c1' }, + { ariaLabel: 'open file folder', unifiedChar: '1f4c2' }, + { ariaLabel: 'card index dividers', unifiedChar: '1f5c2-fe0f' }, + { ariaLabel: 'date', unifiedChar: '1f4c5' }, + { ariaLabel: 'calendar', unifiedChar: '1f4c6' }, + { ariaLabel: 'spiral notepad', unifiedChar: '1f5d2-fe0f' }, + { ariaLabel: 'spiral calendar', unifiedChar: '1f5d3-fe0f' }, + { ariaLabel: 'card index', unifiedChar: '1f4c7' }, + { ariaLabel: 'chart with upwards trend', unifiedChar: '1f4c8' }, + { ariaLabel: 'chart with downwards trend', unifiedChar: '1f4c9' }, + { ariaLabel: 'bar chart', unifiedChar: '1f4ca' }, + { ariaLabel: 'clipboard', unifiedChar: '1f4cb' }, + { ariaLabel: 'pushpin', unifiedChar: '1f4cc' }, + { ariaLabel: 'round pushpin', unifiedChar: '1f4cd' }, + { ariaLabel: 'paperclip', unifiedChar: '1f4ce' }, + { ariaLabel: 'linked paperclips', unifiedChar: '1f587-fe0f' }, + { ariaLabel: 'straight ruler', unifiedChar: '1f4cf' }, + { ariaLabel: 'triangular ruler', unifiedChar: '1f4d0' }, + { ariaLabel: 'scissors', unifiedChar: '2702-fe0f' }, + { ariaLabel: 'card file box', unifiedChar: '1f5c3-fe0f' }, + { ariaLabel: 'file cabinet', unifiedChar: '1f5c4-fe0f' }, + { ariaLabel: 'wastebasket', unifiedChar: '1f5d1-fe0f' }, + { ariaLabel: 'lock', unifiedChar: '1f512' }, + { ariaLabel: 'unlock', unifiedChar: '1f513' }, + { ariaLabel: 'lock with ink pen', unifiedChar: '1f50f' }, + { ariaLabel: 'closed lock with key', unifiedChar: '1f510' }, + { ariaLabel: 'key', unifiedChar: '1f511' }, + { ariaLabel: 'old key', unifiedChar: '1f5dd-fe0f' }, + { ariaLabel: 'hammer', unifiedChar: '1f528' }, + { ariaLabel: 'axe', unifiedChar: '1fa93' }, + { ariaLabel: 'pick', unifiedChar: '26cf-fe0f' }, + { ariaLabel: 'hammer and pick', unifiedChar: '2692-fe0f' }, + { ariaLabel: 'hammer and wrench', unifiedChar: '1f6e0-fe0f' }, + { ariaLabel: 'dagger', unifiedChar: '1f5e1-fe0f' }, + { ariaLabel: 'crossed swords', unifiedChar: '2694-fe0f' }, + { ariaLabel: 'gun', unifiedChar: '1f52b' }, + { ariaLabel: 'boomerang', unifiedChar: '1fa83' }, + { ariaLabel: 'bow and arrow', unifiedChar: '1f3f9' }, + { ariaLabel: 'shield', unifiedChar: '1f6e1-fe0f' }, + { ariaLabel: 'carpentry saw', unifiedChar: '1fa9a' }, + { ariaLabel: 'wrench', unifiedChar: '1f527' }, + { ariaLabel: 'screwdriver', unifiedChar: '1fa9b' }, + { ariaLabel: 'nut and bolt', unifiedChar: '1f529' }, + { ariaLabel: 'gear', unifiedChar: '2699-fe0f' }, + { ariaLabel: 'clamp', unifiedChar: '1f5dc-fe0f' }, + { ariaLabel: 'scales', unifiedChar: '2696-fe0f' }, + { ariaLabel: 'probing cane', unifiedChar: '1f9af' }, + { ariaLabel: 'link', unifiedChar: '1f517' }, + { ariaLabel: 'chains', unifiedChar: '26d3-fe0f' }, + { ariaLabel: 'hook', unifiedChar: '1fa9d' }, + { ariaLabel: 'toolbox', unifiedChar: '1f9f0' }, + { ariaLabel: 'magnet', unifiedChar: '1f9f2' }, + { ariaLabel: 'ladder', unifiedChar: '1fa9c' }, + { ariaLabel: 'alembic', unifiedChar: '2697-fe0f' }, + { ariaLabel: 'test tube', unifiedChar: '1f9ea' }, + { ariaLabel: 'petri dish', unifiedChar: '1f9eb' }, + { ariaLabel: 'dna', unifiedChar: '1f9ec' }, + { ariaLabel: 'microscope', unifiedChar: '1f52c' }, + { ariaLabel: 'telescope', unifiedChar: '1f52d' }, + { ariaLabel: 'satellite antenna', unifiedChar: '1f4e1' }, + { ariaLabel: 'syringe', unifiedChar: '1f489' }, + { ariaLabel: 'drop of blood', unifiedChar: '1fa78' }, + { ariaLabel: 'pill', unifiedChar: '1f48a' }, + { ariaLabel: 'adhesive bandage', unifiedChar: '1fa79' }, + { ariaLabel: 'crutch', unifiedChar: '1fa7c' }, + { ariaLabel: 'stethoscope', unifiedChar: '1fa7a' }, + { ariaLabel: 'x-ray', unifiedChar: '1fa7b' }, + { ariaLabel: 'door', unifiedChar: '1f6aa' }, + { ariaLabel: 'elevator', unifiedChar: '1f6d7' }, + { ariaLabel: 'mirror', unifiedChar: '1fa9e' }, + { ariaLabel: 'window', unifiedChar: '1fa9f' }, + { ariaLabel: 'bed', unifiedChar: '1f6cf-fe0f' }, + { ariaLabel: 'couch and lamp', unifiedChar: '1f6cb-fe0f' }, + { ariaLabel: 'chair', unifiedChar: '1fa91' }, + { ariaLabel: 'toilet', unifiedChar: '1f6bd' }, + { ariaLabel: 'plunger', unifiedChar: '1faa0' }, + { ariaLabel: 'shower', unifiedChar: '1f6bf' }, + { ariaLabel: 'bathtub', unifiedChar: '1f6c1' }, + { ariaLabel: 'mouse trap', unifiedChar: '1faa4' }, + { ariaLabel: 'razor', unifiedChar: '1fa92' }, + { ariaLabel: 'lotion bottle', unifiedChar: '1f9f4' }, + { ariaLabel: 'safety pin', unifiedChar: '1f9f7' }, + { ariaLabel: 'broom', unifiedChar: '1f9f9' }, + { ariaLabel: 'basket', unifiedChar: '1f9fa' }, + { ariaLabel: 'roll of paper', unifiedChar: '1f9fb' }, + { ariaLabel: 'bucket', unifiedChar: '1faa3' }, + { ariaLabel: 'soap', unifiedChar: '1f9fc' }, + { ariaLabel: 'bubbles', unifiedChar: '1fae7' }, + { ariaLabel: 'toothbrush', unifiedChar: '1faa5' }, + { ariaLabel: 'sponge', unifiedChar: '1f9fd' }, + { ariaLabel: 'fire extinguisher', unifiedChar: '1f9ef' }, + { ariaLabel: 'shopping trolley', unifiedChar: '1f6d2' }, + { ariaLabel: 'smoking', unifiedChar: '1f6ac' }, + { ariaLabel: 'coffin', unifiedChar: '26b0-fe0f' }, + { ariaLabel: 'headstone', unifiedChar: '1faa6' }, + { ariaLabel: 'funeral urn', unifiedChar: '26b1-fe0f' }, + { ariaLabel: 'moyai', unifiedChar: '1f5ff' }, + { ariaLabel: 'placard', unifiedChar: '1faa7' }, + { ariaLabel: 'identification card', unifiedChar: '1faaa' }, + { ariaLabel: 'atm', unifiedChar: '1f3e7' }, + { ariaLabel: 'put litter in its place', unifiedChar: '1f6ae' }, + { ariaLabel: 'potable water', unifiedChar: '1f6b0' }, + { ariaLabel: 'wheelchair', unifiedChar: '267f' }, + { ariaLabel: 'mens', unifiedChar: '1f6b9' }, + { ariaLabel: 'womens', unifiedChar: '1f6ba' }, + { ariaLabel: 'restroom', unifiedChar: '1f6bb' }, + { ariaLabel: 'baby symbol', unifiedChar: '1f6bc' }, + { ariaLabel: 'wc', unifiedChar: '1f6be' }, + { ariaLabel: 'passport control', unifiedChar: '1f6c2' }, + { ariaLabel: 'customs', unifiedChar: '1f6c3' }, + { ariaLabel: 'baggage claim', unifiedChar: '1f6c4' }, + { ariaLabel: 'left luggage', unifiedChar: '1f6c5' }, + { ariaLabel: 'warning', unifiedChar: '26a0-fe0f' }, + { ariaLabel: 'children crossing', unifiedChar: '1f6b8' }, + { ariaLabel: 'no entry', unifiedChar: '26d4' }, + { ariaLabel: 'no entry sign', unifiedChar: '1f6ab' }, + { ariaLabel: 'no bicycles', unifiedChar: '1f6b3' }, + { ariaLabel: 'no smoking', unifiedChar: '1f6ad' }, + { ariaLabel: 'do not litter', unifiedChar: '1f6af' }, + { ariaLabel: 'non-potable water', unifiedChar: '1f6b1' }, + { ariaLabel: 'no pedestrians', unifiedChar: '1f6b7' }, + { ariaLabel: 'no mobile phones', unifiedChar: '1f4f5' }, + { ariaLabel: 'underage', unifiedChar: '1f51e' }, + { ariaLabel: 'radioactive', unifiedChar: '2622-fe0f' }, + { ariaLabel: 'biohazard', unifiedChar: '2623-fe0f' }, + { ariaLabel: 'arrow up', unifiedChar: '2b06-fe0f' }, + { ariaLabel: 'north east arrow', unifiedChar: '2197-fe0f' }, + { ariaLabel: 'arrow right', unifiedChar: '27a1-fe0f' }, + { ariaLabel: 'south east arrow', unifiedChar: '2198-fe0f' }, + { ariaLabel: 'arrow down', unifiedChar: '2b07-fe0f' }, + { ariaLabel: 'south west arrow', unifiedChar: '2199-fe0f' }, + { ariaLabel: 'arrow left', unifiedChar: '2b05-fe0f' }, + { ariaLabel: 'north west arrow', unifiedChar: '2196-fe0f' }, + { ariaLabel: 'up down arrow', unifiedChar: '2195-fe0f' }, + { ariaLabel: 'left right arrow', unifiedChar: '2194-fe0f' }, + { ariaLabel: 'leftwards arrow with hook', unifiedChar: '21a9-fe0f' }, + { ariaLabel: 'arrow right hook', unifiedChar: '21aa-fe0f' }, + { ariaLabel: 'arrow heading up', unifiedChar: '2934-fe0f' }, + { ariaLabel: 'arrow heading down', unifiedChar: '2935-fe0f' }, + { ariaLabel: 'arrows clockwise', unifiedChar: '1f503' }, + { ariaLabel: 'arrows counterclockwise', unifiedChar: '1f504' }, + { ariaLabel: 'back', unifiedChar: '1f519' }, + { ariaLabel: 'end', unifiedChar: '1f51a' }, + { ariaLabel: 'on', unifiedChar: '1f51b' }, + { ariaLabel: 'soon', unifiedChar: '1f51c' }, + { ariaLabel: 'top', unifiedChar: '1f51d' }, + { ariaLabel: 'place of worship', unifiedChar: '1f6d0' }, + { ariaLabel: 'atom symbol', unifiedChar: '269b-fe0f' }, + { ariaLabel: 'om', unifiedChar: '1f549-fe0f' }, + { ariaLabel: 'star of david', unifiedChar: '2721-fe0f' }, + { ariaLabel: 'wheel of dharma', unifiedChar: '2638-fe0f' }, + { ariaLabel: 'yin yang', unifiedChar: '262f-fe0f' }, + { ariaLabel: 'latin cross', unifiedChar: '271d-fe0f' }, + { ariaLabel: 'orthodox cross', unifiedChar: '2626-fe0f' }, + { ariaLabel: 'star and crescent', unifiedChar: '262a-fe0f' }, + { ariaLabel: 'peace symbol', unifiedChar: '262e-fe0f' }, + { ariaLabel: 'menorah with nine branches', unifiedChar: '1f54e' }, + { ariaLabel: 'six pointed star', unifiedChar: '1f52f' }, + { ariaLabel: 'aries', unifiedChar: '2648' }, + { ariaLabel: 'taurus', unifiedChar: '2649' }, + { ariaLabel: 'gemini', unifiedChar: '264a' }, + { ariaLabel: 'cancer', unifiedChar: '264b' }, + { ariaLabel: 'leo', unifiedChar: '264c' }, + { ariaLabel: 'virgo', unifiedChar: '264d' }, + { ariaLabel: 'libra', unifiedChar: '264e' }, + { ariaLabel: 'scorpius', unifiedChar: '264f' }, + { ariaLabel: 'sagittarius', unifiedChar: '2650' }, + { ariaLabel: 'capricorn', unifiedChar: '2651' }, + { ariaLabel: 'aquarius', unifiedChar: '2652' }, + { ariaLabel: 'pisces', unifiedChar: '2653' }, + { ariaLabel: 'ophiuchus', unifiedChar: '26ce' }, + { ariaLabel: 'twisted rightwards arrows', unifiedChar: '1f500' }, + { ariaLabel: 'repeat', unifiedChar: '1f501' }, + { ariaLabel: 'repeat one', unifiedChar: '1f502' }, + { ariaLabel: 'arrow forward', unifiedChar: '25b6-fe0f' }, + { ariaLabel: 'fast forward', unifiedChar: '23e9' }, + { ariaLabel: 'next track button', unifiedChar: '23ed-fe0f' }, + { ariaLabel: 'play or pause button', unifiedChar: '23ef-fe0f' }, + { ariaLabel: 'arrow backward', unifiedChar: '25c0-fe0f' }, + { ariaLabel: 'rewind', unifiedChar: '23ea' }, + { ariaLabel: 'last track button', unifiedChar: '23ee-fe0f' }, + { ariaLabel: 'arrow up small', unifiedChar: '1f53c' }, + { ariaLabel: 'arrow double up', unifiedChar: '23eb' }, + { ariaLabel: 'arrow down small', unifiedChar: '1f53d' }, + { ariaLabel: 'arrow double down', unifiedChar: '23ec' }, + { ariaLabel: 'pause button', unifiedChar: '23f8-fe0f' }, + { ariaLabel: 'stop button', unifiedChar: '23f9-fe0f' }, + { ariaLabel: 'record button', unifiedChar: '23fa-fe0f' }, + { ariaLabel: 'eject', unifiedChar: '23cf-fe0f' }, + { ariaLabel: 'cinema', unifiedChar: '1f3a6' }, + { ariaLabel: 'low brightness', unifiedChar: '1f505' }, + { ariaLabel: 'high brightness', unifiedChar: '1f506' }, + { ariaLabel: 'signal strength', unifiedChar: '1f4f6' }, + { ariaLabel: 'vibration mode', unifiedChar: '1f4f3' }, + { ariaLabel: 'mobile phone off', unifiedChar: '1f4f4' }, + { ariaLabel: 'transgender symbol', unifiedChar: '26a7-fe0f' }, + { ariaLabel: 'heavy multiplication x', unifiedChar: '2716-fe0f' }, + { ariaLabel: 'heavy plus sign', unifiedChar: '2795' }, + { ariaLabel: 'heavy minus sign', unifiedChar: '2796' }, + { ariaLabel: 'heavy division sign', unifiedChar: '2797' }, + { ariaLabel: 'heavy equals sign', unifiedChar: '1f7f0' }, + { ariaLabel: 'infinity', unifiedChar: '267e-fe0f' }, + { ariaLabel: 'bangbang', unifiedChar: '203c-fe0f' }, + { ariaLabel: 'interrobang', unifiedChar: '2049-fe0f' }, + { ariaLabel: 'question', unifiedChar: '2753' }, + { ariaLabel: 'grey question', unifiedChar: '2754' }, + { ariaLabel: 'grey exclamation', unifiedChar: '2755' }, + { ariaLabel: 'exclamation', unifiedChar: '2757' }, + { ariaLabel: 'wavy dash', unifiedChar: '3030-fe0f' }, + { ariaLabel: 'currency exchange', unifiedChar: '1f4b1' }, + { ariaLabel: 'heavy dollar sign', unifiedChar: '1f4b2' }, + { ariaLabel: 'recycle', unifiedChar: '267b-fe0f' }, + { ariaLabel: 'fleur-de-lis', unifiedChar: '269c-fe0f' }, + { ariaLabel: 'trident', unifiedChar: '1f531' }, + { ariaLabel: 'name badge', unifiedChar: '1f4db' }, + { ariaLabel: 'beginner', unifiedChar: '1f530' }, + { ariaLabel: 'o', unifiedChar: '2b55' }, + { ariaLabel: 'white check mark', unifiedChar: '2705' }, + { ariaLabel: 'ballot box with check', unifiedChar: '2611-fe0f' }, + { ariaLabel: 'heavy check mark', unifiedChar: '2714-fe0f' }, + { ariaLabel: 'x', unifiedChar: '274c' }, + { ariaLabel: 'negative squared cross mark', unifiedChar: '274e' }, + { ariaLabel: 'curly loop', unifiedChar: '27b0' }, + { ariaLabel: 'loop', unifiedChar: '27bf' }, + { ariaLabel: 'part alternation mark', unifiedChar: '303d-fe0f' }, + { ariaLabel: 'eight spoked asterisk', unifiedChar: '2733-fe0f' }, + { ariaLabel: 'eight pointed black star', unifiedChar: '2734-fe0f' }, + { ariaLabel: 'sparkle', unifiedChar: '2747-fe0f' }, + { ariaLabel: 'copyright', unifiedChar: '00a9-fe0f' }, + { ariaLabel: 'registered', unifiedChar: '00ae-fe0f' }, + { ariaLabel: 'tm', unifiedChar: '2122-fe0f' }, + { ariaLabel: 'hash', unifiedChar: '0023-fe0f-20e3' }, + { ariaLabel: 'keycap: *', unifiedChar: '002a-fe0f-20e3' }, + { ariaLabel: 'zero', unifiedChar: '0030-fe0f-20e3' }, + { ariaLabel: 'one', unifiedChar: '0031-fe0f-20e3' }, + { ariaLabel: 'two', unifiedChar: '0032-fe0f-20e3' }, + { ariaLabel: 'three', unifiedChar: '0033-fe0f-20e3' }, + { ariaLabel: 'four', unifiedChar: '0034-fe0f-20e3' }, + { ariaLabel: 'five', unifiedChar: '0035-fe0f-20e3' }, + { ariaLabel: 'six', unifiedChar: '0036-fe0f-20e3' }, + { ariaLabel: 'seven', unifiedChar: '0037-fe0f-20e3' }, + { ariaLabel: 'eight', unifiedChar: '0038-fe0f-20e3' }, + { ariaLabel: 'nine', unifiedChar: '0039-fe0f-20e3' }, + { ariaLabel: 'keycap ten', unifiedChar: '1f51f' }, + { ariaLabel: 'capital abcd', unifiedChar: '1f520' }, + { ariaLabel: 'abcd', unifiedChar: '1f521' }, + { ariaLabel: '1234', unifiedChar: '1f522' }, + { ariaLabel: 'symbols', unifiedChar: '1f523' }, + { ariaLabel: 'abc', unifiedChar: '1f524' }, + { ariaLabel: 'a', unifiedChar: '1f170-fe0f' }, + { ariaLabel: 'ab', unifiedChar: '1f18e' }, + { ariaLabel: 'b', unifiedChar: '1f171-fe0f' }, + { ariaLabel: 'cl', unifiedChar: '1f191' }, + { ariaLabel: 'cool', unifiedChar: '1f192' }, + { ariaLabel: 'free', unifiedChar: '1f193' }, + { ariaLabel: 'information source', unifiedChar: '2139-fe0f' }, + { ariaLabel: 'id', unifiedChar: '1f194' }, + { ariaLabel: 'm', unifiedChar: '24c2-fe0f' }, + { ariaLabel: 'new', unifiedChar: '1f195' }, + { ariaLabel: 'ng', unifiedChar: '1f196' }, + { ariaLabel: 'o2', unifiedChar: '1f17e-fe0f' }, + { ariaLabel: 'ok', unifiedChar: '1f197' }, + { ariaLabel: 'parking', unifiedChar: '1f17f-fe0f' }, + { ariaLabel: 'sos', unifiedChar: '1f198' }, + { ariaLabel: 'up', unifiedChar: '1f199' }, + { ariaLabel: 'vs', unifiedChar: '1f19a' }, + { ariaLabel: 'koko', unifiedChar: '1f201' }, + { ariaLabel: 'sa', unifiedChar: '1f202-fe0f' }, + { ariaLabel: 'u6708', unifiedChar: '1f237-fe0f' }, + { ariaLabel: 'u6709', unifiedChar: '1f236' }, + { ariaLabel: 'u6307', unifiedChar: '1f22f' }, + { ariaLabel: 'ideograph advantage', unifiedChar: '1f250' }, + { ariaLabel: 'u5272', unifiedChar: '1f239' }, + { ariaLabel: 'u7121', unifiedChar: '1f21a' }, + { ariaLabel: 'u7981', unifiedChar: '1f232' }, + { ariaLabel: 'accept', unifiedChar: '1f251' }, + { ariaLabel: 'u7533', unifiedChar: '1f238' }, + { ariaLabel: 'u5408', unifiedChar: '1f234' }, + { ariaLabel: 'u7a7a', unifiedChar: '1f233' }, + { ariaLabel: 'congratulations', unifiedChar: '3297-fe0f' }, + { ariaLabel: 'secret', unifiedChar: '3299-fe0f' }, + { ariaLabel: 'u55b6', unifiedChar: '1f23a' }, + { ariaLabel: 'u6e80', unifiedChar: '1f235' }, + { ariaLabel: 'red circle', unifiedChar: '1f534' }, + { ariaLabel: 'large orange circle', unifiedChar: '1f7e0' }, + { ariaLabel: 'large yellow circle', unifiedChar: '1f7e1' }, + { ariaLabel: 'large green circle', unifiedChar: '1f7e2' }, + { ariaLabel: 'large blue circle', unifiedChar: '1f535' }, + { ariaLabel: 'large purple circle', unifiedChar: '1f7e3' }, + { ariaLabel: 'large brown circle', unifiedChar: '1f7e4' }, + { ariaLabel: 'black circle', unifiedChar: '26ab' }, + { ariaLabel: 'white circle', unifiedChar: '26aa' }, + { ariaLabel: 'large red square', unifiedChar: '1f7e5' }, + { ariaLabel: 'large orange square', unifiedChar: '1f7e7' }, + { ariaLabel: 'large yellow square', unifiedChar: '1f7e8' }, + { ariaLabel: 'large green square', unifiedChar: '1f7e9' }, + { ariaLabel: 'large blue square', unifiedChar: '1f7e6' }, + { ariaLabel: 'large purple square', unifiedChar: '1f7ea' }, + { ariaLabel: 'large brown square', unifiedChar: '1f7eb' }, + { ariaLabel: 'black large square', unifiedChar: '2b1b' }, + { ariaLabel: 'white large square', unifiedChar: '2b1c' }, + { ariaLabel: 'black medium square', unifiedChar: '25fc-fe0f' }, + { ariaLabel: 'white medium square', unifiedChar: '25fb-fe0f' }, + { ariaLabel: 'black medium small square', unifiedChar: '25fe' }, + { ariaLabel: 'white medium small square', unifiedChar: '25fd' }, + { ariaLabel: 'black small square', unifiedChar: '25aa-fe0f' }, + { ariaLabel: 'white small square', unifiedChar: '25ab-fe0f' }, + { ariaLabel: 'large orange diamond', unifiedChar: '1f536' }, + { ariaLabel: 'large blue diamond', unifiedChar: '1f537' }, + { ariaLabel: 'small orange diamond', unifiedChar: '1f538' }, + { ariaLabel: 'small blue diamond', unifiedChar: '1f539' }, + { ariaLabel: 'small red triangle', unifiedChar: '1f53a' }, + { ariaLabel: 'small red triangle down', unifiedChar: '1f53b' }, + { ariaLabel: 'diamond shape with a dot inside', unifiedChar: '1f4a0' }, + { ariaLabel: 'radio button', unifiedChar: '1f518' }, + { ariaLabel: 'white square button', unifiedChar: '1f533' }, + { ariaLabel: 'black square button', unifiedChar: '1f532' }, + { ariaLabel: 'chequered flag', unifiedChar: '1f3c1' }, + { ariaLabel: 'triangular flag on post', unifiedChar: '1f6a9' }, + { ariaLabel: 'crossed flags', unifiedChar: '1f38c' }, + { ariaLabel: 'waving black flag', unifiedChar: '1f3f4' }, + { ariaLabel: 'white flag', unifiedChar: '1f3f3-fe0f' }, + { ariaLabel: 'rainbow flag', unifiedChar: '1f3f3-fe0f-200d-1f308' }, + { ariaLabel: 'transgender flag', unifiedChar: '1f3f3-fe0f-200d-26a7-fe0f' }, + { ariaLabel: 'pirate flag', unifiedChar: '1f3f4-200d-2620-fe0f' }, + { ariaLabel: 'ascension island flag', unifiedChar: '1f1e6-1f1e8' }, + { ariaLabel: 'andorra flag', unifiedChar: '1f1e6-1f1e9' }, + { ariaLabel: 'united arab emirates flag', unifiedChar: '1f1e6-1f1ea' }, + { ariaLabel: 'afghanistan flag', unifiedChar: '1f1e6-1f1eb' }, + { ariaLabel: 'antigua & barbuda flag', unifiedChar: '1f1e6-1f1ec' }, + { ariaLabel: 'anguilla flag', unifiedChar: '1f1e6-1f1ee' }, + { ariaLabel: 'albania flag', unifiedChar: '1f1e6-1f1f1' }, + { ariaLabel: 'armenia flag', unifiedChar: '1f1e6-1f1f2' }, + { ariaLabel: 'angola flag', unifiedChar: '1f1e6-1f1f4' }, + { ariaLabel: 'antarctica flag', unifiedChar: '1f1e6-1f1f6' }, + { ariaLabel: 'argentina flag', unifiedChar: '1f1e6-1f1f7' }, + { ariaLabel: 'american samoa flag', unifiedChar: '1f1e6-1f1f8' }, + { ariaLabel: 'austria flag', unifiedChar: '1f1e6-1f1f9' }, + { ariaLabel: 'australia flag', unifiedChar: '1f1e6-1f1fa' }, + { ariaLabel: 'aruba flag', unifiedChar: '1f1e6-1f1fc' }, + { ariaLabel: 'åland islands flag', unifiedChar: '1f1e6-1f1fd' }, + { ariaLabel: 'azerbaijan flag', unifiedChar: '1f1e6-1f1ff' }, + { ariaLabel: 'bosnia & herzegovina flag', unifiedChar: '1f1e7-1f1e6' }, + { ariaLabel: 'barbados flag', unifiedChar: '1f1e7-1f1e7' }, + { ariaLabel: 'bangladesh flag', unifiedChar: '1f1e7-1f1e9' }, + { ariaLabel: 'belgium flag', unifiedChar: '1f1e7-1f1ea' }, + { ariaLabel: 'burkina faso flag', unifiedChar: '1f1e7-1f1eb' }, + { ariaLabel: 'bulgaria flag', unifiedChar: '1f1e7-1f1ec' }, + { ariaLabel: 'bahrain flag', unifiedChar: '1f1e7-1f1ed' }, + { ariaLabel: 'burundi flag', unifiedChar: '1f1e7-1f1ee' }, + { ariaLabel: 'benin flag', unifiedChar: '1f1e7-1f1ef' }, + { ariaLabel: 'st. barthélemy flag', unifiedChar: '1f1e7-1f1f1' }, + { ariaLabel: 'bermuda flag', unifiedChar: '1f1e7-1f1f2' }, + { ariaLabel: 'brunei flag', unifiedChar: '1f1e7-1f1f3' }, + { ariaLabel: 'bolivia flag', unifiedChar: '1f1e7-1f1f4' }, + { ariaLabel: 'caribbean netherlands flag', unifiedChar: '1f1e7-1f1f6' }, + { ariaLabel: 'brazil flag', unifiedChar: '1f1e7-1f1f7' }, + { ariaLabel: 'bahamas flag', unifiedChar: '1f1e7-1f1f8' }, + { ariaLabel: 'bhutan flag', unifiedChar: '1f1e7-1f1f9' }, + { ariaLabel: 'bouvet island flag', unifiedChar: '1f1e7-1f1fb' }, + { ariaLabel: 'botswana flag', unifiedChar: '1f1e7-1f1fc' }, + { ariaLabel: 'belarus flag', unifiedChar: '1f1e7-1f1fe' }, + { ariaLabel: 'belize flag', unifiedChar: '1f1e7-1f1ff' }, + { ariaLabel: 'canada flag', unifiedChar: '1f1e8-1f1e6' }, + { ariaLabel: 'cocos (keeling) islands flag', unifiedChar: '1f1e8-1f1e8' }, + { ariaLabel: 'congo - kinshasa flag', unifiedChar: '1f1e8-1f1e9' }, + { ariaLabel: 'central african republic flag', unifiedChar: '1f1e8-1f1eb' }, + { ariaLabel: 'congo - brazzaville flag', unifiedChar: '1f1e8-1f1ec' }, + { ariaLabel: 'switzerland flag', unifiedChar: '1f1e8-1f1ed' }, + { ariaLabel: 'côte d’ivoire flag', unifiedChar: '1f1e8-1f1ee' }, + { ariaLabel: 'cook islands flag', unifiedChar: '1f1e8-1f1f0' }, + { ariaLabel: 'chile flag', unifiedChar: '1f1e8-1f1f1' }, + { ariaLabel: 'cameroon flag', unifiedChar: '1f1e8-1f1f2' }, + { ariaLabel: 'cn', unifiedChar: '1f1e8-1f1f3' }, + { ariaLabel: 'colombia flag', unifiedChar: '1f1e8-1f1f4' }, + { ariaLabel: 'clipperton island flag', unifiedChar: '1f1e8-1f1f5' }, + { ariaLabel: 'costa rica flag', unifiedChar: '1f1e8-1f1f7' }, + { ariaLabel: 'cuba flag', unifiedChar: '1f1e8-1f1fa' }, + { ariaLabel: 'cape verde flag', unifiedChar: '1f1e8-1f1fb' }, + { ariaLabel: 'curaçao flag', unifiedChar: '1f1e8-1f1fc' }, + { ariaLabel: 'christmas island flag', unifiedChar: '1f1e8-1f1fd' }, + { ariaLabel: 'cyprus flag', unifiedChar: '1f1e8-1f1fe' }, + { ariaLabel: 'czechia flag', unifiedChar: '1f1e8-1f1ff' }, + { ariaLabel: 'de', unifiedChar: '1f1e9-1f1ea' }, + { ariaLabel: 'diego garcia flag', unifiedChar: '1f1e9-1f1ec' }, + { ariaLabel: 'djibouti flag', unifiedChar: '1f1e9-1f1ef' }, + { ariaLabel: 'denmark flag', unifiedChar: '1f1e9-1f1f0' }, + { ariaLabel: 'dominica flag', unifiedChar: '1f1e9-1f1f2' }, + { ariaLabel: 'dominican republic flag', unifiedChar: '1f1e9-1f1f4' }, + { ariaLabel: 'algeria flag', unifiedChar: '1f1e9-1f1ff' }, + { ariaLabel: 'ceuta & melilla flag', unifiedChar: '1f1ea-1f1e6' }, + { ariaLabel: 'ecuador flag', unifiedChar: '1f1ea-1f1e8' }, + { ariaLabel: 'estonia flag', unifiedChar: '1f1ea-1f1ea' }, + { ariaLabel: 'egypt flag', unifiedChar: '1f1ea-1f1ec' }, + { ariaLabel: 'western sahara flag', unifiedChar: '1f1ea-1f1ed' }, + { ariaLabel: 'eritrea flag', unifiedChar: '1f1ea-1f1f7' }, + { ariaLabel: 'es', unifiedChar: '1f1ea-1f1f8' }, + { ariaLabel: 'ethiopia flag', unifiedChar: '1f1ea-1f1f9' }, + { ariaLabel: 'european union flag', unifiedChar: '1f1ea-1f1fa' }, + { ariaLabel: 'finland flag', unifiedChar: '1f1eb-1f1ee' }, + { ariaLabel: 'fiji flag', unifiedChar: '1f1eb-1f1ef' }, + { ariaLabel: 'falkland islands flag', unifiedChar: '1f1eb-1f1f0' }, + { ariaLabel: 'micronesia flag', unifiedChar: '1f1eb-1f1f2' }, + { ariaLabel: 'faroe islands flag', unifiedChar: '1f1eb-1f1f4' }, + { ariaLabel: 'fr', unifiedChar: '1f1eb-1f1f7' }, + { ariaLabel: 'gabon flag', unifiedChar: '1f1ec-1f1e6' }, + { ariaLabel: 'gb', unifiedChar: '1f1ec-1f1e7' }, + { ariaLabel: 'grenada flag', unifiedChar: '1f1ec-1f1e9' }, + { ariaLabel: 'georgia flag', unifiedChar: '1f1ec-1f1ea' }, + { ariaLabel: 'french guiana flag', unifiedChar: '1f1ec-1f1eb' }, + { ariaLabel: 'guernsey flag', unifiedChar: '1f1ec-1f1ec' }, + { ariaLabel: 'ghana flag', unifiedChar: '1f1ec-1f1ed' }, + { ariaLabel: 'gibraltar flag', unifiedChar: '1f1ec-1f1ee' }, + { ariaLabel: 'greenland flag', unifiedChar: '1f1ec-1f1f1' }, + { ariaLabel: 'gambia flag', unifiedChar: '1f1ec-1f1f2' }, + { ariaLabel: 'guinea flag', unifiedChar: '1f1ec-1f1f3' }, + { ariaLabel: 'guadeloupe flag', unifiedChar: '1f1ec-1f1f5' }, + { ariaLabel: 'equatorial guinea flag', unifiedChar: '1f1ec-1f1f6' }, + { ariaLabel: 'greece flag', unifiedChar: '1f1ec-1f1f7' }, + { + ariaLabel: 'south georgia & south sandwich islands flag', + unifiedChar: '1f1ec-1f1f8', + }, + { ariaLabel: 'guatemala flag', unifiedChar: '1f1ec-1f1f9' }, + { ariaLabel: 'guam flag', unifiedChar: '1f1ec-1f1fa' }, + { ariaLabel: 'guinea-bissau flag', unifiedChar: '1f1ec-1f1fc' }, + { ariaLabel: 'guyana flag', unifiedChar: '1f1ec-1f1fe' }, + { ariaLabel: 'hong kong sar china flag', unifiedChar: '1f1ed-1f1f0' }, + { ariaLabel: 'heard & mcdonald islands flag', unifiedChar: '1f1ed-1f1f2' }, + { ariaLabel: 'honduras flag', unifiedChar: '1f1ed-1f1f3' }, + { ariaLabel: 'croatia flag', unifiedChar: '1f1ed-1f1f7' }, + { ariaLabel: 'haiti flag', unifiedChar: '1f1ed-1f1f9' }, + { ariaLabel: 'hungary flag', unifiedChar: '1f1ed-1f1fa' }, + { ariaLabel: 'canary islands flag', unifiedChar: '1f1ee-1f1e8' }, + { ariaLabel: 'indonesia flag', unifiedChar: '1f1ee-1f1e9' }, + { ariaLabel: 'ireland flag', unifiedChar: '1f1ee-1f1ea' }, + { ariaLabel: 'israel flag', unifiedChar: '1f1ee-1f1f1' }, + { ariaLabel: 'isle of man flag', unifiedChar: '1f1ee-1f1f2' }, + { ariaLabel: 'india flag', unifiedChar: '1f1ee-1f1f3' }, + { + ariaLabel: 'british indian ocean territory flag', + unifiedChar: '1f1ee-1f1f4', + }, + { ariaLabel: 'iraq flag', unifiedChar: '1f1ee-1f1f6' }, + { ariaLabel: 'iran flag', unifiedChar: '1f1ee-1f1f7' }, + { ariaLabel: 'iceland flag', unifiedChar: '1f1ee-1f1f8' }, + { ariaLabel: 'it', unifiedChar: '1f1ee-1f1f9' }, + { ariaLabel: 'jersey flag', unifiedChar: '1f1ef-1f1ea' }, + { ariaLabel: 'jamaica flag', unifiedChar: '1f1ef-1f1f2' }, + { ariaLabel: 'jordan flag', unifiedChar: '1f1ef-1f1f4' }, + { ariaLabel: 'jp', unifiedChar: '1f1ef-1f1f5' }, + { ariaLabel: 'kenya flag', unifiedChar: '1f1f0-1f1ea' }, + { ariaLabel: 'kyrgyzstan flag', unifiedChar: '1f1f0-1f1ec' }, + { ariaLabel: 'cambodia flag', unifiedChar: '1f1f0-1f1ed' }, + { ariaLabel: 'kiribati flag', unifiedChar: '1f1f0-1f1ee' }, + { ariaLabel: 'comoros flag', unifiedChar: '1f1f0-1f1f2' }, + { ariaLabel: 'st. kitts & nevis flag', unifiedChar: '1f1f0-1f1f3' }, + { ariaLabel: 'north korea flag', unifiedChar: '1f1f0-1f1f5' }, + { ariaLabel: 'kr', unifiedChar: '1f1f0-1f1f7' }, + { ariaLabel: 'kuwait flag', unifiedChar: '1f1f0-1f1fc' }, + { ariaLabel: 'cayman islands flag', unifiedChar: '1f1f0-1f1fe' }, + { ariaLabel: 'kazakhstan flag', unifiedChar: '1f1f0-1f1ff' }, + { ariaLabel: 'laos flag', unifiedChar: '1f1f1-1f1e6' }, + { ariaLabel: 'lebanon flag', unifiedChar: '1f1f1-1f1e7' }, + { ariaLabel: 'st. lucia flag', unifiedChar: '1f1f1-1f1e8' }, + { ariaLabel: 'liechtenstein flag', unifiedChar: '1f1f1-1f1ee' }, + { ariaLabel: 'sri lanka flag', unifiedChar: '1f1f1-1f1f0' }, + { ariaLabel: 'liberia flag', unifiedChar: '1f1f1-1f1f7' }, + { ariaLabel: 'lesotho flag', unifiedChar: '1f1f1-1f1f8' }, + { ariaLabel: 'lithuania flag', unifiedChar: '1f1f1-1f1f9' }, + { ariaLabel: 'luxembourg flag', unifiedChar: '1f1f1-1f1fa' }, + { ariaLabel: 'latvia flag', unifiedChar: '1f1f1-1f1fb' }, + { ariaLabel: 'libya flag', unifiedChar: '1f1f1-1f1fe' }, + { ariaLabel: 'morocco flag', unifiedChar: '1f1f2-1f1e6' }, + { ariaLabel: 'monaco flag', unifiedChar: '1f1f2-1f1e8' }, + { ariaLabel: 'moldova flag', unifiedChar: '1f1f2-1f1e9' }, + { ariaLabel: 'montenegro flag', unifiedChar: '1f1f2-1f1ea' }, + { ariaLabel: 'st. martin flag', unifiedChar: '1f1f2-1f1eb' }, + { ariaLabel: 'madagascar flag', unifiedChar: '1f1f2-1f1ec' }, + { ariaLabel: 'marshall islands flag', unifiedChar: '1f1f2-1f1ed' }, + { ariaLabel: 'north macedonia flag', unifiedChar: '1f1f2-1f1f0' }, + { ariaLabel: 'mali flag', unifiedChar: '1f1f2-1f1f1' }, + { ariaLabel: 'myanmar (burma) flag', unifiedChar: '1f1f2-1f1f2' }, + { ariaLabel: 'mongolia flag', unifiedChar: '1f1f2-1f1f3' }, + { ariaLabel: 'macao sar china flag', unifiedChar: '1f1f2-1f1f4' }, + { ariaLabel: 'northern mariana islands flag', unifiedChar: '1f1f2-1f1f5' }, + { ariaLabel: 'martinique flag', unifiedChar: '1f1f2-1f1f6' }, + { ariaLabel: 'mauritania flag', unifiedChar: '1f1f2-1f1f7' }, + { ariaLabel: 'montserrat flag', unifiedChar: '1f1f2-1f1f8' }, + { ariaLabel: 'malta flag', unifiedChar: '1f1f2-1f1f9' }, + { ariaLabel: 'mauritius flag', unifiedChar: '1f1f2-1f1fa' }, + { ariaLabel: 'maldives flag', unifiedChar: '1f1f2-1f1fb' }, + { ariaLabel: 'malawi flag', unifiedChar: '1f1f2-1f1fc' }, + { ariaLabel: 'mexico flag', unifiedChar: '1f1f2-1f1fd' }, + { ariaLabel: 'malaysia flag', unifiedChar: '1f1f2-1f1fe' }, + { ariaLabel: 'mozambique flag', unifiedChar: '1f1f2-1f1ff' }, + { ariaLabel: 'namibia flag', unifiedChar: '1f1f3-1f1e6' }, + { ariaLabel: 'new caledonia flag', unifiedChar: '1f1f3-1f1e8' }, + { ariaLabel: 'niger flag', unifiedChar: '1f1f3-1f1ea' }, + { ariaLabel: 'norfolk island flag', unifiedChar: '1f1f3-1f1eb' }, + { ariaLabel: 'nigeria flag', unifiedChar: '1f1f3-1f1ec' }, + { ariaLabel: 'nicaragua flag', unifiedChar: '1f1f3-1f1ee' }, + { ariaLabel: 'netherlands flag', unifiedChar: '1f1f3-1f1f1' }, + { ariaLabel: 'norway flag', unifiedChar: '1f1f3-1f1f4' }, + { ariaLabel: 'nepal flag', unifiedChar: '1f1f3-1f1f5' }, + { ariaLabel: 'nauru flag', unifiedChar: '1f1f3-1f1f7' }, + { ariaLabel: 'niue flag', unifiedChar: '1f1f3-1f1fa' }, + { ariaLabel: 'new zealand flag', unifiedChar: '1f1f3-1f1ff' }, + { ariaLabel: 'oman flag', unifiedChar: '1f1f4-1f1f2' }, + { ariaLabel: 'panama flag', unifiedChar: '1f1f5-1f1e6' }, + { ariaLabel: 'peru flag', unifiedChar: '1f1f5-1f1ea' }, + { ariaLabel: 'french polynesia flag', unifiedChar: '1f1f5-1f1eb' }, + { ariaLabel: 'papua new guinea flag', unifiedChar: '1f1f5-1f1ec' }, + { ariaLabel: 'philippines flag', unifiedChar: '1f1f5-1f1ed' }, + { ariaLabel: 'pakistan flag', unifiedChar: '1f1f5-1f1f0' }, + { ariaLabel: 'poland flag', unifiedChar: '1f1f5-1f1f1' }, + { ariaLabel: 'st. pierre & miquelon flag', unifiedChar: '1f1f5-1f1f2' }, + { ariaLabel: 'pitcairn islands flag', unifiedChar: '1f1f5-1f1f3' }, + { ariaLabel: 'puerto rico flag', unifiedChar: '1f1f5-1f1f7' }, + { ariaLabel: 'palestinian territories flag', unifiedChar: '1f1f5-1f1f8' }, + { ariaLabel: 'portugal flag', unifiedChar: '1f1f5-1f1f9' }, + { ariaLabel: 'palau flag', unifiedChar: '1f1f5-1f1fc' }, + { ariaLabel: 'paraguay flag', unifiedChar: '1f1f5-1f1fe' }, + { ariaLabel: 'qatar flag', unifiedChar: '1f1f6-1f1e6' }, + { ariaLabel: 'réunion flag', unifiedChar: '1f1f7-1f1ea' }, + { ariaLabel: 'romania flag', unifiedChar: '1f1f7-1f1f4' }, + { ariaLabel: 'serbia flag', unifiedChar: '1f1f7-1f1f8' }, + { ariaLabel: 'ru', unifiedChar: '1f1f7-1f1fa' }, + { ariaLabel: 'rwanda flag', unifiedChar: '1f1f7-1f1fc' }, + { ariaLabel: 'saudi arabia flag', unifiedChar: '1f1f8-1f1e6' }, + { ariaLabel: 'solomon islands flag', unifiedChar: '1f1f8-1f1e7' }, + { ariaLabel: 'seychelles flag', unifiedChar: '1f1f8-1f1e8' }, + { ariaLabel: 'sudan flag', unifiedChar: '1f1f8-1f1e9' }, + { ariaLabel: 'sweden flag', unifiedChar: '1f1f8-1f1ea' }, + { ariaLabel: 'singapore flag', unifiedChar: '1f1f8-1f1ec' }, + { ariaLabel: 'st. helena flag', unifiedChar: '1f1f8-1f1ed' }, + { ariaLabel: 'slovenia flag', unifiedChar: '1f1f8-1f1ee' }, + { ariaLabel: 'svalbard & jan mayen flag', unifiedChar: '1f1f8-1f1ef' }, + { ariaLabel: 'slovakia flag', unifiedChar: '1f1f8-1f1f0' }, + { ariaLabel: 'sierra leone flag', unifiedChar: '1f1f8-1f1f1' }, + { ariaLabel: 'san marino flag', unifiedChar: '1f1f8-1f1f2' }, + { ariaLabel: 'senegal flag', unifiedChar: '1f1f8-1f1f3' }, + { ariaLabel: 'somalia flag', unifiedChar: '1f1f8-1f1f4' }, + { ariaLabel: 'suriname flag', unifiedChar: '1f1f8-1f1f7' }, + { ariaLabel: 'south sudan flag', unifiedChar: '1f1f8-1f1f8' }, + { ariaLabel: 'são tomé & príncipe flag', unifiedChar: '1f1f8-1f1f9' }, + { ariaLabel: 'el salvador flag', unifiedChar: '1f1f8-1f1fb' }, + { ariaLabel: 'sint maarten flag', unifiedChar: '1f1f8-1f1fd' }, + { ariaLabel: 'syria flag', unifiedChar: '1f1f8-1f1fe' }, + { ariaLabel: 'eswatini flag', unifiedChar: '1f1f8-1f1ff' }, + { ariaLabel: 'tristan da cunha flag', unifiedChar: '1f1f9-1f1e6' }, + { ariaLabel: 'turks & caicos islands flag', unifiedChar: '1f1f9-1f1e8' }, + { ariaLabel: 'chad flag', unifiedChar: '1f1f9-1f1e9' }, + { + ariaLabel: 'french southern territories flag', + unifiedChar: '1f1f9-1f1eb', + }, + { ariaLabel: 'togo flag', unifiedChar: '1f1f9-1f1ec' }, + { ariaLabel: 'thailand flag', unifiedChar: '1f1f9-1f1ed' }, + { ariaLabel: 'tajikistan flag', unifiedChar: '1f1f9-1f1ef' }, + { ariaLabel: 'tokelau flag', unifiedChar: '1f1f9-1f1f0' }, + { ariaLabel: 'timor-leste flag', unifiedChar: '1f1f9-1f1f1' }, + { ariaLabel: 'turkmenistan flag', unifiedChar: '1f1f9-1f1f2' }, + { ariaLabel: 'tunisia flag', unifiedChar: '1f1f9-1f1f3' }, + { ariaLabel: 'tonga flag', unifiedChar: '1f1f9-1f1f4' }, + { ariaLabel: 'turkey flag', unifiedChar: '1f1f9-1f1f7' }, + { ariaLabel: 'trinidad & tobago flag', unifiedChar: '1f1f9-1f1f9' }, + { ariaLabel: 'tuvalu flag', unifiedChar: '1f1f9-1f1fb' }, + { ariaLabel: 'taiwan flag', unifiedChar: '1f1f9-1f1fc' }, + { ariaLabel: 'tanzania flag', unifiedChar: '1f1f9-1f1ff' }, + { ariaLabel: 'ukraine flag', unifiedChar: '1f1fa-1f1e6' }, + { ariaLabel: 'uganda flag', unifiedChar: '1f1fa-1f1ec' }, + { ariaLabel: 'u.s. outlying islands flag', unifiedChar: '1f1fa-1f1f2' }, + { ariaLabel: 'united nations flag', unifiedChar: '1f1fa-1f1f3' }, + { ariaLabel: 'us', unifiedChar: '1f1fa-1f1f8' }, + { ariaLabel: 'uruguay flag', unifiedChar: '1f1fa-1f1fe' }, + { ariaLabel: 'uzbekistan flag', unifiedChar: '1f1fa-1f1ff' }, + { ariaLabel: 'vatican city flag', unifiedChar: '1f1fb-1f1e6' }, + { ariaLabel: 'st. vincent & grenadines flag', unifiedChar: '1f1fb-1f1e8' }, + { ariaLabel: 'venezuela flag', unifiedChar: '1f1fb-1f1ea' }, + { ariaLabel: 'british virgin islands flag', unifiedChar: '1f1fb-1f1ec' }, + { ariaLabel: 'u.s. virgin islands flag', unifiedChar: '1f1fb-1f1ee' }, + { ariaLabel: 'vietnam flag', unifiedChar: '1f1fb-1f1f3' }, + { ariaLabel: 'vanuatu flag', unifiedChar: '1f1fb-1f1fa' }, + { ariaLabel: 'wallis & futuna flag', unifiedChar: '1f1fc-1f1eb' }, + { ariaLabel: 'samoa flag', unifiedChar: '1f1fc-1f1f8' }, + { ariaLabel: 'kosovo flag', unifiedChar: '1f1fd-1f1f0' }, + { ariaLabel: 'yemen flag', unifiedChar: '1f1fe-1f1ea' }, + { ariaLabel: 'mayotte flag', unifiedChar: '1f1fe-1f1f9' }, + { ariaLabel: 'south africa flag', unifiedChar: '1f1ff-1f1e6' }, + { ariaLabel: 'zambia flag', unifiedChar: '1f1ff-1f1f2' }, + { ariaLabel: 'zimbabwe flag', unifiedChar: '1f1ff-1f1fc' }, + { + ariaLabel: 'england flag', + unifiedChar: '1f3f4-e0067-e0062-e0065-e006e-e0067-e007f', + }, + { + ariaLabel: 'scotland flag', + unifiedChar: '1f3f4-e0067-e0062-e0073-e0063-e0074-e007f', + }, + { + ariaLabel: 'wales flag', + unifiedChar: '1f3f4-e0067-e0062-e0077-e006c-e0073-e007f', + }, +]; diff --git a/src/components/Chat/FullChat/FullChat.module.css b/src/components/Chat/FullChat/FullChat.module.css index 39852e992e..eab30836c6 100644 --- a/src/components/Chat/FullChat/FullChat.module.css +++ b/src/components/Chat/FullChat/FullChat.module.css @@ -150,10 +150,10 @@ transition: var(--transition); } -.other_room_icon{ - margin-right: .5rem; - margin-left: .5rem; - opacity: .5; +.other_room_icon { + margin-right: 0.5rem; + margin-left: 0.5rem; + opacity: 0.5; } /* .chat_scrollable{ @@ -244,14 +244,15 @@ } } -@keyframes yellowFlash{ - 0% , 100%{ +@keyframes yellowFlash { + 0%, + 100% { box-shadow: 0px 0px 28px #f3bc4144; border: 1px solid #f3bc4188; color: #f3bc41cc; background: transparent; } - 50%{ + 50% { box-shadow: 0px 0px 28px #f3bc4188; border: 1px solid #f3bc41aa; color: white; @@ -259,11 +260,11 @@ } } -.verify_button{ - transition: all .2s ease-in-out; +.verify_button { + transition: all 0.2s ease-in-out; display: block; text-align: center; - background: rgba(0,0,0, .2); + background: rgba(0, 0, 0, 0.2); border-radius: 0.4rem; position: absolute; top: 1.1rem; @@ -276,52 +277,45 @@ z-index: 3; } - -.verify_button:not(.verified) svg{ +.verify_button:not(.verified) svg { color: #f3bc41cc; } -.verify_button:not(.verified):hover{ +.verify_button:not(.verified):hover { box-shadow: 0px 0px 28px #f3bc4188; border: 1px solid #f3bc41aa; color: white; background: #f3bc41cc; } - - -.verify_button.flashed{ - animation: yellowFlash .5s 3 ease-in-out; +.verify_button.flashed { + animation: yellowFlash 0.5s 3 ease-in-out; } - - -.verify_button.verified{ +.verify_button.verified { border-color: rgba(21, 190, 111, 0.75); cursor: default; box-shadow: 0px 0px 28px rgba(21, 190, 111, 0.35); color: var(--positive); } - -.verify_button_icon{ - margin: 0 .2rem; +.verify_button_icon { + margin: 0 0.2rem; } -.verify_button_mod_icon{ - margin-top: .1rem; +.verify_button_mod_icon { + margin-top: 0.1rem; } -@keyframes emojiPickerAnim{ - 0%{ +@keyframes emojiPickerAnim { + 0% { transform: scale(0); } - 100%{ + 100% { transform: scale(1); } } - -@media only screen and (max-width: 600px){ +@media only screen and (max-width: 600px) { .main_container { padding: 0; position: relative; @@ -332,65 +326,57 @@ padding: 0; } - - -.channel_dropdown_items_containers, -.active_channel_dropdown_items_containers { - background: #242f3f; - z-index: 10; - margin-top: .6rem; -} + .channel_dropdown_items_containers, + .active_channel_dropdown_items_containers { + background: #242f3f; + z-index: 10; + margin-top: 0.6rem; + } - .reaction_picker_close{ + .reaction_picker_close { display: block; font-size: 1rem; color: white; - padding: .5rem; + padding: 0.5rem; margin-right: 1rem; float: right; cursor: pointer; padding-bottom: 0; - opacity: .5; + opacity: 0.5; cursor: pointer; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; } - - .reaction_picker_close:hover{ + + .reaction_picker_close:hover { opacity: 1; } -.reaction_picker_wrapper{ - position: fixed; - bottom: 7rem; - left: 5%; - width: 90%; - animation: emojiPickerAnim .2s ease-in-out forwards; - - box-shadow: 0px 0px 40px #7371fc55; - /* border: 1px solid #7371fcaa; */ - overflow: hidden; - border-radius: .5rem; - z-index: 99; - -} - + .reaction_picker_wrapper { + position: fixed; + bottom: 7rem; + left: 5%; + width: 90%; + animation: emojiPickerAnim 0.2s ease-in-out forwards; -.reaction_picker_wrapper ul li button img{ - margin: 0.4rem !important; - height: 2rem !important; - width: 2rem !important; -} + box-shadow: 0px 0px 40px #7371fc55; + /* border: 1px solid #7371fcaa; */ + overflow: hidden; + border-radius: 0.5rem; + z-index: 99; + } + .reaction_picker_wrapper ul li button img { + margin: 0.4rem !important; + height: 2rem !important; + width: 2rem !important; + } } -.dropdown_icon{ +.dropdown_icon { display: inline-block; - margin-left: .5rem; - opacity: .5; + margin-left: 0.5rem; + opacity: 0.5; } -.dropdown_icon svg{ +.dropdown_icon svg { vertical-align: middle; } - - - diff --git a/src/components/Chat/MessagePanel/InputBox/MentionAutoComplete/MentionAutoComplete.module.css b/src/components/Chat/MessagePanel/InputBox/MentionAutoComplete/MentionAutoComplete.module.css index b010b30a08..b71a231195 100644 --- a/src/components/Chat/MessagePanel/InputBox/MentionAutoComplete/MentionAutoComplete.module.css +++ b/src/components/Chat/MessagePanel/InputBox/MentionAutoComplete/MentionAutoComplete.module.css @@ -1,6 +1,6 @@ -.ment_autocomp_wrapper{ - transform: all .2s ease-in-out; - font-size: .72rem; +.ment_autocomp_wrapper { + transform: all 0.2s ease-in-out; + font-size: 0.72rem; background: rgb(36 47 63); background: transparent; width: 100%; @@ -9,73 +9,70 @@ left: 50%; transform: translateX(-50%); text-align: center; - padding: 0 .3rem; - border-radius: .2rem .2rem 0 0; + padding: 0 0.3rem; + border-radius: 0.2rem 0.2rem 0 0; overflow: hidden; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; max-height: 0vh; opacity: 0; bottom: 2rem; - background: linear-gradient(0deg, rgb(5 10 18) 0%, rgba(0,0,0,0) 100%); - padding-bottom: .5rem; + background: linear-gradient(0deg, rgb(5 10 18) 0%, rgba(0, 0, 0, 0) 100%); + padding-bottom: 0.5rem; } -.ment_autocomp_wrapper_active{ +.ment_autocomp_wrapper_active { max-height: 360px; overflow-y: auto; opacity: 1; scrollbar-width: thin; - scrollbar-color: rgba(255,255,255,.1) transparent; + scrollbar-color: rgba(255, 255, 255, 0.1) transparent; scrollbar-3dlight-color: transparent; } -.ment_autocomp_user_wrapper{ - opacity: 1; - transition: all .2s ease-in-out; - background: rgb(36 47 63); - border-radius: .2rem; - width: 50%; - margin: .2rem auto; +.ment_autocomp_user_wrapper { + opacity: 1; + transition: all 0.2s ease-in-out; + background: rgb(36 47 63); + border-radius: 0.2rem; + width: 50%; + margin: 0.2rem auto; } -.ment_autocomp_user_wrapper:hover{ +.ment_autocomp_user_wrapper:hover { background: rgb(56 77 106); } -.ment_autocomp_user_selected{ - opacity: 1; - background: color-mix(in srgb, var(--accent1) 70%, var(--dark1)); - box-shadow: 0px 0px 2px 0px color-mix(in srgb, var(--accent1) 52%, transparent); - transform: scale(1.1); - font-weight: bold; - /* background: rgb(56 77 106); */ - +.ment_autocomp_user_selected { + opacity: 1; + background: color-mix(in srgb, var(--accent1) 70%, var(--dark1)); + box-shadow: 0px 0px 2px 0px + color-mix(in srgb, var(--accent1) 52%, transparent); + transform: scale(1.1); + font-weight: bold; + /* background: rgb(56 77 106); */ } -.ment_autocomp_input{ - - background:transparent; +.ment_autocomp_input { + background: transparent; color: white; border: none; - background-color: rgba(0,0,0, .2); + background-color: rgba(0, 0, 0, 0.2); outline: none; width: 100%; margin: 0 auto; - padding-left: .4rem; + padding-left: 0.4rem; } -.ment_autocomp_topbar{ +.ment_autocomp_topbar { display: none; } - -@media only screen and (max-width: 600px){ - - .ment_autocomp_wrapper{ +@media only screen and (max-width: 600px) { + .ment_autocomp_wrapper { bottom: 3.2rem; max-height: 20vh; overflow-y: auto; backdrop-filter: blur(10px); - box-shadow: inset 0px 0px 50px 0px rgba(0,0,0 .4); + box-shadow: inset 0px 0px 50px 0px rgba(0, 0, 0 0.4); border-radius: 0; position: fixed; @@ -83,47 +80,43 @@ bottom: 8.7rem; z-index: 99999; } - - .ment_autocomp_wrapper_active{ - + + .ment_autocomp_wrapper_active { padding: 1rem 0; max-height: 100vh; } - .ment_autocomp_topbar{ + .ment_autocomp_topbar { display: none; width: 100vw; - + position: fixed; top: 0; left: 0; backdrop-filter: blur(10px); - background-color: rgba(0,0,0 .4); + background-color: rgba(0, 0, 0 0.4); height: 3rem; z-index: 109999; - + box-shadow: 0px 10px 70px 0px #00000054; } - .ment_autocomp_topbar_active{ + .ment_autocomp_topbar_active { display: block; } - - .ment_autocomp_close_btn{ + .ment_autocomp_close_btn { position: fixed; z-index: 119999; right: 2rem; top: 1rem; font-size: 1.2rem; } - -.ment_autocomp_user_wrapper{ - width: 90%; - font-size: .9rem; - padding: .5rem 0; - margin: .4rem auto; + .ment_autocomp_user_wrapper { + width: 90%; + font-size: 0.9rem; + padding: 0.5rem 0; + margin: 0.4rem auto; + } } - -} \ No newline at end of file diff --git a/src/components/Chat/MessagePanel/InputBox/MessageInput.module.css b/src/components/Chat/MessagePanel/InputBox/MessageInput.module.css index d597b031d4..fcde6cf307 100644 --- a/src/components/Chat/MessagePanel/InputBox/MessageInput.module.css +++ b/src/components/Chat/MessagePanel/InputBox/MessageInput.module.css @@ -17,7 +17,7 @@ position: relative; bottom: 0; } -.message_input_field{ +.message_input_field { font-family: 'Lexend Deca'; font-style: normal; font-weight: 300; @@ -34,7 +34,7 @@ flex-grow: 1; } -.message_input_field_limit_exceeded{ +.message_input_field_limit_exceeded { font-family: 'Lexend Deca'; font-style: normal; font-weight: 300; @@ -133,7 +133,6 @@ cursor: not-allowed; } - .emojiPicker { width: 97%; padding: 0px 8px; @@ -194,7 +193,7 @@ cursor: not-allowed; } -.not_LoggedIn_svgButton:hover{ +.not_LoggedIn_svgButton:hover { fill: var(--text2); } @@ -285,36 +284,36 @@ flex-grow: 1; } - -.disabled_text{ +.disabled_text { text-align: center; - font-size: .72rem; + font-size: 0.72rem; font-weight: 600; color: var(--accent1); opacity: 1; /* animation: opaToggle 2s ease-in-out infinite; */ - } -.not_LoggedIn_send_message_button svg, .not_LoggedIn_svgButton, .not_LoggedIn_send_message_button svg path, .not_LoggedIn_svgButton path{ +.not_LoggedIn_send_message_button svg, +.not_LoggedIn_svgButton, +.not_LoggedIn_send_message_button svg path, +.not_LoggedIn_svgButton path { cursor: not-allowed !important; } -@keyframes opaToggle{ +@keyframes opaToggle { from { opacity: 1; } - to{ + to { opacity: 0; } - } -section[class^="emoji-scroll-wrapper"]{ +section[class^='emoji-scroll-wrapper'] { scroll-behavior: auto; } -.hidden_picker_wrapper{ +.hidden_picker_wrapper { position: fixed; top: 3rem; left: 50%; @@ -322,99 +321,97 @@ section[class^="emoji-scroll-wrapper"]{ z-index: -1; } -.custom_emoji_pool{ +.custom_emoji_pool { display: none; } -.custom_emoji_picker_wrapper{ - bottom: -5rem; +.custom_emoji_picker_wrapper { + bottom: -5rem; position: absolute; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; max-width: 18rem; /* display: flex; */ overflow: hidden; box-shadow: 0px 0px 12px color-mix(in srgb, var(--accent1) 20%, transparent); background-color: color-mix(in srgb, var(--accent1) 20%, transparent); backdrop-filter: blur(5px); - border-radius: .2rem; - padding: .5rem 0; + border-radius: 0.2rem; + padding: 0.5rem 0; white-space: nowrap; } -.custom_emoji_picker_wrapper.active{ +.custom_emoji_picker_wrapper.active { bottom: 3rem; } -.custom_emoji_picker_wrapper button, .custom_emoji_picker_wrapper span{ - transition: all .2s ease-in-out; +.custom_emoji_picker_wrapper button, +.custom_emoji_picker_wrapper span { + transition: all 0.2s ease-in-out; /* flex: 1 1; */ display: inline-block; background: transparent; border: none; - margin-left: .2rem; - border-radius: .4rem; + margin-left: 0.2rem; + border-radius: 0.4rem; cursor: pointer; width: 2rem; } -.custom_emoji_picker_wrapper button.focused, .custom_emoji_picker_wrapper span.focused{ - +.custom_emoji_picker_wrapper button.focused, +.custom_emoji_picker_wrapper span.focused { background-color: color-mix(in srgb, var(--accent1) 70%, transparent); transform: scale(1.3); } -.custom_emoji_picker_wrapper button img, .custom_emoji_picker_wrapper span img{ +.custom_emoji_picker_wrapper button img, +.custom_emoji_picker_wrapper span img { max-height: 100%; max-width: 100%; - padding: .2rem; + padding: 0.2rem; vertical-align: middle; } -.emoji_node{ - flex: 1 1; - padding: .5rem; +.emoji_node { + flex: 1 1; + padding: 0.5rem; } - - - - - - - -@media only screen and (max-width: 600px){ - - .input, .input_not_allowed { +@media only screen and (max-width: 600px) { + .input, + .input_not_allowed { width: 100vw; - border-radius: 0; - bottom: 0; - padding: 1.6rem; - margin-bottom: 0; + border-radius: 0; + bottom: 0; + padding: 1.6rem; + margin-bottom: 0; } - .send_message_button, .not_LoggedIn_send_message_button{ - box-shadow: 0px 0px 20px 0px rgba(115,113,252,1); + .send_message_button, + .not_LoggedIn_send_message_button { + box-shadow: 0px 0px 20px 0px rgba(115, 113, 252, 1); background: var(--accent1); - padding: .2rem; - border-radius: .4rem; - margin-left: .5rem; + padding: 0.2rem; + border-radius: 0.4rem; + margin-left: 0.5rem; margin-top: -0.2rem; } - - .not_LoggedIn_send_message_button{ + + .not_LoggedIn_send_message_button { box-shadow: none; background: #4a6081; cursor: not-allowed !important; } - .send_message_button svg, .not_LoggedIn_send_message_button svg{ + .send_message_button svg, + .not_LoggedIn_send_message_button svg { width: 1.4rem; height: 1.4rem; display: block; margin: 0 auto; } - - .send_message_button svg path, .not_LoggedIn_send_message_button svg path{ + + .send_message_button svg path, + .not_LoggedIn_send_message_button svg path { stroke: white; stroke-opacity: 1; cursor: not-allowed !important; @@ -422,9 +419,9 @@ section[class^="emoji-scroll-wrapper"]{ .send_message_button .svgButton { color: white !important; } - .not_LoggedIn_svgButton, .svgButton{ + .not_LoggedIn_svgButton, + .svgButton { width: 1.2rem; height: 1.2rem; } - -} \ No newline at end of file +} diff --git a/src/components/Chat/MessagePanel/InputBox/MessageInput.tsx b/src/components/Chat/MessagePanel/InputBox/MessageInput.tsx index eb33545a09..0d4c38bf38 100644 --- a/src/components/Chat/MessagePanel/InputBox/MessageInput.tsx +++ b/src/components/Chat/MessagePanel/InputBox/MessageInput.tsx @@ -73,8 +73,6 @@ interface MessageInputProps { userMap?: Map; } - - export default function MessageInput(props: MessageInputProps) { const inputRef = useRef(null); const [cursorPosition, setCursorPosition] = useState(null); @@ -578,13 +576,15 @@ export default function MessageInput(props: MessageInputProps) { const needToShowCustomEmojiPanel = filteredEmojis.length > 0 && message.includes(':'); setShowCustomEmojiPanel(needToShowCustomEmojiPanel); - domDebug('filteredEmojis', filteredEmojis.length) + domDebug('filteredEmojis', filteredEmojis.length); }, [filteredEmojis]); useEffect(() => { if (message.includes(':')) { setTokenForEmojiSearch( - message.split(':')[message.split(':').length - 1].toLocaleLowerCase('en-US'), + message + .split(':') + [message.split(':').length - 1].toLocaleLowerCase('en-US'), ); } else { setTokenForEmojiSearch(''); @@ -597,9 +597,7 @@ export default function MessageInput(props: MessageInputProps) { }, [tokenForEmojiSearch]); useEffect(() => { - const emojis = document.querySelectorAll( - '#chatCustomEmojiPicker span', - ); + const emojis = document.querySelectorAll('#chatCustomEmojiPicker span'); emojis.forEach((emoji, index) => { if (index == customEmojiPickerSelectedIndex) { emoji.classList.add(styles.focused); @@ -634,16 +632,12 @@ export default function MessageInput(props: MessageInputProps) { ); }, [customEmojiPickerSelectedIndex, filteredEmojis]); - const resetCustomEmojiPickerStates = () => { setCustomEmojiPickerSelectedIndex(0); setFilteredEmojis([]); }; - - const filterEmojisForCustomPicker = (word: string) => { - const filteredElements: JSX.Element[] = []; let searchToken = word.split(' ')[0]; @@ -656,19 +650,25 @@ export default function MessageInput(props: MessageInputProps) { return; } - let foundEmojis = 0; emojiMeta.forEach((meta) => { - if (meta.ariaLabel.includes(searchToken) && foundEmojis < customEmojiPanelLimit) { + if ( + meta.ariaLabel.includes(searchToken) && + foundEmojis < customEmojiPanelLimit + ) { foundEmojis++; - const emojiEl = getSingleEmoji(meta.unifiedChar, - () => { const emoji = getEmojiFromUnifiedCode(meta.unifiedChar); - handleEmojiClick(emoji, true)}, -1); + const emojiEl = getSingleEmoji( + meta.unifiedChar, + () => { + const emoji = getEmojiFromUnifiedCode(meta.unifiedChar); + handleEmojiClick(emoji, true); + }, + -1, + ); filteredElements.push(emojiEl); } - }) - + }); domDebug('filtered emojis', filteredElements.length); setFilteredEmojis([...filteredElements]); @@ -692,10 +692,14 @@ export default function MessageInput(props: MessageInputProps) { } else if (e.key === 'Enter' || e.key === 'Tab') { if (filteredEmojis.length > 0) { const emoji = filteredEmojis[customEmojiPickerSelectedIndex]; - if (emoji && emoji.props && emoji.props.children && emoji.props.children.props) { + if ( + emoji && + emoji.props && + emoji.props.children && + emoji.props.children.props + ) { const unifiedCode = emoji.props.children.props.unified; - const emojiCharacter = - getEmojiFromUnifiedCode(unifiedCode); + const emojiCharacter = getEmojiFromUnifiedCode(unifiedCode); handleEmojiClick(emojiCharacter, true); resetCustomEmojiPickerStates(); } @@ -891,7 +895,9 @@ export default function MessageInput(props: MessageInputProps) { ref={customEmojiPickerRef} id='chatCustomEmojiPicker' className={`${styles.custom_emoji_picker_wrapper} ${showCustomEmojiPanel ? styles.active : ' '}`} - >{...filteredEmojis} + > + {...filteredEmojis} + {props.isChatOpen && ALLOW_MENTIONS && mentionAutoComplete} diff --git a/src/components/Chat/MessagePanel/Options/Options.module.css b/src/components/Chat/MessagePanel/Options/Options.module.css index a094dfe2fa..6cb8147a95 100644 --- a/src/components/Chat/MessagePanel/Options/Options.module.css +++ b/src/components/Chat/MessagePanel/Options/Options.module.css @@ -1,4 +1,3 @@ - .dropdown_item { border-radius: 4px; padding-left: 4px; @@ -15,7 +14,7 @@ line-height: var(--body-lh); position: absolute; top: 0rem; - right: .5rem; + right: 0.5rem; top: 50%; transform: translateY(-50%); @@ -59,28 +58,27 @@ color: var(--text1); } -.hover_style{ - border: 1px solid rgba(255,255,255, .2); - border-radius: .4rem; +.hover_style { + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 0.4rem; display: block; text-align: center; - padding: .1rem .1rem; + padding: 0.1rem 0.1rem; height: 1.4rem; background: var(--accent1); background: var(--dark3); - - transition: all .2s ease-in-out; -} + transition: all 0.2s ease-in-out; +} -.hover_style svg{ +.hover_style svg { fill: white; } .hover_style:hover { - box-shadow: 0px 0px 20px 0px var(--accent1); - background: var(--accent1); + box-shadow: 0px 0px 20px 0px var(--accent1); + background: var(--accent1); animation: shine 1.5s infinite; } @@ -92,35 +90,33 @@ line-height: 10px; } -@keyframes riseWidth{ - 0%{ +@keyframes riseWidth { + 0% { max-width: 0rem; opacity: 0; } - 100%{ + 100% { max-width: 100rem; opacity: 1; } - } -.sub_options_node_active, .sub_options_node_active svg { +.sub_options_node_active, +.sub_options_node_active svg { max-width: 100rem; width: auto; opacity: 1; } -@media only screen and (max-width: 600px){ +@media only screen and (max-width: 600px) { .dropdown_item { - gap: .6rem; + gap: 0.6rem; } - -.hover_style{ - padding: .25rem; - margin: .2rem; - border-radius: 4rem; - transform: scale(1.2); - + .hover_style { + padding: 0.25rem; + margin: 0.2rem; + border-radius: 4rem; + transform: scale(1.2); + } } -} \ No newline at end of file diff --git a/src/components/Chat/MessagePanel/ReplyMessage/ReplyMessage.module.css b/src/components/Chat/MessagePanel/ReplyMessage/ReplyMessage.module.css index b9a836522c..33bb277285 100644 --- a/src/components/Chat/MessagePanel/ReplyMessage/ReplyMessage.module.css +++ b/src/components/Chat/MessagePanel/ReplyMessage/ReplyMessage.module.css @@ -1,108 +1,103 @@ - .deleted_msg_text { color: rgba(235, 235, 255, 0.4); display: block; /* color: var(--other-red); */ - opacity: .8; + opacity: 0.8; } -.shown_name{ +.shown_name { display: inline-block; - margin-left: .5rem; + margin-left: 0.5rem; } -.avatar_jazzicons{ +.avatar_jazzicons { display: inline-block; } -.name{ +.name { color: var(--accent2); } -.current_user_name{ +.current_user_name { color: var(--accent1); } -.message_tooltip_wrapper{ +.message_tooltip_wrapper { background: #12171f; - padding: .5rem 1rem; - box-shadow: 0px 0px 20px 0px rgba(115,113,252,.2); - border-radius: .2rem; + padding: 0.5rem 1rem; + box-shadow: 0px 0px 20px 0px rgba(115, 113, 252, 0.2); + border-radius: 0.2rem; max-width: 14rem; min-width: 10rem; } - -.tooltip_top_info{ +.tooltip_top_info { width: 100%; display: block; } -.message_content{ +.message_content { display: inline-block; - margin-top: .5rem; + margin-top: 0.5rem; max-width: 90%; } -.reply_panel_close_icon{ +.reply_panel_close_icon { position: absolute; right: 1rem; top: 1rem; } -.reply_panel_close_icon path{ +.reply_panel_close_icon path { stroke: white; - opacity: .2; + opacity: 0.2; } -.reply_box{ - box-shadow: 0px 0px 9px 0px rgba(115,113,252,0.5); +.reply_box { + box-shadow: 0px 0px 9px 0px rgba(115, 113, 252, 0.5); width: 100%; display: block; - font-size: .82rem; + font-size: 0.82rem; padding: 0.5rem 1rem; border-radius: 0.2rem; margin-bottom: 1rem; border: 1px solid var(--accent1); } -.reply_box .avatar_jazzicons{ +.reply_box .avatar_jazzicons { transform: scale(1.4); - margin-right: .2rem; + margin-right: 0.2rem; } -.reply_box_time{ +.reply_box_time { position: absolute; right: 3rem; top: 1rem; - font-size: .7rem; - opacity: .3; + font-size: 0.7rem; + opacity: 0.3; } - - -.tooltip_message_content{ +.tooltip_message_content { display: block; } -.tooltip_message_time{ +.tooltip_message_time { float: right; - right: .5rem; - top: .5rem; + right: 0.5rem; + top: 0.5rem; color: white; - opacity: .3; + opacity: 0.3; } -.replied_message_box{ +.replied_message_box { min-width: 10rem; cursor: pointer; } -.replied_message_box .time_text{ - +.replied_message_box .time_text { } -.verified_icon{ +.verified_icon { display: inline-block; - margin-left: .2rem; -} \ No newline at end of file + margin-left: 0.2rem; +} diff --git a/src/components/Chat/MessagePanel/Room/Room.module.css b/src/components/Chat/MessagePanel/Room/Room.module.css index d019b8d339..07d1917443 100644 --- a/src/components/Chat/MessagePanel/Room/Room.module.css +++ b/src/components/Chat/MessagePanel/Room/Room.module.css @@ -108,7 +108,7 @@ color: var(--text2); width: 95%; max-height: 140px; - overflow-y: auto; + overflow-y: auto; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.1) transparent; } @@ -169,28 +169,28 @@ line-height: var(--body-lh); } -.only_mentions_toggle_wrapper{ +.only_mentions_toggle_wrapper { display: inline-block; - vertical-align: bottom ; - margin-left: .4rem; + vertical-align: bottom; + margin-left: 0.4rem; float: right; } -.only_mentions_wrapper{ +.only_mentions_wrapper { /* background: #34327e; */ opacity: 1; - animation: opaAnim 0.3s .3s ease-in-out forwards; + animation: opaAnim 0.3s 0.3s ease-in-out forwards; /* box-shadow: 0px 0px 12px rgba(205, 193, 255, 0.2); */ border-top: 0.5px solid var(--accent1); /* border-left: 0.5px solid var(--accent1); border-right: 0.5px solid var(--accent1); */ /* border-radius: .2rem .2rem 0 0; */ - padding: .4rem .3rem; - font-size: .8rem; + padding: 0.4rem 0.3rem; + font-size: 0.8rem; display: block; width: 100%; border-top: 1px solid rgba(205, 193, 255, 0.2); - font-size: .82rem; - margin-top: .4rem; + font-size: 0.82rem; + margin-top: 0.4rem; /* text-align: right; */ border-top: none; padding-top: 0.5rem; @@ -199,44 +199,42 @@ display: inline-block; } -.only_mentions_text{ - transition: ease-in-out .3s; - opacity: .5; +.only_mentions_text { + transition: ease-in-out 0.3s; + opacity: 0.5; } -.only_mentions_text_active{ +.only_mentions_text_active { opacity: 1; } -.noti_dot{ +.noti_dot { display: inline-block; width: 6px; height: 6px; border-radius: 2rem; background: var(--accent1); - margin-left: .1rem; + margin-left: 0.1rem; } -.ment_text_info_wrapper{ +.ment_text_info_wrapper { float: right; text-align: right; - margin-right: .4rem; + margin-right: 0.4rem; display: inline-block; - transition: all .2s ease-in-out; - opacity: .5; + transition: all 0.2s ease-in-out; + opacity: 0.5; } -.opa_full{ +.opa_full { opacity: 1; } - -.m_visible{ +.m_visible { display: none !important; } - -@media only screen and (max-width: 600px){ +@media only screen and (max-width: 600px) { .dropdown { width: 100%; margin: 8px 0; @@ -244,44 +242,41 @@ text-align: center; } - - .dropdown_content{ + .dropdown_content { position: absolute; } - .current_pool{ + .current_pool { display: none; } - .m_hidden{ + .m_hidden { display: none !important; } - .m_visible{ + .m_visible { display: inline-block !important; } - .dd_icon{ + .dd_icon { vertical-align: middle; } - .dropdow_content{ + .dropdow_content { position: absolute; z-index: 99; background: var(--dark3); left: 0; width: 100%; - } - .dropdown_item { + .dropdown_item { text-align: center; - padding: .7rem; - font-size: .9rem; + padding: 0.7rem; + font-size: 0.9rem; } - .room_name_wrapper{ + .room_name_wrapper { margin-left: -1rem; } - -} \ No newline at end of file +} diff --git a/src/components/Chat/MessagePanel/SentMessagePanel/SentMessagePanel.module.css b/src/components/Chat/MessagePanel/SentMessagePanel/SentMessagePanel.module.css index c5e5d17091..19b1e13ab1 100644 --- a/src/components/Chat/MessagePanel/SentMessagePanel/SentMessagePanel.module.css +++ b/src/components/Chat/MessagePanel/SentMessagePanel/SentMessagePanel.module.css @@ -12,7 +12,7 @@ .avatar_jazzicons { display: flex; - margin-top: .5rem; + margin-top: 0.5rem; cursor: pointer; position: relative; } @@ -84,7 +84,6 @@ /* Inside auto layout */ order: 0; cursor: default; - } .message { @@ -130,7 +129,7 @@ display: flex; flex-direction: row; color: rgb(255, 163, 179); - opacity: .3; + opacity: 0.3; } .message_without_avatar { @@ -175,7 +174,7 @@ word-break: break-word; white-space: normal; color: rgb(255, 163, 179); - opacity: .3; + opacity: 0.3; } .message_without_avatar_admin_room { @@ -237,7 +236,6 @@ height: 80%; } - .right_image_box { display: flex; right: 0%; @@ -261,11 +259,9 @@ cursor: default; /* padding: 0px 4px 4px; padding-top: 10px; */ - padding: .2rem 0; - + padding: 0.2rem 0; } - .sent_message_body_with_mention { flex-grow: 5 !important; display: flex; @@ -285,7 +281,7 @@ /* background: var(--dark3); */ } -.name_default{ +.name_default { width: 82px; height: 14px; @@ -297,7 +293,7 @@ line-height: 16px; display: flex; align-items: center; - + /* Inside auto layout */ flex: none; order: 0; @@ -306,7 +302,7 @@ margin-left: 10px; } -.name_default_label{ +.name_default_label { cursor: pointer; } @@ -331,11 +327,8 @@ /* accent/secondary */ color: var(--accent1); - - } - .message_item { cursor: default; display: flex; @@ -352,7 +345,7 @@ max-width: 100%; } -.dropdown_item{ +.dropdown_item { background: var(--dark3); border-radius: 4px; padding-left: 4px; @@ -371,61 +364,59 @@ top: 0rem; right: 1rem; flex-direction: column; - } - - +} -@keyframes msgBubbleAnim{ - from{ +@keyframes msgBubbleAnim { + from { transform: scale(0); } - to{ + to { transform: scale(1); } } -.msg_bubble_container{ +.msg_bubble_container { /* animation: msgBubbleAnim 0.1s 1 ease-in-out forwards; */ - transition: background .1s ease-in-out, padding-bottom .2s ease-in-out; + transition: + background 0.1s ease-in-out, + padding-bottom 0.2s ease-in-out; width: 100%; position: relative; padding-bottom: 0; /* border: 1px solid rgba(255,0,0, .3); */ } -.rise_to_bottom_wrapper{ +.rise_to_bottom_wrapper { padding-bottom: 6rem; - padding-bottom: 2rem; /* 3rem will be removed after other chat panel features opened in sentMessagePanel context menu*/ + padding-bottom: 2rem; /* 3rem will be removed after other chat panel features opened in sentMessagePanel context menu*/ } -.msg_bubble_container.flipped .msg_bubble_content{ +.msg_bubble_container.flipped .msg_bubble_content { transform: rotateY(180deg); - padding: .5rem 0; - + padding: 0.5rem 0; + /* border: 1px solid var(--accent1); */ /* box-shadow: 0px 0px 5px var(--accent1); */ } -.replied_message_container{ +.replied_message_container { /* background: red; */ /* padding-top: 1.2rem; */ padding-top: 3.2rem; } -.replied_message_container.has_day_separator{ +.replied_message_container.has_day_separator { padding-top: 5.2rem; } - -.msg_bubble_front{ - transition: all .2s ease-in-out; +.msg_bubble_front { + transition: all 0.2s ease-in-out; } -.msg_bubble_container.flipped .msg_bubble_front{ +.msg_bubble_container.flipped .msg_bubble_front { /* background: rgba(255,255,255, .1); */ } - -.msg_bubble_content{ +.msg_bubble_content { position: relative; width: 100%; height: 100%; @@ -435,35 +426,32 @@ /* border: 1px solid transparent; */ } -.msg_bubble_front{ - +.msg_bubble_front { /* position: absolute; */ - width: 100%; - height: 100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - position: relative; + width: 100%; + height: 100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + position: relative; } -.msg_bubble_back{ - +.msg_bubble_back { top: 0; left: 0; position: absolute; - width: 100%; - height: 100%; - text-align: center; - background: rgba(0,0,0,.2); + width: 100%; + height: 100%; + text-align: center; + background: rgba(0, 0, 0, 0.2); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - transform: rotateY(180deg); - - border-radius: .4rem; -} + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transform: rotateY(180deg); + border-radius: 0.4rem; +} -.msg_bubble_back_content{ +.msg_bubble_back_content { display: block; position: absolute; left: 50%; @@ -471,82 +459,73 @@ transform: translate(-50%, -50%); } - -.like_btn_base{ +.like_btn_base { vertical-align: top; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; display: inline-block; width: 1.4rem; height: 1.4rem; line-height: 1.2rem; font-size: 1rem; - margin: 0 .2rem; - - border: 1px solid rgba(75, 216, 134, 0.26); + margin: 0 0.2rem; + + border: 1px solid rgba(75, 216, 134, 0.26); box-shadow: 0px 0px 1px var(--accent1); - + /* font-weight: bold; */ - border-radius: .2rem; + border-radius: 0.2rem; cursor: pointer; - - } -.like_btn_base:not(.active):not(.disabled):hover{ +.like_btn_base:not(.active):not(.disabled):hover { box-shadow: 0px 0px 12px var(--accent1); background: var(--accent1); color: white; } - -.active.like_btn_base{ +.active.like_btn_base { background: rgba(75, 216, 134, 0.46); } -.dislike_btn{ - +.dislike_btn { border-color: rgba(224, 77, 77, 0.274); } -.like_btn_base.disabled{ - opacity: .5; +.like_btn_base.disabled { + opacity: 0.5; cursor: default; background: transparent !important; } - -.active.like_btn_base.dislike_btn{ - +.active.like_btn_base.dislike_btn { background: rgba(224, 77, 77, 0.474); - } - -.flip_trigger{ +.flip_trigger { /* background: rgba(255,0,0,.4); */ cursor: pointer; position: absolute; width: 4rem; top: 0; - bottom: 0; + bottom: 0; margin: auto; right: 0; } -.flip_trigger_lefted{ +.flip_trigger_lefted { /* background: rgba(0, 255, 55, 0.4); */ cursor: pointer; position: absolute; width: 4rem; top: 50%; - bottom: 0; + bottom: 0; margin: auto; right: auto; left: 0; - opacity: .5; + opacity: 0.5; transform: translateY(-50%); } -.like_dislike_bar_wrapper{ +.like_dislike_bar_wrapper { display: block; width: 200px; margin: 0 auto; @@ -554,149 +533,137 @@ max-width: 200px; } -.like_dislike_node_wrapper{ +.like_dislike_node_wrapper { display: inline-block; } - - @keyframes widthAnim { - from{ + from { width: 0%; } - to{ + to { width: 100%; } } -.like_dislike_node{ +.like_dislike_node { height: 2px; width: 0%; background: rgb(75, 216, 134); box-shadow: 0px 0px 12px rgb(75, 216, 134); - } -.flipped .like_dislike_node{ - - animation: widthAnim .5s .2s ease-in-out forwards; +.flipped .like_dislike_node { + animation: widthAnim 0.5s 0.2s ease-in-out forwards; } -.dislike_node{ +.dislike_node { background: rgb(224, 77, 77); box-shadow: 0px 0px 12px rgb(224, 77, 77); float: right; } - - -.flip_read{ - +.flip_read { } -.flipped .msg_bubble_front{ +.flipped .msg_bubble_front { opacity: 0; - transition: transform 0s, opacity .2s ease-in-out, top .2s ease-in-out; + transition: + transform 0s, + opacity 0.2s ease-in-out, + top 0.2s ease-in-out; } -.flip_read .msg_bubble_front{ +.flip_read .msg_bubble_front { transform: rotateY(180deg); - top: calc(-100% - .5rem); + top: calc(-100% - 0.5rem); background: #99bff721; backdrop-filter: blur(10px); - border-radius: .4rem .4rem 0 0; + border-radius: 0.4rem 0.4rem 0 0; opacity: 1; } -.replied_message_container.flip_read .replied_box{ +.replied_message_container.flip_read .replied_box { top: 0rem; } - - -.verified_icon{ +.verified_icon { display: inline-block; - margin-left: .4rem; + margin-left: 0.4rem; cursor: default; } -.verified_icon svg{ +.verified_icon svg { cursor: default !important; } - -.chain_logo{ +.chain_logo { display: inline-block; - margin-left: .2rem; + margin-left: 0.2rem; cursor: default; width: 1rem; height: 1rem; border-radius: 50%; - background: rgba(255,255,255,.2); - padding: .1rem; + background: rgba(255, 255, 255, 0.2); + padding: 0.1rem; position: absolute; top: 50%; left: 0; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; transform: translateX(-75%); z-index: 10; cursor: pointer; } -.chain_logo.testnet{ - opacity: .3; +.chain_logo.testnet { + opacity: 0.3; } -.chain_info{ +.chain_info { display: inline-block; - margin-left: .4rem; + margin-left: 0.4rem; cursor: default; - color: rgba(255,255,255,.3); - font-size: .68rem; + color: rgba(255, 255, 255, 0.3); + font-size: 0.68rem; opacity: 0; - transition: all .2s ease-in-out; + transition: all 0.2s ease-in-out; } - - -.update_verify_date_icon{ - +.update_verify_date_icon { display: inline-block; cursor: pointer; - border-radius: .2rem; + border-radius: 0.2rem; height: 16px; line-height: 16px; - margin-left: .5rem; + margin-left: 0.5rem; } -.update_verify_date_icon:hover{ +.update_verify_date_icon:hover { transform: scale(1.2); - background: rgba(255,255,255,.2); + background: rgba(255, 255, 255, 0.2); } -.has_day_separator .update_verify_date_icon{ +.has_day_separator .update_verify_date_icon { margin-top: 0.4rem; } .container { position: relative; - display: inline-block; - } + display: inline-block; +} - - .roomInfo { - position:absolute; - left: 13rem; +.roomInfo { + position: absolute; + left: 13rem; color: pink; font-size: 10px; - top: .7rem; + top: 0.7rem; width: 2.8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - - } - .roomInfo_with_mention{ - position:absolute; - left: 13rem; +} +.roomInfo_with_mention { + position: absolute; + left: 13rem; color: pink; font-size: 10px; top: 1.5rem; @@ -704,22 +671,22 @@ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - } +} - .thread_top_msg .roomInfo{ +.thread_top_msg .roomInfo { top: 1.5rem; - } +} - .deleted_msg{ - opacity: .5; - } +.deleted_msg { + opacity: 0.5; +} - .options_button { +.options_button { /* cursor: pointer; */ position: absolute; top: 100%; - transition: all .2s ease-in-out; - left: 100%; + transition: all 0.2s ease-in-out; + left: 100%; /* right: -14rem; */ /* transform: translateX(-50%) translateY(-1.6rem); */ opacity: 0; @@ -732,128 +699,115 @@ top: 0; z-index: 3; -/* + /* left: 70%; opacity: 1; */ } - - .msg_bubble_container:hover .options_button { - display: block; +.msg_bubble_container:hover .options_button { + display: block; /* right: -10rem; */ left: 70%; opacity: 1; - } +} - .msg_bubble_container:hover .chain_info{ +.msg_bubble_container:hover .chain_info { opacity: 1; - } - +} .has_separator .options_button { - transform: translateY(0rem); + transform: translateY(0rem); } - .has_day_separator .options_button { - transform: translateY(-.5rem); + transform: translateY(-0.5rem); } - - - .roomInfo { - position:absolute; - left: 13rem; +.roomInfo { + position: absolute; + left: 13rem; color: pink; - } - +} - .msg_bubble_container:hover{ - background-color: rgba(0,0,0,.2); - } +.msg_bubble_container:hover { + background-color: rgba(0, 0, 0, 0.2); +} - .flip_read .options_button, .flip_read .menu{ +.flip_read .options_button, +.flip_read .menu { display: none !important; - } - - -.has_separator .msg_bubble_front{ - padding-bottom: .5rem; +.has_separator .msg_bubble_front { + padding-bottom: 0.5rem; } - -.msg_bubble_front{ +.msg_bubble_front { /* overflow: hidden; */ } -.separator{ +.separator { /* position: absolute; left: 0; bottom: 0; width: 100%; */ - margin-bottom: -.5rem; - margin-top: .5rem; + margin-bottom: -0.5rem; + margin-top: 0.5rem; } - - -.reactions_wrapper{ +.reactions_wrapper { padding: 0rem 0.5rem; width: auto; display: inline; background: #0000001f; border-radius: 0.6rem; margin-top: 0; - margin-bottom: .5rem; + margin-bottom: 0.5rem; display: inline-block; border-radius: 2rem; - border: 1px solid rgba(255,255,255, .2); + border: 1px solid rgba(255, 255, 255, 0.2); margin-left: 2rem; } -.reaction_node{ - transition: all .2s ease-in-out; +.reaction_node { + transition: all 0.2s ease-in-out; display: inline-block; - font-size: .9rem; + font-size: 0.9rem; cursor: pointer; border-radius: 0.9rem; /* padding: 0.05rem; */ } -.user_reacted{ +.user_reacted { background: var(--accent1); - box-shadow: 0px 0px 17px 3px color-mix(in srgb, var(--accent1) 50%, transparent); + box-shadow: 0px 0px 17px 3px + color-mix(in srgb, var(--accent1) 50%, transparent); } -.user_reaction_label{ +.user_reaction_label { color: var(--accent1); font-weight: bold; } - .reaction_users_tooltip div { - - margin: .2rem 0; + margin: 0.2rem 0; } -.reaction_users_tooltip{ +.reaction_users_tooltip { background: var(--dark1); - padding: .2rem .5rem; - margin-top: -.5rem; - border-radius: .5rem; - font-size: .72rem; + padding: 0.2rem 0.5rem; + margin-top: -0.5rem; + border-radius: 0.5rem; + font-size: 0.72rem; box-shadow: 0px 0px 30px var(--accent1); - } -.reader_mentioned{ - box-shadow: 0px 0px 2px var(--accent1); - background: color-mix(in srgb, var(--accent1) 15%, transparent); +.reader_mentioned { + box-shadow: 0px 0px 2px var(--accent1); + background: color-mix(in srgb, var(--accent1) 15%, transparent); /* background: #7371fc26; */ } -.reader_mentioned:hover{ - box-shadow: 0px 0px 2px var(--accent1); +.reader_mentioned:hover { + box-shadow: 0px 0px 2px var(--accent1); /* background: #7371fc26; */ } @@ -861,30 +815,27 @@ background: transparent; } -.message_block_wrapper{ +.message_block_wrapper { width: 95%; height: 80%; margin-left: 10px; font-size: 12px; } -.admin_room_msg .message_block_wrapper{ - +.admin_room_msg .message_block_wrapper { width: 80%; } -.without_avatar{ +.without_avatar { margin-left: 34px; } - -.message_block{ - +.message_block { width: 80%; height: 80%; bottom: -100%; white-space: pre-line; - font-family: "Lexend Deca"; + font-family: 'Lexend Deca'; font-style: normal; font-weight: 300; font-size: 12px; @@ -896,147 +847,135 @@ word-break: break-word; } -.message_block.only_emoji{ +.message_block.only_emoji { line-height: normal !important; text-shadow: 1.1px 2px rgba(255, 255, 255, 0.3); } - -.message_token{ +.message_token { margin-right: 1px; } -.only_emoji{ +.only_emoji { font-size: 2rem; } -.link_token{ +.link_token { color: var(--accent1); text-decoration: underline; cursor: pointer; } -.mentioned_name_token{ +.mentioned_name_token { font-weight: bold; cursor: pointer; color: var(--accent1); - padding: .15rem .2rem; - transition: all .2s ease-in-out; + padding: 0.15rem 0.2rem; + transition: all 0.2s ease-in-out; } -.mentioned_name_token:hover{ - background: rgba(255,255,255, .1); - box-shadow: 0 0 10px 0 color-mix(in srgb, var(--accent1) 20%, transparent); - color:color-mix(in srgb, var(--accent1) 50%, white); - border-radius: .4rem; +.mentioned_name_token:hover { + background: rgba(255, 255, 255, 0.1); + box-shadow: 0 0 10px 0 color-mix(in srgb, var(--accent1) 20%, transparent); + color: color-mix(in srgb, var(--accent1) 50%, white); + border-radius: 0.4rem; } -.vrf_msg_dbg{ +.vrf_msg_dbg { /* color: green; */ } - -.replied_box{ +.replied_box { position: absolute; top: -2rem; left: 2rem; border-radius: 0.4rem; padding: 0.1rem 0.8rem; - background: rgba(0,0,0, 0.2); + background: rgba(0, 0, 0, 0.2); /* border: 1px solid rgba(255,255,255, .1); */ - font-size: .63rem; + font-size: 0.63rem; } -.replied_message_arrow{ +.replied_message_arrow { position: absolute; top: -0.3rem; left: 0.6rem; /* transform: scaleY(-1); */ } -.replied_message_arrow.has_avatar{ +.replied_message_arrow.has_avatar { position: absolute; top: -0.3rem; left: 0.6rem; transform: scaleY(1); } -.has_day_separator .replied_message_arrow{ +.has_day_separator .replied_message_arrow { top: -0.7rem; } - -.has_day_separator .replied_message_arrow.has_avatar{ +.has_day_separator .replied_message_arrow.has_avatar { top: -2rem; } - -.has_day_separator.thread_top_msg .replied_box{ +.has_day_separator.thread_top_msg .replied_box { top: -3rem; } -.has_day_separator.thread_top_msg .msg_bubble_front{ - padding-top: .8rem; +.has_day_separator.thread_top_msg .msg_bubble_front { + padding-top: 0.8rem; } -.replied_message_container .day_separator{ +.replied_message_container .day_separator { margin-top: -1rem; } -.thread_top_msg.replied_message_container .sent_message_body{ - padding-top: .7rem +.thread_top_msg.replied_message_container .sent_message_body { + padding-top: 0.7rem; } - -.has_day_separator.thread_top_msg .options_button{ +.has_day_separator.thread_top_msg .options_button { transform: translateY(0rem); } -.replied_message_container .options_button{ +.replied_message_container .options_button { transform: translateY(-2.3rem); } - -.replied_message_container .sent_message_body{ +.replied_message_container .sent_message_body { /* margin-top: 2rem; */ } -.has_day_separator.thread_top_msg.replied_message_container .sent_message_body{ +.has_day_separator.thread_top_msg.replied_message_container .sent_message_body { margin-top: 2.4rem; } -.has_day_separator.thread_top_msg.replied_message_container .msg_bubble_front{ +.has_day_separator.thread_top_msg.replied_message_container .msg_bubble_front { padding-top: 2rem; } -.has_day_separator.thread_top_msg.replied_message_container .day_separator{ +.has_day_separator.thread_top_msg.replied_message_container .day_separator { margin-top: -6rem; } - - /* .replied_msg_wrapper{ background: red; } */ -@media only screen and (max-width: 600px){ - +@media only screen and (max-width: 600px) { .roomInfo { left: auto; - right: 4.4rem; + right: 4.4rem; } - - .sent_message_body{ - padding: .6rem 0; + .sent_message_body { + padding: 0.6rem 0; } - .like_btn_base{ + .like_btn_base { border-radius: 2rem; width: 2rem; - height: 2rem; - line-height: 1.6rem; - font-size: 1rem; - border-width: .15rem; - + height: 2rem; + line-height: 1.6rem; + font-size: 1rem; + border-width: 0.15rem; } - -} \ No newline at end of file +} diff --git a/src/components/Chat/MessagePanel/UserSummary/UserSummary.module.css b/src/components/Chat/MessagePanel/UserSummary/UserSummary.module.css index 84fb2e82b7..50b9e77a03 100644 --- a/src/components/Chat/MessagePanel/UserSummary/UserSummary.module.css +++ b/src/components/Chat/MessagePanel/UserSummary/UserSummary.module.css @@ -1,71 +1,66 @@ - -.user_summary_wrapper{ +.user_summary_wrapper { z-index: -99; opacity: 0; - transition: left .2s ease-in-out, opacity .2s ease-in-out; + transition: + left 0.2s ease-in-out, + opacity 0.2s ease-in-out; position: absolute; width: 80%; - padding: .5rem; + padding: 0.5rem; left: 10%; top: 0; - font-size: .82rem; + font-size: 0.82rem; transform: translateY(0%); background: color-mix(in srgb, var(--dark1) 40%, transparent); - background: color-mix(in srgb, var(--accent1) 15%, rgba(0,0,0, .4)); + background: color-mix(in srgb, var(--accent1) 15%, rgba(0, 0, 0, 0.4)); /* background: rgba(0,0,0, .6); */ backdrop-filter: blur(10px); - box-shadow: 0 5px 10px 0 rgba(0,0,0, .2); + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); z-index: 99; - border-radius: .4rem; + border-radius: 0.4rem; left: -100%; } -.to_bottom{ - +.to_bottom { } - -.active{ +.active { z-index: 1; opacity: 1; left: 10%; - } -.user_avatar{ - +.user_avatar { } -.user_name{ +.user_name { display: inline-block; margin-left: 1rem; vertical-align: top; - margin-top: .3rem; + margin-top: 0.3rem; } -.summary_header{ +.summary_header { padding-left: 1rem; cursor: pointer; /* border-bottom: 1px solid rgba(0,0,0, .4); */ } -.stats_content{ +.stats_content { display: flex; justify-content: space-between; padding: 0 1rem; } -.stat_node{ +.stat_node { flex: 1 1; text-align: center; } -.stat_label{ - - font-size: .7rem; - opacity: .5; +.stat_label { + font-size: 0.7rem; + opacity: 0.5; } -.stat_value{ - -} \ No newline at end of file +.stat_value { +} diff --git a/src/components/Chat/Service/ChatApi.tsx b/src/components/Chat/Service/ChatApi.tsx index f8d7cb736c..a6c19fd69e 100644 --- a/src/components/Chat/Service/ChatApi.tsx +++ b/src/components/Chat/Service/ChatApi.tsx @@ -21,7 +21,6 @@ import { setLS, } from '../ChatUtils'; - const host = CHAT_BACKEND_URL; const useChatApi = () => { @@ -34,7 +33,7 @@ const useChatApi = () => { return await w3provider.getSigner(); } return null; - } + }; async function getStatus() { // Hit the chat /status endpoint to see if it's online @@ -49,8 +48,6 @@ const useChatApi = () => { } } - - async function getID() { if (userAddress) { const response = await fetch( @@ -276,7 +273,6 @@ const useChatApi = () => { } async function verifyWalletService(verificationDate: Date) { - // this assignment will be deleted after backend deployment let verificationText = 'Verify your wallet address in order to access additional chat functionality.\n\nYou can update your avatar on https://ambient.finance/account \n\nBy continuing to use chat you accept the Ambient Finance Terms of Service (https://ambient.finance/terms) and Privacy Policy (https://ambient.finance/privacy). \n\nThis request will not trigger a blockchain transaction or cost any gas fees. \n\n'; @@ -289,29 +285,32 @@ const useChatApi = () => { } const signer = await getSigner(); - if(signer){ + if (signer) { return new Promise((resolve, reject) => { const message = verificationText + 'Wallet address:\n' + userAddress; - // signer.signMessage(message) - signer.signMessage(message.substring( - 0, - message.indexOf('Wallet address:'), - )) - // eslint-disable-next-line - .then(async (signedMessage: any) => { - const resp = await sendVerifyRequest( - signedMessage, - verificationDate, - ); - setLS(LS_USER_VERIFY_TOKEN, signedMessage, userAddress); - resolve(resp); - }) - // eslint-disable-next-line - .catch((error: any) => { - // Handle error - reject(error); - }); + // signer.signMessage(message) + signer + .signMessage( + message.substring( + 0, + message.indexOf('Wallet address:'), + ), + ) + // eslint-disable-next-line + .then(async (signedMessage: any) => { + const resp = await sendVerifyRequest( + signedMessage, + verificationDate, + ); + setLS(LS_USER_VERIFY_TOKEN, signedMessage, userAddress); + resolve(resp); + }) + // eslint-disable-next-line + .catch((error: any) => { + // Handle error + reject(error); + }); }); } } diff --git a/src/components/Footer/Footer.module.css b/src/components/Footer/Footer.module.css index 7f40e2842b..8170c1d704 100644 --- a/src/components/Footer/Footer.module.css +++ b/src/components/Footer/Footer.module.css @@ -75,7 +75,8 @@ .container { width: 100%; - background: linear-gradient( + background: + linear-gradient( 180deg, #000000 0%, rgba(0, 0, 0, 0) 40.39%, diff --git a/src/components/Form/TokenInputQuantity.module.css b/src/components/Form/TokenInputQuantity.module.css index a91cfd5ff7..7b3009bf5d 100644 --- a/src/components/Form/TokenInputQuantity.module.css +++ b/src/components/Form/TokenInputQuantity.module.css @@ -91,7 +91,6 @@ pointer-events: none; padding-left: 8px; padding-right: 1.5rem; - } @keyframes shadow-pulse { 0% { @@ -150,7 +149,7 @@ border: none; } -.tokenButton{ +.tokenButton { width: 100%; display: flex; flex-direction: row; diff --git a/src/components/Form/WalletBalanceSubinfo.tsx b/src/components/Form/WalletBalanceSubinfo.tsx index ce8c62059f..6cd9c9771c 100644 --- a/src/components/Form/WalletBalanceSubinfo.tsx +++ b/src/components/Form/WalletBalanceSubinfo.tsx @@ -269,8 +269,9 @@ export default function WalletBalanceSubinfo(props: PropsIF) { alignItems='center' gap={8} fontSize='body' - style={{marginRight: isWithdraw || isDexSelected ? '0' : '4px'}} - + style={{ + marginRight: isWithdraw || isDexSelected ? '0' : '4px', + }} > {walletPriceWithTooltip} {onMaxButtonClick && diff --git a/src/components/Futa/AuctionLoader/AuctionLoader.module.css b/src/components/Futa/AuctionLoader/AuctionLoader.module.css index fdc7f20252..1525aef1ce 100644 --- a/src/components/Futa/AuctionLoader/AuctionLoader.module.css +++ b/src/components/Futa/AuctionLoader/AuctionLoader.module.css @@ -1,4 +1,4 @@ -.container{ +.container { color: var(--accent1); font-size: 24px; -} \ No newline at end of file +} diff --git a/src/components/Futa/Breadcrumb/Breadcrumb.module.css b/src/components/Futa/Breadcrumb/Breadcrumb.module.css index da6aadeaac..cc4b23478f 100644 --- a/src/components/Futa/Breadcrumb/Breadcrumb.module.css +++ b/src/components/Futa/Breadcrumb/Breadcrumb.module.css @@ -1,33 +1,33 @@ -nav[aria-label="breadcrumb"] { +nav[aria-label='breadcrumb'] { display: flex; gap: 5px; - font-family: "Roboto Mono"; + font-family: 'Roboto Mono'; font-style: normal; font-weight: 400; line-height: normal; - color: var(--text2, #8B98A5); + color: var(--text2, #8b98a5); text-transform: uppercase; font-size: 12px; } -nav[aria-label="breadcrumb"] ol { +nav[aria-label='breadcrumb'] ol { display: flex; list-style: none; padding: 0; margin: 0; } -nav[aria-label="breadcrumb"] li { +nav[aria-label='breadcrumb'] li { margin-right: 5px; } -nav[aria-label="breadcrumb"] li::after { +nav[aria-label='breadcrumb'] li::after { content: '>'; margin-left: 5px; } -nav[aria-label="breadcrumb"] li:last-child::after { +nav[aria-label='breadcrumb'] li:last-child::after { content: ''; margin-left: 0; -} \ No newline at end of file +} diff --git a/src/components/Futa/Chart/Chart.module.css b/src/components/Futa/Chart/Chart.module.css index d65197ba2d..160fdfc2bb 100644 --- a/src/components/Futa/Chart/Chart.module.css +++ b/src/components/Futa/Chart/Chart.module.css @@ -1,17 +1,15 @@ -.container{ +.container { display: flex; flex-direction: column; gap: 8px; height: 100%; } - - .container svg:hover { cursor: default; } -.content{ +.content { width: 100%; height: 100%; display: flex; @@ -25,14 +23,13 @@ ); background-size: 200% 100%; animation: shimmer 1.5s infinite; */ - } .scatterAxis :hover { color: var(--accent1); } -.chartHeader{ +.chartHeader { width: 100%; display: flex; flex-direction: row; @@ -40,10 +37,10 @@ justify-content: space-between; } -.content{ +.content { overflow: hidden; } -.content svg{ +.content svg { width: 100%; height: 100%; } @@ -54,4 +51,4 @@ 100% { background-position: -100% 0; } -} \ No newline at end of file +} diff --git a/src/components/Futa/Comments/CommentCard/CommentCard.module.css b/src/components/Futa/Comments/CommentCard/CommentCard.module.css index 26017c2312..3393df74dc 100644 --- a/src/components/Futa/Comments/CommentCard/CommentCard.module.css +++ b/src/components/Futa/Comments/CommentCard/CommentCard.module.css @@ -1,97 +1,89 @@ - - @keyframes kf_comment_card_anim { - from{ + from { opacity: 0; /* margin-left: 100%; */ } - to{ + to { opacity: 1; margin-left: 0; } } @keyframes kf_comment_bottom_info_anim { - from{ + from { opacity: 0; } - to{ - opacity: .3; + to { + opacity: 0.3; } } -.comment_card_wrapper{ - margin-top: .3rem; - padding-top: .3rem; +.comment_card_wrapper { + margin-top: 0.3rem; + padding-top: 0.3rem; position: relative; - border-top: 1px solid rgba(255,255,255, .1); + border-top: 1px solid rgba(255, 255, 255, 0.1); opacity: 0; - animation: kf_comment_card_anim .5s ease-in-out 1 forwards; + animation: kf_comment_card_anim 0.5s ease-in-out 1 forwards; width: 100%; - } - - - .comment_card_wrapper.unread{ - background: color-mix(in srgb, var(--accent1) 5%, transparent); - } - +} - .comment_card_wrapper:first-child{ - border-top: none; - } +.comment_card_wrapper.unread { + background: color-mix(in srgb, var(--accent1) 5%, transparent); +} - .comment_card_wrapper.basic_card{ - border: none; - margin: 0; - padding: 0; - } - .comment_card_wrapper:last-child{ - border-bottom: 1px solid rgba(255,255,255, .1); - padding-bottom: .4rem; - } +.comment_card_wrapper:first-child { + border-top: none; +} +.comment_card_wrapper.basic_card { + border: none; + margin: 0; + padding: 0; +} +.comment_card_wrapper:last-child { + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + padding-bottom: 0.4rem; +} -.comment_top_info{ +.comment_top_info { width: 100%; padding-top: 0rem; padding-bottom: 0rem; text-align: center; - opacity: .3; - + opacity: 0.3; } -.comment_sender_info{ +.comment_sender_info { color: var(--accent1); margin-bottom: 0rem; cursor: pointer; } -.comment_sender_info.is_user{ - +.comment_sender_info.is_user { color: var(--orange); } -.comment_text{ - +.comment_text { max-width: 80%; overflow-wrap: break-word; white-space: normal; } -.comment_bottom_info{ +.comment_bottom_info { position: absolute; - bottom: .3rem; - right: .5rem; - font-size: .8rem; - animation: kf_comment_bottom_info_anim .9s ease-in-out 1 forwards; + bottom: 0.3rem; + right: 0.5rem; + font-size: 0.8rem; + animation: kf_comment_bottom_info_anim 0.9s ease-in-out 1 forwards; } -.comment_content_token{ - margin-right: .2rem; +.comment_content_token { + margin-right: 0.2rem; } -.link_token{ +.link_token { color: var(--accent1); text-decoration: underline; cursor: pointer; font-weight: 600; -} \ No newline at end of file +} diff --git a/src/components/Futa/Comments/CommentInput/CommentInput.module.css b/src/components/Futa/Comments/CommentInput/CommentInput.module.css index c5d1dd89ce..13dd4a08fc 100644 --- a/src/components/Futa/Comments/CommentInput/CommentInput.module.css +++ b/src/components/Futa/Comments/CommentInput/CommentInput.module.css @@ -1,68 +1,63 @@ - -.comment_input_wrapper{ +.comment_input_wrapper { background-color: var(--dark2); position: absolute; width: calc(100% - 1rem); width: 100%; bottom: 0; - } - - .comment_input_wrapper input{ - - background: transparent; - border: none; - outline: none; - color: white; - padding: .5rem 1rem; - width: 90%; - } - .comment_input_wrapper input.about_filled{ - width: 75%; - margin-left: 15%; - } - - - - .progress_wrapper{ - position: absolute; - left: .5rem; - top: .5rem; - - } - .circular_progress{ - top: .3rem; - left: .5rem; - display: inline-block; - } - - .character_limit{ - display: inline-block; - font-size: .6rem; - opacity: .5; - margin-left: .3rem; - vertical-align: middle; - margin-top: -.1rem; - } - - .connect_to_chat_placeholder{ - color: rgba(255,255,255, .3); - background-color: var(--dark3); - color: black; - background: var(--accent1 ); - padding: .5rem; - text-align: center; - cursor: pointer; - } - - .connect_btn{ - position: absolute; - right: 0; - padding: .5rem; - top: 0; - background: var(--accent1); - color: black; - } - - .send_icon{ - transform: rotate(-45deg) scale(1.2); - } \ No newline at end of file +} + +.comment_input_wrapper input { + background: transparent; + border: none; + outline: none; + color: white; + padding: 0.5rem 1rem; + width: 90%; +} +.comment_input_wrapper input.about_filled { + width: 75%; + margin-left: 15%; +} + +.progress_wrapper { + position: absolute; + left: 0.5rem; + top: 0.5rem; +} +.circular_progress { + top: 0.3rem; + left: 0.5rem; + display: inline-block; +} + +.character_limit { + display: inline-block; + font-size: 0.6rem; + opacity: 0.5; + margin-left: 0.3rem; + vertical-align: middle; + margin-top: -0.1rem; +} + +.connect_to_chat_placeholder { + color: rgba(255, 255, 255, 0.3); + background-color: var(--dark3); + color: black; + background: var(--accent1); + padding: 0.5rem; + text-align: center; + cursor: pointer; +} + +.connect_btn { + position: absolute; + right: 0; + padding: 0.5rem; + top: 0; + background: var(--accent1); + color: black; +} + +.send_icon { + transform: rotate(-45deg) scale(1.2); +} diff --git a/src/components/Futa/Comments/Comments.module.css b/src/components/Futa/Comments/Comments.module.css index 72de4eba74..5393419abd 100644 --- a/src/components/Futa/Comments/Comments.module.css +++ b/src/components/Futa/Comments/Comments.module.css @@ -1,62 +1,60 @@ @keyframes shimmer { 0% { - background-position: 100% 0; + background-position: 100% 0; } 100% { - background-position: -100% 0; + background-position: -100% 0; } - } +} - .comments_outer.small{ +.comments_outer.small { position: relative; width: 90%; margin: 0 auto; - } - +} - .mainContainer{ - transition: all .2s ease-in-out; +.mainContainer { + transition: all 0.2s ease-in-out; height: calc(100svh - 170px); display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; - } - - .mainContainer.small{ +} + +.mainContainer.small { max-height: calc(47svh); - } +} - .mainContainer.small .commentsWrapper{ +.mainContainer.small .commentsWrapper { max-height: calc(98% - 40px); bottom: 3rem; - } +} - .container { +.container { width: 100%; - padding: 20px; - } - - .shimmer { + padding: 20px; +} + +.shimmer { width: 100%; height: 20px; display: flex; justify-content: center; align-items: center; background: linear-gradient( - 90deg, - rgba(7, 7, 7, 0.1) 25%, - rgba(52, 45, 45, 0.2) 50%, - rgba(55, 53, 53, 0.1) 75% + 90deg, + rgba(7, 7, 7, 0.1) 25%, + rgba(52, 45, 45, 0.2) 50%, + rgba(55, 53, 53, 0.1) 75% ); background-size: 200% 100%; animation: shimmer 1.5s infinite; margin-bottom: 10px; - } - +} - .commentsWrapper{ +.commentsWrapper { display: block; width: 100%; overflow-y: auto; @@ -64,211 +62,198 @@ max-height: calc(94svh - 170px); position: absolute; bottom: 4rem; - scrollbar-color: var(--accent1) var(--dark2); - } + scrollbar-color: var(--accent1) var(--dark2); +} - - .comments_content{ - } +.comments_content { +} +.connection_status { + position: absolute; + top: 2rem; + right: 45%; +} - .connection_status{ - position: absolute; - top: 2rem; - right: 45%; - } - - @keyframes kf_dot_pulse { - from{ +@keyframes kf_dot_pulse { + from { transform: scale(1); - opacity: .7; - } - to{ - - opacity: 0; - transform: scale(4); - } + opacity: 0.7; } + to { + opacity: 0; + transform: scale(4); + } +} - @keyframes kf_loading_dot { - 0%, 100%{ +@keyframes kf_loading_dot { + 0%, + 100% { /* margin-top: 0rem; */ opacity: 0; transform: scale(1); - } - 50%{ - /* margin-top: -.2rem; */ - opacity: .7; - transform: scale(1.25); - } - } - - - @keyframes kf_scroll_btn_anim { - from{ - right: -3rem; - } - to{ - right: 1.7rem - } - } - - .connection_dot{ - display: block; - width: .4rem; - height: .4rem; - border-radius: 100vw; - background-color: var(--positive); - margin-right: 1rem; - } - .connection_dot_anim{ - display: block; - width: .4rem; - height: .4rem; - border-radius: 100vw; - background-color: var(--positive); - animation: kf_dot_pulse 1s ease-in-out 3; - position: absolute; - opacity: .7; - top: 0; - } - - .loading_dots_wrapper{ - - margin-top: -.5rem; - } - - - .floating_scroll_btn{ - transition: all .2s ease-in-out; - position: absolute; - padding: .3rem; - right: -3rem; - width: 2rem; - height: 2rem; - border: 2px solid rgba(255,255,255, .3); - background: rgba(0,0,0, .3); - backdrop-filter: blur(5px); - animation: kf_scroll_btn_anim .2s ease-in-out forwards; - } - - .floating_scroll_btn:hover{ - border-color: var(--accent1); - } - - .show_previous_comments_btn{ - top: .5rem; } - - .scroll_to_bottom_btn{ - top: auto; - bottom: 4rem; + 50% { + /* margin-top: -.2rem; */ + opacity: 0.7; + transform: scale(1.25); } +} - .loading_dot{ - display: inline-block; - width: .3rem; - height: .3rem; - border-radius: 100vw; - background: var(--text2); - margin: 0 .3rem; - animation: kf_loading_dot 1s ease-in-out infinite; - opacity: 0; +@keyframes kf_scroll_btn_anim { + from { + right: -3rem; } - - .loading_dot:nth-child(2){ - animation-delay: 300ms; - } - .loading_dot:nth-child(3){ - animation-delay: 600ms; + to { + right: 1.7rem; } +} - .debug_btn{ - position: absolute; - top: 0; - right: 50%; - padding: 1rem; - background: var(--accent1); - color: var(--text1); - border-radius: .3rem; - cursor: pointer; - } +.connection_dot { + display: block; + width: 0.4rem; + height: 0.4rem; + border-radius: 100vw; + background-color: var(--positive); + margin-right: 1rem; +} +.connection_dot_anim { + display: block; + width: 0.4rem; + height: 0.4rem; + border-radius: 100vw; + background-color: var(--positive); + animation: kf_dot_pulse 1s ease-in-out 3; + position: absolute; + opacity: 0.7; + top: 0; +} - .no_comments_wrapper{ - bottom: 50%; - } +.loading_dots_wrapper { + margin-top: -0.5rem; +} - .no_comment_section{ - display: block; - text-align: center; - opacity: .4; - } +.floating_scroll_btn { + transition: all 0.2s ease-in-out; + position: absolute; + padding: 0.3rem; + right: -3rem; + width: 2rem; + height: 2rem; + border: 2px solid rgba(255, 255, 255, 0.3); + background: rgba(0, 0, 0, 0.3); + backdrop-filter: blur(5px); + animation: kf_scroll_btn_anim 0.2s ease-in-out forwards; +} + +.floating_scroll_btn:hover { + border-color: var(--accent1); +} + +.show_previous_comments_btn { + top: 0.5rem; +} + +.scroll_to_bottom_btn { + top: auto; + bottom: 4rem; +} + +.loading_dot { + display: inline-block; + width: 0.3rem; + height: 0.3rem; + border-radius: 100vw; + background: var(--text2); + margin: 0 0.3rem; + animation: kf_loading_dot 1s ease-in-out infinite; + opacity: 0; +} + +.loading_dot:nth-child(2) { + animation-delay: 300ms; +} +.loading_dot:nth-child(3) { + animation-delay: 600ms; +} + +.debug_btn { + position: absolute; + top: 0; + right: 50%; + padding: 1rem; + background: var(--accent1); + color: var(--text1); + border-radius: 0.3rem; + cursor: pointer; +} + +.no_comments_wrapper { + bottom: 50%; +} + +.no_comment_section { + display: block; + text-align: center; + opacity: 0.4; +} - .all_fetched{ - margin-top: 4svh; +.all_fetched { + margin-top: 4svh; width: 100%; text-align: center; opacity: 0.3; - } +} - .unread_messages_info{ - position: absolute; - bottom: 3rem; - left: 50%; - transform: translateX(-50%); - right: 0; - padding: .3rem; - color: var(--text1); - background: rgba(255,255,255, .1); - text-align: center; - border-radius: .3rem; - cursor: pointer; - backdrop-filter: blur(5px); - border: 1px solid rgba(255,255,255, .1); - } +.unread_messages_info { + position: absolute; + bottom: 3rem; + left: 50%; + transform: translateX(-50%); + right: 0; + padding: 0.3rem; + color: var(--text1); + background: rgba(255, 255, 255, 0.1); + text-align: center; + border-radius: 0.3rem; + cursor: pointer; + backdrop-filter: blur(5px); + border: 1px solid rgba(255, 255, 255, 0.1); +} - - - .comments_outer.small .connection_status{ +.comments_outer.small .connection_status { right: 0rem; top: 1rem; - } - - .comments_outer.small .comments_header{ +} + +.comments_outer.small .comments_header { position: absolute; left: 0rem; - top: .5rem; + top: 0.5rem; font-size: 1.2rem; - } - - @media only screen and (max-width: 600px){ +} - - .all_fetched{ - margin-top: calc(6svh + 2rem); +@media only screen and (max-width: 600px) { + .all_fetched { + margin-top: calc(6svh + 2rem); } - .mainContainer{ - height: calc(100svh - 240px); - } + .mainContainer { + height: calc(100svh - 240px); + } - .connection_status{ - display: none; - } - - - .mainContainer.tradePage{ - height: calc(100svh - 190px); - } + .connection_status { + display: none; + } - - .commentsWrapper{ - max-height: 64svh; - } + .mainContainer.tradePage { + height: calc(100svh - 190px); + } - .tradePage .commentsWrapper{ - max-height: 70svh; - } + .commentsWrapper { + max-height: 64svh; + } + .tradePage .commentsWrapper { + max-height: 70svh; } - \ No newline at end of file +} diff --git a/src/components/Futa/Comments/Comments.tsx b/src/components/Futa/Comments/Comments.tsx index 32354e3472..eee50a6d80 100644 --- a/src/components/Futa/Comments/Comments.tsx +++ b/src/components/Futa/Comments/Comments.tsx @@ -24,7 +24,10 @@ import { } from '../../Chat/ChatUtils'; import { TradeDataContext } from '../../../contexts/TradeDataContext'; import useOnBoundryChange from '../../../utils/hooks/useOnBoundryChange'; -import { AppStateContext, AppStateContextIF } from '../../../contexts/AppStateContext'; +import { + AppStateContext, + AppStateContextIF, +} from '../../../contexts/AppStateContext'; type ShimmerListProps = { count: number; diff --git a/src/components/Futa/ConsoleComponent/ConsoleComponent.module.css b/src/components/Futa/ConsoleComponent/ConsoleComponent.module.css index a436cecf71..5728548ef4 100644 --- a/src/components/Futa/ConsoleComponent/ConsoleComponent.module.css +++ b/src/components/Futa/ConsoleComponent/ConsoleComponent.module.css @@ -1,18 +1,16 @@ -.container{ - font-family: "Fira Mono"; +.container { + font-family: 'Fira Mono'; font-style: normal; font-weight: 400; line-height: normal; width: 100%; display: flex; flex-direction: column; - - gap: 8px; - + gap: 8px; } -.content{ +.content { display: flex; flex-direction: column; gap: 8px; @@ -20,23 +18,23 @@ overflow-y: scroll; } -.container h3{ - color: var(--text1, #CEFFFF); -text-transform: uppercase; -font-size: 24px; +.container h3 { + color: var(--text1, #ceffff); + text-transform: uppercase; + font-size: 24px; } -.actionItem{ +.actionItem { display: grid; grid-template-columns: 36px 1fr auto; align-items: center; font-size: 12px; - gap: 8px + gap: 8px; } -.actionItem p:first-of-type{ - color: var(--text2) +.actionItem p:first-of-type { + color: var(--text2); } -.actionItem p:nth-of-type(3){ - color: var(--accent1) -} \ No newline at end of file +.actionItem p:nth-of-type(3) { + color: var(--accent1); +} diff --git a/src/components/Futa/Footer/DesktopFooter.module.css b/src/components/Futa/Footer/DesktopFooter.module.css index ebbe7da89d..298ebad8fd 100644 --- a/src/components/Futa/Footer/DesktopFooter.module.css +++ b/src/components/Futa/Footer/DesktopFooter.module.css @@ -10,11 +10,9 @@ .futa_footer_desktop * { font-family: 'Fira Mono', monospace; - } .futa_footer_desktop > div { display: flex; flex-basis: row nowrap; } - diff --git a/src/components/Futa/Footer/Footer.module.css b/src/components/Futa/Footer/Footer.module.css index 267dc191f7..ca500543ba 100644 --- a/src/components/Futa/Footer/Footer.module.css +++ b/src/components/Futa/Footer/Footer.module.css @@ -79,27 +79,27 @@ border-radius: 50%; } -.rpc_container{ +.rpc_container { display: flex; flex-direction: row; align-items: center; gap: 4px; border-left: 1px solid #424649; } -.rpc_status{ +.rpc_status { width: 10px; height: 10px; border-radius: 50%; } -.active_status{ +.active_status { background: var(--green); border: 1px solid var(--green); } -.inactive_status{ +.inactive_status { background: var(--red); border: 1px solid var(--red); } -.unknown_status{ +.unknown_status { border: 1px solid var(--text2); background-color: transparent; } diff --git a/src/components/Futa/Footer/Footer.tsx b/src/components/Futa/Footer/Footer.tsx index 2a4d13b9a4..5d4481933f 100644 --- a/src/components/Futa/Footer/Footer.tsx +++ b/src/components/Futa/Footer/Footer.tsx @@ -30,8 +30,6 @@ const itemVariants = { export default function Footer() { const { tokenA, tokenB } = useContext(TradeDataContext); - - const paramsSlug = formSlugForPairParams({ chain: chainNumToString(tokenA.chainId), tokenA: tokenA.address, @@ -51,9 +49,11 @@ export default function Footer() { { label: 'Swap', link: '/swap/' + paramsSlug, - icon: , + icon: ( + + ), }, - + { label: 'Account', link: '/account', diff --git a/src/components/Futa/Navbar/Navbar.module.css b/src/components/Futa/Navbar/Navbar.module.css index ed9a354f4e..74b6a5cfca 100644 --- a/src/components/Futa/Navbar/Navbar.module.css +++ b/src/components/Futa/Navbar/Navbar.module.css @@ -23,8 +23,6 @@ background: var(--dark2, #12121a); } - - .rightContainer { display: flex; flex-direction: row; @@ -61,7 +59,7 @@ color: var(--text1); } -.skipAnimationContainer{ +.skipAnimationContainer { display: flex; flex-direction: row; align-items: center; @@ -127,10 +125,8 @@ color: var(--text1); } - @media (min-width: 768px) { - - .container{ + .container { position: sticky; top: 0; z-index: 99; @@ -144,6 +140,4 @@ left: auto; right: 16px; } - - } diff --git a/src/components/Futa/Navbar/Navbar.tsx b/src/components/Futa/Navbar/Navbar.tsx index 3a7c189b7f..b0b0a8c607 100644 --- a/src/components/Futa/Navbar/Navbar.tsx +++ b/src/components/Futa/Navbar/Navbar.tsx @@ -109,8 +109,12 @@ export default function Navbar() { const { selectedTicker } = useContext(AuctionsContext); - const { showHomeVideoLocalStorage, setShowHomeVideoLocalStorage, showTutosLocalStorage, bindShowTutosLocalStorage } = - useFutaHomeContext(); + const { + showHomeVideoLocalStorage, + setShowHomeVideoLocalStorage, + showTutosLocalStorage, + bindShowTutosLocalStorage, + } = useFutaHomeContext(); // set page title useEffect(() => { @@ -209,7 +213,7 @@ export default function Navbar() { }, { label: 'Swap', - link: linkGenSwap.getFullURL(swapParams), + link: linkGenSwap.getFullURL(swapParams), id: 'navbar_swap', }, { @@ -273,14 +277,14 @@ export default function Navbar() { Width={36} id='show_home_video_futa_toggle' disabled={false} - /> + /> ); - + const showTutosToggle = (

Show Tutorials

-
-
- - futa logo - - {desktopScreen && linksDisplay} -
-
- {!desktopScreen && } - {!isUserConnected && connectWagmiButton} - -
- setIsDropdownOpen(!isDropdownOpen)} - /> - {/* */} - {isDropdownOpen && ( - - {dropdownData.map((item, idx) => ( - { - openInNewTab(item.link); +
+
+ + futa logo + + {desktopScreen && linksDisplay} +
+
+ {!desktopScreen && } + {!isUserConnected && connectWagmiButton} + +
+ setIsDropdownOpen(!isDropdownOpen)} + /> + {/* */} + {isDropdownOpen && ( + + {dropdownData.map((item, idx) => ( + { + openInNewTab(item.link); - setIsDropdownOpen(false); - }} + setIsDropdownOpen(false); + }} + > +
+ {item.label} +
+
+ ))} + -
- {item.label} -
-
- ))} - - {isConnected && - `Connected address: ${ - ensName ? ensName : accountAddress - }`} - - {skipAnimationToggle} - {showTutosToggle} - - Version 1.0.0 - - - {isUserConnected ? 'LOG OUT' : 'CONNECT WALLET'} - - - )} - {/*
*/} + {isConnected && + `Connected address: ${ + ensName ? ensName : accountAddress + }`} + + {skipAnimationToggle} + {showTutosToggle} + + Version 1.0.0 + + + {isUserConnected + ? 'LOG OUT' + : 'CONNECT WALLET'} + + + )} + {/* */} +
-
- + ); -} \ No newline at end of file +} diff --git a/src/components/Futa/PlaceholderPage/PlaceholderPage.module.css b/src/components/Futa/PlaceholderPage/PlaceholderPage.module.css index b1ad3ff825..7906d4cd83 100644 --- a/src/components/Futa/PlaceholderPage/PlaceholderPage.module.css +++ b/src/components/Futa/PlaceholderPage/PlaceholderPage.module.css @@ -1,5 +1,6 @@ .container { - background: url('../../../assets/futa/images/futaCover.svg') no-repeat center center fixed; + background: url('../../../assets/futa/images/futaCover.svg') no-repeat + center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; @@ -14,29 +15,21 @@ padding: 8px; } -.container h1{ - font-family: "Roboto Mono"; +.container h1 { + font-family: 'Roboto Mono'; font-size: 56px; font-style: normal; font-weight: 400; line-height: normal; text-align: center; margin-bottom: 20%; - text-shadow: 0px 0px 70px rgba(12, 205, 255, 0.60); - color: var(--accent1, #0CCDFF); + text-shadow: 0px 0px 70px rgba(12, 205, 255, 0.6); + color: var(--accent1, #0ccdff); text-transform: uppercase; - - } @media (min-width: 768px) { - .container h1{ - + .container h1 { font-size: 156px; - - - } - - -} \ No newline at end of file +} diff --git a/src/components/Futa/SearchableTicker/SearchableTicker.module.css b/src/components/Futa/SearchableTicker/SearchableTicker.module.css index 4d94149ae0..d70b16ccfb 100644 --- a/src/components/Futa/SearchableTicker/SearchableTicker.module.css +++ b/src/components/Futa/SearchableTicker/SearchableTicker.module.css @@ -12,7 +12,6 @@ flex-direction: column; gap: 8px; width: 100%; - } .header > h3 { @@ -75,7 +74,8 @@ gap: 8px; } -.buttonOn, .buttonOff { +.buttonOn, +.buttonOff { width: 110px; height: 25px; border: 1px solid var(--dark3); @@ -91,7 +91,8 @@ outline: none; } -.buttonOn, .buttonOff:hover { +.buttonOn, +.buttonOff:hover { transition: all var(--animation-speed) ease-in-out; color: var(--accent1); border: 1px solid var(--accent1); @@ -152,7 +153,6 @@ display: flex; flex-direction: column; gap: 4px; - } .timeItem { font-size: 12px; @@ -173,16 +173,14 @@ border-left: 4px solid var(--accent2); border-right: 4px solid var(--accent2); align-items: center; - + font-size: 18px; color: var(--text1); transition: all var(--animation-speed) ease-in-out; cursor: pointer; vertical-align: middle; - height: 32px; - } .tickerItemContainer:hover { @@ -198,7 +196,6 @@ .tickerItemContainer p:nth-of-type(3), .tickerHeader p:nth-of-type(3) { text-align: end; - } .statusContainer { @@ -211,7 +208,6 @@ width: 10px; height: 10px; border-radius: 50%; - } .tickerTableContainer { width: 100%; @@ -247,18 +243,13 @@ scrollbar-color: var(--dark2) var(--dark2); padding-bottom: 1rem; } -.scrolling{ +.scrolling { scrollbar-color: var(--accent1) var(--dark2); } - - - - - - - -.active{ background: #28585D; } +.active { + background: #28585d; +} .hoverActive { background: var(--dark4); } @@ -271,7 +262,7 @@ padding: 0 12px; } -.noAuctionsContent{ +.noAuctionsContent { display: flex; flex-direction: column; align-items: center; @@ -279,11 +270,11 @@ padding: 2rem 0; } -.noAuctionsContent p{ - color: var(--text2) +.noAuctionsContent p { + color: var(--text2); } -.noAuctionsContent button{ +.noAuctionsContent button { display: flex; padding: 2px 8px; justify-content: center; @@ -300,21 +291,19 @@ text-transform: uppercase; } - -.noAuctionsContent button:hover{ - background: var(--accent2) +.noAuctionsContent button:hover { + background: var(--accent2); } -@media (min-width: 780px){ - .container{ +@media (min-width: 780px) { + .container { display: grid; } - .tickerTableContainer{ - height: 100%; + .tickerTableContainer { + height: 100%; } - .tickerTableContent{ + .tickerTableContent { height: 100%; - } } @@ -326,8 +315,6 @@ } } - - @media (max-width: 968px) { .filter_options { flex-wrap: wrap; @@ -338,28 +325,24 @@ justify-content: flex-start; } - .contentContainer{ + .contentContainer { height: calc(100vh - 186px) !important; justify-content: space-between; padding-bottom: 1rem; - } - } @media (max-width: 768px) { - .contentContainer{ + .contentContainer { padding-bottom: 0; } - .tickerTableContent{ + .tickerTableContent { margin-bottom: 3rem; } - } - -.container{ +.container { display: flex; flex-direction: column; -} \ No newline at end of file +} diff --git a/src/components/Futa/Separator/Separator.module.css b/src/components/Futa/Separator/Separator.module.css index 9fab898aa6..0f484f269b 100644 --- a/src/components/Futa/Separator/Separator.module.css +++ b/src/components/Futa/Separator/Separator.module.css @@ -5,16 +5,15 @@ justify-content: center; height: 100%; padding-top: 8px; - } - .dotsContainer { +} +.dotsContainer { flex-grow: 1; display: flex; flex-direction: column; justify-content: space-between; - } - .dot { +} +.dot { width: 1px; height: 1px; background-color: rgb(66, 71, 74); - } - \ No newline at end of file +} diff --git a/src/components/Futa/TickerComponent/TickerComponent.module.css b/src/components/Futa/TickerComponent/TickerComponent.module.css index f3cc24769e..768c6be30c 100644 --- a/src/components/Futa/TickerComponent/TickerComponent.module.css +++ b/src/components/Futa/TickerComponent/TickerComponent.module.css @@ -9,7 +9,6 @@ line-height: normal; } - .content { height: 100%; display: flex; @@ -21,7 +20,7 @@ scrollbar-color: var(--dark2) var(--dark2); } -.scrolling{ +.scrolling { scrollbar-color: var(--accent1) var(--dark2); } .justifyBetween { @@ -37,10 +36,6 @@ display: flex; flex-direction: column; gap: 8px; - - - - } .openBidContainer, diff --git a/src/components/Futa/TooltipLabel/TooltipLabel.module.css b/src/components/Futa/TooltipLabel/TooltipLabel.module.css index 4ca30f505c..de3cb3c54f 100644 --- a/src/components/Futa/TooltipLabel/TooltipLabel.module.css +++ b/src/components/Futa/TooltipLabel/TooltipLabel.module.css @@ -1,14 +1,11 @@ -.tooltipLabelContainer{ +.tooltipLabelContainer { display: flex; flex-direction: row; align-items: center; gap: 4px; - } - -.tooltipTitleDisplay{ - +.tooltipTitleDisplay { padding: 8px; font-size: 14px; background: var(--dark3); @@ -17,9 +14,8 @@ text-transform: uppercase; margin-left: 50px; box-shadow: 0px 10px 20px 0px rgba(0, 0, 0, 0.25); - } -.tickerLabel{ +.tickerLabel { text-transform: uppercase; -} \ No newline at end of file +} diff --git a/src/components/Futa/TypeWriter/TypeWriter.module.css b/src/components/Futa/TypeWriter/TypeWriter.module.css index c845fccd14..eafaeb9915 100644 --- a/src/components/Futa/TypeWriter/TypeWriter.module.css +++ b/src/components/Futa/TypeWriter/TypeWriter.module.css @@ -1,20 +1,20 @@ /* Typewriter.module.css */ .typewriterContainer { display: inline; - - font-size: 1.5rem; + + font-size: 1.5rem; text-align: center; - } - - .typewriterText { +} + +.typewriterText { display: inline; - } - - .cursor { +} + +.cursor { display: inline; - background-color: currentColor; - width: 2px; - height: 1em; - margin-left: 5px; + background-color: currentColor; + width: 2px; + height: 1em; + margin-left: 5px; /* vertical-align: text-bottom; */ - } \ No newline at end of file +} diff --git a/src/components/Global/Account/AccountTabs/Points/Points.module.css b/src/components/Global/Account/AccountTabs/Points/Points.module.css index 9aa79e1657..a4f74f6aba 100644 --- a/src/components/Global/Account/AccountTabs/Points/Points.module.css +++ b/src/components/Global/Account/AccountTabs/Points/Points.module.css @@ -22,14 +22,12 @@ flex-direction: row; } -.point_value{ +.point_value { text-align: end; } - @media only screen and (min-width: 768px) { -.point_value{ - text-align: start; + .point_value { + text-align: start; + } } - -} \ No newline at end of file diff --git a/src/components/Global/Account/AccountTabs/Points/Points.tsx b/src/components/Global/Account/AccountTabs/Points/Points.tsx index f0ad42ec27..26ef3438e6 100644 --- a/src/components/Global/Account/AccountTabs/Points/Points.tsx +++ b/src/components/Global/Account/AccountTabs/Points/Points.tsx @@ -79,13 +79,13 @@ export default function Points(props: propsIF) { connectedAccountActive ? connectedUserBlastXp.dataReceived === true - ? connectedUserBlastXp.data - ?.points ?? '0' + ? (connectedUserBlastXp.data + ?.points ?? '0') : '...' : resolvedUserBlastXp.dataReceived === true - ? resolvedUserBlastXp.data?.points ?? - '0' + ? (resolvedUserBlastXp.data?.points ?? + '0') : '...' } logo={blastLogo} @@ -99,13 +99,13 @@ export default function Points(props: propsIF) { connectedAccountActive ? connectedUserBlastXp.dataReceived === true - ? connectedUserBlastXp.data?.gold ?? - '0' + ? (connectedUserBlastXp.data + ?.gold ?? '0') : '...' : resolvedUserBlastXp.dataReceived === true - ? resolvedUserBlastXp.data?.gold ?? - '0' + ? (resolvedUserBlastXp.data?.gold ?? + '0') : '...' } logo={blastLogo} diff --git a/src/components/Global/Account/AccountTabs/Wallet/Wallet.module.css b/src/components/Global/Account/AccountTabs/Wallet/Wallet.module.css index d0f9cbc5ec..e2e7d8e788 100644 --- a/src/components/Global/Account/AccountTabs/Wallet/Wallet.module.css +++ b/src/components/Global/Account/AccountTabs/Wallet/Wallet.module.css @@ -7,6 +7,4 @@ overflow-y: auto; overflow-x: hidden; padding: 0 8px; - } - diff --git a/src/components/Global/AppOverlay/AppOverlay.module.css b/src/components/Global/AppOverlay/AppOverlay.module.css index b0308b5ba8..6129bd950c 100644 --- a/src/components/Global/AppOverlay/AppOverlay.module.css +++ b/src/components/Global/AppOverlay/AppOverlay.module.css @@ -18,7 +18,8 @@ background: var(--dark2); /* glow/standard */ - box-shadow: 0px 0px 100px rgba(205, 193, 255, 0.3), + box-shadow: + 0px 0px 100px rgba(205, 193, 255, 0.3), 0px 0px 60px rgba(205, 193, 255, 0.3), 0px 0px 20px rgba(205, 193, 255, 0.3), 0px 0px 12px rgba(205, 193, 255, 0.3), diff --git a/src/components/Global/BottomSheet/BottomSheet.module.css b/src/components/Global/BottomSheet/BottomSheet.module.css index 0e709736d4..758f858f83 100644 --- a/src/components/Global/BottomSheet/BottomSheet.module.css +++ b/src/components/Global/BottomSheet/BottomSheet.module.css @@ -1,6 +1,5 @@ /* Overlay that covers the whole screen with a blur effect */ .modal_overlay { - position: fixed; left: 0; top: 0; @@ -10,12 +9,10 @@ backdrop-filter: blur(3px); /* Blur effect */ -webkit-backdrop-filter: blur(3px); /* Safari support */ z-index: 999; /* Make sure it sits behind the modal */ +} - - } - - /* Bottom Sheet (Modal) */ - .bottom_sheet { +/* Bottom Sheet (Modal) */ +.bottom_sheet { position: fixed; left: 0; right: 0; @@ -29,58 +26,55 @@ overflow: hidden; width: 100%; max-width: 100%; - + background: var(--dark2); border: 1px solid var(--dark3); - transition: height 0.3s ease, backdrop-filter 0.3s ease; + transition: + height 0.3s ease, + backdrop-filter 0.3s ease; +} - - } - - .sheet_handle { +.sheet_handle { display: flex; justify-content: center; padding: 10px; cursor: pointer; - } - - .drag_handle { +} + +.drag_handle { width: 40px; height: 5px; background-color: var(--accent1); border-radius: 2.5px; +} - - } - - .sheet_header { +.sheet_header { display: flex; justify-content: space-between; align-items: center; padding: 8px 16px; border-bottom: 1px solid var(--border-color); - } - - .sheet_title { +} + +.sheet_title { font-size: 18px; font-weight: 300; margin: 0; - } - - .close_button { +} + +.close_button { cursor: pointer; color: var(--text-color); - } - - .sheet_content { +} + +.sheet_content { padding: 16px; max-height: 60vh; overflow-y: auto; pointer-events: all; - } - - .sheet_footer { +} + +.sheet_footer { padding: 16px; border-top: 1px solid var(--border-color); - } - \ No newline at end of file +} diff --git a/src/components/Global/BottomSheet/BottomSheet.tsx b/src/components/Global/BottomSheet/BottomSheet.tsx index 9f5a939a28..3317bdc711 100644 --- a/src/components/Global/BottomSheet/BottomSheet.tsx +++ b/src/components/Global/BottomSheet/BottomSheet.tsx @@ -28,7 +28,7 @@ const BottomSheet: React.FC = ({ const controls = useAnimation(); const isMobile = useMediaQuery('(max-width: 500px)'); - // eslint-disable-next-line + // eslint-disable-next-line const [isDragging, setIsDragging] = useState(false); const variants = { @@ -93,9 +93,9 @@ const BottomSheet: React.FC = ({ )} -
-
- {children} -
+
+
{children}
); diff --git a/src/components/Global/CurrencyDisplay/CurrencyDisplay.module.css b/src/components/Global/CurrencyDisplay/CurrencyDisplay.module.css index 48250367de..d2f3826c05 100644 --- a/src/components/Global/CurrencyDisplay/CurrencyDisplay.module.css +++ b/src/components/Global/CurrencyDisplay/CurrencyDisplay.module.css @@ -101,7 +101,9 @@ height: calc(1.5em + 0.75rem + 2px); padding: 0.395rem 0.75rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; text-align: end; border: none; diff --git a/src/components/Global/DetailModals/DetailsHeader/DetailsHeader.module.css b/src/components/Global/DetailModals/DetailsHeader/DetailsHeader.module.css index 6a6b7675b3..2106590451 100644 --- a/src/components/Global/DetailModals/DetailsHeader/DetailsHeader.module.css +++ b/src/components/Global/DetailModals/DetailsHeader/DetailsHeader.module.css @@ -7,15 +7,14 @@ padding: 1rem; cursor: default; height: 60px; */ -display: flex; -align-items: center; -justify-content: space-between; -height: 60px; -padding: 0 1rem; + display: flex; + align-items: center; + justify-content: space-between; + height: 60px; + padding: 0 1rem; } .logo_container { - display: flex; flex-direction: row; align-items: center; @@ -25,12 +24,10 @@ padding: 0 1rem; .logo { height: 35px; - } .logo_text { width: 176px; - } .settings_control { @@ -41,17 +38,15 @@ padding: 0 1rem; justify-content: center; gap: 8px; - - } -.settings_control div, .settings_control svg{ +.settings_control div, +.settings_control svg { display: flex; justify-content: center; align-items: center; } - .info_button { cursor: pointer; outline: none; @@ -62,24 +57,22 @@ padding: 0 1rem; height: 23px; } -@media only screen and (max-width: 600px){ - .container{ +@media only screen and (max-width: 600px) { + .container { height: 40px; - } - -.info_button{ - background: transparent; - width: auto; - height: auto; -} + .info_button { + background: transparent; + width: auto; + height: auto; + } -.logo_text, .logo{ - - margin-left: none; -} -.logo_text{ - width: 110px; + .logo_text, + .logo { + margin-left: none; + } + .logo_text { + width: 110px; + } } -} \ No newline at end of file diff --git a/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.module.css b/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.module.css index 5c123735b8..9f476e730d 100644 --- a/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.module.css +++ b/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.module.css @@ -29,4 +29,4 @@ .mobile_tabs_container .active_button { border: 1px solid var(--accent-accent1, #7371fc); -} \ No newline at end of file +} diff --git a/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.tsx b/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.tsx index e6c924b4a9..627dfbfb45 100644 --- a/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.tsx +++ b/src/components/Global/DetailModals/MobileDetailTabs/MobileDetailTabs.tsx @@ -1,11 +1,11 @@ import { Dispatch, SetStateAction } from 'react'; -import styles from './MobileDetailTabs.module.css' -interface PropsIF{ +import styles from './MobileDetailTabs.module.css'; +interface PropsIF { showShareComponent: boolean; setShowShareComponent: Dispatch>; } export default function MobileDetailTabs(props: PropsIF) { - const { setShowShareComponent, showShareComponent} = props + const { setShowShareComponent, showShareComponent } = props; return (
- ) - - -} \ No newline at end of file + ); +} diff --git a/src/components/Global/DetailModals/OrderDetails/OrderDetailsSimplify/OrderDetailsSimplify.module.css b/src/components/Global/DetailModals/OrderDetails/OrderDetailsSimplify/OrderDetailsSimplify.module.css index ea03157320..db10dc2d0d 100644 --- a/src/components/Global/DetailModals/OrderDetails/OrderDetailsSimplify/OrderDetailsSimplify.module.css +++ b/src/components/Global/DetailModals/OrderDetails/OrderDetailsSimplify/OrderDetailsSimplify.module.css @@ -99,15 +99,12 @@ } } - @media (max-width: 768px) { - .main_container{ - padding: 0; + .main_container { + padding: 0; } - .main_container section{ + .main_container section { overflow-y: auto; } - - -} \ No newline at end of file +} diff --git a/src/components/Global/DetailModals/RangeDetails/RangeDetailsSimplify/RangeDetailsSimplify.module.css b/src/components/Global/DetailModals/RangeDetails/RangeDetailsSimplify/RangeDetailsSimplify.module.css index cd695987c5..9711e15870 100644 --- a/src/components/Global/DetailModals/RangeDetails/RangeDetailsSimplify/RangeDetailsSimplify.module.css +++ b/src/components/Global/DetailModals/RangeDetails/RangeDetailsSimplify/RangeDetailsSimplify.module.css @@ -41,15 +41,13 @@ gap: 4px; } @media (max-width: 768px) { - .main_container{ - padding: 0; + .main_container { + padding: 0; } - .main_container section{ + .main_container section { overflow-y: auto; } - - } @media only screen and (min-width: 767px) { diff --git a/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsPriceInfo/TransactionDetailsPriceInfo.module.css b/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsPriceInfo/TransactionDetailsPriceInfo.module.css index dbf4db4763..c632a60194 100644 --- a/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsPriceInfo/TransactionDetailsPriceInfo.module.css +++ b/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsPriceInfo/TransactionDetailsPriceInfo.module.css @@ -24,7 +24,6 @@ align-items: center; gap: 8px; border-radius: var(--border-radius); - font-weight: 300; color: var(--text2); @@ -108,8 +107,8 @@ line-height: var(--header1-lh); color: var(--text1); font-weight: 300; - - padding-left: 8px; + + padding-left: 8px; } .tx_details { /* cursor: pointer; */ @@ -150,25 +149,23 @@ gap: 4px; } -.dividerMobile{ +.dividerMobile { width: 100%; height: 1px; - background: var(--dark3) + background: var(--dark3); } - @media only screen and (min-width: 768px) { .token_pair_details p { font-size: var(--header2-size); line-height: var(--header2-lh); - } - .min_max_price{ + .min_max_price { padding-top: 0; } - .info_container{ + .info_container { padding: 0.6rem; } .price_info_container, @@ -176,14 +173,14 @@ gap: 1rem; } - .dividerMobile{ + .dividerMobile { display: none; } - .token_pair_details{ + .token_pair_details { padding-bottom: 0; } - .rowPadding{ + .rowPadding { padding-bottom: none; } } diff --git a/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsSimplify/TransactionDetailsSimplify.module.css b/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsSimplify/TransactionDetailsSimplify.module.css index bdf6a91f2a..e1063033a8 100644 --- a/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsSimplify/TransactionDetailsSimplify.module.css +++ b/src/components/Global/DetailModals/TransactionDetails/TransactionDetailsSimplify/TransactionDetailsSimplify.module.css @@ -8,9 +8,6 @@ -o-animation: fadeIn ease 1s; -ms-animation: fadeIn ease 1s; border: none; - - - } .info_content { @@ -22,7 +19,6 @@ padding: 1rem; } - .link_row { display: flex; flex-direction: row; @@ -31,20 +27,18 @@ cursor: default; } @media (max-width: 768px) { - .tx_details_container{ + .tx_details_container { border: 1px solid var(--dark3); min-height: 60vh; } -.info_content{ - padding: 0; - border: none; -} - - -.info_content > div:nth-child(even) { - background-color: var(--dark2) -} + .info_content { + padding: 0; + border: none; + } + .info_content > div:nth-child(even) { + background-color: var(--dark2); + } } @keyframes fadeIn { diff --git a/src/components/Global/DetailModals/TransactionDetailsGraph/TransactionDetailsLiquidityGraph.tsx b/src/components/Global/DetailModals/TransactionDetailsGraph/TransactionDetailsLiquidityGraph.tsx index 3dfebe29c8..3aae159845 100644 --- a/src/components/Global/DetailModals/TransactionDetailsGraph/TransactionDetailsLiquidityGraph.tsx +++ b/src/components/Global/DetailModals/TransactionDetailsGraph/TransactionDetailsLiquidityGraph.tsx @@ -10,8 +10,14 @@ import { import * as d3 from 'd3'; import * as d3fc from 'd3fc'; import { fetchPoolLiquidity } from '../../../../ambient-utils/api'; -import { CachedDataContext, CachedDataContextIF } from '../../../../contexts/CachedDataContext'; -import { CrocEnvContext, CrocEnvContextIF } from '../../../../contexts/CrocEnvContext'; +import { + CachedDataContext, + CachedDataContextIF, +} from '../../../../contexts/CachedDataContext'; +import { + CrocEnvContext, + CrocEnvContextIF, +} from '../../../../contexts/CrocEnvContext'; import { CandleDataIF, LiquidityRangeIF, @@ -29,7 +35,10 @@ import { } from '../../../../pages/platformAmbient/Chart/Liquidity/LiquiditySeries/AreaSeries'; import { createLiquidityLineSeries } from '../../../../pages/platformAmbient/Chart/Liquidity/LiquiditySeries/LineSeries'; import { ChartThemeIF } from '../../../../contexts/ChartContext'; -import { AppStateContext, AppStateContextIF } from '../../../../contexts/AppStateContext'; +import { + AppStateContext, + AppStateContextIF, +} from '../../../../contexts/AppStateContext'; interface propsIF { tx: TransactionIF; @@ -51,9 +60,7 @@ type liquidityChartData = { liquidityDataBid: LiquidityRangeIF[]; }; -export default function TransactionDetailsLiquidityGraph( - props: propsIF, -) { +export default function TransactionDetailsLiquidityGraph(props: propsIF) { const { activeNetwork } = useContext(AppStateContext); const { cachedFetchTokenPrice, cachedQuerySpotTick } = useContext(CachedDataContext); diff --git a/src/components/Global/Divider/Divider.module.css b/src/components/Global/Divider/Divider.module.css index 6285cdc8ee..e64344f5b7 100644 --- a/src/components/Global/Divider/Divider.module.css +++ b/src/components/Global/Divider/Divider.module.css @@ -1,6 +1,6 @@ .divider { background: var(--dark3); width: 100%; - + height: 1px; } diff --git a/src/components/Global/DropdownMenu2/DropdownMenu2.module.css b/src/components/Global/DropdownMenu2/DropdownMenu2.module.css index ddbe32d43d..468982aae1 100644 --- a/src/components/Global/DropdownMenu2/DropdownMenu2.module.css +++ b/src/components/Global/DropdownMenu2/DropdownMenu2.module.css @@ -4,7 +4,7 @@ gap={4} justifyContent='center' fullWidth */ -.menu{ +.menu { width: 100%; display: flex; justify-content: center; @@ -14,39 +14,36 @@ fullWidth */ border-right: 4px solid transparent; transition: 0.2s cubic-bezier(0.6, -0.28, 0.735, 0.045); z-index: 999; - } -.menuItem{ +.menuItem { display: flex; cursor: pointer; z-index: 999; gap: 4px; } -.menuContainer{ +.menuContainer { width: 100%; display: flex; flex-direction: column; } -.iconContainer{ +.iconContainer { display: flex; justify-content: center; align-items: center; } -.iconContainer img{ +.iconContainer img { margin-right: 0.5em; } @media only screen and (min-width: 768px) { -.menuContainer{ - position: absolute; - z-index: 999; -} - - + .menuContainer { + position: absolute; + z-index: 999; + } } @media only screen and (min-width: 1020px) { .menu { gap: 0; } -} \ No newline at end of file +} diff --git a/src/components/Global/Explore/DexTokens/DexTokens.module.css b/src/components/Global/Explore/DexTokens/DexTokens.module.css index 44cdfba245..c6ece2a385 100644 --- a/src/components/Global/Explore/DexTokens/DexTokens.module.css +++ b/src/components/Global/Explore/DexTokens/DexTokens.module.css @@ -1,4 +1,3 @@ - .mainContainer { box-sizing: border-box; width: 100%; @@ -139,7 +138,7 @@ } @media only screen and (min-width: 600px) { - .contentContainer{ + .contentContainer { padding-right: 1rem; overflow-x: auto; } @@ -148,15 +147,11 @@ width: 2px; right: 18px; } - - } @media only screen and (min-width: 768px) { .mainContainer { border: none; - - } .no_results { height: 70%; diff --git a/src/components/Global/Explore/ExploreToggle/ExploreToggle.module.css b/src/components/Global/Explore/ExploreToggle/ExploreToggle.module.css index 1a6a91764b..f04a1b3bd8 100644 --- a/src/components/Global/Explore/ExploreToggle/ExploreToggle.module.css +++ b/src/components/Global/Explore/ExploreToggle/ExploreToggle.module.css @@ -1,34 +1,30 @@ - - - -.container button{ +.container button { background: transparent; outline: none; border: none; color: var(--text3); font-size: 13px; -font-style: normal; -font-weight: 500; -border-bottom: 1px solid transparent; -width: 150px; -cursor: pointer; -padding: 4px; + font-style: normal; + font-weight: 500; + border-bottom: 1px solid transparent; + width: 150px; + cursor: pointer; + padding: 4px; } -.activeButton{ - color: var(--accent1) !important ; - border-bottom: 1px solid var(--accent1) !important; +.activeButton { + color: var(--accent1) !important ; + border-bottom: 1px solid var(--accent1) !important; } @media only screen and (max-width: 768px) { -.container{ - width: 100%; - display: grid; - grid-template-columns: 1fr 1fr; -} + .container { + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr; + } -.container button{ - width: 100%; + .container button { + width: 100%; + } } - -} \ No newline at end of file diff --git a/src/components/Global/Explore/ExploreToggle/ExploreToggle.tsx b/src/components/Global/Explore/ExploreToggle/ExploreToggle.tsx index a1195d58ba..1c2138b8d0 100644 --- a/src/components/Global/Explore/ExploreToggle/ExploreToggle.tsx +++ b/src/components/Global/Explore/ExploreToggle/ExploreToggle.tsx @@ -1,18 +1,26 @@ -import styles from './ExploreToggle.module.css' +import styles from './ExploreToggle.module.css'; -interface PropsIF{ +interface PropsIF { view: 'pools' | 'tokens'; - handleToggle(): void + handleToggle(): void; } export default function ExploreToggle(props: PropsIF) { - const { view, handleToggle} = props - - + const { view, handleToggle } = props; return (
- - + +
- ) -} \ No newline at end of file + ); +} diff --git a/src/components/Global/Explore/PoolRow/PoolRow.module.css b/src/components/Global/Explore/PoolRow/PoolRow.module.css index b26e9d4bc6..3aea1c488f 100644 --- a/src/components/Global/Explore/PoolRow/PoolRow.module.css +++ b/src/components/Global/Explore/PoolRow/PoolRow.module.css @@ -14,14 +14,13 @@ /* padding: 0 8px; */ } -.gridContainer:hover{ +.gridContainer:hover { background: var(--dark2); transition: all var(--animation-speed) ease-in-out; cursor: pointer; border-radius: 4px; } - .gridItem { box-sizing: border-box; display: flex; @@ -72,7 +71,7 @@ background-position: -100% 0; } } -.skeletonItem{ +.skeletonItem { background: linear-gradient( to right, var(--dark2) 0%, @@ -86,7 +85,6 @@ color: transparent; pointer-events: none !important; - } /* END OF SKELETON */ @@ -106,14 +104,11 @@ } @media only screen and (min-width: 1024px) { - - .gridItem, .tradeButton, .tradeButton, .poolName { width: 100px; - } .gridItem { @@ -126,9 +121,5 @@ .tradeButton, .poolName { width: 133px; - } - - } - diff --git a/src/components/Global/Explore/PoolRow/PoolRow.tsx b/src/components/Global/Explore/PoolRow/PoolRow.tsx index 66b78435ab..bc583189aa 100644 --- a/src/components/Global/Explore/PoolRow/PoolRow.tsx +++ b/src/components/Global/Explore/PoolRow/PoolRow.tsx @@ -54,7 +54,6 @@ export default function PoolRow(props: propsIF) { }) + '%' : '...'; - const tokenIconsDisplay = ( {displayItems .filter((item) => item !== null) // Filter out null values diff --git a/src/components/Global/Explore/TokenRow/TokenRow.module.css b/src/components/Global/Explore/TokenRow/TokenRow.module.css index 3f7bc19da9..8df5d84903 100644 --- a/src/components/Global/Explore/TokenRow/TokenRow.module.css +++ b/src/components/Global/Explore/TokenRow/TokenRow.module.css @@ -1,4 +1,4 @@ -.gridContainer{ +.gridContainer { box-sizing: border-box; width: 100%; display: flex; @@ -6,25 +6,22 @@ align-items: center; min-width: 100%; min-height: 40px; - + gap: 4px; - - white-space: nowrap; + + white-space: nowrap; padding-left: 8px; cursor: pointer !important; /* padding: 0 8px; */ - - - } -.gridContainer:hover{ +.gridContainer:hover { background: var(--dark2); transition: all var(--animation-speed) ease-in-out; border-radius: 4px; } -.gridItem{ +.gridItem { box-sizing: border-box; display: flex; flex-grow: 1; @@ -36,31 +33,23 @@ font-size: 12px; width: 60px; justify-content: end; - - - - } -.tokenIcon{ +.tokenIcon { width: 100%; display: flex; justify-content: flex-start !important; } -.tradeButton{ +.tradeButton { width: 25px; - } - -.poolName{ - justify-content: flex-start !important; - - +.poolName { + justify-content: flex-start !important; } -.tradeIcon{ +.tradeIcon { width: 25px; height: 25px; background: var(--dark2); @@ -81,7 +70,7 @@ background-position: -100% 0; } } -.skeletonItem{ +.skeletonItem { background: linear-gradient( to right, var(--dark2) 0%, @@ -95,39 +84,39 @@ color: transparent; pointer-events: none !important; - } /* END OF SKELETON */ @media only screen and (min-width: 768px) { - - .gridContainer{ + .gridContainer { gap: 8px; } - .gridItem{ + .gridItem { width: 70px; justify-content: flex-end; } - .tradeButton{ -width: 70px; + .tradeButton { + width: 70px; } +} - +@media only screen and (min-width: 1024px) { + .gridItem, + .tradeButton, + .tradeButton, + .poolName { + width: 100px; } - @media only screen and (min-width: 1024px) { - .gridItem, .tradeButton, .tradeButton, .poolName{ - width: 100px; - } - - .gridItem{ - font-size: 14px; - } + .gridItem { + font-size: 14px; } - @media only screen and (min-width: 1280px) { - .gridItem, .tradeButton, .tradeButton, .poolName{ - width: 133px; - } - - - } \ No newline at end of file +} +@media only screen and (min-width: 1280px) { + .gridItem, + .tradeButton, + .tradeButton, + .poolName { + width: 133px; + } +} diff --git a/src/components/Global/Explore/TokenRow/TokenRowSkeleton.tsx b/src/components/Global/Explore/TokenRow/TokenRowSkeleton.tsx index a2f4d50825..f05f12ac96 100644 --- a/src/components/Global/Explore/TokenRow/TokenRowSkeleton.tsx +++ b/src/components/Global/Explore/TokenRow/TokenRowSkeleton.tsx @@ -1,9 +1,8 @@ import useMediaQuery from '../../../../utils/hooks/useMediaQuery'; -import styles from './TokenRow.module.css' +import styles from './TokenRow.module.css'; export default function TokenRowSkeleton() { const desktopView = useMediaQuery('(min-width: 768px)'); - const displayItems = [ // mobileScrenView ? null : { @@ -31,21 +30,20 @@ export default function TokenRowSkeleton() { classname: styles.tradeButton, }, ]; - return (
- {displayItems - .filter((item) => item !== null) // Filter out null values - .map((item, idx) => ( -
- {item?.element} -
- ))} -
- ) -} \ No newline at end of file + {displayItems + .filter((item) => item !== null) // Filter out null values + .map((item, idx) => ( +
+ {item?.element} +
+ ))} +
+ ); +} diff --git a/src/components/Global/Explore/TopPools/TopPools.module.css b/src/components/Global/Explore/TopPools/TopPools.module.css index 0d29131ec6..e32bae0939 100644 --- a/src/components/Global/Explore/TopPools/TopPools.module.css +++ b/src/components/Global/Explore/TopPools/TopPools.module.css @@ -1,4 +1,3 @@ - .mainContainer { box-sizing: border-box; width: 100%; @@ -17,8 +16,6 @@ border-radius: 4px; } - - .headerContainer { box-sizing: border-box; width: 100%; @@ -115,8 +112,6 @@ display: flex; justify-content: center; align-items: center; - - } .no_results button { @@ -144,7 +139,7 @@ color: var(--text2); } @media only screen and (min-width: 600px) { - .contentContainer{ + .contentContainer { padding-right: 1rem; overflow-x: auto; } @@ -153,8 +148,6 @@ width: 2px; right: 18px; } - - } @media only screen and (min-width: 768px) { @@ -162,7 +155,6 @@ border: none; } - .no_results { height: 70%; } @@ -197,7 +189,6 @@ .tradeButton, .poolName { width: 100px; - } } @media only screen and (min-width: 1280px) { @@ -206,6 +197,5 @@ .tradeButton, .poolName { width: 133px; - } } diff --git a/src/components/Global/Explore/TopPools/TopPools.tsx b/src/components/Global/Explore/TopPools/TopPools.tsx index 6775d5be04..88a46bc56c 100644 --- a/src/components/Global/Explore/TopPools/TopPools.tsx +++ b/src/components/Global/Explore/TopPools/TopPools.tsx @@ -163,8 +163,7 @@ function TopPools(props: propsIF) { const skeletonDisplay = tempItems.map((item, idx) => ( - )) - + )); return (
)) - ) : searchQuery ? (
No pools match the search query: {searchQuery} diff --git a/src/components/Global/FooterNav/FooterNav.module.css b/src/components/Global/FooterNav/FooterNav.module.css index 97a138fac0..9fe00aafa5 100644 --- a/src/components/Global/FooterNav/FooterNav.module.css +++ b/src/components/Global/FooterNav/FooterNav.module.css @@ -1,5 +1,5 @@ .nav { - position: fixed; + position: fixed; bottom: 0; left: 0; right: 0; @@ -11,24 +11,22 @@ border-top-left-radius: 32px; border-top-right-radius: 32px; box-shadow: 0px 5px 40px rgba(0, 0, 0, 0.8); - + height: 56px; - z-index:999; + z-index: 999; width: 98%; margin: 0 auto; border-top: 1px solid var(--dark3); gap: 4px; - } .navItem { - width: 100%; + width: 100%; display: flex; justify-content: center; align-items: center; cursor: pointer !important; transition: all 0.2s ease-out; - } .link { @@ -41,7 +39,6 @@ gap: 4px; font-size: var(--body-size); line-height: var(--body-lh); - } .icon { @@ -50,10 +47,9 @@ } .active { - gap: 4px; color: var(--accent1); } -.navText{ +.navText { display: flex; -} \ No newline at end of file +} diff --git a/src/components/Global/LevelsCard/LevelsCard.module.css b/src/components/Global/LevelsCard/LevelsCard.module.css index d2d9b388df..5cfa4ca6e1 100644 --- a/src/components/Global/LevelsCard/LevelsCard.module.css +++ b/src/components/Global/LevelsCard/LevelsCard.module.css @@ -1,48 +1,46 @@ -.main_container{ +.main_container { display: flex; -padding: 8px 32px; -flex-direction: column; -/* justify-content: center; */ -align-items: center; -gap: 16px; -background: rgba(23, 29, 39, 0.30); -margin: 0 auto; + padding: 8px 32px; + flex-direction: column; + /* justify-content: center; */ + align-items: center; + gap: 16px; + background: rgba(23, 29, 39, 0.3); + margin: 0 auto; -/* blur/card */ -backdrop-filter: blur(10px); -border-radius: 4px; + /* blur/card */ + backdrop-filter: blur(10px); + border-radius: 4px; } -.main_container_full{ +.main_container_full { display: flex; padding: 8px 32px; flex-direction: column; /* align-items: center; */ gap: 16px; - background: rgba(23, 29, 39, 0.30); + background: rgba(23, 29, 39, 0.3); margin: 0 auto; - + /* blur/card */ backdrop-filter: blur(10px); border-radius: 4px; - - } +} -.user_image{ +.user_image { width: 50px; height: 50px; border-radius: 50%; - } -.user_image img{ +.user_image img { max-height: 100%; max-width: 100%; /* object-fit: contain; */ border-radius: 50%; } -.point_display_container{ +.point_display_container { width: 100%; display: flex; flex-direction: column; @@ -55,13 +53,12 @@ border-radius: 4px; border-radius: 4px; } -.divider{ +.divider { width: 100%; height: 1px; - background: var(--dark3) + background: var(--dark3); } - .level_only_container { display: flex; flex-direction: row; @@ -93,43 +90,35 @@ border-radius: 4px; align-items: center; } -.auto_width{ +.auto_width { min-width: 60px !important; height: 60px !important; } - .link{ - - font-size: var(--body-size); - line-height: var(--body-lh); - color: var(--accent5); - text-decoration: underline; - display: flex; - justify-content: center; - cursor: pointer; - - } +.link { + font-size: var(--body-size); + line-height: var(--body-lh); + color: var(--accent5); + text-decoration: underline; + display: flex; + justify-content: center; + cursor: pointer; +} -.mobile_dropdown{ +.mobile_dropdown { width: 100%; justify-content: space-between; } @media (min-width: 768px) { - - .main_container{ - -height: 650px; -margin: auto; - + .main_container { + height: 650px; + margin: auto; } - .main_container_full{ - + .main_container_full { height: 650px; - } + } .point_display_container { - height: 65px; + height: 65px; } - - -} \ No newline at end of file +} diff --git a/src/components/Global/LevelsCard/PointsHistoryDisplay/PointsHistoryDisplay.module.css b/src/components/Global/LevelsCard/PointsHistoryDisplay/PointsHistoryDisplay.module.css index 424c4e6ad8..81e0090f2c 100644 --- a/src/components/Global/LevelsCard/PointsHistoryDisplay/PointsHistoryDisplay.module.css +++ b/src/components/Global/LevelsCard/PointsHistoryDisplay/PointsHistoryDisplay.module.css @@ -1,15 +1,12 @@ -.point_history_container{ - +.point_history_container { padding: 8px; display: flex; flex-direction: column; - gap:8px; - -width: 100%; - + gap: 8px; + width: 100%; } -.points_history_content{ +.points_history_content { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--dark3); @@ -19,17 +16,15 @@ width: 100%; padding: 0 8px; } - - -.points_history_header{ +.points_history_header { display: grid; grid-template-columns: repeat(3, 1fr); padding: 0 8px; } -.hide_scroll{ +.hide_scroll { overflow-y: hidden; } -.view_more_link{ +.view_more_link { background: var(--dark2); border: none; outline: none; @@ -40,11 +35,11 @@ width: 100%; padding: 1px 12px; text-decoration: none; border-radius: 6.25rem; - cursor: pointer; + cursor: pointer; font-size: 11px; color: var(--text2); display: flex; justify-content: center; align-items: center; -} \ No newline at end of file +} diff --git a/src/components/Global/LevelsCard/UserLevelDisplay.tsx b/src/components/Global/LevelsCard/UserLevelDisplay.tsx index ff52a2e7b9..0acee752d1 100644 --- a/src/components/Global/LevelsCard/UserLevelDisplay.tsx +++ b/src/components/Global/LevelsCard/UserLevelDisplay.tsx @@ -33,8 +33,8 @@ export default function UserLevelDisplay(props: propsIF) { const linkToNavigateTo: string = user ? `/${user}/xp` : resolvedAddressFromContext - ? `/${resolvedAddressFromContext}/xp` - : `/${userAddress}/xp`; + ? `/${resolvedAddressFromContext}/xp` + : `/${userAddress}/xp`; const progressPercentage = progressToNextLevel(globalPoints ?? 0); @@ -51,7 +51,10 @@ export default function UserLevelDisplay(props: propsIF) { }); return ( - +
2 ? styles.auto_width : '' diff --git a/src/components/Global/Medal/Medal.module.css b/src/components/Global/Medal/Medal.module.css index c4ca17a048..e594cb993b 100644 --- a/src/components/Global/Medal/Medal.module.css +++ b/src/components/Global/Medal/Medal.module.css @@ -20,7 +20,9 @@ border-width: 0.2em; border-style: solid; z-index: 1; - box-shadow: inset 0 0 0 #a7b2b8, 2px 2px 0 rgba(0, 0, 0, 0.08); + box-shadow: + inset 0 0 0 #a7b2b8, + 2px 2px 0 rgba(0, 0, 0, 0.08); border-color: #edeff1; text-shadow: 2px 2px 0 #98a6ad; background: linear-gradient(to bottom right, #d1d7da 50%, #c3cbcf 50%); @@ -44,32 +46,42 @@ border-width: 0.2em; border-style: solid; z-index: 1; - box-shadow: inset 0 0 0 #a7b2b8, 2px 2px 0 rgba(0, 0, 0, 0.08); + box-shadow: + inset 0 0 0 #a7b2b8, + 2px 2px 0 rgba(0, 0, 0, 0.08); border-color: var(--dark2); text-shadow: 2px 2px 0 #98a6ad; background: var(--title-gradient); } .quiz_medal__circle__gold { - box-shadow: inset 0 0 0 #b67d05, 2px 2px 0 rgba(0, 0, 0, 0.08); + box-shadow: + inset 0 0 0 #b67d05, + 2px 2px 0 rgba(0, 0, 0, 0.08); border-color: #fadd40; text-shadow: 0 0 4px #9d6c04; background: linear-gradient(to bottom right, #f9ad0e 50%, #e89f06 50%); } .quiz_medal__circle__silver { - box-shadow: inset 0 0 0 #a7b2b8, 2px 2px 0 rgba(0, 0, 0, 0.08); + box-shadow: + inset 0 0 0 #a7b2b8, + 2px 2px 0 rgba(0, 0, 0, 0.08); border-color: #edeff1; text-shadow: 0px 0px 4px #98a6ad; background: linear-gradient(to bottom right, #d1d7da 50%, #c3cbcf 50%); } .quiz_medal__circle__bronze { - box-shadow: inset 0 0 0 #955405, 2px 2px 0 rgba(0, 0, 0, 0.08); + box-shadow: + inset 0 0 0 #955405, + 2px 2px 0 rgba(0, 0, 0, 0.08); border-color: #f7bb23; text-shadow: 0 0 4px #7d4604; background: linear-gradient(to bottom right, #df7e08 50%, #c67007 50%); } .quiz_medal__circle__simple { - box-shadow: inset 0 0 0 #a7b2b8, 2px 2px 0 rgba(0, 0, 0, 0.08); + box-shadow: + inset 0 0 0 #a7b2b8, + 2px 2px 0 rgba(0, 0, 0, 0.08); border-color: var(--dark2); text-shadow: 0px 0px 4px #98a6ad; background: linear-gradient(to bottom right, #00070b 50%, #000e14 50%); diff --git a/src/components/Global/Modal/Modal.module.css b/src/components/Global/Modal/Modal.module.css index ff72e7eb5d..f8ba3d6659 100644 --- a/src/components/Global/Modal/Modal.module.css +++ b/src/components/Global/Modal/Modal.module.css @@ -9,7 +9,6 @@ backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); z-index: 999; - } /* Modal container (for desktop) */ @@ -50,7 +49,6 @@ /* max-height: 80vh; */ color: var(--text1); /* min-height: 80vh; */ - } .no_background_modal { @@ -102,7 +100,6 @@ /* Bottom Sheet (for mobile) */ .bottom_sheet { - position: fixed; left: 0; right: 0; @@ -121,11 +118,9 @@ height 0.3s ease, backdrop-filter 0.3s ease; - max-height: 70sdh; - overflow-y: auto; - z-index: 999; - - + max-height: 70sdh; + overflow-y: auto; + z-index: 999; } /* Drag handle for bottom sheet */ diff --git a/src/components/Global/Modal/useModal.ts b/src/components/Global/Modal/useModal.ts index 5e66f5edad..2f6c66bd41 100644 --- a/src/components/Global/Modal/useModal.ts +++ b/src/components/Global/Modal/useModal.ts @@ -35,7 +35,6 @@ export const useModal = ( // useKeyPress('Escape', closeModal); - // return all data and functions needed for local use return [isModalOpen, openModal, closeModal]; }; diff --git a/src/components/Global/ModalHeader/ModalHeader.module.css b/src/components/Global/ModalHeader/ModalHeader.module.css index 1f404398e6..83443571fc 100644 --- a/src/components/Global/ModalHeader/ModalHeader.module.css +++ b/src/components/Global/ModalHeader/ModalHeader.module.css @@ -10,7 +10,6 @@ justify-content: space-between; align-items: center; - padding: 1rem; border-radius: var(--border-radius); } diff --git a/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.module.css b/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.module.css index 9cd9b3d3e7..1848ff7309 100644 --- a/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.module.css +++ b/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.module.css @@ -1,5 +1,4 @@ - -.circleContainer{ +.circleContainer { position: relative; width: 20px; height: 20px; @@ -12,13 +11,13 @@ padding: none; } -.circleContainerFuta{ +.circleContainerFuta { width: 16.66px; height: 16.66px; background-color: var(--accent1); border-radius: 0; } -.circleButton{ +.circleButton { outline: none; padding: none; border: none; @@ -54,8 +53,6 @@ user-select: none; } - - .activityIndicatorDiv span { background: var(--title-gradient); -webkit-background-clip: text; diff --git a/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.tsx b/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.tsx index ae9e21e0ff..38f7bce8f7 100644 --- a/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.tsx +++ b/src/components/Global/NotificationCenter/ActivityIndicator/ActivityIndicator.tsx @@ -6,8 +6,7 @@ import React, { useContext, } from 'react'; import { AnimatePresence, useAnimation, motion } from 'framer-motion'; -import styles from './ActivityIndicator.module.css' - +import styles from './ActivityIndicator.module.css'; import { AppStateContext } from '../../../../contexts/AppStateContext'; import { BrandContext } from '../../../../contexts/BrandContext'; @@ -57,8 +56,13 @@ const ActivityIndicator = (props: AcitivtyIndicatorProps) => { const isFuta = ['futa'].includes(platformName); const pendingCircle = ( - ); @@ -66,7 +70,8 @@ const ActivityIndicator = (props: AcitivtyIndicatorProps) => { return ( {value > 0 && ( - { tabIndex={0} aria-label='Notification center' > - { const [showNotificationTable, setShowNotificationTable] = useState(false); - const smallScreen = useMediaQuery('(max-width: 768px)'); - + const smallScreen = useMediaQuery('(max-width: 768px)'); const { pendingTransactions, sessionReceipts } = useContext(ReceiptContext); @@ -36,7 +42,7 @@ const NotificationCenter = () => { const activityCenterRef = useRef(null); const clickOutsideHandler = (event: Event) => { - if (smallScreen) return null + if (smallScreen) return null; if ( !activityCenterRef.current?.contains(event?.target as Node) && !notificationItemRef.current?.contains(event?.target as Node) @@ -48,11 +54,14 @@ const NotificationCenter = () => { } }; - const escFunction = useCallback((event: KeyboardEvent) => { - if (event.key === 'Escape') { - setShowNotificationTable(false); - } - }, [showNotificationTable]); + const escFunction = useCallback( + (event: KeyboardEvent) => { + if (event.key === 'Escape') { + setShowNotificationTable(false); + } + }, + [showNotificationTable], + ); useEffect(() => { document.addEventListener('keydown', escFunction, false); diff --git a/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.module.css b/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.module.css index a29dc3e058..599fcd4dfe 100644 --- a/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.module.css +++ b/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.module.css @@ -1,6 +1,6 @@ -.mainContainer{ +.mainContainer { z-index: 15; - + border-radius: var(--border-radius); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); @@ -8,17 +8,16 @@ min-height: 400px; } -.container{ +.container { display: flex; flex-direction: column; justify-content: space-between; width: 100%; z-index: 10; transition: all 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55); - } -.header{ +.header { display: none; color: var(--text1); padding: 1rem; @@ -27,7 +26,7 @@ height: 50px; font-size: 16px; } -.content{ +.content { display: flex; flex-direction: column; gap: 8px; @@ -65,33 +64,28 @@ } @media only screen and (min-width: 768px) { - - .mainContainer{ + .mainContainer { width: 380px; height: calc(100vh - 9rem); position: absolute; right: 0; top: 60px; - ; } - - .containerFuta{ + + .containerFuta { width: 95%; right: 2.2rem; } - .container{ + .container { width: 100%; border: 1px solid var(--accent1); height: 400px; position: absolute; box-shadow: 0px 35px 20px rgba(0, 0, 0, 0.3); border-radius: var(--border-radius); - background: var(--dark1) - -} -.header{ -display: flex; + background: var(--dark1); + } + .header { + display: flex; + } } - - -} \ No newline at end of file diff --git a/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.tsx b/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.tsx index 45ed9ef086..86423ea89f 100644 --- a/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.tsx +++ b/src/components/Global/NotificationCenter/NotificationTable/NotificationTable.tsx @@ -92,7 +92,6 @@ const NotificationTable = (props: NotificationTableProps) => { ); const modalVersion = (
- setShowNotificationTable(false)} @@ -107,8 +106,8 @@ const NotificationTable = (props: NotificationTableProps) => { ); if (!showNotificationTable) return null; - - return showMobileVersion ? modalVersion : mainContent + + return showMobileVersion ? modalVersion : mainContent; }; export default NotificationTable; diff --git a/src/components/Global/OpenOrderStatus/OpenOrderStatus.module.css b/src/components/Global/OpenOrderStatus/OpenOrderStatus.module.css index 34dc863a33..739c6d64b4 100644 --- a/src/components/Global/OpenOrderStatus/OpenOrderStatus.module.css +++ b/src/components/Global/OpenOrderStatus/OpenOrderStatus.module.css @@ -20,7 +20,6 @@ transform: rotate(-90deg); } - .circle_background { fill: none; stroke: var(--text2); diff --git a/src/components/Global/PointSystemPopup/PointSystemPopup.module.css b/src/components/Global/PointSystemPopup/PointSystemPopup.module.css index ebbbcf4c13..2e09a1d4a5 100644 --- a/src/components/Global/PointSystemPopup/PointSystemPopup.module.css +++ b/src/components/Global/PointSystemPopup/PointSystemPopup.module.css @@ -23,11 +23,8 @@ display: flex; flex-direction: column; - background: linear-gradient( - 0deg, - rgba(0, 0, 0, 0.5) 0%, - rgba(0, 0, 0, 0.5) 100% - ), + background: + linear-gradient(0deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.5) 100%), url('../../../assets/images/backgrounds/pointSystemBg.png'), lightgray 50% / cover no-repeat; diff --git a/src/components/Global/RangeBounds/RangeBounds.module.css b/src/components/Global/RangeBounds/RangeBounds.module.css index 753df17440..53d235de7e 100644 --- a/src/components/Global/RangeBounds/RangeBounds.module.css +++ b/src/components/Global/RangeBounds/RangeBounds.module.css @@ -8,7 +8,7 @@ flex-direction: column; gap: 8px; } -.advanced_disabled{ +.advanced_disabled { pointer-events: none; opacity: 0.2; filter: blur(2px); @@ -17,4 +17,4 @@ display: flex; justify-content: space-between; align-items: center; -} \ No newline at end of file +} diff --git a/src/components/Global/RangeStatus/RangeStatus.tsx b/src/components/Global/RangeStatus/RangeStatus.tsx index a6828ae3fd..0533e1a545 100644 --- a/src/components/Global/RangeStatus/RangeStatus.tsx +++ b/src/components/Global/RangeStatus/RangeStatus.tsx @@ -74,8 +74,8 @@ export default function RangeStatus(props: propsIF) { {isAmbient ? ambientWithTooltip : isEmpty - ? emptyWithTooltip - : rangeWithTooltip} + ? emptyWithTooltip + : rangeWithTooltip}
); @@ -85,15 +85,15 @@ export default function RangeStatus(props: propsIF) { {isAmbient ? ambientWithTooltip : isEmpty - ? emptyWithTooltip - : rangeWithTooltip} + ? emptyWithTooltip + : rangeWithTooltip}

{isAmbient ? 'Ambient' : isInRange - ? 'In Range' - : fullTextDisplay} + ? 'In Range' + : fullTextDisplay}

); diff --git a/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.module.css b/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.module.css index 3725837933..f927f75c6f 100644 --- a/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.module.css +++ b/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.module.css @@ -9,19 +9,19 @@ background-color: var(--dark1); height: 64px; - + display: none; position: sticky; } - -.sidebar_footer span{ +.sidebar_footer span { background-color: transparent; outline: none; border: none; cursor: pointer; } -.sidebar_footer a, .sidebar_footer span { +.sidebar_footer a, +.sidebar_footer span { cursor: pointer; display: flex; flex: 1 0; @@ -30,18 +30,20 @@ padding: 9px 3px; font-size: 11px; } -.sidebar_footer a img, .sidebar_footer span img, -.sidebar_footer a svg, .sidebar_footer span svg { +.sidebar_footer a img, +.sidebar_footer span img, +.sidebar_footer a svg, +.sidebar_footer span svg { width: 20px; } @media only screen and (min-width: 500px) { - .sidebar_footer a, .sidebar button { + .sidebar_footer a, + .sidebar button { flex: 1 0; padding: 9px 8px; font-size: var(--body-size); } - } /* Small screens */ diff --git a/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.tsx b/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.tsx index 07dd05d7c0..c09bbaefc7 100644 --- a/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.tsx +++ b/src/components/Global/Sidebar/SidebarFooter/SidebarFooter.tsx @@ -15,17 +15,15 @@ function SidebarFooter() { const currentLocation = location.pathname; - - const tradeDestination = location.pathname.includes('trade/market') ? '/trade/market/' : location.pathname.includes('trade/limit') - ? '/trade/limit/' - : location.pathname.includes('trade/pool') - ? '/trade/pool/' - : location.pathname.includes('trade/edit') - ? '/trade/edit/' - : '/trade/market/'; + ? '/trade/limit/' + : location.pathname.includes('trade/pool') + ? '/trade/pool/' + : location.pathname.includes('trade/edit') + ? '/trade/edit/' + : '/trade/market/'; const { tokenA, tokenB } = useContext(TradeDataContext); diff --git a/src/components/Global/Sidebar/SidebarRangePositions/SidebarRangePositionsCard.tsx b/src/components/Global/Sidebar/SidebarRangePositions/SidebarRangePositionsCard.tsx index ab7ccba3c6..92b038a530 100644 --- a/src/components/Global/Sidebar/SidebarRangePositions/SidebarRangePositionsCard.tsx +++ b/src/components/Global/Sidebar/SidebarRangePositions/SidebarRangePositionsCard.tsx @@ -50,13 +50,13 @@ export default function SidebarRangePositionsCard(props: propsIF) { }) : '...' : position.quoteUsdPrice - ? getFormattedNumber({ - value: - position.bidTickInvPriceDecimalCorrected * - position.quoteUsdPrice, - prefix: '$', - }) - : '...'; + ? getFormattedNumber({ + value: + position.bidTickInvPriceDecimalCorrected * + position.quoteUsdPrice, + prefix: '$', + }) + : '...'; const formattedHighUsdPrice = position.isBaseTokenMoneynessGreaterOrEqual ? position.baseUsdPrice @@ -68,23 +68,23 @@ export default function SidebarRangePositionsCard(props: propsIF) { }) : '...' : position.quoteUsdPrice - ? getFormattedNumber({ - value: - position.askTickInvPriceDecimalCorrected * - position.quoteUsdPrice, - prefix: '$', - }) - : '...'; + ? getFormattedNumber({ + value: + position.askTickInvPriceDecimalCorrected * + position.quoteUsdPrice, + prefix: '$', + }) + : '...'; const rangeDisplayUsd = `${formattedLowUsdPrice}-${formattedHighUsdPrice}`; const rangeDisplay = isTradeDollarizationEnabled ? rangeDisplayUsd : position?.positionType === 'ambient' - ? 'ambient' - : isDenomBase - ? `${quoteTokenCharacter}${position?.lowRangeDisplayInBase}-${quoteTokenCharacter}${position?.highRangeDisplayInBase}` - : `${baseTokenCharacter}${position?.lowRangeDisplayInQuote}-${baseTokenCharacter}${position?.highRangeDisplayInQuote}`; + ? 'ambient' + : isDenomBase + ? `${quoteTokenCharacter}${position?.lowRangeDisplayInBase}-${quoteTokenCharacter}${position?.highRangeDisplayInBase}` + : `${baseTokenCharacter}${position?.lowRangeDisplayInQuote}-${baseTokenCharacter}${position?.highRangeDisplayInQuote}`; // human-readable string showing total value of the position const value = getFormattedNumber({ @@ -114,8 +114,8 @@ export default function SidebarRangePositionsCard(props: propsIF) { position.positionType === 'ambient' ? 'ambient' : position.isPositionInRange - ? 'positive' - : 'negative' + ? 'positive' + : 'negative' } /> diff --git a/src/components/Global/SlippageTolerance/SlippageTolerance.tsx b/src/components/Global/SlippageTolerance/SlippageTolerance.tsx index 59ed1e44d6..9ac09c08b3 100644 --- a/src/components/Global/SlippageTolerance/SlippageTolerance.tsx +++ b/src/components/Global/SlippageTolerance/SlippageTolerance.tsx @@ -20,7 +20,7 @@ export default function SlippageTolerance(props: propsIF) { ); // type derived from preset values received in props - type presetValues = typeof presets[number]; + type presetValues = (typeof presets)[number]; return (
diff --git a/src/components/Global/SnackbarComponent/SNACKBAR.MD b/src/components/Global/SnackbarComponent/SNACKBAR.MD index 1d5d8504cf..0c6cbd9fa1 100644 --- a/src/components/Global/SnackbarComponent/SNACKBAR.MD +++ b/src/components/Global/SnackbarComponent/SNACKBAR.MD @@ -4,18 +4,18 @@ This directory contains code to create snackbars in the Ambient app and data to The snackbar component makes use of two components from MaterialUi. `Snackbar` and `Alert`. The `Alert` component is responsible for rendering a different variant message based on success rate and the `Snackbar` component is responsible for displaying the snackbar itself. -To read more on the component, see the official docs: +To read more on the component, see the official docs: Snackbar : https://mui.com/material-ui/react-snackbar/ Alert: https://mui.com/material-ui/react-alert/ # Location and Files -* This directory is located at `/src/components/SnackbarComponent/SnackbarComponent` -* `SnackbarComponent.tsx` contains: - * JSX for the snackbar skeleton - * code to handle optional `` amd `` elements -* `SnackbarComponent.component.css` is a CSS component which holds styling for the snackbar skeleton. +- This directory is located at `/src/components/SnackbarComponent/SnackbarComponent` +- `SnackbarComponent.tsx` contains: + - JSX for the snackbar skeleton + - code to handle optional `` amd `` elements +- `SnackbarComponent.component.css` is a CSS component which holds styling for the snackbar skeleton. # Developer Notes -The snackbar has been updated to be a global component (like globalPopup). It can be accessed via the `appStateContext` and passing in `content` and `severity` into the `open` function. +The snackbar has been updated to be a global component (like globalPopup). It can be accessed via the `appStateContext` and passing in `content` and `severity` into the `open` function. diff --git a/src/components/Global/SnackbarComponent/SnackbarComponent.module.css b/src/components/Global/SnackbarComponent/SnackbarComponent.module.css index 4a8817b6ac..ace5708068 100644 --- a/src/components/Global/SnackbarComponent/SnackbarComponent.module.css +++ b/src/components/Global/SnackbarComponent/SnackbarComponent.module.css @@ -1,23 +1,20 @@ -.mainContainer{ +.mainContainer { width: 100%; background: var(--dark2); box-shadow: 100px 100px 100px 50px rgba(0, 0, 0, 0.25); - - align-items: center; - flex-direction: column; + + align-items: center; + flex-direction: column; position: fixed; bottom: 56px; - - + z-index: 9999999999999999999; - + font-size: 12px; border-top: 1px solid var(--text3); - } -.closeButton{ - +.closeButton { outline: none; border: none; background: transparent; @@ -25,8 +22,7 @@ display: flex; justify-content: flex-end; align-items: flex-end; - } -.mainContent{ -padding: 1rem 8px; -} \ No newline at end of file +.mainContent { + padding: 1rem 8px; +} diff --git a/src/components/Global/SnackbarComponent/SnackbarComponent.tsx b/src/components/Global/SnackbarComponent/SnackbarComponent.tsx index fc0a3b1871..c314940a95 100644 --- a/src/components/Global/SnackbarComponent/SnackbarComponent.tsx +++ b/src/components/Global/SnackbarComponent/SnackbarComponent.tsx @@ -1,15 +1,21 @@ // START: Import React and Dongles -import { forwardRef, memo, SyntheticEvent, useContext, useEffect, useRef } from 'react'; +import { + forwardRef, + memo, + SyntheticEvent, + useContext, + useEffect, + useRef, +} from 'react'; import { Snackbar } from '@material-ui/core'; import { Alert, AlertProps } from '@mui/material'; import { motion } from 'framer-motion'; import { AppStateContext } from '../../../contexts/AppStateContext'; import useMediaQuery from '../../../utils/hooks/useMediaQuery'; import { IoMdClose } from 'react-icons/io'; -import styles from './SnackbarComponent.module.css' +import styles from './SnackbarComponent.module.css'; import useOnClickOutside from '../../../utils/hooks/useOnClickOutside'; - const SnackbarAlert = forwardRef( function SnackbarAlert(props, ref) { return ( @@ -67,16 +73,16 @@ function SnackbarComponent() { if (isSmallScreen) return ( -
- +
+ +
{content}
- -
+
); return ( diff --git a/src/components/Global/TabComponent/TabComponent.module.css b/src/components/Global/TabComponent/TabComponent.module.css index 795d5b2140..a1634f3bf9 100644 --- a/src/components/Global/TabComponent/TabComponent.module.css +++ b/src/components/Global/TabComponent/TabComponent.module.css @@ -60,7 +60,6 @@ color: var(--accent1); } - .active_label_container { font-size: 15px; color: var(--accent1); @@ -214,11 +213,11 @@ grid-template-columns: repeat(3, 33%); } - .navbar_header_container{ + .navbar_header_container { grid-template-columns: 75% 25%; } - .single_tab{ + .single_tab { justify-content: center; } } diff --git a/src/components/Global/TabComponent/TabComponent.tsx b/src/components/Global/TabComponent/TabComponent.tsx index 745486b2a8..8c6c987b97 100644 --- a/src/components/Global/TabComponent/TabComponent.tsx +++ b/src/components/Global/TabComponent/TabComponent.tsx @@ -218,12 +218,8 @@ export default function TabComponent(props: TabPropsIF) { }); const tabsWithRightOption = ( -
-
+
+
{data.map((item) => (
` left: 10px; right: 50%; background: var(--dark2); - transition: left 0.5s, right 0.4s 0.2s; + transition: + left 0.5s, + right 0.4s 0.2s; } } input:not(:checked) { @@ -113,7 +115,9 @@ const SwitchContainer = styled.span` left: 50%; right: 10px; background: var(--accent1); - transition: left 0.4s 0.2s, right 0.5s, + transition: + left 0.4s 0.2s, + right 0.5s, background 0.35s -0.1s; } } diff --git a/src/components/Global/TokenSelectContainer/SoloTokenSelect.module.css b/src/components/Global/TokenSelectContainer/SoloTokenSelect.module.css index 72af17d8e8..f34a5a579f 100644 --- a/src/components/Global/TokenSelectContainer/SoloTokenSelect.module.css +++ b/src/components/Global/TokenSelectContainer/SoloTokenSelect.module.css @@ -101,7 +101,8 @@ padding: 1rem; } -.header, .container header { +.header, +.container header { height: 41px !important; display: flex; flex-direction: row; @@ -112,4 +113,3 @@ font-weight: 200; color: var(--text1); } - diff --git a/src/components/Global/TokenSelectContainer/SoloTokenSelectModal.module.css b/src/components/Global/TokenSelectContainer/SoloTokenSelectModal.module.css index e8e14915c2..b0dfcbe11b 100644 --- a/src/components/Global/TokenSelectContainer/SoloTokenSelectModal.module.css +++ b/src/components/Global/TokenSelectContainer/SoloTokenSelectModal.module.css @@ -5,11 +5,6 @@ flex-direction: column; padding: 1rem; border-radius: var(--border-radius); - - - - - } .container::-webkit-scrollbar { @@ -21,7 +16,7 @@ line-height: var(--header2-lh); color: var(--text2); } -.scrollContainer{ +.scrollContainer { height: 100%; overflow-y: auto; } @@ -47,8 +42,6 @@ flex-direction: row; align-items: center; gap: 4px; - - } /* search input field */ diff --git a/src/components/Global/TooltipComponent/TOOLTIP.MD b/src/components/Global/TooltipComponent/TOOLTIP.MD index a9e21c9f18..e3435395ff 100644 --- a/src/components/Global/TooltipComponent/TOOLTIP.MD +++ b/src/components/Global/TooltipComponent/TOOLTIP.MD @@ -3,45 +3,41 @@ This directory contains code to create tooltips in the Ambient app and data to fill out the tooltip skeleton. The tooltip component makes use of a component from MaterialUi. `Tooltip`. -To read more on the component, see the official docs: +To read more on the component, see the official docs: Tooltip : https://mui.com/material-ui/react-tooltip/ - # Location and Files -* This directory is located at `/src/components/TooltipComponent/TooltipComponent` -* `TooltipComponent.tsx` contains: - * JSX for the tooltip skeleton - * code to handle optional `` and `<placement>` elements -* `TooltipComponent.component.css` is a CSS component which holds styling for the tooltip skeleton. +- This directory is located at `/src/components/TooltipComponent/TooltipComponent` +- `TooltipComponent.tsx` contains: + - JSX for the tooltip skeleton + - code to handle optional `<title>` and `<placement>` elements +- `TooltipComponent.component.css` is a CSS component which holds styling for the tooltip skeleton. # Developer Notes To call a Tooltip anywhere in the app, you should: + 1. Import the React functional component from `TooltipComponent.tsx` 2. Render the tooltip component with a `title` attribute, which is the text the tooltip displays when a user hovers. 3. The tooltip component optionally takes a `placement` prop, which is where the title of the tooltip will be displayed, relative to it's container. - - Some options for the placements are - | 'right' - | 'bottom-end' - | 'bottom-start' - | 'bottom' - | 'left-end' - | 'left-start' - | 'left' - | 'right-end' - | 'right-start' - | 'top-end' - | 'top-start' - | 'top' -- The default placement is on the right. + +- Some options for the placements are + | 'right' + | 'bottom-end' + | 'bottom-start' + | 'bottom' + | 'left-end' + | 'left-start' + | 'left' + | 'right-end' + | 'right-start' + | 'top-end' + | 'top-start' + | 'top' +- The default placement is on the right. Full example of usablity: ` <TooltipComponent title='Snackbar title' placement='right />` To open the tooltip component, simply hover over the question svg that comes with the tooltip component. - - - - - diff --git a/src/components/Global/TooltipComponent/TooltipComponent.module.css b/src/components/Global/TooltipComponent/TooltipComponent.module.css index 8749d3df42..871406b8e1 100644 --- a/src/components/Global/TooltipComponent/TooltipComponent.module.css +++ b/src/components/Global/TooltipComponent/TooltipComponent.module.css @@ -11,15 +11,13 @@ justify-content: center; } -.mobilePopupContainer{ +.mobilePopupContainer { background: var(--dark2); position: absolute; bottom: 0; - height:55%; + height: 55%; width: 100%; font-size: var(--body-size); line-height: var(--body-lh); padding-right: 8px; - - -} \ No newline at end of file +} diff --git a/src/components/Global/TutorialComponent/TutorialComponent.module.css b/src/components/Global/TutorialComponent/TutorialComponent.module.css index cf69bd7aa9..bc00622eec 100644 --- a/src/components/Global/TutorialComponent/TutorialComponent.module.css +++ b/src/components/Global/TutorialComponent/TutorialComponent.module.css @@ -1,33 +1,37 @@ -.tutorial_overlay{ +.tutorial_overlay { position: fixed; top: 5rem; - left: 0 ; + left: 0; display: block; width: 100vw; height: 100vh; } -.focus_outline{ - transition: all .3s ease-in-out; +.focus_outline { + transition: all 0.3s ease-in-out; position: fixed; z-index: 9999; - display: block; + display: block; width: 0; height: 0; left: 50%; top: 0; background: transparent; - box-shadow: 0 0 4px 0px color-mix(in srgb, var(--accent1) 20%, transparent), 0 0 0 9999px color-mix(in srgb, var(--accent1) 5%, transparent); - box-shadow: 0 0 3px 0px color-mix(in srgb, var(--accent1) 20%, transparent),0 0 0 9999px rgba(0,0,0, .4 ), 0 0 0 9999px color-mix(in srgb, var(--accent1) 10%, transparent); + box-shadow: + 0 0 4px 0px color-mix(in srgb, var(--accent1) 20%, transparent), + 0 0 0 9999px color-mix(in srgb, var(--accent1) 5%, transparent); + box-shadow: + 0 0 3px 0px color-mix(in srgb, var(--accent1) 20%, transparent), + 0 0 0 9999px rgba(0, 0, 0, 0.4), + 0 0 0 9999px color-mix(in srgb, var(--accent1) 10%, transparent); border: 1px solid color-mix(in srgb, var(--accent1) 50%, transparent); overflow: hidden; } - -.focus_outline.animated{ +.focus_outline.animated { } -.focus_outline.animated::after{ +.focus_outline.animated::after { content: ''; position: absolute; display: block; @@ -36,12 +40,12 @@ width: 100vw; height: 100vh; background: var(--accent1); - animation: focusOutlineAnim .3s ease-in-out 2; - animation-delay: .5s; + animation: focusOutlineAnim 0.3s ease-in-out 2; + animation-delay: 0.5s; opacity: 0; } -.tooltip_wrapper{ +.tooltip_wrapper { position: fixed; background: var(--dark1); z-index: 10000; @@ -52,52 +56,51 @@ left: 100vw; } -.tooltip_wrapper.animated{ - animation: tooltipAnim .5s ease-in-out forwards; +.tooltip_wrapper.animated { + animation: tooltipAnim 0.5s ease-in-out forwards; } -.tooltip_title{ +.tooltip_title { font-size: 1.1rem; font-weight: bold; text-align: center; /* margin-bottom: .5rem; */ - padding: .3rem 1rem; + padding: 0.3rem 1rem; width: 100%; background-color: color-mix(in srgb, var(--accent1) 5%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--accent1) 50%, transparent); position: relative; } -.tooltip_content{ +.tooltip_content { padding: 1rem 1rem; } -@keyframes focusOutlineAnim{ - 0%, 100%{ +@keyframes focusOutlineAnim { + 0%, + 100% { opacity: 0; } - 50%{ - opacity: .2; + 50% { + opacity: 0.2; } } - -@keyframes tooltipAnim{ - 0%{ +@keyframes tooltipAnim { + 0% { opacity: 0; transform: scale(1); } - 50%{ + 50% { transform: scale(1.1); } - 100%{ + 100% { transform: scale(1); opacity: 1; } } - -.tutorial_steps{ +.tutorial_steps { position: fixed; z-index: 10000; bottom: 2rem; @@ -106,128 +109,120 @@ transform: translateX(-70%); } -.tooltip_buttons_wrapper{ +.tooltip_buttons_wrapper { display: flex; - + justify-content: center; } -.step_btn{ - transition: all .2s ease-in-out; - padding: .5rem 1rem; +.step_btn { + transition: all 0.2s ease-in-out; + padding: 0.5rem 1rem; background: var(--dark1); cursor: pointer; - margin-left: .4rem; + margin-left: 0.4rem; } -.step_btn.navigate{ +.step_btn.navigate { background: var(--accent1); color: black; font-weight: bold; - } -.step_btn:not(.disabled){ - +.step_btn:not(.disabled) { /* border: 1px solid color-mix(in srgb, white 30%, transparent); */ } -.prev_btn{ +.prev_btn { border: 1px solid color-mix(in srgb, white 30%, transparent); } -.step_btn:not(.disabled):not(.dismiss_button):hover{ +.step_btn:not(.disabled):not(.dismiss_button):hover { background: var(--accent1); color: black; } -.step_btn.dismiss_button:hover{ +.step_btn.dismiss_button:hover { opacity: 1; } - -.step_btn.disabled{ - opacity: .5; +.step_btn.disabled { + opacity: 0.5; cursor: default; } -.steps_indicator{ +.steps_indicator { background: var(--dark1); - padding: .5rem 1rem; + padding: 0.5rem 1rem; border: 1px solid color-mix(in srgb, white 30%, transparent); } -.steps_on_tooltip{ +.steps_on_tooltip { position: absolute; right: 1rem; - top: .5rem; - font-size: .8rem; - + top: 0.5rem; + font-size: 0.8rem; } - -.step_dots_wrapper{ +.step_dots_wrapper { display: flex; justify-content: center; align-items: center; - padding-top: .5rem; - padding-bottom: .5rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } -.step_dot{ - transition: all .2s ease-in-out; +.step_dot { + transition: all 0.2s ease-in-out; display: inline-block; - width: .25rem; - height: .25rem; - background-color: rgba(255,255,255, .2); - margin: .5rem; + width: 0.25rem; + height: 0.25rem; + background-color: rgba(255, 255, 255, 0.2); + margin: 0.5rem; border-radius: 100vw; } -.step_dot.active{ +.step_dot.active { transform: scale(1.5); background-color: var(--accent1); } -.next_button{ +.next_button { border: 1px solid color-mix(in srgb, var(--accent1) 50%, transparent); color: var(--accent1); } -.dismiss_button{ - opacity: .7; +.dismiss_button { + opacity: 0.7; border: 1px solid color-mix(in srgb, white 50%, transparent); color: white; } -.for_tooltip{ +.for_tooltip { position: absolute; right: -3rem; top: 0; } -.complete_button{ +.complete_button { border: 1px solid color-mix(in srgb, var(--accent1) 50%, transparent); color: var(--accent1); } - - -@media only screen and (max-width: 600px){ - - .tooltip_wrapper{ +@media only screen and (max-width: 600px) { + .tooltip_wrapper { max-width: 80vw; - } + } - .steps_indicator{ + .steps_indicator { white-space: nowrap; } - .step_btn{ + .step_btn { white-space: nowrap; } - .tutorial_steps{ + .tutorial_steps { transform: translateX(-50%); bottom: 5rem; } -} \ No newline at end of file +} diff --git a/src/components/Global/TutorialComponent/TutorialComponent.tsx b/src/components/Global/TutorialComponent/TutorialComponent.tsx index 55aeb8708e..d987bcec83 100644 --- a/src/components/Global/TutorialComponent/TutorialComponent.tsx +++ b/src/components/Global/TutorialComponent/TutorialComponent.tsx @@ -1,7 +1,10 @@ import { memo, useEffect, useRef, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import useMediaQuery from '../../../utils/hooks/useMediaQuery'; -import { TutorialStepExternalComponent, TutorialStepIF } from '../../Chat/ChatIFs'; +import { + TutorialStepExternalComponent, + TutorialStepIF, +} from '../../Chat/ChatIFs'; import styles from './TutorialComponent.module.css'; /* eslint-disable @typescript-eslint/no-explicit-any */ @@ -12,13 +15,12 @@ interface propsIF { showSteps?: boolean; initialStep?: number; onComplete?: () => void; - externalComponents?: Map<string, TutorialStepExternalComponent> + externalComponents?: Map<string, TutorialStepExternalComponent>; } function TutorialComponent(props: propsIF) { - const { steps, tutoKey, initialStep, showSteps, onComplete } = props; - console.log(tutoKey, steps) + console.log(tutoKey, steps); const [hasTriggered, setHasTriggered] = useState<boolean>(false); const hasTriggeredRef = useRef<boolean>(false); @@ -29,7 +31,7 @@ function TutorialComponent(props: propsIF) { const stepIndexRef = useRef<number>(); stepIndexRef.current = stepIndex; - const [step, setStep] = useState<| TutorialStepIF | undefined>( + const [step, setStep] = useState<TutorialStepIF | undefined>( steps.length > 0 && steps[stepIndex] ? steps[stepIndex] : undefined, ); hasTriggeredRef.current = hasTriggered; @@ -40,21 +42,22 @@ function TutorialComponent(props: propsIF) { const focusOffsetH = 20; const tooltipOffsetV = 20; - const isMobile = useMediaQuery('(max-width: 800px)'); - const [initialTimeoutDone, setInitialTimeoutDone] = useState<boolean>(false); + const [initialTimeoutDone, setInitialTimeoutDone] = + useState<boolean>(false); const [onCompleteActions, setOnCompleteActions] = useState<string[]>([]); const onCompleteActionsRef = useRef<string[]>([]); onCompleteActionsRef.current = onCompleteActions; - const [stepExternalComponent, setStepExternalComponent] = useState<TutorialStepExternalComponent>(); + const [stepExternalComponent, setStepExternalComponent] = + useState<TutorialStepExternalComponent>(); useEffect(() => { if (hasTriggeredRef.current) return; buildOnCompletes(); if (steps.length > 0) { triggerTutorial(); - }else{ + } else { completeTutorial(); } }, [tutoKey]); @@ -67,8 +70,7 @@ function TutorialComponent(props: propsIF) { if (refVal < steps.length - 1) { setStepIndex(refVal + 1); - } - else if (refVal === steps.length -1){ + } else if (refVal === steps.length - 1) { completeTutorial(); } }; @@ -126,16 +128,16 @@ function TutorialComponent(props: propsIF) { }; const buildOnCompletes = () => { - const completeActions:string[] = []; + const completeActions: string[] = []; steps.forEach((step) => { - if(step.actionOnComplete){ + if (step.actionOnComplete) { completeActions.push(step.actionOnComplete); } - }) - + }); + setOnCompleteActions([...completeActions]); - } + }; const handleTooltip = () => { const targetEl = getTargetEl(); @@ -233,71 +235,81 @@ function TutorialComponent(props: propsIF) { }, []); const handleAssignments = () => { - if(step?.assignment){ + if (step?.assignment) { const assignments = step.assignment.split(';'); assignments.map((assign) => { const selector = assign.split('>')[0]; const value = assign.split('>')[1]; const el = document.querySelector(selector); - if(el && el instanceof HTMLInputElement){ + if (el && el instanceof HTMLInputElement) { el.value = value; } - }) + }); } - } + }; - const handleActionTriggers = () => { - if(step?.actionTrigger){ + const handleActionTriggers = () => { + if (step?.actionTrigger) { const el = document.querySelector(step.actionTrigger); - if(el && el instanceof HTMLElement){ + if (el && el instanceof HTMLElement) { el.click(); } } - } + }; const handleOnCompletes = () => { - if(onCompleteActionsRef.current && onCompleteActionsRef.current.length > 0){ + if ( + onCompleteActionsRef.current && + onCompleteActionsRef.current.length > 0 + ) { onCompleteActionsRef.current.map((action) => { const el = document.querySelector(action); - if(el && el instanceof HTMLElement){ + if (el && el instanceof HTMLElement) { el.click(); } - }) - + }); } - } + }; - const navigate = useNavigate(); const handlenNavigate = (url: string) => { navigate(url); - } + }; const renderNavigate = () => { - if(step && step.navigate){ + if (step && step.navigate) { const path = step.navigate.path; return ( <div - className={styles.step_btn + ' ' + styles.navigate} - onClick={() => handlenNavigate(path)} - > - {'>>'} {step.navigate.label} - </div> - ) + className={styles.step_btn + ' ' + styles.navigate} + onClick={() => handlenNavigate(path)} + > + {'>>'} {step.navigate.label} + </div> + ); } - } + }; useEffect(() => { - - const delay = stepIndex === 0 && props.initialTimeout && !initialTimeoutDone ? props.initialTimeout : 0; - if(delay > 0 && focusOverlay.current){ + const delay = + stepIndex === 0 && props.initialTimeout && !initialTimeoutDone + ? props.initialTimeout + : 0; + if (delay > 0 && focusOverlay.current) { focusOverlay.current.style.display = 'none'; } - if(step && step.element && props.externalComponents && props.externalComponents.get(step.element.toString()) !== undefined){ - setStepExternalComponent(props.externalComponents.get(step.element.toString())); - }else{ + if ( + step && + step.element && + props.externalComponents && + props.externalComponents.get(step.element.toString()) !== undefined + ) { + setStepExternalComponent( + props.externalComponents.get(step.element.toString()), + ); + } else { setStepExternalComponent(undefined); } @@ -306,14 +318,13 @@ function TutorialComponent(props: propsIF) { handleTooltip(); handleAssignments(); handleActionTriggers(); - if(delay > 0){ + if (delay > 0) { setInitialTimeoutDone(true); - if(focusOverlay.current){ + if (focusOverlay.current) { focusOverlay.current.style.display = 'block'; } } - },delay); - + }, delay); }, [step]); const triggerTutorial = () => { @@ -322,47 +333,50 @@ function TutorialComponent(props: propsIF) { const navButtons = (forTooltip?: boolean) => ( <> - { - forTooltip && isMobile ? - (<> + {forTooltip && isMobile ? ( + <> { - <div - className={`${styles.step_btn} ${styles.prev_btn} ${stepIndex == 0 ? styles.disabled : ''}`} - onClick={prevStep} - > - {'<'} - </div> - } - {stepIndex < steps.length - 1 && ( - <div - className={styles.step_btn + ' ' + styles.next_button} - onClick={nextStep} - > - {'>'} - </div> - )} - </>) - : - (<> + <div + className={`${styles.step_btn} ${styles.prev_btn} ${stepIndex == 0 ? styles.disabled : ''}`} + onClick={prevStep} + > + {'<'} + </div> + } + {stepIndex < steps.length - 1 && ( + <div + className={ + styles.step_btn + ' ' + styles.next_button + } + onClick={nextStep} + > + {'>'} + </div> + )} + </> + ) : ( + <> { - <div - className={`${styles.step_btn} ${styles.prev_btn} ${stepIndex == 0 ? styles.disabled : ''}`} - onClick={prevStep} - > - {'<'} Prev - </div> - } - {stepIndex < steps.length - 1 && ( - <div - className={styles.step_btn + ' ' + styles.next_button} - onClick={nextStep} - > - Next {'>'} - </div> - )} - </>) - } - + <div + className={`${styles.step_btn} ${styles.prev_btn} ${stepIndex == 0 ? styles.disabled : ''}`} + onClick={prevStep} + > + {'<'} Prev + </div> + } + {stepIndex < steps.length - 1 && ( + <div + className={ + styles.step_btn + ' ' + styles.next_button + } + onClick={nextStep} + > + Next {'>'} + </div> + )} + </> + )} + {stepIndex == steps.length - 1 && ( <div className={styles.step_btn + ' ' + styles.complete_button} @@ -372,22 +386,28 @@ function TutorialComponent(props: propsIF) { </div> )} - { !forTooltip && !isMobile && ( + {!forTooltip && !isMobile && ( <div - className={styles.step_btn + ' ' + styles.dismiss_button} - onClick={completeTutorial} - > - {'X'} - </div> + className={styles.step_btn + ' ' + styles.dismiss_button} + onClick={completeTutorial} + > + {'X'} + </div> )} - { forTooltip && !isMobile && ( + {forTooltip && !isMobile && ( <div - className={styles.step_btn + ' ' + styles.dismiss_button + ' ' + styles.for_tooltip } - onClick={completeTutorial} - > - {'X'} - </div> + className={ + styles.step_btn + + ' ' + + styles.dismiss_button + + ' ' + + styles.for_tooltip + } + onClick={completeTutorial} + > + {'X'} + </div> )} </> ); @@ -399,34 +419,38 @@ function TutorialComponent(props: propsIF) { {step && ( <div ref={tooltipWrapper} className={styles.tooltip_wrapper}> - - <div className={styles.tooltip_title}>{step.title} - - - {showSteps && ( - <span className={styles.steps_on_tooltip}> - {stepIndex + 1} - <span style={{ opacity: 0.5 }}>/{steps.length}</span> - </span> - )} - + <div className={styles.tooltip_title}> + {step.title} + + {showSteps && ( + <span className={styles.steps_on_tooltip}> + {stepIndex + 1} + <span style={{ opacity: 0.5 }}> + /{steps.length} + </span> + </span> + )} </div> - <div className={styles.tooltip_content}>{step.intro}</div> + <div className={styles.tooltip_content}>{step.intro}</div> - {stepExternalComponent && (stepExternalComponent.placement === 'nav-before' || !stepExternalComponent.placement) && - (<>{stepExternalComponent.component}</>) - } + {stepExternalComponent && + (stepExternalComponent.placement === 'nav-before' || + !stepExternalComponent.placement) && ( + <>{stepExternalComponent.component}</> + )} <div className={styles.tooltip_buttons_wrapper}> {navButtons(true)} {renderNavigate()} - {stepExternalComponent && stepExternalComponent.placement === 'nav-end' && - (<>{stepExternalComponent.component}</>) - } + {stepExternalComponent && + stepExternalComponent.placement === 'nav-end' && ( + <>{stepExternalComponent.component}</> + )} </div> - {stepExternalComponent && stepExternalComponent.placement === 'nav-after' && - (<>{stepExternalComponent.component}</>) - } + {stepExternalComponent && + stepExternalComponent.placement === 'nav-after' && ( + <>{stepExternalComponent.component}</> + )} <div className={styles.step_dots_wrapper}> {steps.map((_, i) => ( diff --git a/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.module.css b/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.module.css index 46fae3b7ae..e593a0bb37 100644 --- a/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.module.css +++ b/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.module.css @@ -1,5 +1,4 @@ - -.replay_tuto_btn{ +.replay_tuto_btn { position: fixed; z-index: 99999; top: 1.2rem; @@ -10,43 +9,41 @@ border-radius: 100vw; font-size: 1.3rem; cursor: pointer; - animation: opaAnim .5s ease-in-out forwards; + animation: opaAnim 0.5s ease-in-out forwards; opacity: 0; - } -@keyframes opaAnim{ - from{ +@keyframes opaAnim { + from { opacity: 0; } - to{ + to { opacity: 1; } } -.not_connected{ +.not_connected { right: 14rem; } -.replay_tuto_btn svg{ +.replay_tuto_btn svg { /* color: black; */ } -@media only screen and (max-width: 600px){ - .replay_tuto_btn{ +@media only screen and (max-width: 600px) { + .replay_tuto_btn { right: 7rem; } - .not_connected{ + .not_connected { right: 12rem; } } -.connectButton{ +.connectButton { background: var(--accent1, #0ccdff); - padding: 0 .5rem; - margin: 0 .5rem; + padding: 0 0.5rem; + margin: 0 0.5rem; cursor: pointer; border: none; } - \ No newline at end of file diff --git a/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.tsx b/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.tsx index 1c6dc42220..490c2bc8ed 100644 --- a/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.tsx +++ b/src/components/Global/TutorialOverlay/TutorialOverlayUrlBased.tsx @@ -34,33 +34,47 @@ function TutorialOverlayUrlBased(props: TutorialOverlayPropsIF) { const [stepsFiltered, setStepsFiltered] = useState<Step[]>([]); const [replayTutorial, setReplayTutorial] = useState<boolean>(false); - + const { walletModal: { open: openWalletModal }, } = useContext(AppStateContext); - const {showTutosLocalStorage} = useFutaHomeContext(); - + const { showTutosLocalStorage } = useFutaHomeContext(); - const connectButton = (<button - id='connect_wallet_button_page_header' - onClick={openWalletModal} - className={styles.connectButton} -> - CONNECT WALLET -</button>) + const connectButton = ( + <button + id='connect_wallet_button_page_header' + onClick={openWalletModal} + className={styles.connectButton} + > + CONNECT WALLET + </button> + ); const getTutorialObjectForPage = (page: string) => { switch (page) { case 'auctions': return { lsKey: 'tuto_auctions', steps: futaAuctionsSteps }; case 'account': - return { lsKey: 'tuto_futa_account', steps: futaAccountSteps, disableDefault: true}; + return { + lsKey: 'tuto_futa_account', + steps: futaAccountSteps, + disableDefault: true, + }; case 'auctionCreate': - return { lsKey: 'tuto_futa_create', - steps: futaCreateSteps, - externalComponents: - new Map<string, TutorialStepExternalComponent>([['#auctions_create_connect_button', {component: connectButton, placement: 'nav-end' }]])}; + return { + lsKey: 'tuto_futa_create', + steps: futaCreateSteps, + externalComponents: new Map< + string, + TutorialStepExternalComponent + >([ + [ + '#auctions_create_connect_button', + { component: connectButton, placement: 'nav-end' }, + ], + ]), + }; default: return undefined; } @@ -174,7 +188,9 @@ function TutorialOverlayUrlBased(props: TutorialOverlayPropsIF) { stepsFiltered.length > 0 && showTutorial && isTutoBuild && - (selectedTutorialRef.current && !selectedTutorialRef.current.disableDefault && showTutosLocalStorage); + selectedTutorialRef.current && + !selectedTutorialRef.current.disableDefault && + showTutosLocalStorage; return ( <> @@ -188,7 +204,9 @@ function TutorialOverlayUrlBased(props: TutorialOverlayPropsIF) { showSteps={true} onComplete={handleTutoFinish} initialTimeout={600} - externalComponents={selectedTutorialRef.current.externalComponents} + externalComponents={ + selectedTutorialRef.current.externalComponents + } /> </> )} diff --git a/src/components/Home/CarouselControl/DotAnimation.module.css b/src/components/Home/CarouselControl/DotAnimation.module.css index ecfcb595aa..30fe55aff7 100644 --- a/src/components/Home/CarouselControl/DotAnimation.module.css +++ b/src/components/Home/CarouselControl/DotAnimation.module.css @@ -1,5 +1,4 @@ - -.dots{ +.dots { position: fixed; z-index: 100; top: 50%; @@ -11,28 +10,25 @@ display: flex; flex-direction: column; align-items: center; - gap:8px; - } + gap: 8px; +} - .dots span{ +.dots span { cursor: pointer; - background-color: var(--text3);; - - } - + background-color: var(--text3); +} - .show_arrow{ -opacity: 1; - } +.show_arrow { + opacity: 1; +} - .disable_arrow{ +.disable_arrow { opacity: 0; pointer-events: none; - } - - @media (max-width: 500px) { +} -.dots{ - display: none; +@media (max-width: 500px) { + .dots { + display: none; + } } - } \ No newline at end of file diff --git a/src/components/Home/Section/Section.module.css b/src/components/Home/Section/Section.module.css index 5d3d42824f..4d0c1c51c2 100644 --- a/src/components/Home/Section/Section.module.css +++ b/src/components/Home/Section/Section.module.css @@ -6,14 +6,9 @@ align-items: center; */ scroll-snap-align: center; position: relative; - } - +} - - - - - .section .downarrow { +.section .downarrow { position: absolute; bottom: 20px; left: 0; @@ -25,13 +20,10 @@ width: 40px; height: 40px; z-index: 2; - } - +} - @media (max-height: 715px) { +@media (max-height: 715px) { .section { - height: auto; - - - } - } \ No newline at end of file + height: auto; + } +} diff --git a/src/components/InitPool/InitPoolExtraInfo/InitPoolExtraInfo.module.css b/src/components/InitPool/InitPoolExtraInfo/InitPoolExtraInfo.module.css index 857c6a6426..fa1f7f963a 100644 --- a/src/components/InitPool/InitPoolExtraInfo/InitPoolExtraInfo.module.css +++ b/src/components/InitPool/InitPoolExtraInfo/InitPoolExtraInfo.module.css @@ -46,7 +46,6 @@ .extra_row { display: flex; - justify-content: space-between; align-items: center; diff --git a/src/components/LimitActionModal/LimitActionSettings/LimitActionSettings.tsx b/src/components/LimitActionModal/LimitActionSettings/LimitActionSettings.tsx index c3da3f1c65..1cb9f3f768 100644 --- a/src/components/LimitActionModal/LimitActionSettings/LimitActionSettings.tsx +++ b/src/components/LimitActionModal/LimitActionSettings/LimitActionSettings.tsx @@ -17,7 +17,7 @@ export default function LimitActionSettings(props: propsIF) { // values to generate preset buttons const presets: number[] = [0.1, 0.3, 0.5]; // type derived as number-literal union for defined presets - type presetValues = typeof presets[number]; + type presetValues = (typeof presets)[number]; const slippageValue = 2; diff --git a/src/components/Portfolio/ExchangeBalance/ExchangeBalance.module.css b/src/components/Portfolio/ExchangeBalance/ExchangeBalance.module.css index 4cb3fa6228..62e64ec0d8 100644 --- a/src/components/Portfolio/ExchangeBalance/ExchangeBalance.module.css +++ b/src/components/Portfolio/ExchangeBalance/ExchangeBalance.module.css @@ -16,7 +16,7 @@ overflow: hidden; } -.portfolio_motion_container{ +.portfolio_motion_container { display: flex; flex-direction: column; align-items: center; @@ -45,8 +45,7 @@ border-radius: var(--border-radius); } - -.tab_component_container{ +.tab_component_container { position: relative; width: 100%; height: 100%; @@ -56,14 +55,12 @@ background: var(--dark1); } @media only screen and (max-width: 768px) { - .portfolio_control_container{ + .portfolio_control_container { display: none; } - } @media only screen and (min-width: 1280px) { .portfolio_motion_container { max-width: 400px; } - -} \ No newline at end of file +} diff --git a/src/components/Portfolio/ExchangeBalance/ExchangeBalance.tsx b/src/components/Portfolio/ExchangeBalance/ExchangeBalance.tsx index faa566ca0d..217c6a1cc5 100644 --- a/src/components/Portfolio/ExchangeBalance/ExchangeBalance.tsx +++ b/src/components/Portfolio/ExchangeBalance/ExchangeBalance.tsx @@ -2,7 +2,7 @@ import Deposit from './Deposit/Deposit'; import Withdraw from './Withdraw/Withdraw'; import Transfer from './Transfer/Transfer'; import closeSidebarImage from '../../../assets/images/sidebarImages/closeSidebar.svg'; -import styles from './ExchangeBalance.module.css' +import styles from './ExchangeBalance.module.css'; import transferImage from '../../../assets/images/sidebarImages/transfer.svg'; import withdrawImage from '../../../assets/images/sidebarImages/withdraw.svg'; import depositImage from '../../../assets/images/sidebarImages/deposit.svg'; @@ -19,7 +19,6 @@ import IconWithTooltip from '../../Global/IconWithTooltip/IconWithTooltip'; import { CrocEnvContext } from '../../../contexts/CrocEnvContext'; import { ChainDataContext } from '../../../contexts/ChainDataContext'; - import { UserDataContext } from '../../../contexts/UserDataContext'; import { TokenBalanceContext } from '../../../contexts/TokenBalanceContext'; import { TradeDataContext } from '../../../contexts/TradeDataContext'; @@ -38,7 +37,7 @@ export default function ExchangeBalance(props: propsIF) { setFullLayoutActive, isModalView = false, setTokenModalOpen = () => null, - setIsAutoLayout + setIsAutoLayout, } = props; const { mainnetProvider } = useContext(CrocEnvContext); @@ -243,10 +242,11 @@ export default function ExchangeBalance(props: propsIF) { ]; const toggleFullLayoutActive = () => { setFullLayoutActive(!fullLayoutActive); - setIsAutoLayout && setIsAutoLayout(false); // Mark that the layout is now manually controlled - }; + setIsAutoLayout && setIsAutoLayout(false); // Mark that the layout is now manually controlled + }; const exchangeControl = ( - <div className={styles.portfolio_control_container} + <div + className={styles.portfolio_control_container} id='portfolio_sidebar_toggle' onClick={toggleFullLayoutActive} > @@ -261,14 +261,15 @@ export default function ExchangeBalance(props: propsIF) { </div> ); - return ( <> - <div className={styles.portfolio_motion_container}> - <div className={styles.portfolio_motion_sub_container} id='subcont'> + <div + className={styles.portfolio_motion_sub_container} + id='subcont' + > <div className={styles.tab_component_container}> - {(!fullLayoutActive || isModalView) && ( + {(!fullLayoutActive || isModalView) && ( <TabComponent data={accountData} rightTabOptions={false} @@ -279,15 +280,14 @@ export default function ExchangeBalance(props: propsIF) { {!isModalView && exchangeControl} </div> </div> - {(!fullLayoutActive || isModalView) && ( + {(!fullLayoutActive || isModalView) && ( <p className={styles.portfolio_info_text}> Collateral deposited into the Ambient Finance exchange can be traded at lower gas costs and withdrawn at any time. </p> )} - </div> - + </div> </> ); -} \ No newline at end of file +} diff --git a/src/components/Portfolio/PortfolioBanner/AddressPrint.tsx b/src/components/Portfolio/PortfolioBanner/AddressPrint.tsx index c2ae40eb3f..f5ada30a8e 100644 --- a/src/components/Portfolio/PortfolioBanner/AddressPrint.tsx +++ b/src/components/Portfolio/PortfolioBanner/AddressPrint.tsx @@ -5,7 +5,8 @@ interface propsIF { } export default function AddressPrint(props: propsIF) { - const address = props.address ?? '0x0000000000000000000000000000000000000000'; + const address = + props.address ?? '0x0000000000000000000000000000000000000000'; const [paths, setPaths] = useState< { path: string | undefined; opacity: number; id: string }[] @@ -127,7 +128,12 @@ export default function AddressPrint(props: propsIF) { ref={containerRef} width={'100%'} height={'100%'} - style={{ position: 'absolute', cursor: 'default', pointerEvents: 'none', overflow: 'hidden' }} + style={{ + position: 'absolute', + cursor: 'default', + pointerEvents: 'none', + overflow: 'hidden', + }} > <defs> {Array.from({ length: numLines }, (_, index) => ( diff --git a/src/components/Portfolio/PortfolioBanner/PortfolioBanner.tsx b/src/components/Portfolio/PortfolioBanner/PortfolioBanner.tsx index 73957bd2c1..bf21dd8b6a 100644 --- a/src/components/Portfolio/PortfolioBanner/PortfolioBanner.tsx +++ b/src/components/Portfolio/PortfolioBanner/PortfolioBanner.tsx @@ -101,7 +101,7 @@ export default function PortfolioBanner(props: propsIF) { // ... gets a new address for programmatic generation const noisyLines = useMemo<JSX.Element | null>(() => { // early return if address is not available (first render) - if (!addressOfAccountDisplayed ) return null; + if (!addressOfAccountDisplayed) return null; // locate rendered parent element in DOM by element ID // const parentElem: HTMLElement | null = // document.getElementById(BANNER_ID); @@ -119,7 +119,7 @@ export default function PortfolioBanner(props: propsIF) { return ( <div - className={styles.portfolio_banner_rectangle_container} + className={styles.portfolio_banner_rectangle_container} id={BANNER_ID} > {noisyLines} diff --git a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.module.css b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.module.css index 1eee7ee839..776d0ffe8f 100644 --- a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.module.css +++ b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.module.css @@ -5,7 +5,6 @@ gap: 16px; - border-radius: 4px; } .NFTBannerHeader { @@ -19,7 +18,7 @@ justify-content: space-between; } -.NFTHeaderSettings{ +.NFTHeaderSettings { display: flex; gap: 5px; @@ -72,11 +71,10 @@ .NFTBannerAccountContainer { display: grid; box-shadow: 4px 4px 6px #0d1117; - /* position: absolute; */ - position: absolute; - top: 160px; - left: 100px; - + /* position: absolute; */ + position: absolute; + top: 160px; + left: 100px; border-color: var(--accent1); background: #0d1117; @@ -86,7 +84,5 @@ width: 350px; max-height: 570px; height: auto; - - } } diff --git a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.tsx b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.tsx index 9e55c1fffc..d960d7b3bb 100644 --- a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.tsx +++ b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccount.tsx @@ -43,7 +43,7 @@ import { getAvatarForType } from '../../../Chat/ChatRenderUtils'; import { isAutoGeneratedAvatar } from '../../../Chat/ChatUtils'; import useOnClickOutside from '../../../../utils/hooks/useOnClickOutside'; import ChatToaster from '../../../Chat/ChatToaster/ChatToaster'; -import styles from './NFTBannerAccount.module.css' +import styles from './NFTBannerAccount.module.css'; interface NFTBannerAccountProps { showNFTPage: boolean; setShowNFTPage: React.Dispatch<boolean>; @@ -390,26 +390,21 @@ export default function NFTBannerAccount(props: NFTBannerAccountProps) { const handleSaveButtonClick = (event: React.MouseEvent<HTMLDivElement>) => { event.stopPropagation(); - + if (isSaveActive === 0) { handleNftSelection(); setIsSaveActive(!isVerified ? 3 : 1); - } - - }; - + }; return ( - - - <section className={styles.NFTBannerAccountContainer} + <section + className={styles.NFTBannerAccountContainer} onClick={(event: React.MouseEvent<HTMLDivElement>) => { event.stopPropagation(); setIsContractNameOptionTabActive(false); }} ref={NftComponentItemRef} - > <div> <NFTBannerHeader> @@ -757,7 +752,7 @@ export default function NFTBannerAccount(props: NFTBannerAccountProps) { <NFTBannerFooter> <SaveButton isActive={isSaveActive} - onClick={ handleSaveButtonClick} + onClick={handleSaveButtonClick} > {isSaveActive === 1 ? 'Saving..' @@ -775,7 +770,6 @@ export default function NFTBannerAccount(props: NFTBannerAccountProps) { text={toastrText} type={toastrType} /> - </section> - + </section> ); } diff --git a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccountCss.ts b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccountCss.ts index fb5a107ac1..e1d19f9fe0 100644 --- a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccountCss.ts +++ b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/NFTBannerAccountCss.ts @@ -27,9 +27,9 @@ const NFTBannerAccountContainer = styled.div<{ background: #0d1117; - z-index: 9999999 ; + z-index: 9999999; - @media (max-width: 768px) { + @media (max-width: 768px) { border: none; position: static; transform: none; diff --git a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/PortfolioBannerAccount.module.css b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/PortfolioBannerAccount.module.css index e6f6e76ea9..169f8371d0 100644 --- a/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/PortfolioBannerAccount.module.css +++ b/src/components/Portfolio/PortfolioBanner/PortfolioBannerAccount/PortfolioBannerAccount.module.css @@ -1,7 +1,7 @@ .portfolio_banner_account { display: flex; flex-direction: column; - align-items:flex-start; + align-items: flex-start; width: 100%; gap: 8px; background: rgba(18, 18, 26, 0.3); @@ -15,8 +15,6 @@ align-items: flex-end; z-index: 1; gap: 12px; - - } .jazzicon { @@ -87,32 +85,28 @@ color: var(--text1); } @media only screen and (max-width: 568px) { -.user_facing_content{ - width: 100%; - max-width: 100%; - display: flex; - display: grid; - grid-template-columns: 65px 100px auto; -} - -.button_bank{ + .user_facing_content { + width: 100%; + max-width: 100%; + display: flex; + display: grid; + grid-template-columns: 65px 100px auto; + } - width: 100%; - /* max-width: 200px; */ - display: flex; - justify-content: flex-end; - align-items: flex-end; - -} + .button_bank { + width: 100%; + /* max-width: 200px; */ + display: flex; + justify-content: flex-end; + align-items: flex-end; + } -.button_bank button{ - margin: 0 5px; -} + .button_bank button { + margin: 0 5px; + } } @media only screen and (max-width: 768px) { - - .address_or_ens { font-size: var(--body-size); } @@ -123,7 +117,6 @@ justify-content: space-between; width: 100%; - max-width: 250px; } .portfolio_banner_account { @@ -140,8 +133,5 @@ @media only screen and (min-width: 1280px) { .portfolio_banner_account { width: 380.16px; - } - - -} \ No newline at end of file +} diff --git a/src/components/Portfolio/PortfolioTabs/PortfolioTabs.module.css b/src/components/Portfolio/PortfolioTabs/PortfolioTabs.module.css index 95237c668a..491918ac40 100644 --- a/src/components/Portfolio/PortfolioTabs/PortfolioTabs.module.css +++ b/src/components/Portfolio/PortfolioTabs/PortfolioTabs.module.css @@ -6,44 +6,42 @@ background: var(--dark1); align-items: stretch; flex: 1; - } +} - .mobile_tabs_container{ +.mobile_tabs_container { display: flex; flex-direction: column; height: 100%; gap: 8px; - border: 1px solid var(--dark3) - } + border: 1px solid var(--dark3); +} - .mobile_tabs_button_container{ +.mobile_tabs_button_container { display: flex; flex-direction: row; align-items: center; gap: 8px; - } +} - .mobile_tabs_button_container button{ +.mobile_tabs_button_container button { background: transparent; outline: none; color: var(--text2); border: none; - border-bottom: 1px solid transparent; + border-bottom: 1px solid transparent; font-size: 12px; cursor: pointer; +} - } - - .tabActive{ +.tabActive { color: var(--accent1); border-bottom: 1px solid var(--accent1); - } - - @media only screen and (min-device-width: 320px) and (max-device-width: 1200px) and (-webkit-min-device-pixel-ratio: 2) { +} + +@media only screen and (min-device-width: 320px) and (max-device-width: 1200px) and (-webkit-min-device-pixel-ratio: 2) { .portfolio_tabs_container { - margin: 0 auto; - width: 100%; - padding: 0 0.1rem; + margin: 0 auto; + width: 100%; + padding: 0 0.1rem; } - } - \ No newline at end of file +} diff --git a/src/components/RangeActionModal/RangeActionModal.module.css b/src/components/RangeActionModal/RangeActionModal.module.css index 3a3916c8ba..a40fd6b1f9 100644 --- a/src/components/RangeActionModal/RangeActionModal.module.css +++ b/src/components/RangeActionModal/RangeActionModal.module.css @@ -15,7 +15,6 @@ position: relative; padding: 16px; padding-top: 0px; - } .settings_button { diff --git a/src/components/RangeActionModal/RangeActionSettings/RangeActionSettings.tsx b/src/components/RangeActionModal/RangeActionSettings/RangeActionSettings.tsx index cf063831cd..e96fb13dd4 100644 --- a/src/components/RangeActionModal/RangeActionSettings/RangeActionSettings.tsx +++ b/src/components/RangeActionModal/RangeActionSettings/RangeActionSettings.tsx @@ -17,7 +17,7 @@ export default function RangeActionSettings(props: propsIF) { ); // union type pf number-literal values in presets array - type presetValues = typeof presets[number]; + type presetValues = (typeof presets)[number]; return ( <div className={styles.main_container}> diff --git a/src/components/RangeActionModal/RemoveRangeWidth/RemoveRangeWidth.tsx b/src/components/RangeActionModal/RemoveRangeWidth/RemoveRangeWidth.tsx index de38537160..bc5a608bc5 100644 --- a/src/components/RangeActionModal/RemoveRangeWidth/RemoveRangeWidth.tsx +++ b/src/components/RangeActionModal/RemoveRangeWidth/RemoveRangeWidth.tsx @@ -13,7 +13,7 @@ export default function RemoveRangeWidth(props: propsIF) { // values to generate remove liquidity preset buttons const removalPresets: number[] = [10, 25, 50, 100]; // type annotation as union of number-literals in `removalPresets` - type presetValues = typeof removalPresets[number]; + type presetValues = (typeof removalPresets)[number]; // id attribute for removal slider input (referenced in multiple places) const sliderFieldId = 'remove-range-slider'; diff --git a/src/components/Swap/SwapExtraInfo/SwapExtraInfo.tsx b/src/components/Swap/SwapExtraInfo/SwapExtraInfo.tsx index 47e3ab8855..4f07734584 100644 --- a/src/components/Swap/SwapExtraInfo/SwapExtraInfo.tsx +++ b/src/components/Swap/SwapExtraInfo/SwapExtraInfo.tsx @@ -41,7 +41,7 @@ function SwapExtraInfo(props: propsIF) { const displayPriceWithDenom = isDenomBase && poolPriceDisplay ? 1 / poolPriceDisplay - : poolPriceDisplay ?? 0; + : (poolPriceDisplay ?? 0); const displayPriceString = displayPriceWithDenom ? getFormattedNumber({ diff --git a/src/components/Trade/Limit/ConfirmLimitModal/ConfirmLimitModal.tsx b/src/components/Trade/Limit/ConfirmLimitModal/ConfirmLimitModal.tsx index 93fae554b4..94083a2789 100644 --- a/src/components/Trade/Limit/ConfirmLimitModal/ConfirmLimitModal.tsx +++ b/src/components/Trade/Limit/ConfirmLimitModal/ConfirmLimitModal.tsx @@ -54,7 +54,7 @@ export default function ConfirmLimitModal(props: propsIF) { const displayPoolPriceWithDenom = isDenomBase && poolPriceDisplay ? 1 / poolPriceDisplay - : poolPriceDisplay ?? 0; + : (poolPriceDisplay ?? 0); const displayPoolPriceString = getFormattedNumber({ value: displayPoolPriceWithDenom, diff --git a/src/components/Trade/Limit/LimitExtraInfo/LimitExtraInfo.tsx b/src/components/Trade/Limit/LimitExtraInfo/LimitExtraInfo.tsx index 538fccf38b..ee0469c90d 100644 --- a/src/components/Trade/Limit/LimitExtraInfo/LimitExtraInfo.tsx +++ b/src/components/Trade/Limit/LimitExtraInfo/LimitExtraInfo.tsx @@ -34,7 +34,7 @@ function LimitExtraInfo(props: propsIF) { const displayPriceWithDenom = isDenomBase && poolPriceDisplay ? 1 / poolPriceDisplay - : poolPriceDisplay ?? 0; + : (poolPriceDisplay ?? 0); const displayPriceString = displayPriceWithDenom ? getFormattedNumber({ diff --git a/src/components/Trade/Range/ConfirmRangeModal/SelectedRange/SelectedRange.tsx b/src/components/Trade/Range/ConfirmRangeModal/SelectedRange/SelectedRange.tsx index f6d15e3d1a..06c0744024 100644 --- a/src/components/Trade/Range/ConfirmRangeModal/SelectedRange/SelectedRange.tsx +++ b/src/components/Trade/Range/ConfirmRangeModal/SelectedRange/SelectedRange.tsx @@ -67,7 +67,7 @@ function SelectedRange(props: propsIF) { : 1 / initialPrice : isDenomBase && poolPriceDisplay ? 1 / poolPriceDisplay - : poolPriceDisplay ?? 0; + : (poolPriceDisplay ?? 0); const displayPriceString = displayPriceWithDenom ? getFormattedNumber({ diff --git a/src/components/Trade/Range/RangeExtraInfo/RangeExtraInfo.tsx b/src/components/Trade/Range/RangeExtraInfo/RangeExtraInfo.tsx index e21761730b..3618df7a82 100644 --- a/src/components/Trade/Range/RangeExtraInfo/RangeExtraInfo.tsx +++ b/src/components/Trade/Range/RangeExtraInfo/RangeExtraInfo.tsx @@ -31,7 +31,7 @@ function RangeExtraInfo(props: propsIF) { const displayPriceWithDenom = isDenomBase && poolPriceDisplay ? 1 / poolPriceDisplay - : poolPriceDisplay ?? 0; + : (poolPriceDisplay ?? 0); const displayPriceString = displayPriceWithDenom ? getFormattedNumber({ diff --git a/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.module.css b/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.module.css index 9fa6f135b6..f9bc50b4e4 100644 --- a/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.module.css +++ b/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.module.css @@ -1,11 +1,11 @@ -.main_container{ +.main_container { width: 100%; display: flex; flex-direction: row; align-items: center; justify-content: space-between; font-size: var(--header1-size); - color: var(--text2) + color: var(--text2); } .main_container svg { diff --git a/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.tsx b/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.tsx index 75639ea599..882f5d8c53 100644 --- a/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.tsx +++ b/src/components/Trade/Reposition/RepositionHeader/RepositionHeader.tsx @@ -44,8 +44,6 @@ function RepositionHeader(props: propsIF) { return ( <> <header className={styles.main_container}> - - <img className={styles.settings_icon} src={settingsIcon} diff --git a/src/components/Trade/Reposition/RepositionPriceInfo/RepositionPriceInfo.tsx b/src/components/Trade/Reposition/RepositionPriceInfo/RepositionPriceInfo.tsx index 21ef345455..b4e75f311e 100644 --- a/src/components/Trade/Reposition/RepositionPriceInfo/RepositionPriceInfo.tsx +++ b/src/components/Trade/Reposition/RepositionPriceInfo/RepositionPriceInfo.tsx @@ -192,8 +192,8 @@ export default function RepositionPriceInfo(props: IRepositionPriceInfoProps) { isCurrentPositionEmpty ? '...' : rangeWidthPercentage === 100 - ? '0' - : minPriceDisplay + ? '0' + : minPriceDisplay } /> <RowDisplay @@ -203,8 +203,8 @@ export default function RepositionPriceInfo(props: IRepositionPriceInfoProps) { isCurrentPositionEmpty ? '...' : rangeWidthPercentage === 100 - ? '∞' - : maxPriceDisplay + ? '∞' + : maxPriceDisplay } /> <aside className={styles.divider} /> diff --git a/src/components/Trade/TableInfo/TableInfo.styles.ts b/src/components/Trade/TableInfo/TableInfo.styles.ts index a90826c157..65635dd896 100644 --- a/src/components/Trade/TableInfo/TableInfo.styles.ts +++ b/src/components/Trade/TableInfo/TableInfo.styles.ts @@ -8,11 +8,8 @@ interface BoxContainerProps { } const MainSection = styled.section` - height: 100%; padding: 8px; - - `; const BoxContainer = styled.div<BoxContainerProps>` @@ -24,9 +21,6 @@ const BoxContainer = styled.div<BoxContainerProps>` ` backdrop-filter: blur(10px); border-radius: 0.25rem;`} height: 100%; - - - `; const FeaturedBoxInnerContainer = styled.div<BoxContainerProps>` diff --git a/src/components/Trade/TableInfo/TableInfo.tsx b/src/components/Trade/TableInfo/TableInfo.tsx index a3e76b4d4f..831258953a 100644 --- a/src/components/Trade/TableInfo/TableInfo.tsx +++ b/src/components/Trade/TableInfo/TableInfo.tsx @@ -62,7 +62,7 @@ export default function TableInfo() { className='custom_scroll_ambient' fullWidth fullHeight - style={{overflow: 'hidden'}} + style={{ overflow: 'hidden' }} > <GridContainer numCols={smallScreen ? 1 : 2} diff --git a/src/components/Trade/TradeModules/SubmitTransaction/TransactionException/TransactionException.module.css b/src/components/Trade/TradeModules/SubmitTransaction/TransactionException/TransactionException.module.css index 59d5fd7642..1d01033ed8 100644 --- a/src/components/Trade/TradeModules/SubmitTransaction/TransactionException/TransactionException.module.css +++ b/src/components/Trade/TradeModules/SubmitTransaction/TransactionException/TransactionException.module.css @@ -14,39 +14,34 @@ color: var(--text2); } -.formatted_error{ +.formatted_error { word-break: break-all; height: 50px; overflow-y: scroll; } -.formatted_error_container{ - +.formatted_error_container { display: flex; flex-direction: column; gap: 8px; - } -.copy_error{ +.copy_error { width: 80%; background: none; margin: 0 auto; cursor: pointer; outline: none; display: flex; -padding: 4px 8px; -justify-content: space-between; -align-items: center; -border-radius: 4px; -border: 1px solid var(--text2); -align-self: stretch; -color: var(--text2); - + padding: 4px 8px; + justify-content: space-between; + align-items: center; + border-radius: 4px; + border: 1px solid var(--text2); + align-self: stretch; + color: var(--text2); } -.copy_error:hover{ +.copy_error:hover { border: 1px solid var(--accent4); color: var(--accent4); - - -} \ No newline at end of file +} diff --git a/src/components/Trade/TradeModules/TradeLinks.module.css b/src/components/Trade/TradeModules/TradeLinks.module.css index d5d39ca07a..8e798ab133 100644 --- a/src/components/Trade/TradeModules/TradeLinks.module.css +++ b/src/components/Trade/TradeModules/TradeLinks.module.css @@ -1,10 +1,9 @@ -.container{ +.container { width: 100%; display: flex; justify-content: center; align-items: center; gap: 8px; - } .trade_link { width: 100%; @@ -28,15 +27,12 @@ @media only screen and (min-width: 769px) { .trade_link { - width: 116px; height: 25px; } - - -.container{ - height: 25px; - margin: 0 0 16px 0 -} -} \ No newline at end of file + .container { + height: 25px; + margin: 0 0 16px 0; + } +} diff --git a/src/components/Trade/TradeModules/TradeModuleHeader.module.css b/src/components/Trade/TradeModules/TradeModuleHeader.module.css index e790a0b839..22e16e5e2a 100644 --- a/src/components/Trade/TradeModules/TradeModuleHeader.module.css +++ b/src/components/Trade/TradeModules/TradeModuleHeader.module.css @@ -1,11 +1,11 @@ -.main_container{ +.main_container { width: 100%; display: flex; flex-direction: row; align-items: center; justify-content: space-between; font-size: var(--header1-size); - color: var(--text2) + color: var(--text2); } .main_container svg { @@ -18,40 +18,34 @@ color: var(--accent1) !important; } - -.mobile_container{ +.mobile_container { width: 100%; - - - + align-items: center; height: 35px; display: grid; grid-template-columns: 1fr 50px; gap: 8px; - - - } -.icon_container{ +.icon_container { outline: transparent; border: transparent; background: var(--dark2); - display: flex; - + display: flex; + justify-content: center; align-items: center; padding: 2px 0; border-radius: var(--border-radius); } -.token_pair{ +.token_pair { color: var(--text1); font-size: var(--header1-size); cursor: pointer; } -.swap_title{ +.swap_title { color: var(--text1); -} \ No newline at end of file +} diff --git a/src/components/Trade/TradeTabs/Orders/OrderTable/OrderRow.tsx b/src/components/Trade/TradeTabs/Orders/OrderTable/OrderRow.tsx index 40daa6a6de..4908d3a778 100644 --- a/src/components/Trade/TradeTabs/Orders/OrderTable/OrderRow.tsx +++ b/src/components/Trade/TradeTabs/Orders/OrderTable/OrderRow.tsx @@ -220,7 +220,7 @@ function OrderRow(props: propsIF) { sideTypeColumn, tokensColumn, statusDisplay, - hiddenIDColumn + hiddenIDColumn, } = orderRowConstants(orderRowConstantsProps); const handleKeyPress: React.KeyboardEventHandler<HTMLDivElement> = ( diff --git a/src/components/Trade/TradeTabs/Orders/Orders.tsx b/src/components/Trade/TradeTabs/Orders/Orders.tsx index 6f9c65269e..e6de475962 100644 --- a/src/components/Trade/TradeTabs/Orders/Orders.tsx +++ b/src/components/Trade/TradeTabs/Orders/Orders.tsx @@ -123,7 +123,9 @@ function Orders(props: propsIF) { const selectedBaseAddress: string = baseToken.address; const selectedQuoteAddress: string = quoteToken.address; - const prevBaseQuoteAddressRef = useRef<string>(selectedBaseAddress + selectedQuoteAddress); + const prevBaseQuoteAddressRef = useRef<string>( + selectedBaseAddress + selectedQuoteAddress, + ); const [showInfiniteScroll, setShowInfiniteScroll] = useState<boolean>( !isAccountView && showAllData, @@ -134,8 +136,10 @@ function Orders(props: propsIF) { }, [isAccountView, showAllData]); useEffect(() => { - - if(prevBaseQuoteAddressRef.current !== selectedBaseAddress + selectedQuoteAddress){ + if ( + prevBaseQuoteAddressRef.current !== + selectedBaseAddress + selectedQuoteAddress + ) { setPagesVisible([0, 1]); setPageDataCountShouldReset(true); setExtraPagesAvailable(0); @@ -146,8 +150,9 @@ function Orders(props: propsIF) { setLastFetchedCount(0); setHotTransactions([]); } - - prevBaseQuoteAddressRef.current = selectedBaseAddress + selectedQuoteAddress; + + prevBaseQuoteAddressRef.current = + selectedBaseAddress + selectedQuoteAddress; }, [selectedBaseAddress + selectedQuoteAddress]); const [pageDataCountShouldReset, setPageDataCountShouldReset] = diff --git a/src/components/Trade/TradeTabs/Orders/orderRowConstants.tsx b/src/components/Trade/TradeTabs/Orders/orderRowConstants.tsx index b33e802cc9..6686bb62c2 100644 --- a/src/components/Trade/TradeTabs/Orders/orderRowConstants.tsx +++ b/src/components/Trade/TradeTabs/Orders/orderRowConstants.tsx @@ -151,8 +151,14 @@ export const orderRowConstants = (props: propsIF) => { ); const hiddenIDColumn = ( - <RowItem hover data-label='hidden-id' role='button' style={{display: 'none'}} tabIndex={0}> - <span>{posHash}</span> + <RowItem + hover + data-label='hidden-id' + role='button' + style={{ display: 'none' }} + tabIndex={0} + > + <span>{posHash}</span> </RowItem> ); @@ -523,6 +529,6 @@ export const orderRowConstants = (props: propsIF) => { sideTypeColumn, tokensColumn, statusDisplay, - hiddenIDColumn + hiddenIDColumn, }; }; diff --git a/src/components/Trade/TradeTabs/Ranges/RangesTable/RangesRow.tsx b/src/components/Trade/TradeTabs/Ranges/RangesTable/RangesRow.tsx index 4efcf30cd4..6f61964284 100644 --- a/src/components/Trade/TradeTabs/Ranges/RangesTable/RangesRow.tsx +++ b/src/components/Trade/TradeTabs/Ranges/RangesTable/RangesRow.tsx @@ -5,7 +5,7 @@ import { memo, Dispatch, SetStateAction, - MutableRefObject + MutableRefObject, } from 'react'; import { PositionIF, @@ -44,7 +44,7 @@ function RangesRow(props: propsIF) { openDetailsModal, openActionModal, setRangeModalAction, - observedRowRef + observedRowRef, } = props; const { snackbar: { open: openSnackbar }, @@ -234,7 +234,7 @@ function RangesRow(props: propsIF) { tokenValues, apyDisplay, rangeDisplay, - hiddenIDColumn + hiddenIDColumn, } = rangeRowConstants(rangeRowConstantsProps); return ( diff --git a/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.module.css b/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.module.css index 4fda81c2cf..6ed52a5b22 100644 --- a/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.module.css +++ b/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.module.css @@ -1,52 +1,49 @@ - - - -@keyframes opaAnim{ - - 0%, 100%{ +@keyframes opaAnim { + 0%, + 100% { opacity: 1; } - 50%{ - opacity: .2; + 50% { + opacity: 0.2; } } -@keyframes barAnim{ - 0%, 100%{ +@keyframes barAnim { + 0%, + 100% { width: 100%; opacity: 1; } - - 50%{ + + 50% { width: 10%; - opacity: .2; + opacity: 0.2; } } -@keyframes barAnim2{ - 0%{ +@keyframes barAnim2 { + 0% { left: -10%; width: 10%; - opacity: .3; + opacity: 0.3; background-color: var(--accent2); } - - 50%{ + + 50% { width: 30%; opacity: 1; background-color: var(--accent1); } - - 100%{ + + 100% { width: 10%; left: 120%; - opacity: .2; + opacity: 0.2; background-color: var(--accent2); } } - -.data_fetching_panel{ +.data_fetching_panel { position: absolute; bottom: 0; width: 100%; @@ -56,14 +53,13 @@ z-index: 4; } -.data_fetching_text{ +.data_fetching_text { opacity: 1; animation: opaAnim ease-in-out 1s infinite; - margin-bottom: .5rem; - + margin-bottom: 0.5rem; } -.data_fetching_bar{ +.data_fetching_bar { display: block; height: 2px; background: var(--accent1); @@ -71,10 +67,10 @@ margin: 0 auto; } -.data_fetching_bar2{ +.data_fetching_bar2 { display: block; width: 10%; - height: .2rem; + height: 0.2rem; position: absolute; bottom: 0; left: -20%; @@ -82,5 +78,3 @@ z-index: 6; animation: barAnim2 ease-in-out 1s infinite; } - - diff --git a/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.tsx b/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.tsx index 7f079d2add..2283f75e65 100644 --- a/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.tsx +++ b/src/components/Trade/TradeTabs/TableRowsInfiniteScroll.tsx @@ -1,12 +1,22 @@ -import { Dispatch, memo, SetStateAction, useEffect, useRef, useState} from 'react'; +import { + Dispatch, + memo, + SetStateAction, + useEffect, + useRef, + useState, +} from 'react'; import { RiArrowUpSLine } from 'react-icons/ri'; -import { } from '../../../ambient-utils/api'; +import {} from '../../../ambient-utils/api'; import { LimitOrderIF, PositionIF, - TransactionIF + TransactionIF, } from '../../../ambient-utils/types'; -import { ScrollToTopButton, ScrollToTopButtonMobile } from '../../../styled/Components/TransactionTable'; +import { + ScrollToTopButton, + ScrollToTopButtonMobile, +} from '../../../styled/Components/TransactionTable'; import useMediaQuery from '../../../utils/hooks/useMediaQuery'; import { domDebug } from '../../Chat/DomDebugger/DomDebuggerUtils'; import TableRows from './TableRows'; @@ -29,8 +39,8 @@ interface propsIF { extraPagesAvailable: number; pageDataCount?: number[]; dataPerPage?: number; - tableKey?: string - lastFetchedCount?: number + tableKey?: string; + lastFetchedCount?: number; setLastFetchedCount?: Dispatch<SetStateAction<number>>; moreDataLoading: boolean; componentLock?: boolean; @@ -48,7 +58,7 @@ enum InfScrollAction { ADD_MORE_DATA, SLIGHT_SCROLL, SUCCESS, - FAIL + FAIL, } enum ScrollPosition { @@ -56,7 +66,6 @@ enum ScrollPosition { BOTTOM, } - function TableRowsInfiniteScroll({ type, data, @@ -76,10 +85,8 @@ function TableRowsInfiniteScroll({ setLastFetchedCount, moreDataLoading, componentLock, - scrollOnTopTresholdRatio - + scrollOnTopTresholdRatio, }: propsIF) { - const isIOS = (): boolean => { const userAgent = navigator.userAgent; return /iPad|iPhone|iPod/.test(userAgent); @@ -89,18 +96,17 @@ function TableRowsInfiniteScroll({ const wrapperID = tableKey ? tableKey : ''; - const txSpanSelectorForScrollMethod = `#infinite_scroll_wrapper_${wrapperID} div[data-label='hidden-id'] > span`; - const txSpanSelectorForBindMethod = 'div[data-label="hidden-id"]'; + const txSpanSelectorForScrollMethod = `#infinite_scroll_wrapper_${wrapperID} div[data-label='hidden-id'] > span`; + const txSpanSelectorForBindMethod = 'div[data-label="hidden-id"]'; const debugMode = false; const markRows = false; - const[manualMode, setManualMode] = useState(false); + const [manualMode, setManualMode] = useState(false); const manualModeRef = useRef<boolean>(); manualModeRef.current = manualMode; const [showManualScrollDown, setShowManualScrollDown] = useState(false); const [showManualScrollUp, setShowManualScrollUp] = useState(false); - const moreDataLoadingRef = useRef<boolean>(); moreDataLoadingRef.current = moreDataLoading; @@ -108,11 +114,9 @@ function TableRowsInfiniteScroll({ const componentLockRef = useRef<boolean>(); componentLockRef.current = componentLock; - const lastRowRef = useRef<HTMLDivElement | null>(null); const firstRowRef = useRef<HTMLDivElement | null>(null); - const [lastSeenTxID, setLastSeenTxID] = useState<string>(''); const lastSeenTxIDRef = useRef<string>(); lastSeenTxIDRef.current = lastSeenTxID; @@ -152,61 +156,55 @@ function TableRowsInfiniteScroll({ const reqLockRef = useRef<boolean>(); reqLockRef.current = reqLock; - const [actionHistory, setActionHistory] = useState(''); - const bindTmLockAutoScroll = () => { const baseTimeout = 2000; - if(lastFetchedCount && lastFetchedCount > 0){ - if(lastFetchedCount >= 30){ + if (lastFetchedCount && lastFetchedCount > 0) { + if (lastFetchedCount >= 30) { return baseTimeout; - }else if ( lastFetchedCount >= 15){ - return baseTimeout * .75; - } else{ - return baseTimeout * .5; + } else if (lastFetchedCount >= 15) { + return baseTimeout * 0.75; + } else { + return baseTimeout * 0.5; } - - }else{ + } else { return baseTimeout; } - } + }; const tmReadyState = 100; const tmLockShift = 500; const tmLockReq = 700; const tmLockAutoScroll = bindTmLockAutoScroll(); - - const bindWrapperEl = () => { - if(isSmallScreen){ - return document.getElementById(`infinite_scroll_wrapper_${wrapperID}`)?.parentElement; - }else{ - return document.getElementById(`infinite_scroll_wrapper_${wrapperID}`)?.parentElement?.parentElement?.parentElement; + if (isSmallScreen) { + return document.getElementById( + `infinite_scroll_wrapper_${wrapperID}`, + )?.parentElement; + } else { + return document.getElementById( + `infinite_scroll_wrapper_${wrapperID}`, + )?.parentElement?.parentElement?.parentElement; } - } + }; - const wrapperEl = bindWrapperEl(); - const bindTableReadyState = (newState: boolean) => { - if(newState === true){ + if (newState === true) { setIsTableReady(true); - } - else{ + } else { setIsTableReady(false); } - } - - + }; const scrollToTop = () => { setActionHistory(''); setLastSeenTxID(''); setPagesVisible([0, 1]); - if(wrapperEl){ + if (wrapperEl) { wrapperEl.scrollTo({ top: 0, behavior: 'instant' as ScrollBehavior, @@ -218,26 +216,21 @@ function TableRowsInfiniteScroll({ behavior: 'instant' as ScrollBehavior, }); doIphoneFix(); - }, tmReadyState) + }, tmReadyState); } lockShift(); }; - - const triggerAutoScroll = ( - direction: ScrollDirection, - ) => { + + const triggerAutoScroll = (direction: ScrollDirection) => { bindTableReadyState(true); setAutoScroll(true); setAutoScrollDirection(direction); - setTimeout( - () => { - setAutoScroll(false); - }, - tmLockAutoScroll, - ); setTimeout(() => { - bindTableReadyState(true) - }, tmReadyState) + setAutoScroll(false); + }, tmLockAutoScroll); + setTimeout(() => { + bindTableReadyState(true); + }, tmReadyState); }; const lockShift = () => { @@ -245,72 +238,162 @@ function TableRowsInfiniteScroll({ setTimeout(() => { setShiftLock(false); }, tmLockShift); - } + }; const shiftUp = (): void => { - if(shiftLockRef.current === true) { + if (shiftLockRef.current === true) { bindTableReadyState(true); return; } lockShift(); setTimeout(() => { bindTableReadyState(true); - }, tmReadyState) + }, tmReadyState); setPagesVisible((prev) => [prev[0] - 1, prev[1] - 1]); triggerAutoScroll(ScrollDirection.UP); addToActionHistory(InfScrollAction.SHIFT_UP); }; - + const shiftDown = (): void => { - if(shiftLockRef.current === true) { + if (shiftLockRef.current === true) { bindTableReadyState(true); return; } lockShift(); setTimeout(() => { bindTableReadyState(true); - }, tmReadyState) + }, tmReadyState); setPagesVisible((prev) => [prev[0] + 1, prev[1] + 1]); triggerAutoScroll(ScrollDirection.DOWN); - addToActionHistory(InfScrollAction.SHIFT_DOWN) + addToActionHistory(InfScrollAction.SHIFT_DOWN); }; - - const renderDebugData = () => { - - if(debugMode){ - - const renderedRows = document.querySelectorAll(txSpanSelectorForScrollMethod).length; - - return (<> - <span style={{fontSize: '.72rem'}}> - <div style={{display: 'none', padding: '.5rem 1rem', background: 'black', color: `${isTableReady ? 'rgba(0, 255,0)' : 'rgba(255, 0,0)'}`, position: 'absolute', left: '1rem', top: '1.7rem'}} onClick={() => {setManualMode(!manualModeRef.current)}}>Ready? : </div> - <div style={{display: 'none', padding: '.5rem 1rem', background: 'black', color: 'rgba(0, 255,0)', opacity: manualModeRef.current ? '1':'.7', position: 'absolute', right: '3rem', top: '0rem'}} onClick={() => {setManualMode(!manualModeRef.current)}}>{manualModeRef.current ? 'Manual' : 'Auto'} Mode</div> - <div style={{position: 'absolute', background: 'black', color: 'rgba(0, 255,0)', left: '1rem', top: '3rem'}}>Page: {pagesVisibleRef.current ? pagesVisibleRef.current[0] : ''}</div> - <div style={{display: 'none',position: 'absolute', background: 'black', color: 'rgba(0, 255,0)', left: '2rem', top: '1.2rem'}}>Rows : {renderedRows}</div> - <div style={{left: '1rem', top: '0rem', color: 'rgba(255, 150,30)', position: 'absolute', background: 'black'}}>{actionHistory}</div> - <div style={{right: '0rem', top: '1.2rem', display: 'block', width:'1rem', height: '1rem', borderRadius: '50vw', position: 'absolute', background: componentLock === true ? 'red': 'green'}}></div> - {pageDataCount && pageDataCount.length > 0 - && - (<div style={{position: 'absolute', background: 'black', color: 'cyan', left: '1rem', top: '4.5rem'}}> - Data Counts: [{pageDataCount.map(e=> e + ' ')}] - </div>) - } - {data.length > 0 - && - (<div style={{position: 'absolute', background: 'black', color: 'cyan', left: '1rem', top: '6.5rem'}}> - rendered rows: {data.length} - </div>) - } - - - </span> - </>) - }else{ - return <></> + if (debugMode) { + const renderedRows = document.querySelectorAll( + txSpanSelectorForScrollMethod, + ).length; + + return ( + <> + <span style={{ fontSize: '.72rem' }}> + <div + style={{ + display: 'none', + padding: '.5rem 1rem', + background: 'black', + color: `${isTableReady ? 'rgba(0, 255,0)' : 'rgba(255, 0,0)'}`, + position: 'absolute', + left: '1rem', + top: '1.7rem', + }} + onClick={() => { + setManualMode(!manualModeRef.current); + }} + > + Ready? :{' '} + </div> + <div + style={{ + display: 'none', + padding: '.5rem 1rem', + background: 'black', + color: 'rgba(0, 255,0)', + opacity: manualModeRef.current ? '1' : '.7', + position: 'absolute', + right: '3rem', + top: '0rem', + }} + onClick={() => { + setManualMode(!manualModeRef.current); + }} + > + {manualModeRef.current ? 'Manual' : 'Auto'} Mode + </div> + <div + style={{ + position: 'absolute', + background: 'black', + color: 'rgba(0, 255,0)', + left: '1rem', + top: '3rem', + }} + > + Page:{' '} + {pagesVisibleRef.current + ? pagesVisibleRef.current[0] + : ''} + </div> + <div + style={{ + display: 'none', + position: 'absolute', + background: 'black', + color: 'rgba(0, 255,0)', + left: '2rem', + top: '1.2rem', + }} + > + Rows : {renderedRows} + </div> + <div + style={{ + left: '1rem', + top: '0rem', + color: 'rgba(255, 150,30)', + position: 'absolute', + background: 'black', + }} + > + {actionHistory} + </div> + <div + style={{ + right: '0rem', + top: '1.2rem', + display: 'block', + width: '1rem', + height: '1rem', + borderRadius: '50vw', + position: 'absolute', + background: + componentLock === true ? 'red' : 'green', + }} + ></div> + {pageDataCount && pageDataCount.length > 0 && ( + <div + style={{ + position: 'absolute', + background: 'black', + color: 'cyan', + left: '1rem', + top: '4.5rem', + }} + > + Data Counts: [ + {pageDataCount.map((e) => e + ' ')}] + </div> + )} + {data.length > 0 && ( + <div + style={{ + position: 'absolute', + background: 'black', + color: 'cyan', + left: '1rem', + top: '6.5rem', + }} + > + rendered rows: {data.length} + </div> + )} + </span> + </> + ); + } else { + return <></>; } - } + }; useEffect(() => { domDebug('sortBy', sortBy); @@ -320,35 +403,37 @@ function TableRowsInfiniteScroll({ domDebug('moreDataAvailable', moreDataAvailableRef.current); const doIphoneFix = () => { - if(isIOS()){ + if (isIOS()) { setTimeout(() => { - if(wrapperEl){ + if (wrapperEl) { wrapperEl.scrollBy({ - top: -2, - left: 0, - behavior: 'smooth' - }); + top: -2, + left: 0, + behavior: 'smooth', + }); } }, tmReadyState); } - } + }; const scrollByTxID = (txID: string, pos: ScrollPosition): void => { - if(txID.length === 0) { + if (txID.length === 0) { addToActionHistory(InfScrollAction.FAIL); return; - }; + } const txSpans = document.querySelectorAll( - txSpanSelectorForScrollMethod + txSpanSelectorForScrollMethod, ); txSpans.forEach((span) => { if (span.textContent === txID) { - - const row = span.closest('div[data-type="infinite-scroll-row"]') as HTMLDivElement; - if(row){ + const row = span.closest( + 'div[data-type="infinite-scroll-row"]', + ) as HTMLDivElement; + if (row) { if (debugMode && markRows) { - row.style.background = pos == ScrollPosition.BOTTOM ? 'purple' : 'cyan'; + row.style.background = + pos == ScrollPosition.BOTTOM ? 'purple' : 'cyan'; } addToActionHistory(InfScrollAction.SUCCESS); row.scrollIntoView({ @@ -356,14 +441,15 @@ function TableRowsInfiniteScroll({ behavior: 'instant' as ScrollBehavior, }); doIphoneFix(); - } } }); }; const bindFirstSeenRow = (): void => { - const rows = document.querySelectorAll(`#infinite_scroll_wrapper_${wrapperID} > div`); + const rows = document.querySelectorAll( + `#infinite_scroll_wrapper_${wrapperID} > div`, + ); if (rows.length > 0) { const firstRow = rows[0] as HTMLDivElement; if (debugMode && markRows) { @@ -379,7 +465,9 @@ function TableRowsInfiniteScroll({ }; const bindLastSeenRow = (): void => { - const rows = document.querySelectorAll(`#infinite_scroll_wrapper_${wrapperID} > div`); + const rows = document.querySelectorAll( + `#infinite_scroll_wrapper_${wrapperID} > div`, + ); if (rows.length > 0) { const lastRow = rows[rows.length - 1] as HTMLDivElement; if (debugMode && markRows) { @@ -397,27 +485,34 @@ function TableRowsInfiniteScroll({ const autoScrollAlternateSolutionActive = true; const couldFirstPageLoop = () => { - if(dataPerPage && pageDataCount && pagesVisibleRef.current && pageDataCount.length > pagesVisibleRef.current[0]){ + if ( + dataPerPage && + pageDataCount && + pagesVisibleRef.current && + pageDataCount.length > pagesVisibleRef.current[0] + ) { const firstPageIndex = pagesVisibleRef.current[0]; - if(scrollOnTopTresholdRatio){ - return pageDataCount[firstPageIndex] / dataPerPage < scrollOnTopTresholdRatio; + if (scrollOnTopTresholdRatio) { + return ( + pageDataCount[firstPageIndex] / dataPerPage < + scrollOnTopTresholdRatio + ); } - return pageDataCount[firstPageIndex] / dataPerPage < .5; + return pageDataCount[firstPageIndex] / dataPerPage < 0.5; } return false; - } - + }; const doScroll = () => { if (sortBy === 'time' || !autoScrollAlternateSolutionActive) { if (autoScrollDirection === ScrollDirection.DOWN) { - if(pageDataCount && dataPerPage && couldFirstPageLoop()){ + if (pageDataCount && dataPerPage && couldFirstPageLoop()) { scrollByTxID( lastSeenTxIDRef.current || '', ScrollPosition.TOP, ); - }else{ + } else { scrollByTxID( lastSeenTxIDRef.current || '', ScrollPosition.BOTTOM, @@ -432,23 +527,23 @@ function TableRowsInfiniteScroll({ } else { scrollWithAlternateStrategy(); } - const wrapper = document.getElementById(`infinite_scroll_wrapper_${wrapperID}`); - if( wrapper !== null){ + const wrapper = document.getElementById( + `infinite_scroll_wrapper_${wrapperID}`, + ); + if (wrapper !== null) { wrapper.click(); } - } - - const scrollWithAlternateStrategy = () => { - + }; - if(wrapperEl){ - if(isSmallScreen){ + const scrollWithAlternateStrategy = () => { + if (wrapperEl) { + if (isSmallScreen) { wrapperEl.scrollTo({ // top: autoScrollDirection === ScrollDirection.DOWN ? 1400 : 1340, top: wrapperEl.children[0].scrollHeight / 2, behavior: 'instant' as ScrollBehavior, }); - }else{ + } else { wrapperEl.scrollTo({ // top: autoScrollDirection === ScrollDirection.DOWN ? 1912 : 1850, top: wrapperEl.children[0].scrollHeight / 2, @@ -459,22 +554,29 @@ function TableRowsInfiniteScroll({ } }; - const firstRowIntersectAction = () => { - const pagesVisibleVal = pagesVisibleRef.current ? pagesVisibleRef.current : pagesVisible; + const pagesVisibleVal = pagesVisibleRef.current + ? pagesVisibleRef.current + : pagesVisible; // first row is visible - if(pagesVisibleVal[0] > 0){ - shiftUp() - }else{ + if (pagesVisibleVal[0] > 0) { + shiftUp(); + } else { bindTableReadyState(true); } - } + }; const lastRowIntersectAction = () => { - const pagesVisibleVal = pagesVisibleRef.current ? pagesVisibleRef.current : pagesVisible; - const extraPagesAvailableVal = extraPagesAvailableRef.current ? extraPagesAvailableRef.current : extraPagesAvailable; - const moreDataAvailableVal = moreDataAvailableRef.current ? moreDataAvailableRef.current : moreDataAvailable - + const pagesVisibleVal = pagesVisibleRef.current + ? pagesVisibleRef.current + : pagesVisible; + const extraPagesAvailableVal = extraPagesAvailableRef.current + ? extraPagesAvailableRef.current + : extraPagesAvailable; + const moreDataAvailableVal = moreDataAvailableRef.current + ? moreDataAvailableRef.current + : moreDataAvailable; + bindTableReadyState(false); // last row is visible extraPagesAvailableVal + 1 > pagesVisibleVal[1] @@ -482,35 +584,34 @@ function TableRowsInfiniteScroll({ : moreDataAvailableVal ? addMoreData() : bindTableReadyState(true); - } + }; const resetLastSeen = () => { setLastSeenTxID(''); - } + }; useEffect(() => { - if(moreDataLoadingRef.current || componentLockRef.current) return; + if (moreDataLoadingRef.current || componentLockRef.current) return; resetLastSeen(); const observer = new IntersectionObserver( (entries) => { - const entry = entries[0]; + const moreDataLoadingVal = moreDataLoadingRef.current + ? moreDataLoadingRef.current + : moreDataLoading; - const moreDataLoadingVal = moreDataLoadingRef.current ? moreDataLoadingRef.current : moreDataLoading; - if (moreDataLoadingVal) return; - - if (entry.isIntersecting) { - if(manualModeRef.current){ - bindLastSeenRow(); + if (entry.isIntersecting) { + if (manualModeRef.current) { + bindLastSeenRow(); setShowManualScrollDown(true); - }else{ + } else { bindLastSeenRow(); lastRowIntersectAction(); } - }else{ + } else { setShowManualScrollDown(false); } }, @@ -537,52 +638,44 @@ function TableRowsInfiniteScroll({ // pagesVisible[1], ]); - useEffect(() => { - if(moreDataAvailable == false){ + if (moreDataAvailable == false) { bindTableReadyState(true); } - }, [moreDataAvailable]) + }, [moreDataAvailable]); useEffect(() => { bindTableReadyState(!moreDataLoadingRef.current); - }, [moreDataLoadingRef.current]) - - - + }, [moreDataLoadingRef.current]); const addToActionHistory = (actionType: InfScrollAction) => { - - setActionHistory( prev => { - + setActionHistory((prev) => { let actionToken = ''; - switch(actionType){ - case InfScrollAction.SHIFT_UP: - actionToken = '↑' - break; + switch (actionType) { + case InfScrollAction.SHIFT_UP: + actionToken = '↑'; + break; case InfScrollAction.SHIFT_DOWN: - actionToken = '↓' - break; + actionToken = '↓'; + break; case InfScrollAction.ADD_MORE_DATA: - actionToken = '…' + actionToken = '…'; break; case InfScrollAction.SLIGHT_SCROLL: - actionToken = '~' + actionToken = '~'; break; case InfScrollAction.SUCCESS: - actionToken = '✓' + actionToken = '✓'; break; case InfScrollAction.FAIL: - actionToken = '□' + actionToken = '□'; break; } - - return prev += (' ' + actionToken); - }) - - } + return (prev += ' ' + actionToken); + }); + }; useEffect(() => { domDebug('moreDataLoading', moreDataLoading); @@ -592,22 +685,21 @@ function TableRowsInfiniteScroll({ (entries) => { const entry = entries[0]; - - const moreDataLoadingVal = moreDataLoadingRef.current ? moreDataLoadingRef.current : moreDataLoading; - + const moreDataLoadingVal = moreDataLoadingRef.current + ? moreDataLoadingRef.current + : moreDataLoading; + if (moreDataLoadingVal) return; if (entry.isIntersecting) { - - if(manualModeRef.current){ + if (manualModeRef.current) { setShowManualScrollUp(true); - bindFirstSeenRow(); - }else{ + bindFirstSeenRow(); + } else { firstRowIntersectAction(); bindFirstSeenRow(); } - - }else{ + } else { setShowManualScrollUp(false); } }, @@ -628,79 +720,102 @@ function TableRowsInfiniteScroll({ }; }, [firstRowRef.current, moreDataLoading, pagesVisible[0]]); - - - const lockReq = () => { setReqLock(true); setTimeout(() => { setReqLock(false); }, tmLockReq); - } - + }; - const addMoreData = async() => { - if(reqLockRef.current === true) return; + const addMoreData = async () => { + if (reqLockRef.current === true) return; lockReq(); await fetcherFunction(); - addToActionHistory(InfScrollAction.ADD_MORE_DATA) + addToActionHistory(InfScrollAction.ADD_MORE_DATA); lockShift(); - } + }; useEffect(() => { - if(lastFetchedCount && lastFetchedCount > 0 && setLastFetchedCount){ + if (lastFetchedCount && lastFetchedCount > 0 && setLastFetchedCount) { triggerAutoScroll(ScrollDirection.DOWN); setTimeout(() => { setLastFetchedCount(0); - }, tmLockShift) + }, tmLockShift); } - }, [lastFetchedCount]) - + }, [lastFetchedCount]); useEffect(() => { doScroll(); - }, [pagesVisible[0]]) + }, [pagesVisible[0]]); useEffect(() => { - domDebug('lastSeen', lastSeenTxIDRef.current); domDebug('firstSeen', firstSeenTxIDRef.current); - }, [lastSeenTxID, firstSeenTxID]) + }, [lastSeenTxID, firstSeenTxID]); return ( <> -<div id={`infinite_scroll_wrapper_${wrapperID}`} style={{position: 'relative'}}> - <TableRows - type={type} - data={data} - fullData={data} - isAccountView={isAccountView} - tableView={tableView} - lastRowRef={lastRowRef} - firstRowRef={firstRowRef} + <div + id={`infinite_scroll_wrapper_${wrapperID}`} + style={{ position: 'relative' }} + > + <TableRows + type={type} + data={data} + fullData={data} + isAccountView={isAccountView} + tableView={tableView} + lastRowRef={lastRowRef} + firstRowRef={firstRowRef} /> </div> {pagesVisible[0] > 0 && !isSmallScreen && ( - <ScrollToTopButton onClick={scrollToTop}>Scroll to Top</ScrollToTopButton>)} - {pagesVisible[0] > 0 && isSmallScreen && ( - <ScrollToTopButtonMobile onClick={scrollToTop}> -<RiArrowUpSLine size={20} color='white'/> - </ScrollToTopButtonMobile>)} - - {showManualScrollUp && (<div style={{padding: '.5rem 1rem', background: 'magenta', position: 'absolute', zIndex: 99, right: '8rem', top: '12rem'}} onClick={firstRowIntersectAction}>Scroll Up</div>)} - {showManualScrollDown && (<div style={{padding: '.5rem 1rem', background: 'orange', position: 'absolute', zIndex: 99, right: '8rem', top: '14rem'}} onClick={lastRowIntersectAction}>Scroll Down</div>)} - { - renderDebugData() - } - { - (!isTableReadyRef.current && moreDataLoadingRef.current) && - (<div className={styles.data_fetching_panel}> - <div className={styles.data_fetching_bar2}></div> - </div>) - - } - - + <ScrollToTopButton onClick={scrollToTop}> + Scroll to Top + </ScrollToTopButton> + )} + {pagesVisible[0] > 0 && isSmallScreen && ( + <ScrollToTopButtonMobile onClick={scrollToTop}> + <RiArrowUpSLine size={20} color='white' /> + </ScrollToTopButtonMobile> + )} + + {showManualScrollUp && ( + <div + style={{ + padding: '.5rem 1rem', + background: 'magenta', + position: 'absolute', + zIndex: 99, + right: '8rem', + top: '12rem', + }} + onClick={firstRowIntersectAction} + > + Scroll Up + </div> + )} + {showManualScrollDown && ( + <div + style={{ + padding: '.5rem 1rem', + background: 'orange', + position: 'absolute', + zIndex: 99, + right: '8rem', + top: '14rem', + }} + onClick={lastRowIntersectAction} + > + Scroll Down + </div> + )} + {renderDebugData()} + {!isTableReadyRef.current && moreDataLoadingRef.current && ( + <div className={styles.data_fetching_panel}> + <div className={styles.data_fetching_bar2}></div> + </div> + )} </> ); } diff --git a/src/components/Trade/TradeTabs/Transactions/Transactions.tsx b/src/components/Trade/TradeTabs/Transactions/Transactions.tsx index 5e775ce02b..7194d2e01b 100644 --- a/src/components/Trade/TradeTabs/Transactions/Transactions.tsx +++ b/src/components/Trade/TradeTabs/Transactions/Transactions.tsx @@ -168,7 +168,6 @@ function Transactions(props: propsIF) { changes: [...getInitialChangesData()], }); - const [hotTransactions, setHotTransactions] = useState<TransactionIF[]>([]); const fetchedTransactionsRef = useRef<Changes>(); diff --git a/src/components/Trade/TradeTabs/useSortedLimits.ts b/src/components/Trade/TradeTabs/useSortedLimits.ts index 5356d1dacc..ae3cfd4467 100644 --- a/src/components/Trade/TradeTabs/useSortedLimits.ts +++ b/src/components/Trade/TradeTabs/useSortedLimits.ts @@ -21,7 +21,7 @@ export const useSortedLimits = ( boolean, Dispatch<SetStateAction<boolean>>, LimitOrderIF[], - (data:LimitOrderIF[]) => LimitOrderIF[] + (data: LimitOrderIF[]) => LimitOrderIF[], ] => { // default sort function const sortByTime = (unsortedData: LimitOrderIF[]): LimitOrderIF[] => @@ -113,5 +113,12 @@ export const useSortedLimits = ( [sortBy, reverseSort, limitOrders[0]?.limitOrderId, limitOrders.length], ); - return [sortBy, setSortBy, reverseSort, setReverseSort, sortedLimitOrders, sortData]; + return [ + sortBy, + setSortBy, + reverseSort, + setReverseSort, + sortedLimitOrders, + sortData, + ]; }; diff --git a/src/components/Trade/TradeTabs/useSortedTxs.ts b/src/components/Trade/TradeTabs/useSortedTxs.ts index 5b85691aee..78014166f2 100644 --- a/src/components/Trade/TradeTabs/useSortedTxs.ts +++ b/src/components/Trade/TradeTabs/useSortedTxs.ts @@ -19,7 +19,7 @@ export const useSortedTxs = ( boolean, Dispatch<SetStateAction<boolean>>, TransactionIF[], - (data:TransactionIF[]) => TransactionIF[] + (data: TransactionIF[]) => TransactionIF[], ] => { // default sort function const sortByUpdateTime = (unsortedData: TransactionIF[]): TransactionIF[] => @@ -107,5 +107,12 @@ export const useSortedTxs = ( return sortData(transactions); }, [sortBy, reverseSort, transactions[0]?.txHash, transactions.length]); - return [sortBy, setSortBy, reverseSort, setReverseSort, sortedTransactions, sortData]; + return [ + sortBy, + setSortBy, + reverseSort, + setReverseSort, + sortedTransactions, + sortData, + ]; }; diff --git a/src/contexts/BottomSheetContext.tsx b/src/contexts/BottomSheetContext.tsx index 4edcd55cf4..d960591d3a 100644 --- a/src/contexts/BottomSheetContext.tsx +++ b/src/contexts/BottomSheetContext.tsx @@ -1,49 +1,60 @@ -import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; +import React, { + createContext, + useCallback, + useContext, + useMemo, + useState, +} from 'react'; // Define the shape of the context interface BottomSheetContextType { - isBottomSheetOpen: boolean; - openBottomSheet: () => void; - closeBottomSheet: () => void; + isBottomSheetOpen: boolean; + openBottomSheet: () => void; + closeBottomSheet: () => void; } -const BottomSheetContext = createContext<BottomSheetContextType | undefined>(undefined); +const BottomSheetContext = createContext<BottomSheetContextType | undefined>( + undefined, +); // Hook for accessing the context export const useBottomSheet = () => { - const context = useContext(BottomSheetContext); - if (!context) { - throw new Error('useBottomSheet must be used within a BottomSheetProvider'); - } - return context; + const context = useContext(BottomSheetContext); + if (!context) { + throw new Error( + 'useBottomSheet must be used within a BottomSheetProvider', + ); + } + return context; }; -export const BottomSheetContextProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { - const [isBottomSheetOpen, setIsBottomSheetOpen] = useState(false); - - - // Memoize the handler functions so they don't get recreated on every render - const openBottomSheet = useCallback(() => { - setIsBottomSheetOpen(true); - }, []); - - const closeBottomSheet = useCallback(() => { - setIsBottomSheetOpen(false); - }, []); - - // Memoize the context value to prevent unnecessary re-renders of consuming components - const value = useMemo( - () => ({ - isBottomSheetOpen, - openBottomSheet, - closeBottomSheet, - }), - [isBottomSheetOpen, openBottomSheet, closeBottomSheet] - ); - - return ( - <BottomSheetContext.Provider value={value}> - {children} - </BottomSheetContext.Provider> - ); -}; \ No newline at end of file +export const BottomSheetContextProvider: React.FC<{ + children: React.ReactNode; +}> = ({ children }) => { + const [isBottomSheetOpen, setIsBottomSheetOpen] = useState(false); + + // Memoize the handler functions so they don't get recreated on every render + const openBottomSheet = useCallback(() => { + setIsBottomSheetOpen(true); + }, []); + + const closeBottomSheet = useCallback(() => { + setIsBottomSheetOpen(false); + }, []); + + // Memoize the context value to prevent unnecessary re-renders of consuming components + const value = useMemo( + () => ({ + isBottomSheetOpen, + openBottomSheet, + closeBottomSheet, + }), + [isBottomSheetOpen, openBottomSheet, closeBottomSheet], + ); + + return ( + <BottomSheetContext.Provider value={value}> + {children} + </BottomSheetContext.Provider> + ); +}; diff --git a/src/contexts/CandleContext.tsx b/src/contexts/CandleContext.tsx index faf5d3d032..ce601a4956 100644 --- a/src/contexts/CandleContext.tsx +++ b/src/contexts/CandleContext.tsx @@ -205,13 +205,17 @@ export const CandleContextProvider = (props: { children: React.ReactNode }) => { setIsFirstFetch(true); }, [isFirstFetch]); - useEffect(() => { - const isChangeUserConnected = checkUserConnected.current === isUserConnected; - isChangeUserConnected && isChartEnabled && isUserOnline && fetchCandles(); + useEffect(() => { + const isChangeUserConnected = + checkUserConnected.current === isUserConnected; + isChangeUserConnected && + isChartEnabled && + isUserOnline && + fetchCandles(); if (isManualCandleFetchRequested) setIsManualCandleFetchRequested(false); - checkUserConnected.current = isUserConnected; + checkUserConnected.current = isUserConnected; }, [ isManualCandleFetchRequested, isChartEnabled, diff --git a/src/contexts/Futa/FutaHomeContext.tsx b/src/contexts/Futa/FutaHomeContext.tsx index 09401b3185..d378c50ce1 100644 --- a/src/contexts/Futa/FutaHomeContext.tsx +++ b/src/contexts/Futa/FutaHomeContext.tsx @@ -38,13 +38,12 @@ export const FutaHomeContextProvider = ({ return saved === null ? true : saved === 'true'; }, ); - const [showTutosLocalStorage, setShowTutosLocalStorage] = useState( - () => { - - const lsValue = localStorage.getItem('showTutosLocalStorage'); - return lsValue === null ? SHOW_TUTOS_DEFAULT === 'true' : lsValue === 'true'; - } - ) + const [showTutosLocalStorage, setShowTutosLocalStorage] = useState(() => { + const lsValue = localStorage.getItem('showTutosLocalStorage'); + return lsValue === null + ? SHOW_TUTOS_DEFAULT === 'true' + : lsValue === 'true'; + }); useEffect(() => { localStorage.setItem( @@ -52,15 +51,11 @@ export const FutaHomeContextProvider = ({ showHomeVideoLocalStorage.toString(), ); }, [showHomeVideoLocalStorage]); - - - const bindShowTutosLocalStorage = (value : boolean) => { - localStorage.setItem( - 'showTutosLocalStorage', - value.toString(), - ); + + const bindShowTutosLocalStorage = (value: boolean) => { + localStorage.setItem('showTutosLocalStorage', value.toString()); setShowTutosLocalStorage(value); - } + }; return ( <FutaHomeContext.Provider @@ -74,7 +69,7 @@ export const FutaHomeContextProvider = ({ showHomeVideoLocalStorage, setShowHomeVideoLocalStorage, showTutosLocalStorage, - bindShowTutosLocalStorage + bindShowTutosLocalStorage, }} > {children} diff --git a/src/contexts/TokenBalanceContext.tsx b/src/contexts/TokenBalanceContext.tsx index bac3bce4df..cdd073748d 100644 --- a/src/contexts/TokenBalanceContext.tsx +++ b/src/contexts/TokenBalanceContext.tsx @@ -50,9 +50,9 @@ export const TokenBalanceContext = createContext<TokenBalanceContextIF>( export const TokenBalanceContextProvider = (props: { children: React.ReactNode; }) => { - const [tokenBalances, setTokenBalances] = useState< - TokenIF[] | undefined - >(undefined); + const [tokenBalances, setTokenBalances] = useState<TokenIF[] | undefined>( + undefined, + ); const [NFTData, setNFTData] = useState<NftListByChain[] | undefined>( undefined, diff --git a/src/contexts/TradeDataContext.tsx b/src/contexts/TradeDataContext.tsx index 1687e5a8bd..9070906d93 100644 --- a/src/contexts/TradeDataContext.tsx +++ b/src/contexts/TradeDataContext.tsx @@ -126,7 +126,9 @@ export const TradeDataContextProvider = (props: { children: ReactNode }) => { : dfltTokenB, ); - const [blackListedTimeParams, setBlackListedTimeParams] = useState<Map<string, Set<number>>>(new Map()); + const [blackListedTimeParams, setBlackListedTimeParams] = useState< + Map<string, Set<number>> + >(new Map()); useEffect(() => { // update tokenA and tokenB when chain changes @@ -254,10 +256,9 @@ export const TradeDataContextProvider = (props: { children: ReactNode }) => { return defaultWidth; }, [baseToken.address + quoteToken.address + chainId]); - const addToBlackList = (tokenPair: string, timeParam: number) => { - setBlackListedTimeParams(prev => { - if(prev.has(tokenPair)){ + setBlackListedTimeParams((prev) => { + if (prev.has(tokenPair)) { prev.get(tokenPair)?.add(timeParam); } else { prev.set(tokenPair, new Set([timeParam])); diff --git a/src/contexts/index.ts b/src/contexts/index.ts index 9c403a1638..99d5c302c7 100644 --- a/src/contexts/index.ts +++ b/src/contexts/index.ts @@ -21,4 +21,4 @@ export { TradeTableContext } from './TradeTableContext'; export { TradeTokenContext } from './TradeTokenContext'; export { UserDataContext } from './UserDataContext'; export { UserPreferenceContext } from './UserPreferenceContext'; -export { XpLeadersContext } from './XpLeadersContext'; \ No newline at end of file +export { XpLeadersContext } from './XpLeadersContext'; diff --git a/src/css/GlobalCssClassnames.css b/src/css/GlobalCssClassnames.css index 2d263ba1fc..e08b11de9e 100644 --- a/src/css/GlobalCssClassnames.css +++ b/src/css/GlobalCssClassnames.css @@ -75,8 +75,6 @@ background: var(--dark2); } - - .hide_scrollvar::-webkit-scrollbar { display: none; } @@ -142,7 +140,7 @@ aside.emoji-picker-react { outline: none !important; } -.introjs-button:focus{ +.introjs-button:focus { box-shadow: none !important; } @@ -187,28 +185,25 @@ aside.emoji-picker-react { .css-1idz92c-MuiCircularProgress-svg { color: var(--title-gradient) !important; } -.css-9tmuzo-MuiStepper-root{ +.css-9tmuzo-MuiStepper-root { gap: 4px !important; font-size: 18px; - - } .css-14sza3e-MuiStepLabel-root { padding: 0 !important; } -.css-1u4zpwo-MuiSvgIcon-root-MuiStepIcon-root.Mui-completed{ - color: var(--accent1) !important +.css-1u4zpwo-MuiSvgIcon-root-MuiStepIcon-root.Mui-completed { + color: var(--accent1) !important; } - .icon_hover:hover { color: var(--accent1) !important; cursor: pointer; } #current_row_scroll { - height: 100%; - box-sizing: border-box; + height: 100%; + box-sizing: border-box; } @media (max-width: 500px) { @@ -216,13 +211,13 @@ aside.emoji-picker-react { overflow-y: scroll; height: 45dvh; } */ - .css-th9gsg-MuiPaper-root-MuiAlert-root{ + .css-th9gsg-MuiPaper-root-MuiAlert-root { margin: 0 auto !important; - text-wrap:wrap !important; + text-wrap: wrap !important; word-wrap: break-word !important; max-width: 330px !important; } - } +} @media only screen and (min-width: 1280px) { .top-pools-analytics-table td, .top-pools-analytics-table th { @@ -230,17 +225,16 @@ aside.emoji-picker-react { } } @media only screen and (max-width: 768px) { - .mobile_auto_height{ - height: auto !important; - } + .mobile_auto_height { + height: auto !important; + } } - -.EmojiPickerReact{ +.EmojiPickerReact { background: var(--dark2) !important; } -.epr-emoji-category-label{ +.epr-emoji-category-label { background: var(--dark2) !important; - font-size: .8rem !important; -} \ No newline at end of file + font-size: 0.8rem !important; +} diff --git a/src/index.css b/src/index.css index ca098fd947..25ab3f3228 100644 --- a/src/index.css +++ b/src/index.css @@ -76,7 +76,7 @@ --footer-height: 24px; /* gradients, shadows */ - --shimmer-start-color: #141E30; + --shimmer-start-color: #141e30; --shimmer-end-color: #243b55; --shimmer: linear-gradient( to right, @@ -84,7 +84,8 @@ var(--shimmer-end-color) ); --gradient-box-shadow-color: rgba(115, 113, 252, 0.25); - --gradient-box-shadow: 0px 0px 20px 0px var(--gradient-box-shadow-color) inset; + --gradient-box-shadow: 0px 0px 20px 0px var(--gradient-box-shadow-color) + inset; --title-gradient: linear-gradient( 90deg, @@ -172,8 +173,7 @@ [data-theme='futa_dark'] { /* subtract full height from navbar(56px) and footer(20px on desktop, 64 on mobile) */ --content-height: calc(100vh - 76px); - --content-height-mobile: - calc(100svh - 120px); + --content-height-mobile: calc(100svh - 120px); /* font */ --title-ts: 0px 0px 150px rgba(242, 153, 74, 0.5), 0px 0px 100px rgba(242, 153, 74, 0.5), diff --git a/src/pages/Portfolio/Portfolio.module.css b/src/pages/Portfolio/Portfolio.module.css index 5214718ff6..81771d26c7 100644 --- a/src/pages/Portfolio/Portfolio.module.css +++ b/src/pages/Portfolio/Portfolio.module.css @@ -8,27 +8,23 @@ gap: 16px; } -.mobile_container{ - display: flex; - flex-direction: column; - gap: 4px; - margin: 0 auto; - padding: 0 8px; - /* height: calc(100dvh - 112px); */ - /* overflow-y: hidden !important; */ - - display: grid; - grid-template-rows: 100px 1fr ; - - gap: 8px; - height: 70dvh; - margin-bottom: 56px; -overflow: hidden !important; - - - -} +.mobile_container { + display: flex; + flex-direction: column; + gap: 4px; + margin: 0 auto; + padding: 0 8px; + /* height: calc(100dvh - 112px); */ + /* overflow-y: hidden !important; */ + display: grid; + grid-template-rows: 100px 1fr; + + gap: 8px; + height: 70dvh; + margin-bottom: 56px; + overflow: hidden !important; +} .portfolio_tabs_container { width: 100%; @@ -36,11 +32,9 @@ overflow: hidden !important; transition: var(--transition); overflow: hidden; flex: 1; - } - - +} - .mobile_data_toggle_container{ +.mobile_data_toggle_container { background: var(--dark2); display: flex; justify-content: center; @@ -48,12 +42,9 @@ overflow: hidden !important; border-radius: 4px; outline: 1px solid var(--dark3); margin: 10px auto; +} - - - } - - .mobile_button { +.mobile_button { font-size: var(--body-size); line-height: var(--body-lh); padding: 4px 1.5rem; @@ -62,71 +53,66 @@ overflow: hidden !important; border: none; outline: none; width: 50%; - } - - .mobile_button:hover { +} + +.mobile_button:hover { color: var(--text1); - } - - .mobile_button.active { +} + +.mobile_button.active { color: black; background: var(--accent1); - } - - .mobile_button.inactive { +} + +.mobile_button.inactive { color: var(--text1); background: transparent; - } - - .mobile_layout{ +} + +.mobile_layout { width: 100vw; - display: grid; - grid-template-rows: 105px 1fr ; + grid-template-rows: 105px 1fr; gap: 4px; overflow: hidden; - - - } - @media (min-width: 400px) { - .mobile_layout{ - padding: 0 1rem - } +@media (min-width: 400px) { + .mobile_layout { + padding: 0 1rem; + } } - @media (min-width: 1200px) { +@media (min-width: 1200px) { .portfolio_tabs_container.fullLayoutContainer { - grid-template-columns: auto 36px; - column-gap: 16px; + grid-template-columns: auto 36px; + column-gap: 16px; } - + .portfolio_tabs_container:not(.fullLayoutContainer) { - grid-template-columns: auto 380px; - gap: 1rem; + grid-template-columns: auto 380px; + gap: 1rem; } - + .portfolio_tabs_container:not(.active) { - grid-template-columns: auto; - column-gap: 16px; + grid-template-columns: auto; + column-gap: 16px; } - + .portfolio_tabs_container.active.fullLayoutContainer { - grid-template-columns: auto 36px; - column-gap: 16px; + grid-template-columns: auto 36px; + column-gap: 16px; } - + .portfolio_tabs_container.active:not(.fullLayoutContainer) { - grid-template-columns: auto 380px; - gap: 1rem; + grid-template-columns: auto 380px; + gap: 1rem; } - } - +} + @media only screen and (max-width: 600px) { .portfolio_container { overflow-y: hidden; max-height: calc(100svh - 7.5rem); - } } diff --git a/src/pages/TestPage/SwipeableTabs.module.css b/src/pages/TestPage/SwipeableTabs.module.css index 9d7612ddfe..1e55c95da6 100644 --- a/src/pages/TestPage/SwipeableTabs.module.css +++ b/src/pages/TestPage/SwipeableTabs.module.css @@ -2,15 +2,15 @@ width: 100%; max-width: 600px; margin: 0 auto; - } - - .tabLabels { +} + +.tabLabels { display: flex; justify-content: space-around; margin-bottom: 16px; - } - - .tabLabel { +} + +.tabLabel { padding: 8px 16px; cursor: pointer; border: none; @@ -18,23 +18,22 @@ font-size: 16px; color: #666; transition: color 0.3s ease; - } - - .tabLabel:hover { +} + +.tabLabel:hover { color: #333; - } - - .active { +} + +.active { color: #007bff; border-bottom: 2px solid #007bff; - } - - .tabContent { +} + +.tabContent { padding: 16px; border: 1px solid #ccc; border-radius: 8px; background-color: transparent; min-height: 200px; overflow: hidden; - } - \ No newline at end of file +} diff --git a/src/pages/TestPage/SwipeableTabs.tsx b/src/pages/TestPage/SwipeableTabs.tsx index dc91451bf8..700bfce47f 100644 --- a/src/pages/TestPage/SwipeableTabs.tsx +++ b/src/pages/TestPage/SwipeableTabs.tsx @@ -3,84 +3,88 @@ import { motion } from 'framer-motion'; import styles from './SwipeableTabs.module.css'; interface Tab { - label: string; - content: React.ReactNode; + label: string; + content: React.ReactNode; } interface SwipeableTabsProps { - tabs: Tab[]; - activeTab: number; - setActiveTab: (index: number) => void; + tabs: Tab[]; + activeTab: number; + setActiveTab: (index: number) => void; } -const SwipeableTabs: React.FC<SwipeableTabsProps> = ({ tabs, activeTab, setActiveTab }) => { - const [direction, setDirection] = React.useState(0); // 1 for right swipe, -1 for left swipe +const SwipeableTabs: React.FC<SwipeableTabsProps> = ({ + tabs, + activeTab, + setActiveTab, +}) => { + const [direction, setDirection] = React.useState(0); // 1 for right swipe, -1 for left swipe - const handleTabClick = (index: number) => { - if (index !== activeTab) { - setDirection(index > activeTab ? 1 : -1); - setActiveTab(index); - } - }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const handleDragEnd = (event: any, info: any) => { - if (info.offset.x < -50 && activeTab < tabs.length - 1) { - setDirection(1); // Right swipe - setActiveTab(activeTab + 1); - } else if (info.offset.x > 50 && activeTab > 0) { - setDirection(-1); // Left swipe - setActiveTab(activeTab - 1); - } - }; + const handleTabClick = (index: number) => { + if (index !== activeTab) { + setDirection(index > activeTab ? 1 : -1); + setActiveTab(index); + } + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const handleDragEnd = (event: any, info: any) => { + if (info.offset.x < -50 && activeTab < tabs.length - 1) { + setDirection(1); // Right swipe + setActiveTab(activeTab + 1); + } else if (info.offset.x > 50 && activeTab > 0) { + setDirection(-1); // Left swipe + setActiveTab(activeTab - 1); + } + }; - const variants = { - enter: (direction: number) => ({ - x: direction > 0 ? 300 : -300, - opacity: 0, - }), - center: { - x: 0, - opacity: 1, - }, - exit: (direction: number) => ({ - x: direction < 0 ? 300 : -300, - opacity: 0, - }), - }; + const variants = { + enter: (direction: number) => ({ + x: direction > 0 ? 300 : -300, + opacity: 0, + }), + center: { + x: 0, + opacity: 1, + }, + exit: (direction: number) => ({ + x: direction < 0 ? 300 : -300, + opacity: 0, + }), + }; - return ( - <div className={styles.tabsContainer}> - {/* Tab labels */} - <div className={styles.tabLabels}> - {tabs.map((tab, index) => ( - <button - key={index} - onClick={() => handleTabClick(index)} - className={`${styles.tabLabel} ${activeTab === index ? styles.active : ''}`} - > - {tab.label} - </button> - ))} - </div> + return ( + <div className={styles.tabsContainer}> + {/* Tab labels */} + <div className={styles.tabLabels}> + {tabs.map((tab, index) => ( + <button + key={index} + onClick={() => handleTabClick(index)} + className={`${styles.tabLabel} ${activeTab === index ? styles.active : ''}`} + > + {tab.label} + </button> + ))} + </div> - {/* Tab content with swipe */} - <motion.div - key={activeTab} - className={styles.tabContent} - custom={direction} - variants={variants} - initial="enter" - animate="center" - exit="exit" - transition={{ duration: 0.3 }} - drag="x" - dragConstraints={{ left: 0, right: 0 }} - onDragEnd={handleDragEnd} - > - {tabs[activeTab].content} - </motion.div> - </div> - ); + {/* Tab content with swipe */} + <motion.div + key={activeTab} + className={styles.tabContent} + custom={direction} + variants={variants} + initial='enter' + animate='center' + exit='exit' + transition={{ duration: 0.3 }} + drag='x' + dragConstraints={{ left: 0, right: 0 }} + onDragEnd={handleDragEnd} + > + {tabs[activeTab].content} + </motion.div> + </div> + ); }; export default SwipeableTabs; diff --git a/src/pages/TestPage/TestPage.tsx b/src/pages/TestPage/TestPage.tsx index d29079241e..820699b5fc 100644 --- a/src/pages/TestPage/TestPage.tsx +++ b/src/pages/TestPage/TestPage.tsx @@ -1,15 +1,10 @@ // import { useContext } from 'react'; // import { BrandContext } from '../../contexts/BrandContext'; - - export default function TestPage() { - - - return ( + return ( <div> - <h1>Swipeable Tabs Example</h1> - + <h1>Swipeable Tabs Example</h1> </div> - ); - }; \ No newline at end of file + ); +} diff --git a/src/pages/common/CSSDebug/CSSDebug.tsx b/src/pages/common/CSSDebug/CSSDebug.tsx index 6ff09cd995..ec0cf48d4e 100644 --- a/src/pages/common/CSSDebug/CSSDebug.tsx +++ b/src/pages/common/CSSDebug/CSSDebug.tsx @@ -5,7 +5,7 @@ import ColorToggle from './ColorToggle'; import { skins } from '../../../App/hooks/useSkin'; import { BrandContext, BrandContextIF } from '../../../contexts/BrandContext'; -export type colorFormats = 'text'|'background'|'border'; +export type colorFormats = 'text' | 'background' | 'border'; export interface cssColorIF { name: string; @@ -63,32 +63,29 @@ export default function CSSDebug(props: propsIF) { return ( <> - {<select onChange={(e) => skin.set(e.target.value as skins)}> - { - skin.available.map((s: skins) => { - const makeReadable = (str: string): string => { - switch (str) { - case 'purple_dark': - return 'Purple Dark'; - case 'purple_light': - return 'Purple Light'; - case 'futa_dark': - return 'FUTA Dark'; - default: - return str; - } + { + <select onChange={(e) => skin.set(e.target.value as skins)}> + {skin.available.map((s: skins) => { + const makeReadable = (str: string): string => { + switch (str) { + case 'purple_dark': + return 'Purple Dark'; + case 'purple_light': + return 'Purple Light'; + case 'futa_dark': + return 'FUTA Dark'; + default: + return str; } - return ( - <option - key={s} - value={s} - > - {makeReadable(s)} - </option> - ) - }) - } - </select>} + }; + return ( + <option key={s} value={s}> + {makeReadable(s)} + </option> + ); + })} + </select> + } <label htmlFor='sample_text_changer'>Sample text:</label> <input type='text' @@ -97,42 +94,30 @@ export default function CSSDebug(props: propsIF) { onChange={(e) => setSampleText(e.target.value)} /> <section className={styles.css_debug}> - { - textColors.map( - (c: cssColorIF) => ( - <ColorToggle - key={JSON.stringify(c)} - cssProperty={c} - sampleText={sampleText} - allColors={allColors} - /> - ) - ) - } - { - backgroundColors.map( - (c: cssColorIF) => ( - <ColorToggle - key={JSON.stringify(c)} - cssProperty={c} - sampleText={sampleText} - allColors={allColors} - /> - ) - ) - } - { - borderColors.map( - (c: cssColorIF) => ( - <ColorToggle - key={JSON.stringify(c)} - cssProperty={c} - sampleText={sampleText} - allColors={allColors} - /> - ) - ) - } + {textColors.map((c: cssColorIF) => ( + <ColorToggle + key={JSON.stringify(c)} + cssProperty={c} + sampleText={sampleText} + allColors={allColors} + /> + ))} + {backgroundColors.map((c: cssColorIF) => ( + <ColorToggle + key={JSON.stringify(c)} + cssProperty={c} + sampleText={sampleText} + allColors={allColors} + /> + ))} + {borderColors.map((c: cssColorIF) => ( + <ColorToggle + key={JSON.stringify(c)} + cssProperty={c} + sampleText={sampleText} + allColors={allColors} + /> + ))} </section> {noSwap || <Swap />} </> diff --git a/src/pages/common/CSSDebug/CSSModal.module.css b/src/pages/common/CSSDebug/CSSModal.module.css index 31aae3745d..91000b0aca 100644 --- a/src/pages/common/CSSDebug/CSSModal.module.css +++ b/src/pages/common/CSSDebug/CSSModal.module.css @@ -3,7 +3,7 @@ top: 50%; left: 50%; transform: translate(-50%, -50%); - width: 50%; + width: 50%; max-width: 800px; height: auto; max-height: 80%; @@ -13,4 +13,4 @@ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); z-index: 1000; overflow: scroll; -} \ No newline at end of file +} diff --git a/src/pages/common/CSSDebug/CSSModal.tsx b/src/pages/common/CSSDebug/CSSModal.tsx index 296ac550e9..21a00662b0 100644 --- a/src/pages/common/CSSDebug/CSSModal.tsx +++ b/src/pages/common/CSSDebug/CSSModal.tsx @@ -13,4 +13,4 @@ export default function CSSModal(props: propsIF) { <CSSDebug noSwap /> </div> ); -} \ No newline at end of file +} diff --git a/src/pages/common/CSSDebug/ColorToggle.tsx b/src/pages/common/CSSDebug/ColorToggle.tsx index 3a71a79749..408163d5f4 100644 --- a/src/pages/common/CSSDebug/ColorToggle.tsx +++ b/src/pages/common/CSSDebug/ColorToggle.tsx @@ -16,10 +16,12 @@ export default function ColorToggle(props: propsIF) { const { cssDebug } = useContext(UserPreferenceContext); - const [color, setColor] = useState<string>(getCssCustomPropertyValue(cssProperty.name)); + const [color, setColor] = useState<string>( + getCssCustomPropertyValue(cssProperty.name), + ); function getCssCustomPropertyValue(p: string): string { - const cached: string|undefined = cssDebug.check(p); + const cached: string | undefined = cssDebug.check(p); const root: HTMLElement = document.documentElement; const value: string = getComputedStyle(root).getPropertyValue(p).trim(); return cached ?? value; @@ -31,14 +33,18 @@ export default function ColorToggle(props: propsIF) { document.documentElement.style.setProperty(cssProperty.name, c); } - const originalColor = useRef<string>(getCssCustomPropertyValue(cssProperty.name)); + const originalColor = useRef<string>( + getCssCustomPropertyValue(cssProperty.name), + ); return ( <section className={styles.color_toggle}> <div className={styles.toggle_area}> <header> <h4>Toggle {cssProperty.name}</h4> - <RxReset onClick={() => handleChange(originalColor.current)}/> + <RxReset + onClick={() => handleChange(originalColor.current)} + /> </header> <SketchPicker color={color} @@ -46,51 +52,41 @@ export default function ColorToggle(props: propsIF) { /> </div> <div className={styles.preview_area}> - { - cssProperty.format === 'text' && ( - allColors.background.map(( - (c: cssColorIF) => ( - <section - key={JSON.stringify(c)} - className={styles.text_sample} - > - <h5>On {c.name}:</h5> - <p - style={{ - color: color, - backgroundColor: `var(${c.name})` - }} - > - {sampleText} - </p> - </section> - ) - )) - ) - } - { - cssProperty.format === 'background' && ( - allColors.text.map(( - (c: cssColorIF) => ( - <section - key={JSON.stringify(c)} - className={styles.text_sample} - > - <h5>Under {c.name}:</h5> - <p - style={{ - color: `var(${c.name})`, - backgroundColor: color, - }} - > - {sampleText} - </p> - </section> - ) - )) - ) - } + {cssProperty.format === 'text' && + allColors.background.map((c: cssColorIF) => ( + <section + key={JSON.stringify(c)} + className={styles.text_sample} + > + <h5>On {c.name}:</h5> + <p + style={{ + color: color, + backgroundColor: `var(${c.name})`, + }} + > + {sampleText} + </p> + </section> + ))} + {cssProperty.format === 'background' && + allColors.text.map((c: cssColorIF) => ( + <section + key={JSON.stringify(c)} + className={styles.text_sample} + > + <h5>Under {c.name}:</h5> + <p + style={{ + color: `var(${c.name})`, + backgroundColor: color, + }} + > + {sampleText} + </p> + </section> + ))} </div> </section> ); -} \ No newline at end of file +} diff --git a/src/pages/common/TestPage/TestPage.tsx b/src/pages/common/TestPage/TestPage.tsx index 98d15e7e17..b04a362d9a 100644 --- a/src/pages/common/TestPage/TestPage.tsx +++ b/src/pages/common/TestPage/TestPage.tsx @@ -4,30 +4,32 @@ import { useState } from 'react'; import SwipeableTabs from '../../TestPage/SwipeableTabs'; - - export default function TestPage() { const [activeTab, setActiveTab] = useState(0); const tabData = [ - { label: 'Trade', content: <div>Content for Trade</div> }, - { label: 'Explore', content: <div>Content for Explore</div> }, - { label: 'Account', content: <div>Content for Account</div> }, - { label: 'Chat', content: <div>Content for Chat</div> }, + { label: 'Trade', content: <div>Content for Trade</div> }, + { label: 'Explore', content: <div>Content for Explore</div> }, + { label: 'Account', content: <div>Content for Account</div> }, + { label: 'Chat', content: <div>Content for Chat</div> }, ]; - + return ( - <div> - {/* Control buttons in another component */} <div> - <button onClick={() => setActiveTab(0)}>Go to Trade</button> - <button onClick={() => setActiveTab(1)}>Go to Explore</button> - <button onClick={() => setActiveTab(2)}>Go to Account</button> - <button onClick={() => setActiveTab(3)}>Go to Chat</button> + {/* Control buttons in another component */} + <div> + <button onClick={() => setActiveTab(0)}>Go to Trade</button> + <button onClick={() => setActiveTab(1)}>Go to Explore</button> + <button onClick={() => setActiveTab(2)}>Go to Account</button> + <button onClick={() => setActiveTab(3)}>Go to Chat</button> + </div> + + {/* Pass activeTab and setActiveTab to SwipeableTabs */} + <SwipeableTabs + tabs={tabData} + activeTab={activeTab} + setActiveTab={setActiveTab} + /> </div> - - {/* Pass activeTab and setActiveTab to SwipeableTabs */} - <SwipeableTabs tabs={tabData} activeTab={activeTab} setActiveTab={setActiveTab} /> - </div> ); - }; +} diff --git a/src/pages/platformAmbient/Chart/Axes/yAxis/YaxisCanvas.tsx b/src/pages/platformAmbient/Chart/Axes/yAxis/YaxisCanvas.tsx index e108850467..85368d7549 100644 --- a/src/pages/platformAmbient/Chart/Axes/yAxis/YaxisCanvas.tsx +++ b/src/pages/platformAmbient/Chart/Axes/yAxis/YaxisCanvas.tsx @@ -476,7 +476,10 @@ function YAxisCanvas(props: yAxisIF) { : liqTransitionPointforDepth : poolPriceDisplay; - if ((simpleRangeWidth !== 100 || advancedMode) && !(low ===0 && high === 0)) { + if ( + (simpleRangeWidth !== 100 || advancedMode) && + !(low === 0 && high === 0) + ) { const { tick: lowTick, tickSubString: lowTickSubString } = prepareTickLabel(low); diff --git a/src/pages/platformAmbient/Chart/ChartUtils/chartUtils.ts b/src/pages/platformAmbient/Chart/ChartUtils/chartUtils.ts index db4d06d8c0..e8effad83e 100644 --- a/src/pages/platformAmbient/Chart/ChartUtils/chartUtils.ts +++ b/src/pages/platformAmbient/Chart/ChartUtils/chartUtils.ts @@ -127,7 +127,7 @@ export type chartItemStates = { liqMode: string; showSwap: boolean; setShowSwap: React.Dispatch<React.SetStateAction<boolean>>; - showLatest: boolean; + showLatest: boolean; setShowLatest: React.Dispatch<React.SetStateAction<boolean>>; setLatest: React.Dispatch<React.SetStateAction<boolean>>; rescale: boolean; diff --git a/src/pages/platformAmbient/Chart/Draw/DrawCanvas/DragCanvas.tsx b/src/pages/platformAmbient/Chart/Draw/DrawCanvas/DragCanvas.tsx index 315c5734e8..5b96213afa 100644 --- a/src/pages/platformAmbient/Chart/Draw/DrawCanvas/DragCanvas.tsx +++ b/src/pages/platformAmbient/Chart/Draw/DrawCanvas/DragCanvas.tsx @@ -582,7 +582,7 @@ export default function DragCanvas(props: DragCanvasProps) { ? valueX > scaleData.xScale.invert(offsetX) : valueX < scaleData.xScale.invert(offsetX); - setCrossHairDataFunc(valueX,offsetX,offsetY); + setCrossHairDataFunc(valueX, offsetX, offsetY); if ( hoveredDrawnShape && diff --git a/src/pages/platformAmbient/Chart/Draw/FloatingToolbar/FloatingToolbar.tsx b/src/pages/platformAmbient/Chart/Draw/FloatingToolbar/FloatingToolbar.tsx index 41edc2bd12..8ef9df6c73 100644 --- a/src/pages/platformAmbient/Chart/Draw/FloatingToolbar/FloatingToolbar.tsx +++ b/src/pages/platformAmbient/Chart/Draw/FloatingToolbar/FloatingToolbar.tsx @@ -904,7 +904,7 @@ function FloatingToolbar(props: FloatingToolbarProps) { .node() as HTMLDivElement; let offsetX = 0; let offsetY = 0; - + if (floatingDiv && floatingMenuDiv && floatingDivContainer) { const floatingDivDrag = d3 .drag<d3.DraggedElementBaseType, unknown, d3.SubjectPosition>() @@ -1012,7 +1012,7 @@ function FloatingToolbar(props: FloatingToolbarProps) { selectedDrawnShape, isSettingsTabActive, isNearestWindow, - divTop === undefined + divTop === undefined, ]); useEffect(() => { diff --git a/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.module.css b/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.module.css index 810df179f0..f0d5233404 100644 --- a/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.module.css +++ b/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.module.css @@ -17,7 +17,6 @@ overflow-x: hidden; } - .scrollableDiv::-webkit-scrollbar { width: 0; display: none; @@ -218,4 +217,3 @@ filter: invert(39%) sepia(27%) saturate(240%) hue-rotate(171deg) brightness(50%) contrast(82%); } - diff --git a/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.tsx b/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.tsx index 38d2a40b4e..04e7c3629a 100644 --- a/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.tsx +++ b/src/pages/platformAmbient/Chart/Draw/Toolbar/Toolbar.tsx @@ -83,7 +83,7 @@ function ChartToolbar() { } = useContext(ChartContext); const scrollContainerRef = useRef<HTMLDivElement>(null); - const { chartThemeColors,isFullScreen } = useContext(ChartContext); + const { chartThemeColors, isFullScreen } = useContext(ChartContext); const [isHoveredUp, setIsHoveredUp] = useState(false); const [isHoveredDown, setIsHoveredDown] = useState(false); @@ -507,9 +507,7 @@ function ChartToolbar() { <IconCard> <IconActiveContainer - onClick={() => - handleDeleteAll() - } + onClick={() => handleDeleteAll()} onMouseEnter={() => { handleOnMouseEnter('Delete All'); }} diff --git a/src/pages/platformAmbient/Chart/Liquidity/LiquidityChart.tsx b/src/pages/platformAmbient/Chart/Liquidity/LiquidityChart.tsx index 35217ac894..95bc244c6f 100644 --- a/src/pages/platformAmbient/Chart/Liquidity/LiquidityChart.tsx +++ b/src/pages/platformAmbient/Chart/Liquidity/LiquidityChart.tsx @@ -74,7 +74,7 @@ export default function LiquidityChart(props: liquidityPropsIF) { const poolPriceDisplay = poolPriceWithoutDenom ? isDenomBase && poolPriceWithoutDenom ? 1 / poolPriceWithoutDenom - : poolPriceWithoutDenom ?? 0 + : (poolPriceWithoutDenom ?? 0) : 0; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -589,15 +589,9 @@ export default function LiquidityChart(props: liquidityPropsIF) { } }) .on('measure', (event: CustomEvent) => { - liquidityScale.range([ - event.detail.width, - 0, - ]); - - liquidityDepthScale.range([ - event.detail.width, - 0, - ]); + liquidityScale.range([event.detail.width, 0]); + + liquidityDepthScale.range([event.detail.width, 0]); scaleData?.yScale.range([event.detail.height, 0]); liqBidSeries?.context(ctx); @@ -994,8 +988,8 @@ export default function LiquidityChart(props: liquidityPropsIF) { ref={d3CanvasLiqHover} style={{ position: 'relative', - width: mobileView ? '20%' :'8%', - marginLeft: mobileView ? '80%' : '92%', + width: mobileView ? '20%' : '8%', + marginLeft: mobileView ? '80%' : '92%', }} ></d3fc-canvas> <d3fc-canvas @@ -1003,7 +997,7 @@ export default function LiquidityChart(props: liquidityPropsIF) { style={{ position: 'relative', width: mobileView ? '20%' : '8%', - marginLeft: mobileView ? '80%' : '92%', + marginLeft: mobileView ? '80%' : '92%', }} ></d3fc-canvas> </> diff --git a/src/pages/platformAmbient/Chart/Volume/VolumeBarCanvas.tsx b/src/pages/platformAmbient/Chart/Volume/VolumeBarCanvas.tsx index e4206cdaf1..67d996c8c8 100644 --- a/src/pages/platformAmbient/Chart/Volume/VolumeBarCanvas.tsx +++ b/src/pages/platformAmbient/Chart/Volume/VolumeBarCanvas.tsx @@ -144,10 +144,7 @@ export default function VolumeBarCanvas(props: propsIF) { barSeries(volumeData); }) .on('measure', (event: CustomEvent) => { - scaleData?.volumeScale.range([ - event.detail.height, - 0, - ]); + scaleData?.volumeScale.range([event.detail.height, 0]); barSeries.context(ctx); }); } @@ -158,8 +155,8 @@ export default function VolumeBarCanvas(props: propsIF) { ref={d3CanvasBar} className='volume-canvas' style={{ - gridRowStart:2, - gridRowEnd:3, + gridRowStart: 2, + gridRowEnd: 3, }} ></d3fc-canvas> ); diff --git a/src/pages/platformAmbient/Explore/Explore.module.css b/src/pages/platformAmbient/Explore/Explore.module.css index 76b5cd8332..879ead96ef 100644 --- a/src/pages/platformAmbient/Explore/Explore.module.css +++ b/src/pages/platformAmbient/Explore/Explore.module.css @@ -74,7 +74,6 @@ border: 1px solid var(--dark3); width: 300px; - } .input_wrapper { @@ -140,7 +139,7 @@ font-size: 20px; } - .input_container{ + .input_container { border: none; } } @@ -227,8 +226,7 @@ } @media only screen and (min-width: 768px) { - - .main_container{ + .main_container { padding: 16px; } .gridContainer { diff --git a/src/pages/platformAmbient/Level/RankTable/RankTable.module.css b/src/pages/platformAmbient/Level/RankTable/RankTable.module.css index 81e66e9ae6..9164cc6af1 100644 --- a/src/pages/platformAmbient/Level/RankTable/RankTable.module.css +++ b/src/pages/platformAmbient/Level/RankTable/RankTable.module.css @@ -1,62 +1,56 @@ -.main_table{ -display: flex; -flex-direction: column; -background-color: var(--dark2); -padding: 8px 8px 8px 0; -gap: 8px; -height: 100%; -max-height: 80vh; -border-radius: 4px; -margin: 0 auto; - -} -.row_container{ +.main_table { + display: flex; + flex-direction: column; + background-color: var(--dark2); + padding: 8px 8px 8px 0; + gap: 8px; + height: 100%; + max-height: 80vh; + border-radius: 4px; + margin: 0 auto; +} +.row_container { height: 40px; - border: 1px solid transparent + border: 1px solid transparent; } -.row_container, .row_container_header{ +.row_container, +.row_container_header { display: grid; padding: 0 8px; - + transition: all var(--animation-speed) ease-in-out; align-items: center; - - - } - -.row_container:hover, .row_container_header:hover{ +.row_container:hover, +.row_container_header:hover { background-color: var(--dark3); } -.row_container span:first-child, .row_container_header span:first-child{ +.row_container span:first-child, +.row_container_header span:first-child { text-align: center; } -.row_container span:nth-child(2), .row_container_header span:nth-child(2), .row_container span:nth-child(3), -.row_container_header span:nth-child(3){ +.row_container span:nth-child(2), +.row_container_header span:nth-child(2), +.row_container span:nth-child(3), +.row_container_header span:nth-child(3) { text-align: center; - } .row_container span:nth-child(4), -.row_container_header span:nth-child(4){ -text-align: center; +.row_container_header span:nth-child(4) { + text-align: center; } - -.main_table_content{ +.main_table_content { overflow-y: scroll; overflow-x: hidden; - height: 100%; + height: 100%; display: flex; flex-direction: column; gap: 8px; height: 100%; - - - - } .first_style { @@ -67,7 +61,6 @@ text-align: center; rgba(209, 142, 10, 0) 100% ); transition: background 0.5s ease-out; - } .second_style { @@ -90,65 +83,63 @@ text-align: center; transition: background 0.5s ease-out; } - -.menu_button{ +.menu_button { display: flex; -width: 25px; -height: 25px; -padding: 10px 2px; -justify-content: center; -align-items: center; -border-radius: 8px; -border: 1px solid var(--dark3); -background: var(--dark2); -text-align: center; + width: 25px; + height: 25px; + padding: 10px 2px; + justify-content: center; + align-items: center; + border-radius: 8px; + border: 1px solid var(--dark3); + background: var(--dark2); + text-align: center; -font-size: var(--body-size); -color:var(--text2); -cursor: pointer; + font-size: var(--body-size); + color: var(--text2); + cursor: pointer; } -.menu_button:hover{ - color: var(--accent1) +.menu_button:hover { + color: var(--accent1); } -.row_container span:nth-child(3), .row_container_header span:nth-child(3){ -display: none; +.row_container span:nth-child(3), +.row_container_header span:nth-child(3) { + display: none; } -.row_container, .row_container_header{ +.row_container, +.row_container_header { grid-template-columns: 40px 120px 120px 60px 0.5fr; - - } -.user_row{ +.user_row { border-left: 1px solid var(--accent1); } - -@media only screen and (min-width: 580px) { - .row_container, .row_container_header{ +@media only screen and (min-width: 580px) { + .row_container, + .row_container_header { grid-template-columns: 40px 100px 100px 90px auto; } - .main_table{ + .main_table { width: 450px; } - .row_container span:nth-child(3), .row_container_header span:nth-child(3){ + .row_container span:nth-child(3), + .row_container_header span:nth-child(3) { width: 100%; display: flex; justify-content: center; - } - + } } @media only screen and (min-width: 590px) { -.main_table{ - width: 688px; - -} + .main_table { + width: 688px; + } -.row_container, .row_container_header{ - grid-template-columns: 40px 210px 210px 100px auto; - -} + .row_container, + .row_container_header { + grid-template-columns: 40px 210px 210px 100px auto; + } } diff --git a/src/pages/platformAmbient/Level/RankTable/RankTable.tsx b/src/pages/platformAmbient/Level/RankTable/RankTable.tsx index be292bec2d..89e10d9cdb 100644 --- a/src/pages/platformAmbient/Level/RankTable/RankTable.tsx +++ b/src/pages/platformAmbient/Level/RankTable/RankTable.tsx @@ -71,10 +71,10 @@ export default function RankTable(props: Props) { ), userAddress: connectedUserXp.data.userAddress, points: (selectedXpLeaderboardType === 'Weekly' - ? connectedUserXp.data.weeklyPoints ?? 0 + ? (connectedUserXp.data.weeklyPoints ?? 0) : selectedXpLeaderboardType === 'Chain' - ? connectedUserXp.data.chainPoints ?? 0 - : connectedUserXp.data.globalPoints ?? 0 + ? (connectedUserXp.data.chainPoints ?? 0) + : (connectedUserXp.data.globalPoints ?? 0) ).toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 0, diff --git a/src/pages/platformAmbient/Swap/Swap.module.css b/src/pages/platformAmbient/Swap/Swap.module.css index e104e4aec3..256f94d9eb 100644 --- a/src/pages/platformAmbient/Swap/Swap.module.css +++ b/src/pages/platformAmbient/Swap/Swap.module.css @@ -8,18 +8,14 @@ flex-direction: column; align-items: center; height: calc(100vh - 56px); - } .swap_page_container > section { margin-top: 16px; height: auto; } - @media only screen and (min-width: 768px) { .swap_page_container > section { margin-top: 64px; - } - } diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.css index c31fdf090b..c6f6d76fd2 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.css @@ -117,12 +117,13 @@ background-size: cover; */ max-height: 100%; } - .skeleton { - background: linear-gradient(90deg, - rgba(7, 7, 7, 0.1) 25%, - rgba(52, 45, 45, 0.2) 50%, - rgba(55, 53, 53, 0.1) 75%); + background: linear-gradient( + 90deg, + rgba(7, 7, 7, 0.1) 25%, + rgba(52, 45, 45, 0.2) 50%, + rgba(55, 53, 53, 0.1) 75% + ); background-size: 200% 100%; animation: loading 1.5s infinite; border-radius: 4px; @@ -138,4 +139,4 @@ background-size: cover; */ 100% { background-position: -100% 0; } -} \ No newline at end of file +} diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.tsx b/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.tsx index 60fb04e508..e196565833 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.tsx +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeCandleStickChart.tsx @@ -664,7 +664,7 @@ function TradeCandleStickChart(props: propsIF) { }, [candleScale.isFetchFirst200Candle]); useEffect(() => { - if (!mobileView) { + if (!mobileView) { setMinPrice(0); setMaxPrice(0); } diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeCharts.module.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeCharts.module.css index 7b146d802a..2b698d758c 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeCharts.module.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeCharts.module.css @@ -57,7 +57,7 @@ gap: 15px; padding: 10px; - + display: flex; justify-content: center; align-items: center; @@ -90,8 +90,9 @@ .mobile_settings_header { display: none; } - .active_selected_button:hover, .futa_active_selected_button:hover - .non_active_selected_button:hover, .futa_non_active_selected_button { + .active_selected_button:hover, + .futa_active_selected_button:hover .non_active_selected_button:hover, + .futa_non_active_selected_button { /* background: var(--title-gradient); */ color: var(--text1); } @@ -105,19 +106,21 @@ } } -.active_selected_button, .futa_active_selected_button { +.active_selected_button, +.futa_active_selected_button { width: 100%; height: 100%; color: var(--text1); } -.non_active_selected_button, .futa_non_active_selected_button { +.non_active_selected_button, +.futa_non_active_selected_button { color: var(--text2); } .conxtext_options_container { width: 100%; - + display: flex; flex-direction: column; justify-content: start; @@ -137,7 +140,7 @@ .conxtext_options_header { width: 100%; - + display: flex; justify-content: start; align-items: center; @@ -147,7 +150,7 @@ .conxtext_options { width: 100%; - + display: flex; flex-direction: column; justify-content: center; @@ -158,7 +161,6 @@ background-color: var(--dark2); } - .conxtext_options_section { width: 100%; @@ -185,5 +187,3 @@ padding-right: 4px; } - - diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.module.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.module.css index e06208ddf1..d1d316f9ad 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.module.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.module.css @@ -20,7 +20,12 @@ .topBar { background: var(--dark3); height: 13px; - background: linear-gradient(to right, var(--dark1) 8%, var(--dark2) 18%, var(--dark1) 33%); + background: linear-gradient( + to right, + var(--dark1) 8%, + var(--dark2) 18%, + var(--dark1) 33% + ); background-size: 1200px 100%; animation: shimmer 2.5s infinite ease-in-out; /* Adjust duration */ } @@ -44,7 +49,12 @@ align-items: center; gap: 4px; align-self: stretch; - background: linear-gradient(to right, var(--dark1) 8%, var(--dark2) 18%, var(--dark1) 33%); + background: linear-gradient( + to right, + var(--dark1) 8%, + var(--dark2) 18%, + var(--dark1) 33% + ); background-size: 1200px 100%; animation: shimmer 2.5s infinite ease-in-out; /* Adjust duration */ } @@ -65,7 +75,7 @@ position: relative; display: flex; justify-content: space-between; - align-items: center; + align-items: center; padding: 8px; height: 100%; animation: shimmer 2.5s infinite ease-in-out; /* Adjust duration */ @@ -73,10 +83,13 @@ padding: 1rem 3rem; } - - .shimmerBG { - background: linear-gradient(to right, var(--dark1) 8%, var(--dark2) 18%, var(--dark1) 33%); + background: linear-gradient( + to right, + var(--dark1) 8%, + var(--dark2) 18%, + var(--dark1) 33% + ); background-size: 1200px 100%; animation: shimmer 2.5s infinite ease-in-out; } @@ -98,7 +111,12 @@ justify-content: center; align-items: center; padding: 4px; - background: linear-gradient(to right, var(--dark1) 8%, var(--dark2) 18%, var(--dark1) 33%); + background: linear-gradient( + to right, + var(--dark1) 8%, + var(--dark2) 18%, + var(--dark1) 33% + ); background-size: 1200px 100%; animation: shimmer 2.5s infinite ease-in-out; } @@ -109,13 +127,12 @@ height: 20px; } -.loadingText{ +.loadingText { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; - } /* Responsive Design: Smaller Screens */ @@ -161,7 +178,7 @@ height: auto; } - svg{ + svg { display: none; } } diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.tsx b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.tsx index 0c91d990c1..9669e3615b 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.tsx +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/ChartSkeleton.tsx @@ -1,8 +1,8 @@ import React from 'react'; import styles from './ChartSkeleton.module.css'; -interface PropsIF{ - periodToReadableTime: string | undefined +interface PropsIF { + periodToReadableTime: string | undefined; } const ChartSkeleton = (props: PropsIF) => { const svg = ( @@ -70,10 +70,9 @@ const ChartSkeleton = (props: PropsIF) => { return ( <section className={`${styles.container} ${styles.shimmerBG}`}> <h3 className={styles.loadingText}> - - Loading {props.periodToReadableTime} + Loading {props.periodToReadableTime} Candle Chart... - </h3> + </h3> <span className={styles.topBar}></span> @@ -90,8 +89,7 @@ const ChartSkeleton = (props: PropsIF) => { </div> <div className={`${styles.middleSide} ${styles.shimmerBG}`}> - - {svg} + {svg} </div> <div className={styles.rightSide}> diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.module.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.module.css index 4883826398..36672d4e2e 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.module.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.module.css @@ -5,8 +5,6 @@ gap: 4px; } - - .active_selected_button, .non_active_selected_button { background: transparent; @@ -42,7 +40,6 @@ color: var(--text2); } -.mobile_container{ +.mobile_container { display: flex; - -} \ No newline at end of file +} diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.tsx b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.tsx index a33691307a..39f8fdd560 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.tsx +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/CurveDepth.tsx @@ -1,5 +1,5 @@ import styles from './CurveDepth.module.css'; -import { memo } from 'react'; +import { memo } from 'react'; import useMediaQuery from '../../../../../utils/hooks/useMediaQuery'; import { overlayIF } from '../../../../../App/hooks/useChartSettings'; @@ -10,7 +10,6 @@ interface propsIF { function CurveDepth(props: propsIF) { const { overlayMethods } = props; - const mobileView = useMediaQuery('(max-width: 768px)'); const curveDepthData = [ @@ -31,37 +30,31 @@ function CurveDepth(props: propsIF) { }, ]; - - ; - function handleCurveDepthClickMobile(action: () => void) { action(); } const curveDepthMobile = ( - - - <div className={styles.mobile_container}> - {curveDepthData.map((button, idx) => ( - <div className={styles.curve_depth_container} key={idx}> - <button - onClick={() => - handleCurveDepthClickMobile(button.action) - } - className={ - button.name.toLowerCase() === - overlayMethods.overlay.toLowerCase() - ? styles.active_selected_button - : styles.non_active_selected_button - } - aria-label={button.name} - > - {button.name} - </button> - </div> - ))} - </div> - + <div className={styles.mobile_container}> + {curveDepthData.map((button, idx) => ( + <div className={styles.curve_depth_container} key={idx}> + <button + onClick={() => + handleCurveDepthClickMobile(button.action) + } + className={ + button.name.toLowerCase() === + overlayMethods.overlay.toLowerCase() + ? styles.active_selected_button + : styles.non_active_selected_button + } + aria-label={button.name} + > + {button.name} + </button> + </div> + ))} + </div> ); if (mobileView) return curveDepthMobile; diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/OrderHistoryDisplay.tsx b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/OrderHistoryDisplay.tsx index 754f71aa52..a3a0c78efe 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/OrderHistoryDisplay.tsx +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/OrderHistoryDisplay.tsx @@ -1,10 +1,5 @@ import styles from './VolumeTVLFee.module.css'; -import { - Dispatch, - SetStateAction, - memo, - useContext, -} from 'react'; +import { Dispatch, SetStateAction, memo, useContext } from 'react'; import useMediaQuery from '../../../../../utils/hooks/useMediaQuery'; import { LS_KEY_ORDER_HISTORY_SETTINGS } from '../../../../../ambient-utils/constants'; import { BrandContext } from '../../../../../contexts/BrandContext'; @@ -40,8 +35,6 @@ function OrderHistoryDisplay(props: OrderHistoryDisplayPropsIF) { ); }; - - const mobileView = useMediaQuery('(max-width: 768px)'); const handleSwapToggle = () => { @@ -86,12 +79,10 @@ function OrderHistoryDisplay(props: OrderHistoryDisplayPropsIF) { function handleCurveDepthClickMobile(action: () => void) { action(); - } const OrderHistoryDisplayMobile = ( - <div className={styles.dropdown_menu} > - + <div className={styles.dropdown_menu}> <div className={styles.mobile_container}> {orderHistoryDisplay.map((button, idx) => ( <div className={styles.volume_tvl_container} key={idx}> diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.module.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.module.css index 62f247cfcf..b437c05c39 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.module.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.module.css @@ -121,6 +121,6 @@ box-shadow: var(--glow-light-box-shadow); } -.mobile_container{ +.mobile_container { display: flex; } diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.tsx b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.tsx index 866f65680b..7dbeef198d 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.tsx +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TimeFrame.tsx @@ -1,5 +1,5 @@ import styles from './TimeFrame.module.css'; -import { useRef, memo, useContext } from 'react'; +import { useRef, memo, useContext } from 'react'; import useMediaQuery from '../../../../../utils/hooks/useMediaQuery'; import { candleTimeIF } from '../../../../../App/hooks/useChartSettings'; import { BrandContext } from '../../../../../contexts/BrandContext'; @@ -11,29 +11,23 @@ interface propsIF { function TimeFrame(props: propsIF) { const { candleTime } = props; - const mobileView = useMediaQuery('(max-width: 968px)'); const tabletView = useMediaQuery( '(min-width: 768px) and (max-width: 1200px)', ); const dropdownItemRef = useRef<HTMLDivElement>(null); - - const { platformName } = useContext(BrandContext); const timeFrameMobile = ( <div className={styles.dropdown_menu} ref={dropdownItemRef}> - - <div className={styles.mobile_container}> {candleTime.defaults.map((option, idx) => ( <div className={styles.main_time_frame_container} key={idx}> <button onClick={() => { candleTime.changeTime(option.seconds); - }} className={ ['futa'].includes(platformName) diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TradeChartsTokenInfo.module.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TradeChartsTokenInfo.module.css index d965a95ab4..a94fe4fa0d 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TradeChartsTokenInfo.module.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/TradeChartsTokenInfo.module.css @@ -1,28 +1,24 @@ - -.container{ +.container { display: flex; flex-direction: column; gap: 8px; align-items: center; - } -.dropdownContainer{ +.dropdownContainer { padding-left: 1rem; width: 100%; display: flex; align-items: flex-start; } - - @media (min-width: 1500px) { -.container{ - flex-direction: row; - align-items: center; - gap: 16px; -} -.dropdownContainer{ - padding-left: 0; + .container { + flex-direction: row; + align-items: center; + gap: 16px; + } + .dropdownContainer { + padding-left: 0; + } } -} \ No newline at end of file diff --git a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/VolumeTVLFee.module.css b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/VolumeTVLFee.module.css index 536c8ec95b..51d35878af 100644 --- a/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/VolumeTVLFee.module.css +++ b/src/pages/platformAmbient/Trade/TradeCharts/TradeChartsComponents/VolumeTVLFee.module.css @@ -57,7 +57,6 @@ height: 25px; padding: 4px 16px 4px 16px; - } .futa_active_selected_button:hover, diff --git a/src/pages/platformAmbient/Trade/TradeMobile.module.css b/src/pages/platformAmbient/Trade/TradeMobile.module.css index d9044f3a5a..8057ca8229 100644 --- a/src/pages/platformAmbient/Trade/TradeMobile.module.css +++ b/src/pages/platformAmbient/Trade/TradeMobile.module.css @@ -6,7 +6,7 @@ } .mobile_tabs_container { - padding: 1rem; + padding: 1rem; display: flex; grid-template-columns: repeat(4, 1fr); align-items: center; @@ -70,4 +70,4 @@ .mobile_tabs_container button { padding: 5px 0; } -} \ No newline at end of file +} diff --git a/src/pages/platformAmbient/Vaults/NoVaults.module.css b/src/pages/platformAmbient/Vaults/NoVaults.module.css index 176a74690a..177c6e5775 100644 --- a/src/pages/platformAmbient/Vaults/NoVaults.module.css +++ b/src/pages/platformAmbient/Vaults/NoVaults.module.css @@ -5,4 +5,4 @@ align-items: center; height: 100%; gap: 12px; -} \ No newline at end of file +} diff --git a/src/pages/platformAmbient/Vaults/Vault.ts b/src/pages/platformAmbient/Vaults/Vault.ts index fcac7a5f7a..f457da2c99 100644 --- a/src/pages/platformAmbient/Vaults/Vault.ts +++ b/src/pages/platformAmbient/Vaults/Vault.ts @@ -1,4 +1,8 @@ -import { AllVaultsServerIF, UserVaultsServerIF, VaultIF } from '../../../ambient-utils/types'; +import { + AllVaultsServerIF, + UserVaultsServerIF, + VaultIF, +} from '../../../ambient-utils/types'; export class Vault implements VaultIF { id: string; @@ -39,12 +43,12 @@ export class Vault implements VaultIF { aprRebaseUnitToken: string; tvlUsd: string; apr: string; - balance: string|undefined; - balanceAmount: string|undefined; - balanceUsd: string|undefined; + balance: string | undefined; + balanceAmount: string | undefined; + balanceUsd: string | undefined; constructor( - v: VaultIF|AllVaultsServerIF, - userVault: UserVaultsServerIF | null | undefined + v: VaultIF | AllVaultsServerIF, + userVault: UserVaultsServerIF | null | undefined, ) { this.id = v.id; this.createdAt = v.createdAt; @@ -84,20 +88,24 @@ export class Vault implements VaultIF { this.aprRebaseUnitToken = v.aprRebaseUnitToken; this.tvlUsd = v.tvlUsd; this.apr = v.apr; - - type entryTuple = [string, string|undefined]; + + type entryTuple = [string, string | undefined]; const entries: entryTuple[] = Object.entries(v); - const findVal = (k: 'balance'|'balanceAmount'|'balanceUsd'): string|undefined => { - const tuple: entryTuple|undefined = entries.find((e) => e[0] === k); - let output: string|undefined; + const findVal = ( + k: 'balance' | 'balanceAmount' | 'balanceUsd', + ): string | undefined => { + const tuple: entryTuple | undefined = entries.find( + (e) => e[0] === k, + ); + let output: string | undefined; if (userVault) { output = userVault[k]; } else if (tuple) { output = tuple[1]; } return output; - } + }; this.balance = findVal('balance'); this.balanceAmount = findVal('balanceAmount'); diff --git a/src/pages/platformAmbient/Vaults/VaultActionModal/VaultDeposit/VaultDeposit.module.css b/src/pages/platformAmbient/Vaults/VaultActionModal/VaultDeposit/VaultDeposit.module.css index b9a37c26bd..f7037f351d 100644 --- a/src/pages/platformAmbient/Vaults/VaultActionModal/VaultDeposit/VaultDeposit.module.css +++ b/src/pages/platformAmbient/Vaults/VaultActionModal/VaultDeposit/VaultDeposit.module.css @@ -6,7 +6,6 @@ gap: 16px; min-height: 348px; position: relative; - } .content { @@ -90,110 +89,103 @@ pointer-events: none; padding-left: 8px; padding-right: 1.5rem; - } -.buttonContainer{ +.buttonContainer { width: 90%; - position: absolute; - bottom: 16px; - right: 0; - left: 0; - margin: 0 auto; + position: absolute; + bottom: 16px; + right: 0; + left: 0; + margin: 0 auto; } -.confContainer{ +.confContainer { width: 100%; display: flex; flex-direction: column; gap: 8px; - color: var(--text2, #8B98A5); -text-align: center; + color: var(--text2, #8b98a5); + text-align: center; -font-family: "Lexend Deca"; -font-size: 12px; -font-style: normal; -font-weight: 300; -line-height: normal; + font-family: 'Lexend Deca'; + font-size: 12px; + font-style: normal; + font-weight: 300; + line-height: normal; } -.confDetails{ +.confDetails { width: 100%; display: flex; border-radius: 4px; -border: 1px solid var(--dark3, #1E1E24); -padding: 8px; -flex-direction: column; -align-items: center; -gap: 10px; -align-self: stretch; + border: 1px solid var(--dark3, #1e1e24); + padding: 8px; + flex-direction: column; + align-items: center; + gap: 10px; + align-self: stretch; } -.confRow{ +.confRow { width: 100%; -display: flex; -flex-direction: row; -align-items: center; -justify-content: space-between; - - + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; } -.gas_row{ +.gas_row { display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 8px; - color: var(--text2, #8B98A5); -text-align: center; -font-family: "Lexend Deca"; -font-size: 12px; -font-style: normal; -font-weight: 300; -line-height: normal; -padding: 0 8px; + color: var(--text2, #8b98a5); + text-align: center; + font-family: 'Lexend Deca'; + font-size: 12px; + font-style: normal; + font-weight: 300; + line-height: normal; + padding: 0 8px; } @media only screen and (min-width: 768px) { -.container{ - width: 398px; -} - - - + .container { + width: 398px; + } } .loading { display: flex; align-items: center; justify-content: center; - } - - .dots::after { - content: ""; +} + +.dots::after { + content: ''; animation: dots 1.5s steps(5, end) infinite; - } - - @keyframes dots { +} + +@keyframes dots { 0% { - content: ""; + content: ''; } 20% { - content: "."; + content: '.'; } 40% { - content: ".."; + content: '..'; } 60% { - content: "..."; + content: '...'; } 80% { - content: "...."; + content: '....'; } 100% { - content: ""; + content: ''; } - } - \ No newline at end of file +} diff --git a/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.module.css b/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.module.css index 321422ea81..74e98e155e 100644 --- a/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.module.css +++ b/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.module.css @@ -177,7 +177,7 @@ line-height: normal; padding: 0 8px; } -.inputWrapper{ +.inputWrapper { display: flex; flex-direction: row; align-items: center; diff --git a/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.tsx b/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.tsx index 0164aea4da..cc8f9181fe 100644 --- a/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.tsx +++ b/src/pages/platformAmbient/Vaults/VaultActionModal/VaultWithdraw/VaultWithdraw.tsx @@ -182,7 +182,6 @@ export default function VaultWithdraw(props: propsIF) { const pooledDisplay = ( <section className={styles.pooledContent}> - <div className={styles.pooledContentContainer}> Deposited {mainAsset.symbol} <div className={styles.alignCenter}> @@ -335,7 +334,6 @@ export default function VaultWithdraw(props: propsIF) { style={{ zIndex: '5' }} > <p>Slippage Tolerance</p> - </FlexContainer> <div className={styles.slipTolValueContainer} diff --git a/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.module.css b/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.module.css index 6413428e0c..70f945e6b9 100644 --- a/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.module.css +++ b/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.module.css @@ -141,11 +141,9 @@ } @media only screen and (max-width: 1280px) { -.poolName{ - font-size: 14px; -} - - + .poolName { + font-size: 14px; + } } @media only screen and (max-width: 768px) { .vaultHeader, diff --git a/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.tsx b/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.tsx index 037a12b472..2991cfac38 100644 --- a/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.tsx +++ b/src/pages/platformAmbient/Vaults/VaultRow/VaultRow.tsx @@ -46,7 +46,6 @@ export default function VaultRow(props: propsIF) { const { sessionReceipts } = useContext(ReceiptContext); const { closeBottomSheet } = useBottomSheet(); - // const userAddress = '0xe09de95d2a8a73aa4bfa6f118cd1dcb3c64910dc' const { @@ -195,8 +194,8 @@ export default function VaultRow(props: propsIF) { } function handleModalClose() { - closeModal() - closeBottomSheet() + closeModal(); + closeBottomSheet(); } const modalToOpen = @@ -271,16 +270,15 @@ export default function VaultRow(props: propsIF) { Deposit </button> - {isUserConnected && + {isUserConnected && ( // !!(vault.balance || crocEnvBal) && - ( - <button - className={styles.actionButton} - onClick={handleOpenWithdrawModal} - > - Withdraw - </button> - )} + <button + className={styles.actionButton} + onClick={handleOpenWithdrawModal} + > + Withdraw + </button> + )} </div> </div> </div> diff --git a/src/pages/platformAmbient/Vaults/Vaults.module.css b/src/pages/platformAmbient/Vaults/Vaults.module.css index 26a3176e0a..8946fdbbe3 100644 --- a/src/pages/platformAmbient/Vaults/Vaults.module.css +++ b/src/pages/platformAmbient/Vaults/Vaults.module.css @@ -1,131 +1,125 @@ -.container{ - width: 100%; - height: 100%; - background: var(--dark2); - overflow-y: hidden; - +.container { + width: 100%; + height: 100%; + background: var(--dark2); + overflow-y: hidden; } -.content{ - display: flex; - flex-direction: column; - gap: 8px; - padding: 16px; - height: 100%; +.content { + display: flex; + flex-direction: column; + gap: 8px; + padding: 16px; + height: 100%; } -.scrollableContainer{ - display: flex; - flex-direction: column; - gap: 8px; - overflow-y: scroll; - height: calc(100% - 74px); +.scrollableContainer { + display: flex; + flex-direction: column; + gap: 8px; + overflow-y: scroll; + height: calc(100% - 74px); } .vault_page_header > h3 { - padding: 8px 0; - color: var(--text1, #EBEBFF); - /* large */ - font-family: 'Lexend Deca'; - font-size: 24px; - font-style: normal; - font-weight: 300; - line-height: normal; - letter-spacing: -0.48px; + padding: 8px 0; + color: var(--text1, #ebebff); + /* large */ + font-family: 'Lexend Deca'; + font-size: 24px; + font-style: normal; + font-weight: 300; + line-height: normal; + letter-spacing: -0.48px; } .vault_page_header > p { - font-size: 12px; - font-weight: 200; - letter-spacing: 1px; + font-size: 12px; + font-weight: 200; + letter-spacing: 1px; } @media only screen and (max-width: 428px) { - .scrollableContainer{ - height: calc(100% - 134px); - } + .scrollableContainer { + height: calc(100% - 134px); + } } - - /* vaults header */ +.vaultHeader { + width: 100%; + padding: 0px; + padding-top: 4px; + display: grid; + grid-template-columns: 120px repeat(4, 1fr) 100px; + align-items: center; -.vaultHeader{ - width: 100%; - padding: 0px; - padding-top: 4px; - display: grid; - grid-template-columns: 120px repeat(4, 1fr) 100px; - align-items: center; - - border-bottom: 3px solid var(--dark3); + border-bottom: 3px solid var(--dark3); } +.vaultHeader span { + text-align: end; + color: var(--text2, #8b98a5); + text-align: right; - -.vaultHeader span{ - text-align: end; - color: var(--text2, #8B98A5); - text-align: right; - - font-size: 12px; - font-style: normal; - font-weight: 300; - line-height: normal; + font-size: 12px; + font-style: normal; + font-weight: 300; + line-height: normal; } .poolName { - - text-align: end; + text-align: end; } -.depositContainer, .apyDisplay{ - padding-right: 12px; - +.depositContainer, +.apyDisplay { + padding-right: 12px; } -.apyDisplay{ - padding-right: 17px; +.apyDisplay { + padding-right: 17px; } -.tvl{ - padding-right: 8px; +.tvl { + padding-right: 8px; } @media only screen and (max-width: 768px) { + .mainContent, + .vaultHeader { + grid-template-columns: 100px repeat(2, 1fr) 150px 100px; + } + .poolName { + display: none; + } + + .tvlDisplay, + .apyDisplay, + .depositContainer { + font-size: 14px; + } +} - .mainContent, .vaultHeader{ - grid-template-columns: 100px repeat(2, 1fr) 150px 100px; - } - .poolName{ - display: none; - } - - .tvlDisplay, .apyDisplay, .depositContainer{ - font-size: 14px; - - } - } - - @media only screen and (max-width: 500px) { - .mainContent, .vaultHeader{ - grid-template-columns: 100px repeat(2, 1fr) 80px; - } - - .tempestDisplay{ - display: none; - } - - .depositContainer, .apyDisplay{ - word-wrap: break-word; - padding-right: 10px; - - } - .apyDisplay{ - display: none; - } - - .scrollableContainer{ - margin-bottom: 56px; - } - - } \ No newline at end of file +@media only screen and (max-width: 500px) { + .mainContent, + .vaultHeader { + grid-template-columns: 100px repeat(2, 1fr) 80px; + } + + .tempestDisplay { + display: none; + } + + .depositContainer, + .apyDisplay { + word-wrap: break-word; + padding-right: 10px; + } + .apyDisplay { + display: none; + } + + .scrollableContainer { + margin-bottom: 56px; + } +} diff --git a/src/pages/platformAmbient/Vaults/Vaults.tsx b/src/pages/platformAmbient/Vaults/Vaults.tsx index a85df9fdaf..1a657e1e28 100644 --- a/src/pages/platformAmbient/Vaults/Vaults.tsx +++ b/src/pages/platformAmbient/Vaults/Vaults.tsx @@ -30,12 +30,12 @@ function Vaults() { const vaultHeader = ( <div className={styles.vaultHeader}> - <span/> - <span className={styles.poolName}/> + <span /> + <span className={styles.poolName} /> <span className={styles.tvl}>TVL</span> <span className={styles.depositContainer}>My Deposit</span> <span className={styles.apyDisplay}>APR</span> - <span className={styles.actionButtonContainer}/> + <span className={styles.actionButtonContainer} /> </div> ); diff --git a/src/pages/platformFuta/Account/Account.module.css b/src/pages/platformFuta/Account/Account.module.css index 231280c647..e6a4066d38 100644 --- a/src/pages/platformFuta/Account/Account.module.css +++ b/src/pages/platformFuta/Account/Account.module.css @@ -169,8 +169,6 @@ } .container { - height: calc(100svh - 280px); - } } diff --git a/src/pages/platformFuta/Auctions/Auctions.module.css b/src/pages/platformFuta/Auctions/Auctions.module.css index 2e4c9fa6c9..817375a8b4 100644 --- a/src/pages/platformFuta/Auctions/Auctions.module.css +++ b/src/pages/platformFuta/Auctions/Auctions.module.css @@ -12,7 +12,6 @@ } .consoleChartComponent { - display: flex; flex: 1; } diff --git a/src/pages/platformFuta/Create/Create.module.css b/src/pages/platformFuta/Create/Create.module.css index 6da639712d..8b6c7b1099 100644 --- a/src/pages/platformFuta/Create/Create.module.css +++ b/src/pages/platformFuta/Create/Create.module.css @@ -8,7 +8,6 @@ max-width: 400px; height: calc(100svh - 420px); z-index: 99 !important; - } .create_token_top { @@ -119,7 +118,7 @@ background: var(--accent1, #0ccdff); color: var(--dark1); border: none; - transition: all var(--animation-speed) ease-in-out + transition: all var(--animation-speed) ease-in-out; } .create_button_disabled { @@ -127,11 +126,10 @@ text-transform: uppercase; font-size: 24px; border: 1px solid transparent; - color: var(--text2) + color: var(--text2); } - -.create_button:hover{ +.create_button:hover { background: var(--accent2); color: var(--dark1); } @@ -142,8 +140,7 @@ gap: 8px; } - -.justifyRow{ +.justifyRow { width: 100%; display: flex; flex-direction: row; @@ -151,22 +148,18 @@ } @media only screen and (min-width: 1080px) { - .mainContainer{ - + .mainContainer { height: calc(100vh - 155px); transition: all var(--animation-speed) ease-in-out; overflow: hidden; - } - - .create_token { - margin-top: 5rem; - min-height: 500px; - max-height: 600px; - border: 1px solid var(--border); - background: var(--dark1); - padding: 16px; - - + + .create_token { + margin-top: 5rem; + min-height: 500px; + max-height: 600px; + border: 1px solid var(--border); + background: var(--dark1); + padding: 16px; } } diff --git a/src/pages/platformFuta/Home/Animations/Animations.module.css b/src/pages/platformFuta/Home/Animations/Animations.module.css index e36e70561b..5807110673 100644 --- a/src/pages/platformFuta/Home/Animations/Animations.module.css +++ b/src/pages/platformFuta/Home/Animations/Animations.module.css @@ -1,15 +1,11 @@ - - - -.logoContainer{ - -max-width: 400px; -display: flex; -justify-content: center; -align-items: center; +.logoContainer { + max-width: 400px; + display: flex; + justify-content: center; + align-items: center; } -.logoContainer img{ +.logoContainer img { max-width: 100%; max-height: 100%; } @@ -17,20 +13,18 @@ align-items: center; .flashingSvgtext { margin-top: 20px; font-family: 'Roboto Mono', monospace; - color: #62EBF1; - font-size: 18px; + color: #62ebf1; + font-size: 18px; text-align: center; - text-shadow: 0px 0px 27.833px #62EBF1, 0px 0px 7.952px #62EBF1; + text-shadow: + 0px 0px 27.833px #62ebf1, + 0px 0px 7.952px #62ebf1; opacity: 0; transition: opacity 0.1s; z-index: 5; - - } - - .flashingSvgFlash { animation: flash 1s infinite; } @@ -40,10 +34,13 @@ align-items: center; } @keyframes flash { - 0%, 50%, 100% { + 0%, + 50%, + 100% { opacity: 1; } - 25%, 75% { + 25%, + 75% { opacity: 0; } } @@ -57,68 +54,58 @@ align-items: center; } } @media (max-width: 1280px) { - - .terminalTextContainer{ - padding: 0 8px; + .terminalTextContainer { + padding: 0 8px; } - .terminalContainer, .output { - padding: 2px !important; - font-size: 15px !important; - + .terminalContainer, + .output { + padding: 2px !important; + font-size: 15px !important; + max-width: 100%; max-height: 100%; - } .flashingSvgtext { -max-width: 50%; + max-width: 50%; } - .logoContainer{ + .logoContainer { max-width: 350px; } - } @media (max-width: 760px) { - - .actionButtonContent{ + .actionButtonContent { flex-direction: row; } - .terminalContainer, .output { - - font-size: 12px !important; - - - + .terminalContainer, + .output { + font-size: 12px !important; } -.terminalStyle{ - - - position: absolute; - top: 100px; -} - .logoContainer{ + .terminalStyle { + position: absolute; + top: 100px; + } + .logoContainer { width: 200px; } - .flashingSvgtext{ + .flashingSvgtext { font-size: 12px; } - } @media (max-width: 500px) { -.terminalContainer{ - margin-top: 100px; -} + .terminalContainer { + margin-top: 100px; + } } /* ---------EXPLORE AND LEARN BUTTON---------- */ .actionButtonContent { - z-index: 2; display: flex; @@ -128,10 +115,10 @@ max-width: 50%; align-items: center; width: 100%; padding: 2rem 0; - } -.actionButtonContent a, .actionButtonContent button { +.actionButtonContent a, +.actionButtonContent button { display: flex; width: 180px !important; height: 57px !important; @@ -140,7 +127,7 @@ max-width: 50%; flex-shrink: 0; border: 1px solid transparent; - font-family: "Roboto Mono"; + font-family: 'Roboto Mono'; font-style: normal; line-height: normal; font-weight: 400; @@ -154,14 +141,9 @@ max-width: 50%; cursor: pointer; } - - - - - .exploreButton { - background: var(--accent1, #0CCDFF); - color: var(--dark1, #06060C); + background: var(--accent1, #0ccdff); + color: var(--dark1, #06060c); } .exploreButton:hover { @@ -172,12 +154,10 @@ max-width: 50%; .learnButton { background: var(--accent2, #073749); - color: var(--accent1, #0CCDFF); + color: var(--accent1, #0ccdff); } .learnButton:hover { background: transparent; border: 1px solid var(--accent1); } - - diff --git a/src/pages/platformFuta/Home/FutaLandings/FutaLanding.module.css b/src/pages/platformFuta/Home/FutaLandings/FutaLanding.module.css index b2f48612c9..f81ec31886 100644 --- a/src/pages/platformFuta/Home/FutaLandings/FutaLanding.module.css +++ b/src/pages/platformFuta/Home/FutaLandings/FutaLanding.module.css @@ -4,113 +4,94 @@ align-items: center; justify-content: center; - padding: 0 3rem; text-align: start; - } - - .imageContainer { - width: 250px; - } - - .image { +} + +.imageContainer { + width: 250px; +} + +.image { max-width: 100%; max-height: 100%; - } - +} - .info { - +.info { text-align: start; display: flex; flex-direction: column; gap: 32px; - } - - .codeBlock { - +} + +.codeBlock { color: var(--accent1); -text-shadow: 0px 0px 27.833px #62EBF1, 0px 0px 7.952px #62EBF1; -font-family: "Fira Mono"; -font-weight: 400; + text-shadow: + 0px 0px 27.833px #62ebf1, + 0px 0px 7.952px #62ebf1; + font-family: 'Fira Mono'; + font-weight: 400; +} - } - - .text { - color: var(--text2) - } +.text { + color: var(--text2); +} - @media (max-width: 500px) { - .container{ +@media (max-width: 500px) { + .container { /* subtract the mobile footer and header */ height: calc(100dvh - 130px); padding-bottom: 2rem; justify-content: space-between; } -.imageContainer{ - width: 180px; -} -.keyImgContainer{ - width: 230px; - + .imageContainer { + width: 180px; + } + .keyImgContainer { + width: 230px; + } } - } - - @media (min-width: 768px) { +@media (min-width: 768px) { .container { - display: grid; - grid-template-columns: auto 1fr; - height: 100vh; - padding: 0 64px; - gap: 27.75px; - + display: grid; + grid-template-columns: auto 1fr; + height: 100vh; + padding: 0 64px; + gap: 27.75px; } - .imageContainer{ + .imageContainer { width: 250px; height: auto; display: flex; justify-content: center; align-items: center; } - - - - - - - } +} - @media (min-width: 1080px) { +@media (min-width: 1080px) { .container { - - gap: 55.5px; - } + } - .imageContainer{ + .imageContainer { width: 300px; - } + } - .info { + .info { text-align: left; font-size: var(--header1-size); - } + } +} - } - - @media (min-width: 1500px) { +@media (min-width: 1500px) { .container { - - padding: 0 86px; + padding: 0 86px; - gap: 111px; - } - .imageContainer{ + gap: 111px; + } + .imageContainer { width: 453px; - } - - - } \ No newline at end of file +} diff --git a/src/pages/platformFuta/Home/Hero/Hero.module.css b/src/pages/platformFuta/Home/Hero/Hero.module.css index 0b967da3ba..0087b85032 100644 --- a/src/pages/platformFuta/Home/Hero/Hero.module.css +++ b/src/pages/platformFuta/Home/Hero/Hero.module.css @@ -1,5 +1,3 @@ - - .container { position: relative; bottom: 0; @@ -10,11 +8,8 @@ height: calc(100vh - 64px); padding: 8px; overflow: hidden; - - } - .content { position: absolute; bottom: 3%; @@ -28,7 +23,8 @@ gap: 8px; } -.content a, .content button { +.content a, +.content button { display: flex; width: 180px; height: 57px; @@ -37,7 +33,7 @@ flex-shrink: 0; border: 1px solid transparent; - font-family: "Roboto Mono"; + font-family: 'Roboto Mono'; font-style: normal; line-height: normal; font-weight: 400; @@ -51,14 +47,9 @@ cursor: pointer; } - - - - - .exploreButton { - background: var(--accent1, #0CCDFF); - color: var(--dark1, #06060C); + background: var(--accent1, #0ccdff); + color: var(--dark1, #06060c); } .exploreButton:hover { @@ -69,7 +60,7 @@ .learnButton { background: var(--accent2, #073749); - color: var(--accent1, #0CCDFF); + color: var(--accent1, #0ccdff); } .learnButton:hover { @@ -77,73 +68,62 @@ border: 1px solid var(--accent1); } - -@media (max-width: 500px){ +@media (max-width: 500px) { .content { - - bottom: 28% + bottom: 28%; } } -@media (max-width: 768px){ +@media (max-width: 768px) { .content { flex-direction: row; - - bottom: 25% - + + bottom: 25%; } } -@media (min-width: 768px){ - - .container{ - +@media (min-width: 768px) { + .container { height: 100vh; - } -.content{ - position: absolute; - -} -.skipIcon{ - position: absolute; - right: 6rem; - top: 3.5rem; -} -.skipTextContainer{ - position: absolute; - bottom: 50px; - right: 0; - z-index: 9999999; - background: var(--dark2); - padding: 8px; - margin: 8px; - - display: flex; - flex-direction: column; - justify-content: space-between; - gap: 1rem; - max-width: 420px; - text-align: center; - -} - + .content { + position: absolute; + } + .skipIcon { + position: absolute; + right: 6rem; + top: 3.5rem; + } + .skipTextContainer { + position: absolute; + bottom: 50px; + right: 0; + z-index: 9999999; + background: var(--dark2); + padding: 8px; + margin: 8px; + + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 1rem; + max-width: 420px; + text-align: center; + } -.skipText{ - - color: var(--accent1); - cursor: pointer; - transition: all var(--animation-speed) ease-in-out -} + .skipText { + color: var(--accent1); + cursor: pointer; + transition: all var(--animation-speed) ease-in-out; + } -.skipCloseIcon{ - width: 100%; - display: flex; - justify-content: flex-end; - align-items: flex-end; - -} + .skipCloseIcon { + width: 100%; + display: flex; + justify-content: flex-end; + align-items: flex-end; + } -.skipText:hover{ - color: var(--accent2) + .skipText:hover { + color: var(--accent2); + } } -} \ No newline at end of file diff --git a/src/pages/platformFuta/Home/Home.module.css b/src/pages/platformFuta/Home/Home.module.css index 81c8cd9595..67959c0bcf 100644 --- a/src/pages/platformFuta/Home/Home.module.css +++ b/src/pages/platformFuta/Home/Home.module.css @@ -1,57 +1,46 @@ - - .container { - position: relative; - overflow-y: auto; - /* overscroll-behavior-y: contain; + position: relative; + overflow-y: auto; + /* overscroll-behavior-y: contain; scroll-snap-type: y mandatory; */ - height: 100vh; - width: 100vw; + height: 100vh; + width: 100vw; - background-attachment: fixed; + background-attachment: fixed; } .container::-webkit-scrollbar { - display: none; + display: none; } .container { - scrollbar-width: none; + scrollbar-width: none; } .container { - -ms-overflow-style: none; + -ms-overflow-style: none; } - @media (max-height: 715px) { -.container{ -height: auto; + .container { + height: auto; + } } -} - - @media (max-width: 600px) { - - .container{ - - - overscroll-behavior-y: contain; - scroll-snap-type: y mandatory; - } - - .dots{ - display: none; - } + .container { + overscroll-behavior-y: contain; + scroll-snap-type: y mandatory; + } + + .dots { + display: none; + } } - @media (min-width: 1600px) { - .container { - - overscroll-behavior-y: contain; - scroll-snap-type: y mandatory; - - } -} \ No newline at end of file + .container { + overscroll-behavior-y: contain; + scroll-snap-type: y mandatory; + } +} diff --git a/src/pages/platformFuta/LimitFuta/LimitFuta.module.css b/src/pages/platformFuta/LimitFuta/LimitFuta.module.css index ab8aa771fa..fce898aeff 100644 --- a/src/pages/platformFuta/LimitFuta/LimitFuta.module.css +++ b/src/pages/platformFuta/LimitFuta/LimitFuta.module.css @@ -5,10 +5,9 @@ padding: 0 8px; height: 100%; height: calc(100dvh - 75px); - } -.chartSection{ +.chartSection { display: flex; width: 100%; height: 100%; diff --git a/src/pages/platformFuta/SwapFuta/SwapFuta.tsx b/src/pages/platformFuta/SwapFuta/SwapFuta.tsx index 57febbb74b..23a23fa565 100644 --- a/src/pages/platformFuta/SwapFuta/SwapFuta.tsx +++ b/src/pages/platformFuta/SwapFuta/SwapFuta.tsx @@ -18,7 +18,7 @@ function SwapFuta() { const showActiveMobileComponent = useMediaQuery('(max-width: 768px)'); - const { isCandleDataNull,isFullScreen } = useContext(ChartContext); + const { isCandleDataNull, isFullScreen } = useContext(ChartContext); const isPoolInitialized = useSimulatedIsPoolInitialized(); @@ -101,9 +101,7 @@ function SwapFuta() { > {mobileTabs} - <div style={{ height: '100%'}}> - {activeTabData} - </div> + <div style={{ height: '100%' }}>{activeTabData}</div> </section> ); @@ -111,7 +109,12 @@ function SwapFuta() { return ( <section className={styles.mainSection}> - <div className={styles.chartSection} style={isFullScreen ? {gridColumnStart:1, gridColumnEnd:4} : {}}> + <div + className={styles.chartSection} + style={ + isFullScreen ? { gridColumnStart: 1, gridColumnEnd: 4 } : {} + } + > <Divider count={2} /> <Trade futaActiveTab={activeTab} /> </div> diff --git a/src/pages/platformFuta/Ticker/Ticker.module.css b/src/pages/platformFuta/Ticker/Ticker.module.css index 79791435f7..0b6519aa7a 100644 --- a/src/pages/platformFuta/Ticker/Ticker.module.css +++ b/src/pages/platformFuta/Ticker/Ticker.module.css @@ -9,7 +9,4 @@ .container { height: calc(100svh - 130px); padding: 8px 16px; - } - - diff --git a/src/styled/Common/Animations.ts b/src/styled/Common/Animations.ts index 3c35c27d51..e3bbbc144f 100644 --- a/src/styled/Common/Animations.ts +++ b/src/styled/Common/Animations.ts @@ -41,10 +41,15 @@ export const FlickerAnimation = css` 53%, 57%, 100% { - text-shadow: 0 0 7px rgb(144, 132, 216), 0 0 10px rgb(86, 153, 212), - 0 0 21px rgb(83, 157, 222), 0 0 42px rgb(40, 160, 179), - 0 0 82px rgb(84, 91, 220), 0 0 92px rgb(67, 99, 175), - 0 0 102px rgb(75, 67, 213), 0 0 151px rgb(61, 108, 207); + text-shadow: + 0 0 7px rgb(144, 132, 216), + 0 0 10px rgb(86, 153, 212), + 0 0 21px rgb(83, 157, 222), + 0 0 42px rgb(40, 160, 179), + 0 0 82px rgb(84, 91, 220), + 0 0 92px rgb(67, 99, 175), + 0 0 102px rgb(75, 67, 213), + 0 0 151px rgb(61, 108, 207); } 20%, 24%, diff --git a/src/styled/Components/Portfolio.ts b/src/styled/Components/Portfolio.ts index 29c55569ff..250c34ebc6 100644 --- a/src/styled/Components/Portfolio.ts +++ b/src/styled/Components/Portfolio.ts @@ -1,6 +1,5 @@ import styled from 'styled-components/macro'; - // export const PortfolioTabsPortfolioTabsContainer = styled.div` // width: 100%; // height: 100%; @@ -161,7 +160,6 @@ export const MaxButton = styled.button<{ disabled?: boolean; width?: string }>` // width: 100%; // height: 100px; // margin-top: 4px; - // -webkit-background-size: cover; // -moz-background-size: cover; @@ -183,8 +181,6 @@ export const MaxButton = styled.button<{ disabled?: boolean; width?: string }>` // margin-top: 0; // } - - // `; // export const PortfolioBannerLevelContainer = styled.div<{ @@ -313,4 +309,3 @@ export const MaxButton = styled.button<{ disabled?: boolean; width?: string }>` // } // }} // `; - diff --git a/src/styled/Components/Trade.ts b/src/styled/Components/Trade.ts index 5a730e2226..9ad24842c9 100644 --- a/src/styled/Components/Trade.ts +++ b/src/styled/Components/Trade.ts @@ -113,7 +113,8 @@ export const ChartContainer = styled.div<{ } `} - ${({ isFuta,fullScreen }) => (isFuta && !fullScreen ? 'padding-bottom: 30px;' : '')} + ${({ isFuta, fullScreen }) => + isFuta && !fullScreen ? 'padding-bottom: 30px;' : ''} &::-webkit-scrollbar { display: none; diff --git a/src/utils/hooks/useIsPWA.ts b/src/utils/hooks/useIsPWA.ts index f040114156..335d8e2e59 100644 --- a/src/utils/hooks/useIsPWA.ts +++ b/src/utils/hooks/useIsPWA.ts @@ -1,37 +1,42 @@ -import { useState, useEffect } from 'react'; +import { useEffect, useState } from 'react'; // Custom Hook for detecting if app is running as a PWA on a mobile device const useIsPWA = (): boolean => { - const [isPWA, setIsPWA] = useState<boolean>(false); - - useEffect(() => { - const checkIsPWA = () => { - // Regular expression to detect mobile devices - const isMobile: boolean = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); - - // Detect if app is running in standalone mode (PWA) on modern browsers or iOS Safari - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const isStandalone: boolean = window.matchMedia('(display-mode: standalone)').matches || (window.navigator as any).standalone; - - // Set the PWA state based on mobile device check and standalone mode - if (isMobile && isStandalone) { - setIsPWA(true); - } else { - setIsPWA(false); - } - }; - - // Call check function on component mount - checkIsPWA(); - - // Optional: Add a listener for the resize event in case the display mode changes - window.addEventListener('resize', checkIsPWA); - - // Cleanup listener on component unmount - return () => window.removeEventListener('resize', checkIsPWA); - }, []); - - return isPWA; + const [isPWA, setIsPWA] = useState<boolean>(false); + + useEffect(() => { + const checkIsPWA = () => { + // Regular expression to detect mobile devices + const isMobile: boolean = /iPhone|iPad|iPod|Android/i.test( + navigator.userAgent, + ); + + // Detect if app is running in standalone mode (PWA) on modern browsers or iOS Safari + const isStandalone: boolean = + window.matchMedia('(display-mode: standalone)').matches || + // Use a type assertion to explicitly handle the non-standard iOS Safari property + (window.navigator as { standalone?: boolean }).standalone === + true; + + // Set the PWA state based on mobile device check and standalone mode + if (isMobile && isStandalone) { + setIsPWA(true); + } else { + setIsPWA(false); + } + }; + + // Call check function on component mount + checkIsPWA(); + + // Optional: Add a listener for the resize event in case the display mode changes + window.addEventListener('resize', checkIsPWA); + + // Cleanup listener on component unmount + return () => window.removeEventListener('resize', checkIsPWA); + }, []); + + return isPWA; }; export default useIsPWA;