diff --git a/dist/lib/.gitignore b/dist/lib/.gitignore index 647c4be284..024abb8062 100644 --- a/dist/lib/.gitignore +++ b/dist/lib/.gitignore @@ -1,3 +1,4 @@ pb pkg -protos \ No newline at end of file +protos +*.js \ No newline at end of file diff --git a/dist/workers/graph.js b/dist/workers/graph.js index de42bf3494..19bcf470d7 100644 --- a/dist/workers/graph.js +++ b/dist/workers/graph.js @@ -281,7 +281,9 @@ updateSettings = (param) => { }; }; -updateTheme = ({ theme }) => { +updateTheme = ({ theme, colors }) => { + data.colors = colors; + initTheme(theme); redraw(); }; diff --git a/electron/js/menu.js b/electron/js/menu.js index cb4d9de7a2..eea146576d 100644 --- a/electron/js/menu.js +++ b/electron/js/menu.js @@ -274,14 +274,6 @@ class MenuManager { } }, - { - label: 'Test crypto payments', type: 'checkbox', checked: config.testCryptoPayment, - click: () => { - Api.setConfig(this.win, { testCryptoPayment: !config.testCryptoPayment }); - this.win.reload(); - } - }, - Separator, { label: 'Export templates', click: () => Util.send(this.win, 'commandGlobal', 'exportTemplates') }, @@ -369,33 +361,20 @@ class MenuManager { return [ { - label: Util.translate('electronMenuShowTray'), type: 'checkbox', checked: !config.hideTray, click: () => { - Api.setConfig(this.win, { hideTray: !config.hideTray }); - this.initTray(); - } + label: Util.translate('electronMenuAccountSettings'), click: () => { + this.winShow(); + this.openSettings(''); + } }, - - (is.windows || is.linux) ? { - label: Util.translate('electronMenuShowMenu'), type: 'checkbox', checked: !config.hideMenuBar, click: () => { - Api.setMenuBarVisibility(this.win, !config.hideMenuBar); - this.initTray(); - } - } : null, - - Separator, - { label: Util.translate('electronMenuSpaceSettings'), click: () => { this.winShow(); this.openSettings('spaceIndex', { data: { isSpace: true }, className: 'isSpace' }); } }, - { - label: Util.translate('electronMenuAccountSettings'), click: () => { - this.winShow(); - this.openSettings(''); - } - }, + + Separator, + { label: Util.translate('electronMenuImport'), click: () => { this.winShow(); @@ -413,6 +392,22 @@ class MenuManager { Separator, + { + label: Util.translate('electronMenuShowTray'), type: 'checkbox', checked: !config.hideTray, click: () => { + Api.setConfig(this.win, { hideTray: !config.hideTray }); + this.initTray(); + } + }, + + (is.windows || is.linux) ? { + label: Util.translate('electronMenuShowMenu'), type: 'checkbox', checked: !config.hideMenuBar, click: () => { + Api.setMenuBarVisibility(this.win, !config.hideMenuBar); + this.initTray(); + } + } : null, + + Separator, + { label: Util.translate('commonNewObject'), accelerator: 'CmdOrCtrl+N', click: () => { this.winShow(); diff --git a/electron/js/window.js b/electron/js/window.js index 1f59ffea54..d12066e0c5 100644 --- a/electron/js/window.js +++ b/electron/js/window.js @@ -97,7 +97,7 @@ class WindowManager { param.frame = false; param.titleBarStyle = 'hidden'; param.icon = path.join(Util.imagePath(), 'icon.icns'); - param.trafficLightPosition = { x: 12, y: 12 }; + param.trafficLightPosition = { x: 10, y: 12 }; } else if (is.windows) { param.icon = path.join(Util.imagePath(), 'icons', '256x256.ico'); diff --git a/extension/iframe/create.tsx b/extension/iframe/create.tsx index e77885932c..47ddb26a4f 100644 --- a/extension/iframe/create.tsx +++ b/extension/iframe/create.tsx @@ -90,9 +90,7 @@ const Create = observer(class Create extends React.Component { - this.init(); - }); + U.Data.createAllSubscriptions(() => this.init()); }; componentDidUpdate (): void { @@ -177,7 +175,7 @@ const Create = observer(class Create extends React.Component { + U.Data.createAllSubscriptions(() => { this.initSpace(); this.initName(); this.initType(); @@ -264,7 +264,7 @@ const Create = observer(class Create extends React.Component this.forceUpdate()); + U.Data.createAllSubscriptions(() => this.forceUpdate()); Storage.set('lastSpaceId', id); }; diff --git a/middleware.version b/middleware.version index cf8ccd5313..67e76922f4 100644 --- a/middleware.version +++ b/middleware.version @@ -1 +1 @@ -0.35.0-rc2 \ No newline at end of file +0.35.0-rc7 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2b8c04e529..fbad9b7705 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "anytype", - "version": "0.41.16-alpha", + "version": "0.41.26-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "anytype", - "version": "0.41.16-alpha", + "version": "0.41.26-alpha", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { diff --git a/package.json b/package.json index a2889653f7..2711ca8c9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "anytype", - "version": "0.41.16-alpha", + "version": "0.41.26-alpha", "description": "Anytype", "main": "electron.js", "scripts": { diff --git a/src/img/icon/bullet/blue.svg b/src/img/icon/bullet/blue.svg deleted file mode 100644 index 568e1cde6a..0000000000 --- a/src/img/icon/bullet/blue.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/default.svg b/src/img/icon/bullet/default.svg deleted file mode 100644 index 3dbcf05c5a..0000000000 --- a/src/img/icon/bullet/default.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/grey.svg b/src/img/icon/bullet/grey.svg deleted file mode 100644 index d46ae9ac1f..0000000000 --- a/src/img/icon/bullet/grey.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/ice.svg b/src/img/icon/bullet/ice.svg deleted file mode 100644 index c13c3233e4..0000000000 --- a/src/img/icon/bullet/ice.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/lime.svg b/src/img/icon/bullet/lime.svg deleted file mode 100644 index 41549129a1..0000000000 --- a/src/img/icon/bullet/lime.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/orange.svg b/src/img/icon/bullet/orange.svg deleted file mode 100644 index 2f6f31c9e7..0000000000 --- a/src/img/icon/bullet/orange.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/pink.svg b/src/img/icon/bullet/pink.svg deleted file mode 100644 index cc3fd617c7..0000000000 --- a/src/img/icon/bullet/pink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/purple.svg b/src/img/icon/bullet/purple.svg deleted file mode 100644 index 937c4a6fbc..0000000000 --- a/src/img/icon/bullet/purple.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/red.svg b/src/img/icon/bullet/red.svg deleted file mode 100644 index 6af55e9eb1..0000000000 --- a/src/img/icon/bullet/red.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/teal.svg b/src/img/icon/bullet/teal.svg deleted file mode 100644 index 87b05b571f..0000000000 --- a/src/img/icon/bullet/teal.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/bullet/yellow.svg b/src/img/icon/bullet/yellow.svg deleted file mode 100644 index 2bc7d2f523..0000000000 --- a/src/img/icon/bullet/yellow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/syncStatus/error.svg b/src/img/icon/syncStatus/error.svg deleted file mode 100644 index fe439ea426..0000000000 --- a/src/img/icon/syncStatus/error.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/syncStatus/offline.svg b/src/img/icon/syncStatus/offline.svg deleted file mode 100644 index 421e1845ea..0000000000 --- a/src/img/icon/syncStatus/offline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/img/icon/syncStatus/synced.svg b/src/img/icon/syncStatus/synced.svg deleted file mode 100644 index 44438c4465..0000000000 --- a/src/img/icon/syncStatus/synced.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/icon/vault/close.svg b/src/img/icon/vault/close.svg deleted file mode 100644 index c89e94860b..0000000000 --- a/src/img/icon/vault/close.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/img/icon/vault/gallery.svg b/src/img/icon/vault/gallery.svg index 5b93ccaa49..c6b4d8232b 100644 --- a/src/img/icon/vault/gallery.svg +++ b/src/img/icon/vault/gallery.svg @@ -1,4 +1,6 @@ - - - \ No newline at end of file + + + + + diff --git a/src/img/icon/vault/plus.svg b/src/img/icon/vault/plus.svg index 6898e4be5c..21b8b93019 100644 --- a/src/img/icon/vault/plus.svg +++ b/src/img/icon/vault/plus.svg @@ -1,3 +1,3 @@ - - - + + + \ No newline at end of file diff --git a/src/img/icon/vault/settings.svg b/src/img/icon/vault/settings.svg index 764e7f8cad..4b14846600 100644 --- a/src/img/icon/vault/settings.svg +++ b/src/img/icon/vault/settings.svg @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/icon/vault/shared.svg b/src/img/icon/vault/shared.svg deleted file mode 100644 index 43c5762a6f..0000000000 --- a/src/img/icon/vault/shared.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/img/icon/vault/void.svg b/src/img/icon/vault/void.svg deleted file mode 100644 index b461317e78..0000000000 --- a/src/img/icon/vault/void.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/img/theme/dark/arrow/button/black.svg b/src/img/theme/dark/arrow/button/black.svg index dbe612d523..c17e63bc5f 100644 --- a/src/img/theme/dark/arrow/button/black.svg +++ b/src/img/theme/dark/arrow/button/black.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/src/img/theme/dark/icon/bullet/default.svg b/src/img/theme/dark/icon/bullet/default.svg deleted file mode 100644 index 3b83752fc5..0000000000 --- a/src/img/theme/dark/icon/bullet/default.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/img/theme/dark/icon/vault/gallery.svg b/src/img/theme/dark/icon/vault/gallery.svg new file mode 100644 index 0000000000..1c57d266f6 --- /dev/null +++ b/src/img/theme/dark/icon/vault/gallery.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/theme/dark/icon/vault/plus.svg b/src/img/theme/dark/icon/vault/plus.svg new file mode 100644 index 0000000000..1ac97f59b4 --- /dev/null +++ b/src/img/theme/dark/icon/vault/plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/img/theme/dark/icon/vault/settings.svg b/src/img/theme/dark/icon/vault/settings.svg new file mode 100644 index 0000000000..4f6cc96183 --- /dev/null +++ b/src/img/theme/dark/icon/vault/settings.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/json/constant.ts b/src/json/constant.ts index 463f2aec9f..7fcf9bcb93 100644 --- a/src/json/constant.ts +++ b/src/json/constant.ts @@ -38,7 +38,7 @@ export default { default: { interfaceLang: 'en-US', - codeLang: 'javascript', + codeLang: 'plain', typeKey: 'ot-note', pinTime: 600, }, @@ -83,7 +83,6 @@ export default { store: 'store', archive: 'archive', sidebar: 'sidebar', - graph: 'graph', space: 'space', files: 'files', participant: 'participant', diff --git a/src/json/emoji.json b/src/json/emoji.json new file mode 100644 index 0000000000..9922a2fb19 --- /dev/null +++ b/src/json/emoji.json @@ -0,0 +1 @@ +{"categories":[{"id":"people","emojis":["grinning","smiley","smile","grin","laughing","sweat_smile","rolling_on_the_floor_laughing","joy","slightly_smiling_face","upside_down_face","melting_face","wink","blush","innocent","smiling_face_with_3_hearts","heart_eyes","star-struck","kissing_heart","kissing","relaxed","kissing_closed_eyes","kissing_smiling_eyes","smiling_face_with_tear","yum","stuck_out_tongue","stuck_out_tongue_winking_eye","zany_face","stuck_out_tongue_closed_eyes","money_mouth_face","hugging_face","face_with_hand_over_mouth","face_with_open_eyes_and_hand_over_mouth","face_with_peeking_eye","shushing_face","thinking_face","saluting_face","zipper_mouth_face","face_with_raised_eyebrow","neutral_face","expressionless","no_mouth","dotted_line_face","face_in_clouds","smirk","unamused","face_with_rolling_eyes","grimacing","face_exhaling","lying_face","relieved","pensive","sleepy","drooling_face","sleeping","mask","face_with_thermometer","face_with_head_bandage","nauseated_face","face_vomiting","sneezing_face","hot_face","cold_face","woozy_face","dizzy_face","face_with_spiral_eyes","exploding_head","face_with_cowboy_hat","partying_face","disguised_face","sunglasses","nerd_face","face_with_monocle","confused","face_with_diagonal_mouth","worried","slightly_frowning_face","white_frowning_face","open_mouth","hushed","astonished","flushed","pleading_face","face_holding_back_tears","frowning","anguished","fearful","cold_sweat","disappointed_relieved","cry","sob","scream","confounded","persevere","disappointed","sweat","weary","tired_face","yawning_face","triumph","rage","angry","face_with_symbols_on_mouth","smiling_imp","imp","skull","skull_and_crossbones","hankey","clown_face","japanese_ogre","japanese_goblin","ghost","alien","space_invader","robot_face","wave","raised_back_of_hand","raised_hand_with_fingers_splayed","hand","spock-hand","rightwards_hand","leftwards_hand","palm_down_hand","palm_up_hand","ok_hand","pinched_fingers","pinching_hand","v","crossed_fingers","hand_with_index_finger_and_thumb_crossed","i_love_you_hand_sign","the_horns","call_me_hand","point_left","point_right","point_up_2","middle_finger","point_down","point_up","index_pointing_at_the_viewer","+1","-1","fist","facepunch","left-facing_fist","right-facing_fist","clap","raised_hands","heart_hands","open_hands","palms_up_together","handshake","pray","writing_hand","nail_care","selfie","muscle","mechanical_arm","mechanical_leg","leg","foot","ear","ear_with_hearing_aid","nose","brain","anatomical_heart","lungs","tooth","bone","eyes","eye","tongue","lips","biting_lip","baby","child","boy","girl","adult","person_with_blond_hair","man","bearded_person","man_with_beard","woman_with_beard","red_haired_man","curly_haired_man","white_haired_man","bald_man","woman","red_haired_woman","red_haired_person","curly_haired_woman","curly_haired_person","white_haired_woman","white_haired_person","bald_woman","bald_person","blond-haired-woman","blond-haired-man","older_adult","older_man","older_woman","person_frowning","man-frowning","woman-frowning","person_with_pouting_face","man-pouting","woman-pouting","no_good","man-gesturing-no","woman-gesturing-no","ok_woman","man-gesturing-ok","woman-gesturing-ok","information_desk_person","man-tipping-hand","woman-tipping-hand","raising_hand","man-raising-hand","woman-raising-hand","deaf_person","deaf_man","deaf_woman","bow","man-bowing","woman-bowing","face_palm","man-facepalming","woman-facepalming","shrug","man-shrugging","woman-shrugging","health_worker","male-doctor","female-doctor","student","male-student","female-student","teacher","male-teacher","female-teacher","judge","male-judge","female-judge","farmer","male-farmer","female-farmer","cook","male-cook","female-cook","mechanic","male-mechanic","female-mechanic","factory_worker","male-factory-worker","female-factory-worker","office_worker","male-office-worker","female-office-worker","scientist","male-scientist","female-scientist","technologist","male-technologist","female-technologist","singer","male-singer","female-singer","artist","male-artist","female-artist","pilot","male-pilot","female-pilot","astronaut","male-astronaut","female-astronaut","firefighter","male-firefighter","female-firefighter","cop","male-police-officer","female-police-officer","sleuth_or_spy","male-detective","female-detective","guardsman","male-guard","female-guard","ninja","construction_worker","male-construction-worker","female-construction-worker","person_with_crown","prince","princess","man_with_turban","man-wearing-turban","woman-wearing-turban","man_with_gua_pi_mao","person_with_headscarf","person_in_tuxedo","man_in_tuxedo","woman_in_tuxedo","bride_with_veil","man_with_veil","woman_with_veil","pregnant_woman","pregnant_man","pregnant_person","breast-feeding","woman_feeding_baby","man_feeding_baby","person_feeding_baby","angel","santa","mrs_claus","mx_claus","superhero","male_superhero","female_superhero","supervillain","male_supervillain","female_supervillain","mage","male_mage","female_mage","fairy","male_fairy","female_fairy","vampire","male_vampire","female_vampire","merperson","merman","mermaid","elf","male_elf","female_elf","genie","male_genie","female_genie","zombie","male_zombie","female_zombie","troll","massage","man-getting-massage","woman-getting-massage","haircut","man-getting-haircut","woman-getting-haircut","walking","man-walking","woman-walking","standing_person","man_standing","woman_standing","kneeling_person","man_kneeling","woman_kneeling","person_with_probing_cane","man_with_probing_cane","woman_with_probing_cane","person_in_motorized_wheelchair","man_in_motorized_wheelchair","woman_in_motorized_wheelchair","person_in_manual_wheelchair","man_in_manual_wheelchair","woman_in_manual_wheelchair","runner","man-running","woman-running","dancer","man_dancing","man_in_business_suit_levitating","dancers","men-with-bunny-ears-partying","women-with-bunny-ears-partying","person_in_steamy_room","man_in_steamy_room","woman_in_steamy_room","person_climbing","man_climbing","woman_climbing","fencer","horse_racing","skier","snowboarder","golfer","man-golfing","woman-golfing","surfer","man-surfing","woman-surfing","rowboat","man-rowing-boat","woman-rowing-boat","swimmer","man-swimming","woman-swimming","person_with_ball","man-bouncing-ball","woman-bouncing-ball","weight_lifter","man-lifting-weights","woman-lifting-weights","bicyclist","man-biking","woman-biking","mountain_bicyclist","man-mountain-biking","woman-mountain-biking","person_doing_cartwheel","man-cartwheeling","woman-cartwheeling","wrestlers","man-wrestling","woman-wrestling","water_polo","man-playing-water-polo","woman-playing-water-polo","handball","man-playing-handball","woman-playing-handball","juggling","man-juggling","woman-juggling","person_in_lotus_position","man_in_lotus_position","woman_in_lotus_position","bath","sleeping_accommodation","people_holding_hands","two_women_holding_hands","man_and_woman_holding_hands","two_men_holding_hands","couplekiss","woman-kiss-man","man-kiss-man","woman-kiss-woman","couple_with_heart","woman-heart-man","man-heart-man","woman-heart-woman","family","man-woman-boy","man-woman-girl","man-woman-girl-boy","man-woman-boy-boy","man-woman-girl-girl","man-man-boy","man-man-girl","man-man-girl-boy","man-man-boy-boy","man-man-girl-girl","woman-woman-boy","woman-woman-girl","woman-woman-girl-boy","woman-woman-boy-boy","woman-woman-girl-girl","man-boy","man-boy-boy","man-girl","man-girl-boy","man-girl-girl","woman-boy","woman-boy-boy","woman-girl","woman-girl-boy","woman-girl-girl","speaking_head_in_silhouette","bust_in_silhouette","busts_in_silhouette","people_hugging","footprints","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","see_no_evil","hear_no_evil","speak_no_evil","kiss","love_letter","cupid","gift_heart","sparkling_heart","heartpulse","heartbeat","revolving_hearts","two_hearts","heart_decoration","heavy_heart_exclamation_mark_ornament","broken_heart","heart_on_fire","mending_heart","heart","orange_heart","yellow_heart","green_heart","blue_heart","purple_heart","brown_heart","black_heart","white_heart","100","anger","boom","dizzy","sweat_drops","dash","hole","bomb","speech_balloon","eye-in-speech-bubble","left_speech_bubble","right_anger_bubble","thought_balloon","zzz"]},{"id":"nature","emojis":["monkey_face","monkey","gorilla","orangutan","dog","dog2","guide_dog","service_dog","poodle","wolf","fox_face","raccoon","cat","cat2","black_cat","lion_face","tiger","tiger2","leopard","horse","racehorse","unicorn_face","zebra_face","deer","bison","cow","ox","water_buffalo","cow2","pig","pig2","boar","pig_nose","ram","sheep","goat","dromedary_camel","camel","llama","giraffe_face","elephant","mammoth","rhinoceros","hippopotamus","mouse","mouse2","rat","hamster","rabbit","rabbit2","chipmunk","beaver","hedgehog","bat","bear","polar_bear","koala","panda_face","sloth","otter","skunk","kangaroo","badger","feet","turkey","chicken","rooster","hatching_chick","baby_chick","hatched_chick","bird","penguin","dove_of_peace","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon_face","dragon","sauropod","t-rex","whale","whale2","dolphin","seal","fish","tropical_fish","blowfish","shark","octopus","shell","coral","snail","butterfly","bug","ant","bee","beetle","ladybug","cricket","cockroach","spider","spider_web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry_blossom","white_flower","lotus","rosette","rose","wilted_flower","hibiscus","sunflower","blossom","tulip","seedling","potted_plant","evergreen_tree","deciduous_tree","palm_tree","cactus","ear_of_rice","herb","shamrock","four_leaf_clover","maple_leaf","fallen_leaf","leaves","empty_nest","nest_with_eggs"]},{"id":"foods","emojis":["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","apple","green_apple","pear","peach","cherries","strawberry","blueberries","kiwifruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","corn","hot_pepper","bell_pepper","cucumber","leafy_green","broccoli","garlic","onion","mushroom","peanuts","beans","chestnut","bread","croissant","baguette_bread","flatbread","pretzel","bagel","pancakes","waffle","cheese_wedge","meat_on_bone","poultry_leg","cut_of_meat","bacon","hamburger","fries","pizza","hotdog","sandwich","taco","burrito","tamale","stuffed_flatbread","falafel","egg","fried_egg","shallow_pan_of_food","stew","fondue","bowl_with_spoon","green_salad","popcorn","butter","salt","canned_food","bento","rice_cracker","rice_ball","rice","curry","ramen","spaghetti","sweet_potato","oden","sushi","fried_shrimp","fish_cake","moon_cake","dango","dumpling","fortune_cookie","takeout_box","crab","lobster","shrimp","squid","oyster","icecream","shaved_ice","ice_cream","doughnut","cookie","birthday","cake","cupcake","pie","chocolate_bar","candy","lollipop","custard","honey_pot","baby_bottle","glass_of_milk","coffee","teapot","tea","sake","champagne","wine_glass","cocktail","tropical_drink","beer","beers","clinking_glasses","tumbler_glass","pouring_liquid","cup_with_straw","bubble_tea","beverage_box","mate_drink","ice_cube","chopsticks","knife_fork_plate","fork_and_knife","spoon","hocho","jar","amphora"]},{"id":"activity","emojis":["jack_o_lantern","christmas_tree","fireworks","sparkler","firecracker","sparkles","balloon","tada","confetti_ball","tanabata_tree","bamboo","dolls","flags","wind_chime","rice_scene","red_envelope","ribbon","gift","reminder_ribbon","admission_tickets","ticket","medal","trophy","sports_medal","first_place_medal","second_place_medal","third_place_medal","soccer","baseball","softball","basketball","volleyball","football","rugby_football","tennis","flying_disc","bowling","cricket_bat_and_ball","field_hockey_stick_and_ball","ice_hockey_stick_and_puck","lacrosse","table_tennis_paddle_and_ball","badminton_racquet_and_shuttlecock","boxing_glove","martial_arts_uniform","goal_net","golf","ice_skate","fishing_pole_and_fish","diving_mask","running_shirt_with_sash","ski","sled","curling_stone","dart","yo-yo","kite","8ball","crystal_ball","magic_wand","nazar_amulet","hamsa","video_game","joystick","slot_machine","game_die","jigsaw","teddy_bear","pinata","mirror_ball","nesting_dolls","spades","hearts","diamonds","clubs","chess_pawn","black_joker","mahjong","flower_playing_cards","performing_arts","frame_with_picture","art","thread","sewing_needle","yarn","knot"]},{"id":"places","emojis":["earth_africa","earth_americas","earth_asia","globe_with_meridians","world_map","japan","compass","snow_capped_mountain","mountain","volcano","mount_fuji","camping","beach_with_umbrella","desert","desert_island","national_park","stadium","classical_building","building_construction","bricks","rock","wood","hut","house_buildings","derelict_house_building","house","house_with_garden","office","post_office","european_post_office","hospital","bank","hotel","love_hotel","convenience_store","school","department_store","factory","japanese_castle","european_castle","wedding","tokyo_tower","statue_of_liberty","church","mosque","hindu_temple","synagogue","shinto_shrine","kaaba","fountain","tent","foggy","night_with_stars","cityscape","sunrise_over_mountains","sunrise","city_sunset","city_sunrise","bridge_at_night","hotsprings","carousel_horse","playground_slide","ferris_wheel","roller_coaster","barber","circus_tent","steam_locomotive","railway_car","bullettrain_side","bullettrain_front","train2","metro","light_rail","station","tram","monorail","mountain_railway","train","bus","oncoming_bus","trolleybus","minibus","ambulance","fire_engine","police_car","oncoming_police_car","taxi","oncoming_taxi","car","oncoming_automobile","blue_car","pickup_truck","truck","articulated_lorry","tractor","racing_car","racing_motorcycle","motor_scooter","manual_wheelchair","motorized_wheelchair","auto_rickshaw","bike","scooter","skateboard","roller_skate","busstop","motorway","railway_track","oil_drum","fuelpump","wheel","rotating_light","traffic_light","vertical_traffic_light","octagonal_sign","construction","anchor","ring_buoy","boat","canoe","speedboat","passenger_ship","ferry","motor_boat","ship","airplane","small_airplane","airplane_departure","airplane_arriving","parachute","seat","helicopter","suspension_railway","mountain_cableway","aerial_tramway","satellite","rocket","flying_saucer","bellhop_bell","luggage","hourglass","hourglass_flowing_sand","watch","alarm_clock","stopwatch","timer_clock","mantelpiece_clock","clock12","clock1230","clock1","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","clock10","clock1030","clock11","clock1130","new_moon","waxing_crescent_moon","first_quarter_moon","moon","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","crescent_moon","new_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","thermometer","sunny","full_moon_with_face","sun_with_face","ringed_planet","star","star2","stars","milky_way","cloud","partly_sunny","thunder_cloud_and_rain","mostly_sunny","barely_sunny","partly_sunny_rain","rain_cloud","snow_cloud","lightning","tornado","fog","wind_blowing_face","cyclone","rainbow","closed_umbrella","umbrella","umbrella_with_rain_drops","umbrella_on_ground","zap","snowflake","snowman","snowman_without_snow","comet","fire","droplet","ocean"]},{"id":"objects","emojis":["eyeglasses","dark_sunglasses","goggles","lab_coat","safety_vest","necktie","shirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","one-piece_swimsuit","briefs","shorts","bikini","womans_clothes","purse","handbag","pouch","shopping_bags","school_satchel","thong_sandal","mans_shoe","athletic_shoe","hiking_boot","womans_flat_shoe","high_heel","sandal","ballet_shoes","boot","crown","womans_hat","tophat","mortar_board","billed_cap","military_helmet","helmet_with_white_cross","prayer_beads","lipstick","ring","gem","mute","speaker","sound","loud_sound","loudspeaker","mega","postal_horn","bell","no_bell","musical_score","musical_note","notes","studio_microphone","level_slider","control_knobs","microphone","headphones","radio","saxophone","accordion","guitar","musical_keyboard","trumpet","violin","banjo","drum_with_drumsticks","long_drum","iphone","calling","phone","telephone_receiver","pager","fax","battery","low_battery","electric_plug","computer","desktop_computer","printer","keyboard","three_button_mouse","trackball","minidisc","floppy_disk","cd","dvd","abacus","movie_camera","film_frames","film_projector","clapper","tv","camera","camera_with_flash","video_camera","vhs","mag","mag_right","candle","bulb","flashlight","izakaya_lantern","diya_lamp","notebook_with_decorative_cover","closed_book","book","green_book","blue_book","orange_book","books","notebook","ledger","page_with_curl","scroll","page_facing_up","newspaper","rolled_up_newspaper","bookmark_tabs","bookmark","label","moneybag","coin","yen","dollar","euro","pound","money_with_wings","credit_card","receipt","chart","email","e-mail","incoming_envelope","envelope_with_arrow","outbox_tray","inbox_tray","package","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","postbox","ballot_box_with_ballot","pencil2","black_nib","lower_left_fountain_pen","lower_left_ballpoint_pen","lower_left_paintbrush","lower_left_crayon","memo","briefcase","file_folder","open_file_folder","card_index_dividers","date","calendar","spiral_note_pad","spiral_calendar_pad","card_index","chart_with_upwards_trend","chart_with_downwards_trend","bar_chart","clipboard","pushpin","round_pushpin","paperclip","linked_paperclips","straight_ruler","triangular_ruler","scissors","card_file_box","file_cabinet","wastebasket","lock","unlock","lock_with_ink_pen","closed_lock_with_key","key","old_key","hammer","axe","pick","hammer_and_pick","hammer_and_wrench","dagger_knife","crossed_swords","gun","boomerang","bow_and_arrow","shield","carpentry_saw","wrench","screwdriver","nut_and_bolt","gear","compression","scales","probing_cane","link","chains","hook","toolbox","magnet","ladder","alembic","test_tube","petri_dish","dna","microscope","telescope","satellite_antenna","syringe","drop_of_blood","pill","adhesive_bandage","crutch","stethoscope","x-ray","door","elevator","mirror","window","bed","couch_and_lamp","chair","toilet","plunger","shower","bathtub","mouse_trap","razor","lotion_bottle","safety_pin","broom","basket","roll_of_paper","bucket","soap","bubbles","toothbrush","sponge","fire_extinguisher","shopping_trolley","smoking","coffin","headstone","funeral_urn","moyai","placard","identification_card"]},{"id":"symbols","emojis":["atm","put_litter_in_its_place","potable_water","wheelchair","mens","womens","restroom","baby_symbol","wc","passport_control","customs","baggage_claim","left_luggage","warning","children_crossing","no_entry","no_entry_sign","no_bicycles","no_smoking","do_not_litter","non-potable_water","no_pedestrians","no_mobile_phones","underage","radioactive_sign","biohazard_sign","arrow_up","arrow_upper_right","arrow_right","arrow_lower_right","arrow_down","arrow_lower_left","arrow_left","arrow_upper_left","arrow_up_down","left_right_arrow","leftwards_arrow_with_hook","arrow_right_hook","arrow_heading_up","arrow_heading_down","arrows_clockwise","arrows_counterclockwise","back","end","on","soon","top","place_of_worship","atom_symbol","om_symbol","star_of_david","wheel_of_dharma","yin_yang","latin_cross","orthodox_cross","star_and_crescent","peace_symbol","menorah_with_nine_branches","six_pointed_star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","ophiuchus","twisted_rightwards_arrows","repeat","repeat_one","arrow_forward","fast_forward","black_right_pointing_double_triangle_with_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","arrow_backward","rewind","black_left_pointing_double_triangle_with_vertical_bar","arrow_up_small","arrow_double_up","arrow_down_small","arrow_double_down","double_vertical_bar","black_square_for_stop","black_circle_for_record","eject","cinema","low_brightness","high_brightness","signal_strength","vibration_mode","mobile_phone_off","transgender_symbol","heavy_multiplication_x","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_equals_sign","infinity","bangbang","interrobang","question","grey_question","grey_exclamation","exclamation","wavy_dash","currency_exchange","heavy_dollar_sign","recycle","fleur_de_lis","trident","name_badge","beginner","o","white_check_mark","ballot_box_with_check","heavy_check_mark","x","negative_squared_cross_mark","curly_loop","loop","part_alternation_mark","eight_spoked_asterisk","eight_pointed_black_star","sparkle","copyright","registered","tm","hash","keycap_star","zero","one","two","three","four","five","six","seven","eight","nine","keycap_ten","capital_abcd","abcd","1234","symbols","abc","a","ab","b","cl","cool","free","information_source","id","m","new","ng","o2","ok","parking","sos","up","vs","koko","sa","u6708","u6709","u6307","ideograph_advantage","u5272","u7121","u7981","accept","u7533","u5408","u7a7a","congratulations","secret","u55b6","u6e80","red_circle","large_orange_circle","large_yellow_circle","large_green_circle","large_blue_circle","large_purple_circle","large_brown_circle","black_circle","white_circle","large_red_square","large_orange_square","large_yellow_square","large_green_square","large_blue_square","large_purple_square","large_brown_square","black_large_square","white_large_square","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_small_square","white_small_square","large_orange_diamond","large_blue_diamond","small_orange_diamond","small_blue_diamond","small_red_triangle","small_red_triangle_down","diamond_shape_with_a_dot_inside","radio_button","white_square_button","black_square_button"]},{"id":"flags","emojis":["checkered_flag","cn","crossed_flags","de","es","flag-ac","flag-ad","flag-ae","flag-af","flag-ag","flag-ai","flag-al","flag-am","flag-ao","flag-aq","flag-ar","flag-as","flag-at","flag-au","flag-aw","flag-ax","flag-az","flag-ba","flag-bb","flag-bd","flag-be","flag-bf","flag-bg","flag-bh","flag-bi","flag-bj","flag-bl","flag-bm","flag-bn","flag-bo","flag-bq","flag-br","flag-bs","flag-bt","flag-bv","flag-bw","flag-by","flag-bz","flag-ca","flag-cc","flag-cd","flag-cf","flag-cg","flag-ch","flag-ci","flag-ck","flag-cl","flag-cm","flag-co","flag-cp","flag-cr","flag-cu","flag-cv","flag-cw","flag-cx","flag-cy","flag-cz","flag-dg","flag-dj","flag-dk","flag-dm","flag-do","flag-dz","flag-ea","flag-ec","flag-ee","flag-eg","flag-eh","flag-england","flag-er","flag-et","flag-eu","flag-fi","flag-fj","flag-fk","flag-fm","flag-fo","flag-ga","flag-gd","flag-ge","flag-gf","flag-gg","flag-gh","flag-gi","flag-gl","flag-gm","flag-gn","flag-gp","flag-gq","flag-gr","flag-gs","flag-gt","flag-gu","flag-gw","flag-gy","flag-hk","flag-hm","flag-hn","flag-hr","flag-ht","flag-hu","flag-ic","flag-id","flag-ie","flag-il","flag-im","flag-in","flag-io","flag-iq","flag-ir","flag-is","flag-je","flag-jm","flag-jo","flag-ke","flag-kg","flag-kh","flag-ki","flag-km","flag-kn","flag-kp","flag-kw","flag-ky","flag-kz","flag-la","flag-lb","flag-lc","flag-li","flag-lk","flag-lr","flag-ls","flag-lt","flag-lu","flag-lv","flag-ly","flag-ma","flag-mc","flag-md","flag-me","flag-mf","flag-mg","flag-mh","flag-mk","flag-ml","flag-mm","flag-mn","flag-mo","flag-mp","flag-mq","flag-mr","flag-ms","flag-mt","flag-mu","flag-mv","flag-mw","flag-mx","flag-my","flag-mz","flag-na","flag-nc","flag-ne","flag-nf","flag-ng","flag-ni","flag-nl","flag-no","flag-np","flag-nr","flag-nu","flag-nz","flag-om","flag-pa","flag-pe","flag-pf","flag-pg","flag-ph","flag-pk","flag-pl","flag-pm","flag-pn","flag-pr","flag-ps","flag-pt","flag-pw","flag-py","flag-qa","flag-re","flag-ro","flag-rs","flag-rw","flag-sa","flag-sb","flag-sc","flag-scotland","flag-sd","flag-se","flag-sg","flag-sh","flag-si","flag-sj","flag-sk","flag-sl","flag-sm","flag-sn","flag-so","flag-sr","flag-ss","flag-st","flag-sv","flag-sx","flag-sy","flag-sz","flag-ta","flag-tc","flag-td","flag-tf","flag-tg","flag-th","flag-tj","flag-tk","flag-tl","flag-tm","flag-tn","flag-to","flag-tr","flag-tt","flag-tv","flag-tw","flag-tz","flag-ua","flag-ug","flag-um","flag-un","flag-uy","flag-uz","flag-va","flag-vc","flag-ve","flag-vg","flag-vi","flag-vn","flag-vu","flag-wales","flag-wf","flag-ws","flag-xk","flag-ye","flag-yt","flag-za","flag-zm","flag-zw","fr","gb","it","jp","kr","pirate_flag","rainbow-flag","ru","transgender_flag","triangular_flag_on_post","us","waving_black_flag","waving_white_flag"]}],"emojis":{"100":{"id":"100","name":"Hundred Points","keywords":["100","score","perfect","numbers","century","exam","quiz","test","pass"],"skins":[{"unified":"1f4af","native":"💯","x":28,"y":6}],"version":1},"1234":{"id":"1234","name":"Input Numbers","keywords":["1234","blue","square"],"skins":[{"unified":"1f522","native":"🔢","x":29,"y":59}],"version":1},"grinning":{"id":"grinning","name":"Grinning Face","emoticons":[":D"],"keywords":["smile","happy","joy",":D","grin"],"skins":[{"unified":"1f600","native":"😀","x":32,"y":20}],"version":1},"smiley":{"id":"smiley","name":"Grinning Face with Big Eyes","emoticons":[":)","=)","=-)"],"keywords":["smiley","happy","joy","haha",":D",":)","smile","funny"],"skins":[{"unified":"1f603","native":"😃","x":32,"y":23}],"version":1},"smile":{"id":"smile","name":"Grinning Face with Smiling Eyes","emoticons":[":)","C:","c:",":D",":-D"],"keywords":["smile","happy","joy","funny","haha","laugh","like",":D",":)"],"skins":[{"unified":"1f604","native":"😄","x":32,"y":24}],"version":1},"grin":{"id":"grin","name":"Beaming Face with Smiling Eyes","keywords":["grin","happy","smile","joy","kawaii"],"skins":[{"unified":"1f601","native":"😁","x":32,"y":21}],"version":1},"laughing":{"id":"laughing","name":"Grinning Squinting Face","emoticons":[":>",":->"],"keywords":["laughing","satisfied","happy","joy","lol","haha","glad","XD","laugh"],"skins":[{"unified":"1f606","native":"😆","x":32,"y":26}],"version":1},"sweat_smile":{"id":"sweat_smile","name":"Grinning Face with Sweat","keywords":["smile","hot","happy","laugh","relief"],"skins":[{"unified":"1f605","native":"😅","x":32,"y":25}],"version":1},"rolling_on_the_floor_laughing":{"id":"rolling_on_the_floor_laughing","name":"Rolling on the Floor Laughing","keywords":["face","lol","haha","rofl"],"skins":[{"unified":"1f923","native":"🤣","x":40,"y":15}],"version":3},"joy":{"id":"joy","name":"Face with Tears of Joy","keywords":["cry","weep","happy","happytears","haha"],"skins":[{"unified":"1f602","native":"😂","x":32,"y":22}],"version":1},"slightly_smiling_face":{"id":"slightly_smiling_face","name":"Slightly Smiling Face","emoticons":[":)","(:",":-)"],"keywords":["smile"],"skins":[{"unified":"1f642","native":"🙂","x":33,"y":28}],"version":1},"upside_down_face":{"id":"upside_down_face","name":"Upside-Down Face","keywords":["upside","down","flipped","silly","smile"],"skins":[{"unified":"1f643","native":"🙃","x":33,"y":29}],"version":1},"melting_face":{"id":"melting_face","name":"Melting Face","keywords":["hot","heat"],"skins":[{"unified":"1fae0","native":"🫠","x":55,"y":12}],"version":14},"wink":{"id":"wink","name":"Winking Face","emoticons":[";)",";-)"],"keywords":["wink","happy","mischievous","secret",";)","smile","eye"],"skins":[{"unified":"1f609","native":"😉","x":32,"y":29}],"version":1},"blush":{"id":"blush","name":"Smiling Face with Smiling Eyes","emoticons":[":)"],"keywords":["blush","smile","happy","flushed","crush","embarrassed","shy","joy"],"skins":[{"unified":"1f60a","native":"😊","x":32,"y":30}],"version":1},"innocent":{"id":"innocent","name":"Smiling Face with Halo","keywords":["innocent","angel","heaven"],"skins":[{"unified":"1f607","native":"😇","x":32,"y":27}],"version":1},"smiling_face_with_3_hearts":{"id":"smiling_face_with_3_hearts","name":"Smiling Face with Hearts","keywords":["3","love","like","affection","valentines","infatuation","crush","adore"],"skins":[{"unified":"1f970","native":"🥰","x":43,"y":58}],"version":11},"heart_eyes":{"id":"heart_eyes","name":"Smiling Face with Heart-Eyes","keywords":["heart","eyes","love","like","affection","valentines","infatuation","crush"],"skins":[{"unified":"1f60d","native":"😍","x":32,"y":33}],"version":1},"star-struck":{"id":"star-struck","name":"Star-Struck","keywords":["star","struck","grinning","face","with","eyes","smile","starry"],"skins":[{"unified":"1f929","native":"🤩","x":40,"y":38}],"version":5},"kissing_heart":{"id":"kissing_heart","name":"Face Blowing a Kiss","emoticons":[":*",":-*"],"keywords":["kissing","heart","love","like","affection","valentines","infatuation"],"skins":[{"unified":"1f618","native":"😘","x":32,"y":44}],"version":1},"kissing":{"id":"kissing","name":"Kissing Face","keywords":["love","like","3","valentines","infatuation","kiss"],"skins":[{"unified":"1f617","native":"😗","x":32,"y":43}],"version":1},"relaxed":{"id":"relaxed","name":"Smiling Face","keywords":["relaxed","blush","massage","happiness"],"skins":[{"unified":"263a-fe0f","native":"☺️","x":57,"y":4}],"version":1},"kissing_closed_eyes":{"id":"kissing_closed_eyes","name":"Kissing Face with Closed Eyes","keywords":["love","like","affection","valentines","infatuation","kiss"],"skins":[{"unified":"1f61a","native":"😚","x":32,"y":46}],"version":1},"kissing_smiling_eyes":{"id":"kissing_smiling_eyes","name":"Kissing Face with Smiling Eyes","keywords":["affection","valentines","infatuation","kiss"],"skins":[{"unified":"1f619","native":"😙","x":32,"y":45}],"version":1},"smiling_face_with_tear":{"id":"smiling_face_with_tear","name":"Smiling Face with Tear","keywords":["sad","cry","pretend"],"skins":[{"unified":"1f972","native":"🥲","x":43,"y":60}],"version":13},"yum":{"id":"yum","name":"Face Savoring Food","keywords":["yum","happy","joy","tongue","smile","silly","yummy","nom","delicious","savouring"],"skins":[{"unified":"1f60b","native":"😋","x":32,"y":31}],"version":1},"stuck_out_tongue":{"id":"stuck_out_tongue","name":"Face with Tongue","emoticons":[":p",":-p",":P",":-P",":b",":-b"],"keywords":["stuck","out","prank","childish","playful","mischievous","smile"],"skins":[{"unified":"1f61b","native":"😛","x":32,"y":47}],"version":1},"stuck_out_tongue_winking_eye":{"id":"stuck_out_tongue_winking_eye","name":"Winking Face with Tongue","emoticons":[";p",";-p",";b",";-b",";P",";-P"],"keywords":["stuck","out","eye","prank","childish","playful","mischievous","smile","wink"],"skins":[{"unified":"1f61c","native":"😜","x":32,"y":48}],"version":1},"zany_face":{"id":"zany_face","name":"Zany Face","keywords":["grinning","with","one","large","and","small","eye","goofy","crazy"],"skins":[{"unified":"1f92a","native":"🤪","x":40,"y":39}],"version":5},"stuck_out_tongue_closed_eyes":{"id":"stuck_out_tongue_closed_eyes","name":"Squinting Face with Tongue","keywords":["stuck","out","closed","eyes","prank","playful","mischievous","smile"],"skins":[{"unified":"1f61d","native":"😝","x":32,"y":49}],"version":1},"money_mouth_face":{"id":"money_mouth_face","name":"Money-Mouth Face","keywords":["money","mouth","rich","dollar"],"skins":[{"unified":"1f911","native":"🤑","x":38,"y":59}],"version":1},"hugging_face":{"id":"hugging_face","name":"Hugging Face","keywords":["smile","hug"],"skins":[{"unified":"1f917","native":"🤗","x":39,"y":4}],"version":1},"face_with_hand_over_mouth":{"id":"face_with_hand_over_mouth","name":"Face with Hand over Mouth","keywords":["smiling","eyes","and","covering","whoops","shock","surprise"],"skins":[{"unified":"1f92d","native":"🤭","x":40,"y":42}],"version":5},"face_with_open_eyes_and_hand_over_mouth":{"id":"face_with_open_eyes_and_hand_over_mouth","name":"Face with Open Eyes and Hand over Mouth","keywords":["silence","secret","shock","surprise"],"skins":[{"unified":"1fae2","native":"🫢","x":55,"y":14}],"version":14},"face_with_peeking_eye":{"id":"face_with_peeking_eye","name":"Face with Peeking Eye","keywords":["scared","frightening","embarrassing"],"skins":[{"unified":"1fae3","native":"🫣","x":55,"y":15}],"version":14},"shushing_face":{"id":"shushing_face","name":"Shushing Face","keywords":["with","finger","covering","closed","lips","quiet","shhh"],"skins":[{"unified":"1f92b","native":"🤫","x":40,"y":40}],"version":5},"thinking_face":{"id":"thinking_face","name":"Thinking Face","keywords":["hmmm","think","consider"],"skins":[{"unified":"1f914","native":"🤔","x":39,"y":1}],"version":1},"saluting_face":{"id":"saluting_face","name":"Saluting Face","keywords":["respect","salute"],"skins":[{"unified":"1fae1","native":"🫡","x":55,"y":13}],"version":14},"zipper_mouth_face":{"id":"zipper_mouth_face","name":"Zipper-Mouth Face","keywords":["zipper","mouth","sealed","secret"],"skins":[{"unified":"1f910","native":"🤐","x":38,"y":58}],"version":1},"face_with_raised_eyebrow":{"id":"face_with_raised_eyebrow","name":"Face with Raised Eyebrow","keywords":["one","distrust","scepticism","disapproval","disbelief","surprise"],"skins":[{"unified":"1f928","native":"🤨","x":40,"y":37}],"version":5},"neutral_face":{"id":"neutral_face","name":"Neutral Face","emoticons":[":|",":-|"],"keywords":["indifference","meh",":",""],"skins":[{"unified":"1f610","native":"😐","x":32,"y":36}],"version":1},"expressionless":{"id":"expressionless","name":"Expressionless Face","emoticons":["-_-"],"keywords":["indifferent","-","","meh","deadpan"],"skins":[{"unified":"1f611","native":"😑","x":32,"y":37}],"version":1},"no_mouth":{"id":"no_mouth","name":"Face Without Mouth","keywords":["no","hellokitty"],"skins":[{"unified":"1f636","native":"😶","x":33,"y":16}],"version":1},"dotted_line_face":{"id":"dotted_line_face","name":"Dotted Line Face","keywords":["invisible","lonely","isolation","depression"],"skins":[{"unified":"1fae5","native":"🫥","x":55,"y":17}],"version":14},"face_in_clouds":{"id":"face_in_clouds","name":"Face in Clouds","keywords":["shower","steam","dream"],"skins":[{"unified":"1f636-200d-1f32b-fe0f","native":"😶‍🌫️","x":33,"y":15}],"version":13.1},"smirk":{"id":"smirk","name":"Smirking Face","keywords":["smirk","smile","mean","prank","smug","sarcasm"],"skins":[{"unified":"1f60f","native":"😏","x":32,"y":35}],"version":1},"unamused":{"id":"unamused","name":"Unamused Face","emoticons":[":("],"keywords":["indifference","bored","straight","serious","sarcasm","unimpressed","skeptical","dubious","side","eye"],"skins":[{"unified":"1f612","native":"😒","x":32,"y":38}],"version":1},"face_with_rolling_eyes":{"id":"face_with_rolling_eyes","name":"Face with Rolling Eyes","keywords":["eyeroll","frustrated"],"skins":[{"unified":"1f644","native":"🙄","x":33,"y":30}],"version":1},"grimacing":{"id":"grimacing","name":"Grimacing Face","keywords":["grimace","teeth"],"skins":[{"unified":"1f62c","native":"😬","x":33,"y":3}],"version":1},"face_exhaling":{"id":"face_exhaling","name":"Face Exhaling","keywords":["relieve","relief","tired","sigh"],"skins":[{"unified":"1f62e-200d-1f4a8","native":"😮‍💨","x":33,"y":5}],"version":13.1},"lying_face":{"id":"lying_face","name":"Lying Face","keywords":["lie","pinocchio"],"skins":[{"unified":"1f925","native":"🤥","x":40,"y":17}],"version":3},"relieved":{"id":"relieved","name":"Relieved Face","keywords":["relaxed","phew","massage","happiness"],"skins":[{"unified":"1f60c","native":"😌","x":32,"y":32}],"version":1},"pensive":{"id":"pensive","name":"Pensive Face","keywords":["sad","depressed","upset"],"skins":[{"unified":"1f614","native":"😔","x":32,"y":40}],"version":1},"sleepy":{"id":"sleepy","name":"Sleepy Face","keywords":["tired","rest","nap"],"skins":[{"unified":"1f62a","native":"😪","x":33,"y":1}],"version":1},"drooling_face":{"id":"drooling_face","name":"Drooling Face","keywords":[],"skins":[{"unified":"1f924","native":"🤤","x":40,"y":16}],"version":3},"sleeping":{"id":"sleeping","name":"Sleeping Face","keywords":["tired","sleepy","night","zzz"],"skins":[{"unified":"1f634","native":"😴","x":33,"y":12}],"version":1},"mask":{"id":"mask","name":"Face with Medical Mask","keywords":["sick","ill","disease"],"skins":[{"unified":"1f637","native":"😷","x":33,"y":17}],"version":1},"face_with_thermometer":{"id":"face_with_thermometer","name":"Face with Thermometer","keywords":["sick","temperature","cold","fever"],"skins":[{"unified":"1f912","native":"🤒","x":38,"y":60}],"version":1},"face_with_head_bandage":{"id":"face_with_head_bandage","name":"Face with Head-Bandage","keywords":["head","bandage","injured","clumsy","hurt"],"skins":[{"unified":"1f915","native":"🤕","x":39,"y":2}],"version":1},"nauseated_face":{"id":"nauseated_face","name":"Nauseated Face","keywords":["vomit","gross","green","sick","throw","up","ill"],"skins":[{"unified":"1f922","native":"🤢","x":40,"y":14}],"version":3},"face_vomiting":{"id":"face_vomiting","name":"Face Vomiting","keywords":["with","open","mouth","sick"],"skins":[{"unified":"1f92e","native":"🤮","x":40,"y":43}],"version":5},"sneezing_face":{"id":"sneezing_face","name":"Sneezing Face","keywords":["gesundheit","sneeze","sick","allergy"],"skins":[{"unified":"1f927","native":"🤧","x":40,"y":36}],"version":3},"hot_face":{"id":"hot_face","name":"Hot Face","keywords":["feverish","heat","red","sweating"],"skins":[{"unified":"1f975","native":"🥵","x":44,"y":2}],"version":11},"cold_face":{"id":"cold_face","name":"Cold Face","keywords":["blue","freezing","frozen","frostbite","icicles"],"skins":[{"unified":"1f976","native":"🥶","x":44,"y":3}],"version":11},"woozy_face":{"id":"woozy_face","name":"Woozy Face","keywords":["dizzy","intoxicated","tipsy","wavy"],"skins":[{"unified":"1f974","native":"🥴","x":44,"y":1}],"version":11},"dizzy_face":{"id":"dizzy_face","name":"Dizzy Face","keywords":["spent","unconscious","xox"],"skins":[{"unified":"1f635","native":"😵","x":33,"y":14}],"version":1},"face_with_spiral_eyes":{"id":"face_with_spiral_eyes","name":"Face with Spiral Eyes","keywords":["sick","ill","confused","nauseous","nausea"],"skins":[{"unified":"1f635-200d-1f4ab","native":"😵‍💫","x":33,"y":13}],"version":13.1},"exploding_head":{"id":"exploding_head","name":"Exploding Head","keywords":["shocked","face","with","mind","blown"],"skins":[{"unified":"1f92f","native":"🤯","x":40,"y":44}],"version":5},"face_with_cowboy_hat":{"id":"face_with_cowboy_hat","name":"Cowboy Hat Face","keywords":["with","cowgirl"],"skins":[{"unified":"1f920","native":"🤠","x":40,"y":12}],"version":3},"partying_face":{"id":"partying_face","name":"Partying Face","keywords":["celebration","woohoo"],"skins":[{"unified":"1f973","native":"🥳","x":44,"y":0}],"version":11},"disguised_face":{"id":"disguised_face","name":"Disguised Face","keywords":["pretent","brows","glasses","moustache"],"skins":[{"unified":"1f978","native":"🥸","x":44,"y":10}],"version":13},"sunglasses":{"id":"sunglasses","name":"Smiling Face with Sunglasses","emoticons":["8)"],"keywords":["cool","smile","summer","beach","sunglass"],"skins":[{"unified":"1f60e","native":"😎","x":32,"y":34}],"version":1},"nerd_face":{"id":"nerd_face","name":"Nerd Face","keywords":["nerdy","geek","dork"],"skins":[{"unified":"1f913","native":"🤓","x":39,"y":0}],"version":1},"face_with_monocle":{"id":"face_with_monocle","name":"Face with Monocle","keywords":["stuffy","wealthy"],"skins":[{"unified":"1f9d0","native":"🧐","x":47,"y":11}],"version":5},"confused":{"id":"confused","name":"Confused Face","emoticons":[":\\",":-\\",":/",":-/"],"keywords":["indifference","huh","weird","hmmm",":/"],"skins":[{"unified":"1f615","native":"😕","x":32,"y":41}],"version":1},"face_with_diagonal_mouth":{"id":"face_with_diagonal_mouth","name":"Face with Diagonal Mouth","keywords":["skeptic","confuse","frustrated","indifferent"],"skins":[{"unified":"1fae4","native":"🫤","x":55,"y":16}],"version":14},"worried":{"id":"worried","name":"Worried Face","keywords":["concern","nervous",":("],"skins":[{"unified":"1f61f","native":"😟","x":32,"y":51}],"version":1},"slightly_frowning_face":{"id":"slightly_frowning_face","name":"Slightly Frowning Face","keywords":["disappointed","sad","upset"],"skins":[{"unified":"1f641","native":"🙁","x":33,"y":27}],"version":1},"white_frowning_face":{"id":"white_frowning_face","name":"Frowning Face","keywords":["white","sad","upset","frown"],"skins":[{"unified":"2639-fe0f","native":"☹️","x":57,"y":3}],"version":1},"open_mouth":{"id":"open_mouth","name":"Face with Open Mouth","emoticons":[":o",":-o",":O",":-O"],"keywords":["surprise","impressed","wow","whoa",":O"],"skins":[{"unified":"1f62e","native":"😮","x":33,"y":6}],"version":1},"hushed":{"id":"hushed","name":"Hushed Face","keywords":["woo","shh"],"skins":[{"unified":"1f62f","native":"😯","x":33,"y":7}],"version":1},"astonished":{"id":"astonished","name":"Astonished Face","keywords":["xox","surprised","poisoned"],"skins":[{"unified":"1f632","native":"😲","x":33,"y":10}],"version":1},"flushed":{"id":"flushed","name":"Flushed Face","keywords":["blush","shy","flattered"],"skins":[{"unified":"1f633","native":"😳","x":33,"y":11}],"version":1},"pleading_face":{"id":"pleading_face","name":"Pleading Face","keywords":["begging","mercy"],"skins":[{"unified":"1f97a","native":"🥺","x":44,"y":12}],"version":11},"face_holding_back_tears":{"id":"face_holding_back_tears","name":"Face Holding Back Tears","keywords":["touched","gratitude"],"skins":[{"unified":"1f979","native":"🥹","x":44,"y":11}],"version":14},"frowning":{"id":"frowning","name":"Frowning Face with Open Mouth","keywords":["aw","what"],"skins":[{"unified":"1f626","native":"😦","x":32,"y":58}],"version":1},"anguished":{"id":"anguished","name":"Anguished Face","emoticons":["D:"],"keywords":["stunned","nervous"],"skins":[{"unified":"1f627","native":"😧","x":32,"y":59}],"version":1},"fearful":{"id":"fearful","name":"Fearful Face","keywords":["scared","terrified","nervous","oops","huh"],"skins":[{"unified":"1f628","native":"😨","x":32,"y":60}],"version":1},"cold_sweat":{"id":"cold_sweat","name":"Anxious Face with Sweat","keywords":["cold","nervous"],"skins":[{"unified":"1f630","native":"😰","x":33,"y":8}],"version":1},"disappointed_relieved":{"id":"disappointed_relieved","name":"Sad but Relieved Face","keywords":["disappointed","phew","sweat","nervous"],"skins":[{"unified":"1f625","native":"😥","x":32,"y":57}],"version":1},"cry":{"id":"cry","name":"Crying Face","emoticons":[":'("],"keywords":["cry","tears","sad","depressed","upset",":'("],"skins":[{"unified":"1f622","native":"😢","x":32,"y":54}],"version":1},"sob":{"id":"sob","name":"Loudly Crying Face","emoticons":[":'("],"keywords":["sob","cry","tears","sad","upset","depressed"],"skins":[{"unified":"1f62d","native":"😭","x":33,"y":4}],"version":1},"scream":{"id":"scream","name":"Face Screaming in Fear","keywords":["scream","munch","scared","omg"],"skins":[{"unified":"1f631","native":"😱","x":33,"y":9}],"version":1},"confounded":{"id":"confounded","name":"Confounded Face","keywords":["confused","sick","unwell","oops",":S"],"skins":[{"unified":"1f616","native":"😖","x":32,"y":42}],"version":1},"persevere":{"id":"persevere","name":"Persevering Face","keywords":["persevere","sick","no","upset","oops"],"skins":[{"unified":"1f623","native":"😣","x":32,"y":55}],"version":1},"disappointed":{"id":"disappointed","name":"Disappointed Face","emoticons":["):",":(",":-("],"keywords":["sad","upset","depressed",":("],"skins":[{"unified":"1f61e","native":"😞","x":32,"y":50}],"version":1},"sweat":{"id":"sweat","name":"Face with Cold Sweat","keywords":["downcast","hot","sad","tired","exercise"],"skins":[{"unified":"1f613","native":"😓","x":32,"y":39}],"version":1},"weary":{"id":"weary","name":"Weary Face","keywords":["tired","sleepy","sad","frustrated","upset"],"skins":[{"unified":"1f629","native":"😩","x":33,"y":0}],"version":1},"tired_face":{"id":"tired_face","name":"Tired Face","keywords":["sick","whine","upset","frustrated"],"skins":[{"unified":"1f62b","native":"😫","x":33,"y":2}],"version":1},"yawning_face":{"id":"yawning_face","name":"Yawning Face","keywords":["tired","sleepy"],"skins":[{"unified":"1f971","native":"🥱","x":43,"y":59}],"version":12},"triumph":{"id":"triumph","name":"Face with Look of Triumph","keywords":["steam","from","nose","gas","phew","proud","pride"],"skins":[{"unified":"1f624","native":"😤","x":32,"y":56}],"version":1},"rage":{"id":"rage","name":"Pouting Face","keywords":["rage","angry","mad","hate","despise"],"skins":[{"unified":"1f621","native":"😡","x":32,"y":53}],"version":1},"angry":{"id":"angry","name":"Angry Face","emoticons":[">:(",">:-("],"keywords":["mad","annoyed","frustrated"],"skins":[{"unified":"1f620","native":"😠","x":32,"y":52}],"version":1},"face_with_symbols_on_mouth":{"id":"face_with_symbols_on_mouth","name":"Face with Symbols on Mouth","keywords":["serious","covering","swearing","cursing","cussing","profanity","expletive"],"skins":[{"unified":"1f92c","native":"🤬","x":40,"y":41}],"version":5},"smiling_imp":{"id":"smiling_imp","name":"Smiling Face with Horns","keywords":["imp","devil"],"skins":[{"unified":"1f608","native":"😈","x":32,"y":28}],"version":1},"imp":{"id":"imp","name":"Imp","keywords":["angry","face","with","horns","devil"],"skins":[{"unified":"1f47f","native":"👿","x":25,"y":8}],"version":1},"skull":{"id":"skull","name":"Skull","keywords":["dead","skeleton","creepy","death"],"skins":[{"unified":"1f480","native":"💀","x":25,"y":9}],"version":1},"skull_and_crossbones":{"id":"skull_and_crossbones","name":"Skull and Crossbones","keywords":["poison","danger","deadly","scary","death","pirate","evil"],"skins":[{"unified":"2620-fe0f","native":"☠️","x":56,"y":56}],"version":1},"hankey":{"id":"hankey","name":"Pile of Poo","keywords":["hankey","poop","shit","shitface","fail","turd"],"skins":[{"unified":"1f4a9","native":"💩","x":27,"y":56}],"version":1},"clown_face":{"id":"clown_face","name":"Clown Face","keywords":[],"skins":[{"unified":"1f921","native":"🤡","x":40,"y":13}],"version":3},"japanese_ogre":{"id":"japanese_ogre","name":"Ogre","keywords":["japanese","monster","red","mask","halloween","scary","creepy","devil","demon"],"skins":[{"unified":"1f479","native":"👹","x":24,"y":58}],"version":1},"japanese_goblin":{"id":"japanese_goblin","name":"Goblin","keywords":["japanese","red","evil","mask","monster","scary","creepy"],"skins":[{"unified":"1f47a","native":"👺","x":24,"y":59}],"version":1},"ghost":{"id":"ghost","name":"Ghost","keywords":["halloween","spooky","scary"],"skins":[{"unified":"1f47b","native":"👻","x":24,"y":60}],"version":1},"alien":{"id":"alien","name":"Alien","keywords":["UFO","paul","weird","outer","space"],"skins":[{"unified":"1f47d","native":"👽","x":25,"y":6}],"version":1},"space_invader":{"id":"space_invader","name":"Alien Monster","keywords":["space","invader","game","arcade","play"],"skins":[{"unified":"1f47e","native":"👾","x":25,"y":7}],"version":1},"robot_face":{"id":"robot_face","name":"Robot","keywords":["face","computer","machine","bot"],"skins":[{"unified":"1f916","native":"🤖","x":39,"y":3}],"version":1},"smiley_cat":{"id":"smiley_cat","name":"Grinning Cat","keywords":["smiley","animal","cats","happy","smile"],"skins":[{"unified":"1f63a","native":"😺","x":33,"y":20}],"version":1},"smile_cat":{"id":"smile_cat","name":"Grinning Cat with Smiling Eyes","keywords":["smile","animal","cats"],"skins":[{"unified":"1f638","native":"😸","x":33,"y":18}],"version":1},"joy_cat":{"id":"joy_cat","name":"Cat with Tears of Joy","keywords":["animal","cats","haha","happy"],"skins":[{"unified":"1f639","native":"😹","x":33,"y":19}],"version":1},"heart_eyes_cat":{"id":"heart_eyes_cat","name":"Smiling Cat with Heart-Eyes","keywords":["heart","eyes","animal","love","like","affection","cats","valentines"],"skins":[{"unified":"1f63b","native":"😻","x":33,"y":21}],"version":1},"smirk_cat":{"id":"smirk_cat","name":"Cat with Wry Smile","keywords":["smirk","animal","cats"],"skins":[{"unified":"1f63c","native":"😼","x":33,"y":22}],"version":1},"kissing_cat":{"id":"kissing_cat","name":"Kissing Cat","keywords":["animal","cats","kiss"],"skins":[{"unified":"1f63d","native":"😽","x":33,"y":23}],"version":1},"scream_cat":{"id":"scream_cat","name":"Weary Cat","keywords":["scream","animal","cats","munch","scared"],"skins":[{"unified":"1f640","native":"🙀","x":33,"y":26}],"version":1},"crying_cat_face":{"id":"crying_cat_face","name":"Crying Cat","keywords":["face","animal","tears","weep","sad","cats","upset","cry"],"skins":[{"unified":"1f63f","native":"😿","x":33,"y":25}],"version":1},"pouting_cat":{"id":"pouting_cat","name":"Pouting Cat","keywords":["animal","cats"],"skins":[{"unified":"1f63e","native":"😾","x":33,"y":24}],"version":1},"see_no_evil":{"id":"see_no_evil","name":"See-No-Evil Monkey","keywords":["see","no","evil","animal","nature","haha"],"skins":[{"unified":"1f648","native":"🙈","x":34,"y":24}],"version":1},"hear_no_evil":{"id":"hear_no_evil","name":"Hear-No-Evil Monkey","keywords":["hear","no","evil","animal","nature"],"skins":[{"unified":"1f649","native":"🙉","x":34,"y":25}],"version":1},"speak_no_evil":{"id":"speak_no_evil","name":"Speak-No-Evil Monkey","keywords":["speak","no","evil","animal","nature","omg"],"skins":[{"unified":"1f64a","native":"🙊","x":34,"y":26}],"version":1},"kiss":{"id":"kiss","name":"Kiss Mark","keywords":["face","lips","love","like","affection","valentines"],"skins":[{"unified":"1f48b","native":"💋","x":26,"y":37}],"version":1},"love_letter":{"id":"love_letter","name":"Love Letter","keywords":["email","like","affection","envelope","valentines"],"skins":[{"unified":"1f48c","native":"💌","x":26,"y":38}],"version":1},"cupid":{"id":"cupid","name":"Heart with Arrow","keywords":["cupid","love","like","affection","valentines"],"skins":[{"unified":"1f498","native":"💘","x":27,"y":39}],"version":1},"gift_heart":{"id":"gift_heart","name":"Heart with Ribbon","keywords":["gift","love","valentines"],"skins":[{"unified":"1f49d","native":"💝","x":27,"y":44}],"version":1},"sparkling_heart":{"id":"sparkling_heart","name":"Sparkling Heart","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f496","native":"💖","x":27,"y":37}],"version":1},"heartpulse":{"id":"heartpulse","name":"Growing Heart","keywords":["heartpulse","like","love","affection","valentines","pink"],"skins":[{"unified":"1f497","native":"💗","x":27,"y":38}],"version":1},"heartbeat":{"id":"heartbeat","name":"Beating Heart","keywords":["heartbeat","love","like","affection","valentines","pink"],"skins":[{"unified":"1f493","native":"💓","x":27,"y":34}],"version":1},"revolving_hearts":{"id":"revolving_hearts","name":"Revolving Hearts","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f49e","native":"💞","x":27,"y":45}],"version":1},"two_hearts":{"id":"two_hearts","name":"Two Hearts","keywords":["love","like","affection","valentines","heart"],"skins":[{"unified":"1f495","native":"💕","x":27,"y":36}],"version":1},"heart_decoration":{"id":"heart_decoration","name":"Heart Decoration","keywords":["purple","square","love","like"],"skins":[{"unified":"1f49f","native":"💟","x":27,"y":46}],"version":1},"heavy_heart_exclamation_mark_ornament":{"id":"heavy_heart_exclamation_mark_ornament","name":"Heart Exclamation","keywords":["heavy","mark","ornament","decoration","love"],"skins":[{"unified":"2763-fe0f","native":"❣️","x":59,"y":7}],"version":1},"broken_heart":{"id":"broken_heart","name":"Broken Heart","emoticons":["",":->"],"keywords":["laughing","satisfied","happy","joy","lol","haha","glad","XD","laugh"],"skins":[{"unified":"1f606","native":"😆","x":32,"y":26}],"version":1},"sweat_smile":{"id":"sweat_smile","name":"Grinning Face with Sweat","keywords":["smile","hot","happy","laugh","relief"],"skins":[{"unified":"1f605","native":"😅","x":32,"y":25}],"version":1},"rolling_on_the_floor_laughing":{"id":"rolling_on_the_floor_laughing","name":"Rolling on the Floor Laughing","keywords":["face","lol","haha","rofl"],"skins":[{"unified":"1f923","native":"🤣","x":40,"y":15}],"version":3},"joy":{"id":"joy","name":"Face with Tears of Joy","keywords":["cry","weep","happy","happytears","haha"],"skins":[{"unified":"1f602","native":"😂","x":32,"y":22}],"version":1},"slightly_smiling_face":{"id":"slightly_smiling_face","name":"Slightly Smiling Face","emoticons":[":)","(:",":-)"],"keywords":["smile"],"skins":[{"unified":"1f642","native":"🙂","x":33,"y":28}],"version":1},"upside_down_face":{"id":"upside_down_face","name":"Upside-Down Face","keywords":["upside","down","flipped","silly","smile"],"skins":[{"unified":"1f643","native":"🙃","x":33,"y":29}],"version":1},"melting_face":{"id":"melting_face","name":"Melting Face","keywords":["hot","heat"],"skins":[{"unified":"1fae0","native":"🫠","x":55,"y":12}],"version":14},"wink":{"id":"wink","name":"Winking Face","emoticons":[";)",";-)"],"keywords":["wink","happy","mischievous","secret",";)","smile","eye"],"skins":[{"unified":"1f609","native":"😉","x":32,"y":29}],"version":1},"blush":{"id":"blush","name":"Smiling Face with Smiling Eyes","emoticons":[":)"],"keywords":["blush","smile","happy","flushed","crush","embarrassed","shy","joy"],"skins":[{"unified":"1f60a","native":"😊","x":32,"y":30}],"version":1},"innocent":{"id":"innocent","name":"Smiling Face with Halo","keywords":["innocent","angel","heaven"],"skins":[{"unified":"1f607","native":"😇","x":32,"y":27}],"version":1},"smiling_face_with_3_hearts":{"id":"smiling_face_with_3_hearts","name":"Smiling Face with Hearts","keywords":["3","love","like","affection","valentines","infatuation","crush","adore"],"skins":[{"unified":"1f970","native":"🥰","x":43,"y":58}],"version":11},"heart_eyes":{"id":"heart_eyes","name":"Smiling Face with Heart-Eyes","keywords":["heart","eyes","love","like","affection","valentines","infatuation","crush"],"skins":[{"unified":"1f60d","native":"😍","x":32,"y":33}],"version":1},"star-struck":{"id":"star-struck","name":"Star-Struck","keywords":["star","struck","grinning","face","with","eyes","smile","starry"],"skins":[{"unified":"1f929","native":"🤩","x":40,"y":38}],"version":5},"kissing_heart":{"id":"kissing_heart","name":"Face Blowing a Kiss","emoticons":[":*",":-*"],"keywords":["kissing","heart","love","like","affection","valentines","infatuation"],"skins":[{"unified":"1f618","native":"😘","x":32,"y":44}],"version":1},"kissing":{"id":"kissing","name":"Kissing Face","keywords":["love","like","3","valentines","infatuation","kiss"],"skins":[{"unified":"1f617","native":"😗","x":32,"y":43}],"version":1},"relaxed":{"id":"relaxed","name":"Smiling Face","keywords":["relaxed","blush","massage","happiness"],"skins":[{"unified":"263a-fe0f","native":"☺️","x":57,"y":4}],"version":1},"kissing_closed_eyes":{"id":"kissing_closed_eyes","name":"Kissing Face with Closed Eyes","keywords":["love","like","affection","valentines","infatuation","kiss"],"skins":[{"unified":"1f61a","native":"😚","x":32,"y":46}],"version":1},"kissing_smiling_eyes":{"id":"kissing_smiling_eyes","name":"Kissing Face with Smiling Eyes","keywords":["affection","valentines","infatuation","kiss"],"skins":[{"unified":"1f619","native":"😙","x":32,"y":45}],"version":1},"smiling_face_with_tear":{"id":"smiling_face_with_tear","name":"Smiling Face with Tear","keywords":["sad","cry","pretend"],"skins":[{"unified":"1f972","native":"🥲","x":43,"y":60}],"version":13},"yum":{"id":"yum","name":"Face Savoring Food","keywords":["yum","happy","joy","tongue","smile","silly","yummy","nom","delicious","savouring"],"skins":[{"unified":"1f60b","native":"😋","x":32,"y":31}],"version":1},"stuck_out_tongue":{"id":"stuck_out_tongue","name":"Face with Tongue","emoticons":[":p",":-p",":P",":-P",":b",":-b"],"keywords":["stuck","out","prank","childish","playful","mischievous","smile"],"skins":[{"unified":"1f61b","native":"😛","x":32,"y":47}],"version":1},"stuck_out_tongue_winking_eye":{"id":"stuck_out_tongue_winking_eye","name":"Winking Face with Tongue","emoticons":[";p",";-p",";b",";-b",";P",";-P"],"keywords":["stuck","out","eye","prank","childish","playful","mischievous","smile","wink"],"skins":[{"unified":"1f61c","native":"😜","x":32,"y":48}],"version":1},"zany_face":{"id":"zany_face","name":"Zany Face","keywords":["grinning","with","one","large","and","small","eye","goofy","crazy"],"skins":[{"unified":"1f92a","native":"🤪","x":40,"y":39}],"version":5},"stuck_out_tongue_closed_eyes":{"id":"stuck_out_tongue_closed_eyes","name":"Squinting Face with Tongue","keywords":["stuck","out","closed","eyes","prank","playful","mischievous","smile"],"skins":[{"unified":"1f61d","native":"😝","x":32,"y":49}],"version":1},"money_mouth_face":{"id":"money_mouth_face","name":"Money-Mouth Face","keywords":["money","mouth","rich","dollar"],"skins":[{"unified":"1f911","native":"🤑","x":38,"y":59}],"version":1},"hugging_face":{"id":"hugging_face","name":"Hugging Face","keywords":["smile","hug"],"skins":[{"unified":"1f917","native":"🤗","x":39,"y":4}],"version":1},"face_with_hand_over_mouth":{"id":"face_with_hand_over_mouth","name":"Face with Hand over Mouth","keywords":["smiling","eyes","and","covering","whoops","shock","surprise"],"skins":[{"unified":"1f92d","native":"🤭","x":40,"y":42}],"version":5},"face_with_open_eyes_and_hand_over_mouth":{"id":"face_with_open_eyes_and_hand_over_mouth","name":"Face with Open Eyes and Hand over Mouth","keywords":["silence","secret","shock","surprise"],"skins":[{"unified":"1fae2","native":"🫢","x":55,"y":14}],"version":14},"face_with_peeking_eye":{"id":"face_with_peeking_eye","name":"Face with Peeking Eye","keywords":["scared","frightening","embarrassing"],"skins":[{"unified":"1fae3","native":"🫣","x":55,"y":15}],"version":14},"shushing_face":{"id":"shushing_face","name":"Shushing Face","keywords":["with","finger","covering","closed","lips","quiet","shhh"],"skins":[{"unified":"1f92b","native":"🤫","x":40,"y":40}],"version":5},"thinking_face":{"id":"thinking_face","name":"Thinking Face","keywords":["hmmm","think","consider"],"skins":[{"unified":"1f914","native":"🤔","x":39,"y":1}],"version":1},"saluting_face":{"id":"saluting_face","name":"Saluting Face","keywords":["respect","salute"],"skins":[{"unified":"1fae1","native":"🫡","x":55,"y":13}],"version":14},"zipper_mouth_face":{"id":"zipper_mouth_face","name":"Zipper-Mouth Face","keywords":["zipper","mouth","sealed","secret"],"skins":[{"unified":"1f910","native":"🤐","x":38,"y":58}],"version":1},"face_with_raised_eyebrow":{"id":"face_with_raised_eyebrow","name":"Face with Raised Eyebrow","keywords":["one","distrust","scepticism","disapproval","disbelief","surprise"],"skins":[{"unified":"1f928","native":"🤨","x":40,"y":37}],"version":5},"neutral_face":{"id":"neutral_face","name":"Neutral Face","emoticons":[":|",":-|"],"keywords":["indifference","meh",":",""],"skins":[{"unified":"1f610","native":"😐","x":32,"y":36}],"version":1},"expressionless":{"id":"expressionless","name":"Expressionless Face","emoticons":["-_-"],"keywords":["indifferent","-","","meh","deadpan"],"skins":[{"unified":"1f611","native":"😑","x":32,"y":37}],"version":1},"no_mouth":{"id":"no_mouth","name":"Face Without Mouth","keywords":["no","hellokitty"],"skins":[{"unified":"1f636","native":"😶","x":33,"y":16}],"version":1},"dotted_line_face":{"id":"dotted_line_face","name":"Dotted Line Face","keywords":["invisible","lonely","isolation","depression"],"skins":[{"unified":"1fae5","native":"🫥","x":55,"y":17}],"version":14},"face_in_clouds":{"id":"face_in_clouds","name":"Face in Clouds","keywords":["shower","steam","dream"],"skins":[{"unified":"1f636-200d-1f32b-fe0f","native":"😶‍🌫️","x":33,"y":15}],"version":13.1},"smirk":{"id":"smirk","name":"Smirking Face","keywords":["smirk","smile","mean","prank","smug","sarcasm"],"skins":[{"unified":"1f60f","native":"😏","x":32,"y":35}],"version":1},"unamused":{"id":"unamused","name":"Unamused Face","emoticons":[":("],"keywords":["indifference","bored","straight","serious","sarcasm","unimpressed","skeptical","dubious","side","eye"],"skins":[{"unified":"1f612","native":"😒","x":32,"y":38}],"version":1},"face_with_rolling_eyes":{"id":"face_with_rolling_eyes","name":"Face with Rolling Eyes","keywords":["eyeroll","frustrated"],"skins":[{"unified":"1f644","native":"🙄","x":33,"y":30}],"version":1},"grimacing":{"id":"grimacing","name":"Grimacing Face","keywords":["grimace","teeth"],"skins":[{"unified":"1f62c","native":"😬","x":33,"y":3}],"version":1},"face_exhaling":{"id":"face_exhaling","name":"Face Exhaling","keywords":["relieve","relief","tired","sigh"],"skins":[{"unified":"1f62e-200d-1f4a8","native":"😮‍💨","x":33,"y":5}],"version":13.1},"lying_face":{"id":"lying_face","name":"Lying Face","keywords":["lie","pinocchio"],"skins":[{"unified":"1f925","native":"🤥","x":40,"y":17}],"version":3},"relieved":{"id":"relieved","name":"Relieved Face","keywords":["relaxed","phew","massage","happiness"],"skins":[{"unified":"1f60c","native":"😌","x":32,"y":32}],"version":1},"pensive":{"id":"pensive","name":"Pensive Face","keywords":["sad","depressed","upset"],"skins":[{"unified":"1f614","native":"😔","x":32,"y":40}],"version":1},"sleepy":{"id":"sleepy","name":"Sleepy Face","keywords":["tired","rest","nap"],"skins":[{"unified":"1f62a","native":"😪","x":33,"y":1}],"version":1},"drooling_face":{"id":"drooling_face","name":"Drooling Face","keywords":[],"skins":[{"unified":"1f924","native":"🤤","x":40,"y":16}],"version":3},"sleeping":{"id":"sleeping","name":"Sleeping Face","keywords":["tired","sleepy","night","zzz"],"skins":[{"unified":"1f634","native":"😴","x":33,"y":12}],"version":1},"mask":{"id":"mask","name":"Face with Medical Mask","keywords":["sick","ill","disease"],"skins":[{"unified":"1f637","native":"😷","x":33,"y":17}],"version":1},"face_with_thermometer":{"id":"face_with_thermometer","name":"Face with Thermometer","keywords":["sick","temperature","cold","fever"],"skins":[{"unified":"1f912","native":"🤒","x":38,"y":60}],"version":1},"face_with_head_bandage":{"id":"face_with_head_bandage","name":"Face with Head-Bandage","keywords":["head","bandage","injured","clumsy","hurt"],"skins":[{"unified":"1f915","native":"🤕","x":39,"y":2}],"version":1},"nauseated_face":{"id":"nauseated_face","name":"Nauseated Face","keywords":["vomit","gross","green","sick","throw","up","ill"],"skins":[{"unified":"1f922","native":"🤢","x":40,"y":14}],"version":3},"face_vomiting":{"id":"face_vomiting","name":"Face Vomiting","keywords":["with","open","mouth","sick"],"skins":[{"unified":"1f92e","native":"🤮","x":40,"y":43}],"version":5},"sneezing_face":{"id":"sneezing_face","name":"Sneezing Face","keywords":["gesundheit","sneeze","sick","allergy"],"skins":[{"unified":"1f927","native":"🤧","x":40,"y":36}],"version":3},"hot_face":{"id":"hot_face","name":"Hot Face","keywords":["feverish","heat","red","sweating"],"skins":[{"unified":"1f975","native":"🥵","x":44,"y":2}],"version":11},"cold_face":{"id":"cold_face","name":"Cold Face","keywords":["blue","freezing","frozen","frostbite","icicles"],"skins":[{"unified":"1f976","native":"🥶","x":44,"y":3}],"version":11},"woozy_face":{"id":"woozy_face","name":"Woozy Face","keywords":["dizzy","intoxicated","tipsy","wavy"],"skins":[{"unified":"1f974","native":"🥴","x":44,"y":1}],"version":11},"dizzy_face":{"id":"dizzy_face","name":"Dizzy Face","keywords":["spent","unconscious","xox"],"skins":[{"unified":"1f635","native":"😵","x":33,"y":14}],"version":1},"face_with_spiral_eyes":{"id":"face_with_spiral_eyes","name":"Face with Spiral Eyes","keywords":["sick","ill","confused","nauseous","nausea"],"skins":[{"unified":"1f635-200d-1f4ab","native":"😵‍💫","x":33,"y":13}],"version":13.1},"exploding_head":{"id":"exploding_head","name":"Exploding Head","keywords":["shocked","face","with","mind","blown"],"skins":[{"unified":"1f92f","native":"🤯","x":40,"y":44}],"version":5},"face_with_cowboy_hat":{"id":"face_with_cowboy_hat","name":"Cowboy Hat Face","keywords":["with","cowgirl"],"skins":[{"unified":"1f920","native":"🤠","x":40,"y":12}],"version":3},"partying_face":{"id":"partying_face","name":"Partying Face","keywords":["celebration","woohoo"],"skins":[{"unified":"1f973","native":"🥳","x":44,"y":0}],"version":11},"disguised_face":{"id":"disguised_face","name":"Disguised Face","keywords":["pretent","brows","glasses","moustache"],"skins":[{"unified":"1f978","native":"🥸","x":44,"y":10}],"version":13},"sunglasses":{"id":"sunglasses","name":"Smiling Face with Sunglasses","emoticons":["8)"],"keywords":["cool","smile","summer","beach","sunglass"],"skins":[{"unified":"1f60e","native":"😎","x":32,"y":34}],"version":1},"nerd_face":{"id":"nerd_face","name":"Nerd Face","keywords":["nerdy","geek","dork"],"skins":[{"unified":"1f913","native":"🤓","x":39,"y":0}],"version":1},"face_with_monocle":{"id":"face_with_monocle","name":"Face with Monocle","keywords":["stuffy","wealthy"],"skins":[{"unified":"1f9d0","native":"🧐","x":47,"y":11}],"version":5},"confused":{"id":"confused","name":"Confused Face","emoticons":[":\\",":-\\",":/",":-/"],"keywords":["indifference","huh","weird","hmmm",":/"],"skins":[{"unified":"1f615","native":"😕","x":32,"y":41}],"version":1},"face_with_diagonal_mouth":{"id":"face_with_diagonal_mouth","name":"Face with Diagonal Mouth","keywords":["skeptic","confuse","frustrated","indifferent"],"skins":[{"unified":"1fae4","native":"🫤","x":55,"y":16}],"version":14},"worried":{"id":"worried","name":"Worried Face","keywords":["concern","nervous",":("],"skins":[{"unified":"1f61f","native":"😟","x":32,"y":51}],"version":1},"slightly_frowning_face":{"id":"slightly_frowning_face","name":"Slightly Frowning Face","keywords":["disappointed","sad","upset"],"skins":[{"unified":"1f641","native":"🙁","x":33,"y":27}],"version":1},"white_frowning_face":{"id":"white_frowning_face","name":"Frowning Face","keywords":["white","sad","upset","frown"],"skins":[{"unified":"2639-fe0f","native":"☹️","x":57,"y":3}],"version":1},"open_mouth":{"id":"open_mouth","name":"Face with Open Mouth","emoticons":[":o",":-o",":O",":-O"],"keywords":["surprise","impressed","wow","whoa",":O"],"skins":[{"unified":"1f62e","native":"😮","x":33,"y":6}],"version":1},"hushed":{"id":"hushed","name":"Hushed Face","keywords":["woo","shh"],"skins":[{"unified":"1f62f","native":"😯","x":33,"y":7}],"version":1},"astonished":{"id":"astonished","name":"Astonished Face","keywords":["xox","surprised","poisoned"],"skins":[{"unified":"1f632","native":"😲","x":33,"y":10}],"version":1},"flushed":{"id":"flushed","name":"Flushed Face","keywords":["blush","shy","flattered"],"skins":[{"unified":"1f633","native":"😳","x":33,"y":11}],"version":1},"pleading_face":{"id":"pleading_face","name":"Pleading Face","keywords":["begging","mercy"],"skins":[{"unified":"1f97a","native":"🥺","x":44,"y":12}],"version":11},"face_holding_back_tears":{"id":"face_holding_back_tears","name":"Face Holding Back Tears","keywords":["touched","gratitude"],"skins":[{"unified":"1f979","native":"🥹","x":44,"y":11}],"version":14},"frowning":{"id":"frowning","name":"Frowning Face with Open Mouth","keywords":["aw","what"],"skins":[{"unified":"1f626","native":"😦","x":32,"y":58}],"version":1},"anguished":{"id":"anguished","name":"Anguished Face","emoticons":["D:"],"keywords":["stunned","nervous"],"skins":[{"unified":"1f627","native":"😧","x":32,"y":59}],"version":1},"fearful":{"id":"fearful","name":"Fearful Face","keywords":["scared","terrified","nervous","oops","huh"],"skins":[{"unified":"1f628","native":"😨","x":32,"y":60}],"version":1},"cold_sweat":{"id":"cold_sweat","name":"Anxious Face with Sweat","keywords":["cold","nervous"],"skins":[{"unified":"1f630","native":"😰","x":33,"y":8}],"version":1},"disappointed_relieved":{"id":"disappointed_relieved","name":"Sad but Relieved Face","keywords":["disappointed","phew","sweat","nervous"],"skins":[{"unified":"1f625","native":"😥","x":32,"y":57}],"version":1},"cry":{"id":"cry","name":"Crying Face","emoticons":[":'("],"keywords":["cry","tears","sad","depressed","upset",":'("],"skins":[{"unified":"1f622","native":"😢","x":32,"y":54}],"version":1},"sob":{"id":"sob","name":"Loudly Crying Face","emoticons":[":'("],"keywords":["sob","cry","tears","sad","upset","depressed"],"skins":[{"unified":"1f62d","native":"😭","x":33,"y":4}],"version":1},"scream":{"id":"scream","name":"Face Screaming in Fear","keywords":["scream","munch","scared","omg"],"skins":[{"unified":"1f631","native":"😱","x":33,"y":9}],"version":1},"confounded":{"id":"confounded","name":"Confounded Face","keywords":["confused","sick","unwell","oops",":S"],"skins":[{"unified":"1f616","native":"😖","x":32,"y":42}],"version":1},"persevere":{"id":"persevere","name":"Persevering Face","keywords":["persevere","sick","no","upset","oops"],"skins":[{"unified":"1f623","native":"😣","x":32,"y":55}],"version":1},"disappointed":{"id":"disappointed","name":"Disappointed Face","emoticons":["):",":(",":-("],"keywords":["sad","upset","depressed",":("],"skins":[{"unified":"1f61e","native":"😞","x":32,"y":50}],"version":1},"sweat":{"id":"sweat","name":"Face with Cold Sweat","keywords":["downcast","hot","sad","tired","exercise"],"skins":[{"unified":"1f613","native":"😓","x":32,"y":39}],"version":1},"weary":{"id":"weary","name":"Weary Face","keywords":["tired","sleepy","sad","frustrated","upset"],"skins":[{"unified":"1f629","native":"😩","x":33,"y":0}],"version":1},"tired_face":{"id":"tired_face","name":"Tired Face","keywords":["sick","whine","upset","frustrated"],"skins":[{"unified":"1f62b","native":"😫","x":33,"y":2}],"version":1},"yawning_face":{"id":"yawning_face","name":"Yawning Face","keywords":["tired","sleepy"],"skins":[{"unified":"1f971","native":"🥱","x":43,"y":59}],"version":12},"triumph":{"id":"triumph","name":"Face with Look of Triumph","keywords":["steam","from","nose","gas","phew","proud","pride"],"skins":[{"unified":"1f624","native":"😤","x":32,"y":56}],"version":1},"rage":{"id":"rage","name":"Pouting Face","keywords":["rage","angry","mad","hate","despise"],"skins":[{"unified":"1f621","native":"😡","x":32,"y":53}],"version":1},"angry":{"id":"angry","name":"Angry Face","emoticons":[">:(",">:-("],"keywords":["mad","annoyed","frustrated"],"skins":[{"unified":"1f620","native":"😠","x":32,"y":52}],"version":1},"face_with_symbols_on_mouth":{"id":"face_with_symbols_on_mouth","name":"Face with Symbols on Mouth","keywords":["serious","covering","swearing","cursing","cussing","profanity","expletive"],"skins":[{"unified":"1f92c","native":"🤬","x":40,"y":41}],"version":5},"smiling_imp":{"id":"smiling_imp","name":"Smiling Face with Horns","keywords":["imp","devil"],"skins":[{"unified":"1f608","native":"😈","x":32,"y":28}],"version":1},"imp":{"id":"imp","name":"Imp","keywords":["angry","face","with","horns","devil"],"skins":[{"unified":"1f47f","native":"👿","x":25,"y":8}],"version":1},"skull":{"id":"skull","name":"Skull","keywords":["dead","skeleton","creepy","death"],"skins":[{"unified":"1f480","native":"💀","x":25,"y":9}],"version":1},"skull_and_crossbones":{"id":"skull_and_crossbones","name":"Skull and Crossbones","keywords":["poison","danger","deadly","scary","death","pirate","evil"],"skins":[{"unified":"2620-fe0f","native":"☠️","x":56,"y":56}],"version":1},"hankey":{"id":"hankey","name":"Pile of Poo","keywords":["hankey","poop","shit","shitface","fail","turd"],"skins":[{"unified":"1f4a9","native":"💩","x":27,"y":56}],"version":1},"clown_face":{"id":"clown_face","name":"Clown Face","keywords":[],"skins":[{"unified":"1f921","native":"🤡","x":40,"y":13}],"version":3},"japanese_ogre":{"id":"japanese_ogre","name":"Ogre","keywords":["japanese","monster","red","mask","halloween","scary","creepy","devil","demon"],"skins":[{"unified":"1f479","native":"👹","x":24,"y":58}],"version":1},"japanese_goblin":{"id":"japanese_goblin","name":"Goblin","keywords":["japanese","red","evil","mask","monster","scary","creepy"],"skins":[{"unified":"1f47a","native":"👺","x":24,"y":59}],"version":1},"ghost":{"id":"ghost","name":"Ghost","keywords":["halloween","spooky","scary"],"skins":[{"unified":"1f47b","native":"👻","x":24,"y":60}],"version":1},"alien":{"id":"alien","name":"Alien","keywords":["UFO","paul","weird","outer","space"],"skins":[{"unified":"1f47d","native":"👽","x":25,"y":6}],"version":1},"space_invader":{"id":"space_invader","name":"Alien Monster","keywords":["space","invader","game","arcade","play"],"skins":[{"unified":"1f47e","native":"👾","x":25,"y":7}],"version":1},"robot_face":{"id":"robot_face","name":"Robot","keywords":["face","computer","machine","bot"],"skins":[{"unified":"1f916","native":"🤖","x":39,"y":3}],"version":1},"smiley_cat":{"id":"smiley_cat","name":"Grinning Cat","keywords":["smiley","animal","cats","happy","smile"],"skins":[{"unified":"1f63a","native":"😺","x":33,"y":20}],"version":1},"smile_cat":{"id":"smile_cat","name":"Grinning Cat with Smiling Eyes","keywords":["smile","animal","cats"],"skins":[{"unified":"1f638","native":"😸","x":33,"y":18}],"version":1},"joy_cat":{"id":"joy_cat","name":"Cat with Tears of Joy","keywords":["animal","cats","haha","happy"],"skins":[{"unified":"1f639","native":"😹","x":33,"y":19}],"version":1},"heart_eyes_cat":{"id":"heart_eyes_cat","name":"Smiling Cat with Heart-Eyes","keywords":["heart","eyes","animal","love","like","affection","cats","valentines"],"skins":[{"unified":"1f63b","native":"😻","x":33,"y":21}],"version":1},"smirk_cat":{"id":"smirk_cat","name":"Cat with Wry Smile","keywords":["smirk","animal","cats"],"skins":[{"unified":"1f63c","native":"😼","x":33,"y":22}],"version":1},"kissing_cat":{"id":"kissing_cat","name":"Kissing Cat","keywords":["animal","cats","kiss"],"skins":[{"unified":"1f63d","native":"😽","x":33,"y":23}],"version":1},"scream_cat":{"id":"scream_cat","name":"Weary Cat","keywords":["scream","animal","cats","munch","scared"],"skins":[{"unified":"1f640","native":"🙀","x":33,"y":26}],"version":1},"crying_cat_face":{"id":"crying_cat_face","name":"Crying Cat","keywords":["face","animal","tears","weep","sad","cats","upset","cry"],"skins":[{"unified":"1f63f","native":"😿","x":33,"y":25}],"version":1},"pouting_cat":{"id":"pouting_cat","name":"Pouting Cat","keywords":["animal","cats"],"skins":[{"unified":"1f63e","native":"😾","x":33,"y":24}],"version":1},"see_no_evil":{"id":"see_no_evil","name":"See-No-Evil Monkey","keywords":["see","no","evil","animal","nature","haha"],"skins":[{"unified":"1f648","native":"🙈","x":34,"y":24}],"version":1},"hear_no_evil":{"id":"hear_no_evil","name":"Hear-No-Evil Monkey","keywords":["hear","no","evil","animal","nature"],"skins":[{"unified":"1f649","native":"🙉","x":34,"y":25}],"version":1},"speak_no_evil":{"id":"speak_no_evil","name":"Speak-No-Evil Monkey","keywords":["speak","no","evil","animal","nature","omg"],"skins":[{"unified":"1f64a","native":"🙊","x":34,"y":26}],"version":1},"kiss":{"id":"kiss","name":"Kiss Mark","keywords":["face","lips","love","like","affection","valentines"],"skins":[{"unified":"1f48b","native":"💋","x":26,"y":37}],"version":1},"love_letter":{"id":"love_letter","name":"Love Letter","keywords":["email","like","affection","envelope","valentines"],"skins":[{"unified":"1f48c","native":"💌","x":26,"y":38}],"version":1},"cupid":{"id":"cupid","name":"Heart with Arrow","keywords":["cupid","love","like","affection","valentines"],"skins":[{"unified":"1f498","native":"💘","x":27,"y":39}],"version":1},"gift_heart":{"id":"gift_heart","name":"Heart with Ribbon","keywords":["gift","love","valentines"],"skins":[{"unified":"1f49d","native":"💝","x":27,"y":44}],"version":1},"sparkling_heart":{"id":"sparkling_heart","name":"Sparkling Heart","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f496","native":"💖","x":27,"y":37}],"version":1},"heartpulse":{"id":"heartpulse","name":"Growing Heart","keywords":["heartpulse","like","love","affection","valentines","pink"],"skins":[{"unified":"1f497","native":"💗","x":27,"y":38}],"version":1},"heartbeat":{"id":"heartbeat","name":"Beating Heart","keywords":["heartbeat","love","like","affection","valentines","pink"],"skins":[{"unified":"1f493","native":"💓","x":27,"y":34}],"version":1},"revolving_hearts":{"id":"revolving_hearts","name":"Revolving Hearts","keywords":["love","like","affection","valentines"],"skins":[{"unified":"1f49e","native":"💞","x":27,"y":45}],"version":1},"two_hearts":{"id":"two_hearts","name":"Two Hearts","keywords":["love","like","affection","valentines","heart"],"skins":[{"unified":"1f495","native":"💕","x":27,"y":36}],"version":1},"heart_decoration":{"id":"heart_decoration","name":"Heart Decoration","keywords":["purple","square","love","like"],"skins":[{"unified":"1f49f","native":"💟","x":27,"y":46}],"version":1},"heavy_heart_exclamation_mark_ornament":{"id":"heavy_heart_exclamation_mark_ornament","name":"Heart Exclamation","keywords":["heavy","mark","ornament","decoration","love"],"skins":[{"unified":"2763-fe0f","native":"❣️","x":59,"y":7}],"version":1},"broken_heart":{"id":"broken_heart","name":"Broken Heart","emoticons":[". Click to edit", "blockEmbedEmpty": "%s embed block is empty. Click to edit.", "blockEmbedSource": "Source", + "blockEmbedOffline": "You are not connected to the Internet", "blockTableOfContentsAdd": "Add headings to create a table of contents", @@ -938,6 +940,7 @@ "popupMembershipWriteToAnyteam": "Write to Anyteam", "popupMembershipManageOnMobilePlatform": "Manage available on Mobile platform", "popupMembershipPaidOnOtherPlatform": "You've already acquired Membership plan on another platform, please cancel Membership first.", + "popupMembershipPaidByCrypto": "To upgrade your membership using cryptocurrency, please contact Anytype.", "popupMembershipWhatsIncluded": "What’s included", @@ -1068,7 +1071,8 @@ "popupExportFormat": "Export format", "popupExportOk": "Export", - "popupHelpOlderReleases": "Older releases", + "popupHelpPrevious": "Previous", + "popupHelpNext": "Next", "popupIndexComponentNotFound": "Component %s not found", @@ -1514,6 +1518,8 @@ "menuSyncStatusNetworkMessageE2EE": "End-to-end encrypted", "menuSyncStatusP2PNoDevicesConnected": "No devices connected", + "menuSyncStatusP2PDevicesConnected": "%s %s connected", + "menuSyncStatusP2PRestricted": "Restricted. Check device settings.", "menuSyncStatusInfoNetworkTitle": "Anytype network", "menuSyncStatusInfoNetworkMessageSynced": "End-to-end encrypted", @@ -1523,9 +1529,9 @@ "menuSyncStatusInfoNetworkMessageError2": "Incompatible version", "menuSyncStatusInfoNetworkMessageError3": "No access to the space", "menuSyncStatusInfoNetworkMessageErrorUpdateApp": "Update the app", - "menuSyncStatusInfoNetworkMessageErrorSeeMembership": "See membership plans", + "menuSyncStatusInfoNetworkMessageErrorAddMoreStorage": "Add more storage", - "menuSyncStatusInfoNetworkMessageOffline": "No internet connection", + "menuSyncStatusInfoNetworkMessageOffline": "No connection", "menuSyncStatusInfoSelfTitle": "Self Host", "menuSyncStatusInfoSelfMessageSynced": "Synced", @@ -1675,15 +1681,15 @@ "survey5Cancel": "No thanks", "widget0Name": "Link", - "widget0Description": "Compact version of the Object", + "widget0Description": "Compact widget view", "widget1Name": "Tree", - "widget1Description": "Hierarchical structure of Objects", + "widget1Description": "Widget with a hierarchical structure", "widget2Name": "List", - "widget2Description": "Widget with a list view of Set Object", + "widget2Description": "Widget with a list view", "widget3Name": "Compact list", - "widget3Description": "Widget with a list view of Set Object", + "widget3Description": "Widget with a compact list view", "widget4Name": "View", - "widget4Description": "Widget with a view of the Set Object", + "widget4Description": "Widget with a Set or Collection layout", "widgetFavorite": "Favorites", "widgetRecent": "Recently edited", diff --git a/src/json/theme.ts b/src/json/theme.ts index e106882c25..103022dc54 100644 --- a/src/json/theme.ts +++ b/src/json/theme.ts @@ -1,87 +1,87 @@ export default { - "": { + '': { - "graph": { - "bg": "#fff", - "link": "#dfddd0", - "arrow": "#b6b6b6", - "node": "#b6b6b6", - "text": "#b6b6b6", - "highlight": "#ffb522", - "selected": "#2aa7ee", - "iconBg": "#000" + graph: { + bg: '#fff', + link: '#dfddd0', + arrow: '#b6b6b6', + node: '#b6b6b6', + text: '#b6b6b6', + highlight: '#ffb522', + selected: '#2aa7ee', + iconBg: '#000' }, - "mermaid": { - "fontFamily": "Helvetica, Arial, sans-serif", - "fontSize": "14px" + mermaid: { + fontFamily: 'Helvetica, Arial, sans-serif', + fontSize: '14px' }, - "qr": { - "foreground": "#000", - "bg": "#fff" + qr: { + foreground: '#000', + bg: '#fff' }, - "icon": { - "text": "#fff", - "bg": { - "grey": "#bfbfbf", - "black": "#252525", - "brown": "#b6b6b6", - "orange": "#ffb522", - "red": "#f55522", - "purple": "#ab50cc", - "blue": "#3e58eb", - "teal": "#0fc8ba", - "lime": "#5dd400", - "green": "#57c600" + icon: { + text: '#fff', + bg: { + grey: '#bfbfbf', + black: '#252525', + brown: '#b6b6b6', + orange: '#ffb522', + red: '#f55522', + purple: '#ab50cc', + blue: '#3e58eb', + teal: '#0fc8ba', + lime: '#5dd400', + green: '#57c600' } } }, - "dark": { + dark: { - "graph": { - "bg": "#171717", - "link": "#3f3f3f", - "arrow": "#555", - "node": "#9a9a9a", - "text": "#9a9a9a", - "highlight": "#ffb522", - "selected": "#2aa7ee", - "iconBg": "#252525" + graph: { + bg: '#171717', + link: '#3f3f3f', + arrow: '#555', + node: '#9a9a9a', + text: '#9a9a9a', + highlight: '#ffb522', + selected: '#2aa7ee', + iconBg: '#252525' }, - "mermaid": { - "fontFamily": "Helvetica, Arial, sans-serif", - "fontSize": "14px", - "primaryColor": "#bb2528", - "primaryTextColor": "#fff", - "primaryBorderColor": "#7c0000", - "lineColor": "#F8b229", - "secondaryColor": "#006100", - "tertiaryColor": "#fff" + mermaid: { + fontFamily: 'Helvetica, Arial, sans-serif', + fontSize: '14px', + primaryColor: '#bb2528', + primaryTextColor: '#fff', + primaryBorderColor: '#7c0000', + lineColor: '#F8b229', + secondaryColor: '#006100', + tertiaryColor: '#fff' }, - "qr": { - "foreground": "#000", - "bg": "#fff" + qr: { + foreground: '#000', + bg: '#fff' }, - "icon": { - "text": "#fff", - "bg": { - "grey": "#606060", - "black": "#252525", - "brown": "#b6b6b6", - "orange": "#ffb522", - "red": "#f55522", - "purple": "#ab50cc", - "blue": "#3e58eb", - "teal": "#0fc8ba", - "lime": "#5dd400", - "green": "#57c600" + icon: { + text: '#fff', + bg: { + grey: '#606060', + black: '#252525', + brown: '#b6b6b6', + orange: '#ffb522', + red: '#f55522', + purple: '#ab50cc', + blue: '#3e58eb', + teal: '#0fc8ba', + lime: '#5dd400', + green: '#57c600' } } diff --git a/src/scss/_mixins.scss b/src/scss/_mixins.scss index e11cccf9f4..a7fb9e40d2 100644 --- a/src/scss/_mixins.scss +++ b/src/scss/_mixins.scss @@ -3,8 +3,7 @@ $transitionCommon: 0.1s $easeInQuint; $transitionAllCommon: all $transitionCommon; $historyPanelWidth: 336px; -$vaultWidthCollapsed: 76px; -$vaultWidthExpanded: 240px; +$vaultWidthCollapsed: 72px; @mixin text-overflow { overflow: hidden; text-overflow: ellipsis; } @mixin text-overflow-nw { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } diff --git a/src/scss/_vars.scss b/src/scss/_vars.scss index 87fc4fb532..9bb7cb8246 100644 --- a/src/scss/_vars.scss +++ b/src/scss/_vars.scss @@ -12,6 +12,7 @@ --color-shape-secondary: #ebebeb; --color-shape-tertiary: #f2f2f2; + --color-shape-highlight-dark: rgba(79, 79, 79, 0.16); --color-shape-highlight-medium: rgba(79, 79, 79, 0.08); --color-shape-highlight-light: rgba(79, 79, 79, 0.04); --color-shape-highlight-light-solid: #f8f8f8; @@ -99,4 +100,12 @@ --font-size-description: 18px; --line-height-description: 26px; --letter-spacing-description: -0.28px; + + /* Menu */ + --menu-width-common: 224px; + --menu-width-icon: 256px; + --menu-width-value: 288px; + --menu-width-set: 360px; + --menu-width-large: 408px; + --menu-width-add: 480px; } \ No newline at end of file diff --git a/src/scss/block/common.scss b/src/scss/block/common.scss index 1f63873806..9bbe7ca044 100644 --- a/src/scss/block/common.scss +++ b/src/scss/block/common.scss @@ -10,7 +10,7 @@ } .block.diffNone { - .wrapMenu { + > .wrapMenu { .iconObject { display: block; } } } diff --git a/src/scss/block/embed.scss b/src/scss/block/embed.scss index e1ba24f182..6c1da421d5 100644 --- a/src/scss/block/embed.scss +++ b/src/scss/block/embed.scss @@ -48,7 +48,10 @@ .dimmer { position: absolute; z-index: 1; width: 100%; height: 100%; left: 0px; top: 0px; display: none; } .preview { display: none; position: relative; aspect-ratio: 16/9; background-color: var(--color-shape-highlight-light); border-radius: 4px; - background-size: 40px; background-repeat: no-repeat; background-position: center; background-image: url('~img/icon/block/embed/default.svg'); + background-size: 60px; background-repeat: no-repeat; background-position: center; background-image: url('~img/icon/block/embed/default.svg'); + } + .preview { + .label { color: #d4d4d4; position: absolute; bottom: 12px; left: 0px; width: 100%; text-align: center; @include text-small; } } .preview.isLatex { background-image: url('~img/icon/block/embed/latex.svg'); } .preview.isMermaid { background-image: url('~img/icon/block/embed/mermaid.svg'); } diff --git a/src/scss/block/link.scss b/src/scss/block/link.scss index 69a3922a67..a0e48499bf 100644 --- a/src/scss/block/link.scss +++ b/src/scss/block/link.scss @@ -97,9 +97,7 @@ .block.blockLink.text { .linkCard { - .side.left { - line-height: 24px; vertical-align: top; gap: 0px 6px; flex-direction: row; align-items: center; width: 100%; - } + .side.left { line-height: 24px; vertical-align: top; gap: 0px 6px; flex-direction: row; align-items: center; width: 100%; } .side.right { display: none !important; } .relationItem { display: flex; align-items: center; gap: 0px 6px; } @@ -161,7 +159,7 @@ } .block.blockLink.card:hover { - .linkCard.card { + .linkCard { .side.left, .side.right { border-color: var(--color-shape-primary); } } } diff --git a/src/scss/block/text.scss b/src/scss/block/text.scss index 075c7109d2..20d71da5d6 100644 --- a/src/scss/block/text.scss +++ b/src/scss/block/text.scss @@ -66,6 +66,24 @@ .marker { .icon { display: inline-block; } } + + .marker.bullet { display: flex; align-items: center; justify-content: center; } + .marker.bullet { + .markerInner { -webkit-print-color-adjust: exact; width: 6px; height: 6px; border-radius: 50%; background: var(--color-text-primary); display: block; } + + .markerInner.textColor-default { background-color: var(--color-text-primary) !important; } + .markerInner.textColor-black { background-color: var(--color-text-primary) !important; } + .markerInner.textColor-grey { background-color: var(--color-control-active) !important; } + .markerInner.textColor-yellow { background-color: var(--color-yellow) !important; } + .markerInner.textColor-orange { background-color: var(--color-orange) !important; } + .markerInner.textColor-red { background-color: var(--color-red) !important; } + .markerInner.textColor-pink { background-color: var(--color-pink) !important; } + .markerInner.textColor-purple { background-color: var(--color-purple) !important; } + .markerInner.textColor-blue { background-color: var(--color-blue) !important; } + .markerInner.textColor-ice { background-color: var(--color-ice) !important; } + .markerInner.textColor-teal { background-color: var(--color-teal) !important; } + .markerInner.textColor-lime { background-color: var(--color-lime) !important; } + } .marker.number { vertical-align: baseline; min-width: 24px; width: auto; word-break: normal; } .marker.number > span { min-width: 100%; display: inline-block; text-align: center; } diff --git a/src/scss/common.scss b/src/scss/common.scss index 9c4f96eb2d..6a39b5dd82 100644 --- a/src/scss/common.scss +++ b/src/scss/common.scss @@ -67,7 +67,7 @@ html.platformLinux { } html.platformWindows, html.platformLinux { - ::-webkit-scrollbar { width: 10px; height: 6px; } + ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.5); border-radius: 6px; } ::-webkit-scrollbar-corner { background-color: transparent; } ::-webkit-scrollbar-button { display: none; } diff --git a/src/scss/component/header.scss b/src/scss/component/header.scss index 30e8cb4a75..18d1a65d3b 100644 --- a/src/scss/component/header.scss +++ b/src/scss/component/header.scss @@ -49,7 +49,9 @@ .icon { -webkit-app-region: no-drag; flex-shrink: 0; } .icon { width: 28px; height: 28px; background-size: 20px; border-radius: 6px; } - .icon:hover, .icon.hover { background-color: var(--color-shape-highlight-medium); } + .side.right { + .icon:hover, .icon.hover { background-color: var(--color-shape-highlight-medium); } + } .icon.more { background-image: url('~img/icon/header/more.svg'); } .icon.settings { background-image: url('~img/icon/header/settings.svg'); } @@ -145,4 +147,4 @@ html:not(.bodyIndexIndex):not(.bodyAuthSelect) { .icon.expand { display: inline-block; } } } -} \ No newline at end of file +} diff --git a/src/scss/component/navigation.scss b/src/scss/component/navigation.scss index 2d34d742c8..109a77b634 100644 --- a/src/scss/component/navigation.scss +++ b/src/scss/component/navigation.scss @@ -1,8 +1,8 @@ @import "~scss/_mixins"; .navigationPanel { - background: rgba(134, 134, 134, 0.7); backdrop-filter: blur(32px); border-radius: 16px; position: fixed; left: 0px; padding: 8px 16px; bottom: 24px; - height: 48px; z-index: 105; transition-property: opacity, visibility; transition-duration: 0.16s; transition-timing-function: $easeInQuint; + background: rgba(134, 134, 134, 0.7); backdrop-filter: blur(32px); border-radius: 16px; position: fixed; left: 0px; padding: 12px 16px; bottom: 24px; + z-index: 105; transition-property: opacity, visibility; transition-duration: 0.16s; transition-timing-function: $easeInQuint; } .navigationPanel.hide { visibility: hidden; z-index: 0; opacity: 0; } .navigationPanel.hide * { pointer-events: none; } @@ -13,7 +13,7 @@ .inner { display: flex; flex-direction: row; gap: 0px 20px; align-items: center; justify-content: center; position: relative; z-index: 1; } .iconWrap { - width: 32px; height: 32px; border-radius: 4px; display: flex; align-items: center; justify-content: center; + width: 28px; height: 28px; border-radius: 4px; display: flex; align-items: center; justify-content: center; position: relative; transition: $transitionAllCommon; } .iconWrap:not(.disabled):hover, .iconWrap.active { background-color: rgba(37, 37, 37, 0.15); } diff --git a/src/scss/component/share.scss b/src/scss/component/share.scss index 1622ecfa87..1500035df1 100644 --- a/src/scss/component/share.scss +++ b/src/scss/component/share.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .shareTooltip { - display: flex; position: fixed; z-index: 20; right: 14px; bottom: 54px; width: 280px; height: 64px; border-radius: 8px; align-items: center; gap: 0px 12px; + display: flex; position: fixed; z-index: 20; right: 14px; bottom: 54px; width: var(--menu-width-value); height: 64px; border-radius: 8px; align-items: center; gap: 0px 12px; padding: 10px 12px 10px 16px; box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.20); background-color: var(--color-bg-primary); background-image: linear-gradient(90deg, #FFD3D3 0%, #FFF4CC 20.71%, rgba(255, 244, 204, 0.00) 41.52%); } diff --git a/src/scss/component/sidebar.scss b/src/scss/component/sidebar.scss index 76fe936c35..5c99824a79 100644 --- a/src/scss/component/sidebar.scss +++ b/src/scss/component/sidebar.scss @@ -9,7 +9,7 @@ .sidebarAnimation { transition: width 0.2s ease-in-out; } #sidebarToggle { - width: 28px; height: 28px; background-size: 20px; border-radius: 6px; position: fixed; left: 92px; top: 12px; + width: 28px; height: 28px; background-size: 20px; border-radius: 6px; position: fixed; left: 88px; top: 12px; background-image: url('~img/icon/widget/toggle0.svg'); z-index: 22; -webkit-app-region: no-drag; } #sidebarToggle:hover { background-color: var(--color-shape-highlight-medium); background-image: url('~img/icon/widget/toggle1.svg'); } @@ -22,25 +22,24 @@ .sidebar.anim { transition-property: left, top, width, box-shadow, transform; transition-duration: 0.2s; transition-timing-function: ease-in-out; } .sidebar { - > .coverWrap { position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; overflow: hidden; } - > .coverWrap { - .iconObject { height: 100%; aspect-ratio: 1; opacity: 0.2; filter: blur(300px); width: 200%; transform: translateX(-50%); } - } - > .inner { width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden; position: relative; z-index: 1; } > .inner { > .head { - display: flex; flex-direction: row; align-items: center; justify-content: flex-start; padding: 0px 16px; height: 52px; - -webkit-app-region: no-drag; + display: flex; flex-direction: row; align-items: center; justify-content: flex-start; padding: 0px 12px; height: 52px; + gap: 0px 8px; overflow: hidden; } > .head { - .icon { width: 28px; height: 28px; background-size: 20px; border-radius: 6px; cursor: default; } + .status { + @include text-small; font-weight: 500; @include text-overflow-nw; text-align: center; color: var(--color-text-secondary); flex-grow: 1; + } + + .icon { width: 28px; height: 28px; background-size: 20px; border-radius: 6px; cursor: default; -webkit-app-region: no-drag; } .icon:hover { background-color: var(--color-shape-highlight-medium); } .icon.toggle { background-image: url('~img/icon/widget/toggle0.svg'); } .icon.toggle:hover { background-image: url('~img/icon/widget/toggle1.svg'); } } - > .body { height: calc(100% - 52px); padding: 0px 12px 12px 12px; position: relative; flex-grow: 1; overflow: auto; overscroll-behavior: none; min-width: 240px; } + > .body { height: calc(100% - 52px); padding: 0px 12px 12px 12px; position: relative; flex-grow: 1; overflow: auto; overscroll-behavior: none; } } .resize-h { width: 10px; height: 100%; position: absolute; top: 0px; right: -5px; cursor: col-resize; z-index: 2; } diff --git a/src/scss/component/sync.scss b/src/scss/component/sync.scss index a205cb56b5..3ed9efc5fd 100644 --- a/src/scss/component/sync.scss +++ b/src/scss/component/sync.scss @@ -13,11 +13,10 @@ .sync:hover, .sync.hover { background: var(--color-shape-highlight-medium); } .sync { - .icon { width: 8px; height: 8px; margin-left: 10px; background-image: url('~img/icon/syncStatus/offline.svg'); } - .icon:hover { background-color: transparent; } - .icon.error { background-image: url('~img/icon/syncStatus/error.svg'); display: block; } + .icon { width: 8px; height: 8px; border-radius: 50%; margin-left: 10px; background-color: var(--color-control-active); } + .icon.error { background-color: var(--color-red); display: block; } .icon.synced, - .icon.syncing { background-image: url('~img/icon/syncStatus/synced.svg'); } + .icon.syncing { background-color: var(--color-lime); } .icon.syncing::before, .icon.syncing::after { content: ''; @include pos-abs-mid; z-index: 0; margin: -4px 0px 0px -4px; diff --git a/src/scss/component/tooltip.scss b/src/scss/component/tooltip.scss index 83b50031fd..ff5e42472a 100644 --- a/src/scss/component/tooltip.scss +++ b/src/scss/component/tooltip.scss @@ -19,6 +19,11 @@ box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2); border-radius: 8px; } .tooltip.big { - .title { @include text-common; font-weight: 500; margin-bottom: 2px; } - .txt { @include text-small; } + .title { @include text-common; font-weight: 500; } + .txt { @include text-small; margin: 2px 0px 0px 0px; } +} + +.tooltip.fromVault { min-width: unset; max-width: 360px; transform: scale3d(1, 1, 1); } +.tooltip.fromVault { + .txt { @include text-overflow-nw; width: 100%; } } \ No newline at end of file diff --git a/src/scss/component/vault.scss b/src/scss/component/vault.scss index ab3b73fb3c..bb27b283f9 100644 --- a/src/scss/component/vault.scss +++ b/src/scss/component/vault.scss @@ -1,92 +1,64 @@ @import "~scss/_mixins"; -#vaultContentContainer { transition: transform 0.3s $easeInQuint; } -#vaultContentContainer.isExpanded { transform: translate3d(calc($vaultWidthExpanded + $vaultWidthCollapsed), 0px, 0px); overflow: hidden; } -#vaultContentContainer.isExpanded { - #sidebar { left: 0px; } -} - .vault { - position: fixed; background-color: #000; z-index: 30; left: 0px; top: 0px; width: $vaultWidthCollapsed; height: 100%; - display: flex; flex-direction: column; transition: width 0.3s $easeInQuint; padding-top: 42px; + position: fixed; background-color: var(--color-shape-primary); z-index: 30; left: 0px; top: 0px; width: $vaultWidthCollapsed; height: 100%; + display: flex; flex-direction: column; transition: width 0.3s $easeInQuint; } .vault { - .head { height: 42px; display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 0px 8px; padding: 0px 14px; flex-shrink: 0; } - .head { - .icon { width: 24px; height: 24px; background-size: 20px; border-radius: 4px; -webkit-app-region: no-drag; opacity: 0; } - .icon.settings { background-image: url('~img/icon/vault/settings.svg'); } - .icon.close { background-image: url('~img/icon/vault/close.svg'); } - .icon:hover { background-color: var(--color-shape-highlight-medium); } + .head { + height: 50px; display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 0px 8px; padding: 0px 14px; flex-shrink: 0; + position: relative; z-index: 1; background: inherit; } - .body { display: flex; flex-direction: column; justify-content: space-between; padding: 0px 0px 12px 0px; flex-grow: 1; height: calc(100% - 42px); gap: 16px 0px; } + + .body { display: flex; flex-direction: column; justify-content: space-between; flex-grow: 1; gap: 12px 0px; height: calc(100% - 64px); } .body { - .side { padding: 0px 14px; } - .side.top { display: flex; flex-direction: column; gap: 16px 0px; overflow: auto; height: calc(100% - 64px); flex-grow: 1; overscroll-behavior: none; } + .side { padding: 0px 10px; } + .side.top { + display: flex; flex-direction: column; gap: 8px 0px; overflow: auto; flex-grow: 1; overscroll-behavior: none; + } .side.top::-webkit-scrollbar { display: none; } - .side.bottom { flex-shrink: 0; align-items: flex-end; } + .side.bottom { flex-shrink: 0; align-items: flex-end; padding-bottom: 12px; } } - .item { position: relative; border-radius: 2px; transition: background $transitionCommon; } + .item { width: 52px; height: 52px; flex-shrink: 0; position: relative; padding: 4px; transition: all 0.2s $easeInQuint; } .item { - .iconWrap, .infoWrap { position: relative; z-index: 1; } - - .iconWrap { width: 48px; height: 48px; overflow: hidden; border-radius: 2px; background-position: center; background-repeat: no-repeat; } - .iconWrap { - .icon.shared { width: 10px; height: 10px; position: absolute; left: 6px; bottom: 6px; background-image: url('~img/icon/vault/shared.svg'); } - } - - .coverWrap { width: 100%; height: 100%; overflow: hidden; border-radius: inherit; position: absolute; z-index: 0; left: 0px; top: 0px; display: none; } - .coverWrap { - .iconObject { width: $vaultWidthExpanded; height: $vaultWidthExpanded; margin-top: -140px; opacity: 0.6; filter: blur(50px); } - } - - .infoWrap { display: none; } - .infoWrap { - .name { width: 100%; color: #fff; @include text-common; font-weight: 600; @include text-overflow-nw; } - .descr { color: rgba(255,255,255,0.6); } + .iconWrap { + width: 100%; height: 100%; border-radius: 2px; background-repeat: no-repeat; background-position: center; + transition: background-color 0.2s $easeInQuint; overflow: hidden; } + .iconObject { width: 100% !important; height: 100% !important; } + } + .item::after { + content: ''; position: absolute; width: 8px; height: 8px; background-color: var(--color-control-accent); left: -14px; top: 50%; margin-top: -4px; + border-radius: 50%; opacity: 0; transition: opacity 0.2s $easeInQuint; opacity: 0; } - .item.void { - .iconWrap { background-image: url('~img/icon/vault/void.svg'); background-size: 24px; border: 1px solid rgba(255,255,255,0.3); } + .item:hover, .item.hover { padding: 0px; } + + .item.isIcon { + .iconWrap { background-color: var(--color-shape-highlight-dark); } } - .item.gallery { background: #3f3f3f; } + .item.isActive::after { opacity: 1; } + .item.gallery { .iconWrap { background-image: url('~img/icon/vault/gallery.svg'); } } - .item.add { background: #2b2b2b; justify-content: center; } .item.add { - .iconWrap { background-image: url('~img/icon/vault/plus.svg'); background-size: 20px; } + .iconWrap { background-image: url('~img/icon/vault/plus.svg'); } } .item.settings { - .iconWrap { background-size: 20px; background-image: url('~img/icon/vault/settings.svg'); } + .iconWrap { background-color: unset; background-image: url('~img/icon/vault/settings.svg'); } } - .item.settings:hover { background: #2b2b2b; } - - .item.isActive::after { - content: ''; position: absolute; left: -14px; top: 0px; width: 4px; height: 100%; background: #fff; border-radius: 0px 2px 2px 0px; + .item.settings:hover { + .iconWrap { background-color: var(--color-shape-highlight-dark); } } - - .line { - position: absolute; left: 0px; top: 0px; width: 4px; height: 48px; background: #fff; border-radius: 0px 2px 2px 0px; - transform: translate3d(-100%, 0px, 0px); - } - .line.anim { transition: transform 0.3s $easeInQuint; } } -.vault.isExpanded { width: calc($vaultWidthExpanded + $vaultWidthCollapsed); } -.vault.isExpanded { - .head { - .icon { opacity: 1; } +html.platformWindows, html.platformLinux { + .vault { + .head { height: 12px; } } - - .item { padding: 16px; display: flex; flex-direction: row; align-items: center; border-radius: 12px; gap: 0px 16px; } - .item { - .coverWrap, .infoWrap { display: block; } - } - - #item-void { display: none; } } \ No newline at end of file diff --git a/src/scss/list/widget.scss b/src/scss/list/widget.scss index 1d0d3fbfde..02e1298d4e 100644 --- a/src/scss/list/widget.scss +++ b/src/scss/list/widget.scss @@ -44,6 +44,13 @@ > .dropTarget.firstTarget.isOver::before { bottom: -7px; } > .dropTarget.lastTarget.isOver::before { top: -7px; } + + .widget.isEditable.isOver::before { + content: ""; position: absolute; background: var(--color-system-accent-100); height: 2px; width: calc(100% - 24px); border-radius: 2px; + left: 12px; + } + .widget.isEditable.isOver.top::before { top: -7px; } + .widget.isEditable.isOver.bottom::before { bottom: -7px; } } .listWidget.isEditing { padding-bottom: 58px; } @@ -69,9 +76,6 @@ .widget.isEditable:nth-child(2n + 1) { animation: shake1 0.2s linear infinite alternate; } .widget.isEditable:nth-child(2n + 2) { animation: shake2 0.2s linear infinite alternate; } - .widget.isEditable.isOver::before { content: ""; position: absolute; background: var(--color-system-accent-100); height: 2px; width: calc(100% - 24px); border-radius: 2px; left: 12px; } - .widget.isEditable.isOver.top::before { top: -7px; } - .widget.isEditable.isOver.bottom::before { bottom: -7px; } .widget.isEditable:hover { .head { > .buttons { display: flex; } diff --git a/src/scss/media/print.scss b/src/scss/media/print.scss index 26fcea9b59..9dc92137c4 100644 --- a/src/scss/media/print.scss +++ b/src/scss/media/print.scss @@ -20,7 +20,9 @@ html.printMedia { .sidebarDummy, .progress, .toast, - .focusable.isFocused::before + .focusable.isFocused::before, + #vault, + #sidebarToggle { display: none !important; } #page.isFull { width: 100% !important; } diff --git a/src/scss/menu/block/add.scss b/src/scss/menu/block/add.scss new file mode 100644 index 0000000000..b7180e5d86 --- /dev/null +++ b/src/scss/menu/block/add.scss @@ -0,0 +1,109 @@ +@import "~scss/_mixins"; + +.menus { + .menu.menuBlockAdd { width: var(--menu-width-add) !important; } + .menu.menuBlockAdd { + .content { padding: 0px; } + .wrap { height: 100%; } + .items { height: 100%; } + + .sectionName { padding: 0px 14px 4px 14px; } + .sectionName::before { content: ""; display: block; width: 100%; height: 1px; margin: 8px 0px 11px 0px; background: var(--color-shape-secondary); } + .sectionName.first { padding-top: 4px; } + .sectionName.first::before { display: none; } + + .info { + width: 154px; @include text-overflow-nw; line-height: 20px; border-radius: 4px; transition: background $transitionCommon; + flex-shrink: 0; margin-right: 6px; + } + + .item { padding: 4px 16px; } + .item.add { padding: 6px 16px; } + .item.sides { display: flex; padding: 6px 16px; } + .item.empty { padding: 16px; @include text-small; } + + .item { + .icon.plus { margin-right: 4px; background-image: url('~img/icon/plus/menu0.svg'); } + } + .item::before { transition: none; } + + .item.isBig { + .iconObject { background-color: var(--color-shape-tertiary); } + } + .item.isBig { + .icon.textParagraph { background-image: url('~img/icon/menu/action/block/text/paragraph1.svg'); } + .icon.textHeader1 { background-image: url('~img/icon/menu/action/block/text/header11.svg'); } + .icon.textHeader2 { background-image: url('~img/icon/menu/action/block/text/header21.svg'); } + .icon.textHeader3 { background-image: url('~img/icon/menu/action/block/text/header31.svg'); } + .icon.textQuote { background-image: url('~img/icon/menu/action/block/text/quote1.svg'); } + .icon.textCallout { background-image: url('~img/icon/menu/action/block/text/callout1.svg'); } + .icon.textBulleted { background-image: url('~img/icon/menu/action/block/text/bulleted1.svg'); } + .icon.textCheckbox { background-image: url('~img/icon/menu/action/block/text/checkbox1.svg'); } + .icon.textNumbered { background-image: url('~img/icon/menu/action/block/text/numbered1.svg'); } + .icon.textToggle { background-image: url('~img/icon/menu/action/block/text/toggle1.svg'); } + + .icon.mediaFile { background-image: url('~img/icon/menu/action/block/media/file1.svg'); } + .icon.mediaImage { background-image: url('~img/icon/menu/action/block/media/image1.svg'); } + .icon.mediaVideo { background-image: url('~img/icon/menu/action/block/media/video1.svg'); } + .icon.mediaAudio { background-image: url('~img/icon/menu/action/block/media/audio1.svg'); } + .icon.mediaPdf { background-image: url('~img/icon/menu/action/block/media/pdf1.svg'); } + + .icon.divLine { background-image: url('~img/icon/menu/action/block/div/line1.svg'); } + .icon.divDot { background-image: url('~img/icon/menu/action/block/div/dot1.svg'); } + + .icon.embed-latex { background-image: url('~img/icon/menu/action/block/embed/latex.svg'); } + .icon.embed-mermaid { background-image: url('~img/icon/menu/action/block/embed/mermaid.svg'); } + .icon.embed-youtube { background-image: url('~img/icon/menu/action/block/embed/youtube.svg'); } + .icon.embed-vimeo { background-image: url('~img/icon/menu/action/block/embed/vimeo.svg'); } + .icon.embed-googleMaps { background-image: url('~img/icon/menu/action/block/embed/googleMaps.svg'); } + .icon.embed-soundcloud { background-image: url('~img/icon/menu/action/block/embed/soundcloud.svg'); } + .icon.embed-chart { background-image: url('~img/icon/menu/action/block/embed/chart.svg'); } + .icon.embed-miro { background-image: url('~img/icon/menu/action/block/embed/miro.svg'); } + .icon.embed-figma { background-image: url('~img/icon/menu/action/block/embed/figma.svg'); } + .icon.embed-bilibili { background-image: url('~img/icon/menu/action/block/embed/bilibili.svg'); } + .icon.embed-codepen { background-image: url('~img/icon/menu/action/block/embed/codepen.svg'); } + .icon.embed-facebook { background-image: url('~img/icon/menu/action/block/embed/facebook.svg'); } + .icon.embed-githubGist { background-image: url('~img/icon/menu/action/block/embed/githubGist.svg'); } + .icon.embed-graphviz { background-image: url('~img/icon/menu/action/block/embed/graphviz.svg'); } + .icon.embed-instagram { background-image: url('~img/icon/menu/action/block/embed/instagram.svg'); } + .icon.embed-kroki { background-image: url('~img/icon/menu/action/block/embed/kroki.svg'); } + .icon.embed-openStreetMap { background-image: url('~img/icon/menu/action/block/embed/openStreetMap.svg'); } + .icon.embed-reddit { background-image: url('~img/icon/menu/action/block/embed/reddit.svg'); } + .icon.embed-telegram { background-image: url('~img/icon/menu/action/block/embed/telegram.svg'); } + .icon.embed-twitter { background-image: url('~img/icon/menu/action/block/embed/twitter.svg'); } + .icon.embed-excalidraw { background-image: url('~img/icon/menu/action/block/embed/excalidraw.svg'); } + .icon.embed-sketchfab { background-image: url('~img/icon/menu/action/block/embed/sketchfab.svg'); } + + .icon.existing { background-image: url('~img/icon/menu/action/block/existing1.svg'); } + .icon.bookmark { background-image: url('~img/icon/menu/action/block/bookmark1.svg'); } + .icon.code { background-image: url('~img/icon/menu/action/block/code1.svg'); } + .icon.table { background-image: url('~img/icon/menu/action/block/table1.svg'); } + .icon.tableOfContents { background-image: url('~img/icon/menu/action/block/tableOfContents1.svg'); } + .icon.relation { background-image: url('~img/icon/menu/action/block/relation1.svg'); } + .icon.set { background-image: url('~img/icon/menu/action/block/set1.svg'); } + .icon.collection { background-image: url('~img/icon/menu/action/block/collection1.svg'); } + } + + .cell { width: calc(100% - 160px); white-space: nowrap; } + .cell.c-select { + .tagItem { margin-bottom: 0px; vertical-align: middle; } + } + + .cellContent { overflow: hidden; height: 20px; line-height: 20px; } + .cellContent { + .empty { display: block; } + } + + .cellContent.c-longText { + .name { -webkit-line-clamp: 1; -webkit-box-orient: vertical; display: -webkit-box; } + } + } +} + +html.platformWindows, html.platformLinux { + .menus { + .menu.menuBlockAdd { + .ReactVirtualized__List { overflow-y: overlay !important; } + } + } +} diff --git a/src/scss/menu/block/common.scss b/src/scss/menu/block/common.scss index 719077af72..0762eaf2f5 100644 --- a/src/scss/menu/block/common.scss +++ b/src/scss/menu/block/common.scss @@ -1,16 +1,16 @@ @import "~scss/_mixins"; .menus { - .menu.menuBlockAdd, .menu.menuBlockStyle, .menu.menuBlockAction, .menu.menuObject { + .menu.menuBlockStyle, .menu.menuBlockAction, .menu.menuObject { .item.empty { @include text-small; padding-top: 8px; } } - .menu.menuBlockAction { width: 240px; } + .menu.menuBlockAction { width: var(--menu-width-icon); } .menu.menuBlockAction { .content { padding-top: 12px; } } - .menu.menuObject { width: 256px; } + .menu.menuObject { width: var(--menu-width-icon); } .menu.menuObject { .content { overflow: visible !important; max-height: unset; } .item { display: flex; } @@ -21,108 +21,4 @@ .item.isReadonly::before { opacity: 0 !important; } } - - .menu.menuBlockAdd { width: 480px !important; } - .menu.menuBlockAdd { - .content { padding: 0px; } - .wrap { height: 100%; } - .items { height: 100%; } - - .sectionName { padding: 0px 14px 4px 14px; } - .sectionName::before { content: ""; display: block; width: 100%; height: 1px; margin: 8px 0px 11px 0px; background: var(--color-shape-secondary); } - .sectionName.first { padding-top: 4px; } - .sectionName.first::before { display: none; } - - .info { - width: 154px; @include text-overflow-nw; line-height: 20px; border-radius: 4px; transition: background $transitionCommon; - flex-shrink: 0; margin-right: 6px; - } - - .item { padding: 4px 16px; } - .item.add { padding: 6px 16px; } - .item.sides { display: flex; padding: 6px 16px; } - .item.empty { padding: 16px; } - - .item { - .icon.plus { margin-right: 4px; background-image: url('~img/icon/plus/menu0.svg'); } - } - .item::before { transition: none; } - - .item.isBig { - .iconObject { background-color: var(--color-shape-tertiary); } - } - .item.isBig { - .icon.textParagraph { background-image: url('~img/icon/menu/action/block/text/paragraph1.svg'); } - .icon.textHeader1 { background-image: url('~img/icon/menu/action/block/text/header11.svg'); } - .icon.textHeader2 { background-image: url('~img/icon/menu/action/block/text/header21.svg'); } - .icon.textHeader3 { background-image: url('~img/icon/menu/action/block/text/header31.svg'); } - .icon.textQuote { background-image: url('~img/icon/menu/action/block/text/quote1.svg'); } - .icon.textCallout { background-image: url('~img/icon/menu/action/block/text/callout1.svg'); } - .icon.textBulleted { background-image: url('~img/icon/menu/action/block/text/bulleted1.svg'); } - .icon.textCheckbox { background-image: url('~img/icon/menu/action/block/text/checkbox1.svg'); } - .icon.textNumbered { background-image: url('~img/icon/menu/action/block/text/numbered1.svg'); } - .icon.textToggle { background-image: url('~img/icon/menu/action/block/text/toggle1.svg'); } - - .icon.mediaFile { background-image: url('~img/icon/menu/action/block/media/file1.svg'); } - .icon.mediaImage { background-image: url('~img/icon/menu/action/block/media/image1.svg'); } - .icon.mediaVideo { background-image: url('~img/icon/menu/action/block/media/video1.svg'); } - .icon.mediaAudio { background-image: url('~img/icon/menu/action/block/media/audio1.svg'); } - .icon.mediaPdf { background-image: url('~img/icon/menu/action/block/media/pdf1.svg'); } - - .icon.divLine { background-image: url('~img/icon/menu/action/block/div/line1.svg'); } - .icon.divDot { background-image: url('~img/icon/menu/action/block/div/dot1.svg'); } - - .icon.embed-latex { background-image: url('~img/icon/menu/action/block/embed/latex.svg'); } - .icon.embed-mermaid { background-image: url('~img/icon/menu/action/block/embed/mermaid.svg'); } - .icon.embed-youtube { background-image: url('~img/icon/menu/action/block/embed/youtube.svg'); } - .icon.embed-vimeo { background-image: url('~img/icon/menu/action/block/embed/vimeo.svg'); } - .icon.embed-googleMaps { background-image: url('~img/icon/menu/action/block/embed/googleMaps.svg'); } - .icon.embed-soundcloud { background-image: url('~img/icon/menu/action/block/embed/soundcloud.svg'); } - .icon.embed-chart { background-image: url('~img/icon/menu/action/block/embed/chart.svg'); } - .icon.embed-miro { background-image: url('~img/icon/menu/action/block/embed/miro.svg'); } - .icon.embed-figma { background-image: url('~img/icon/menu/action/block/embed/figma.svg'); } - .icon.embed-bilibili { background-image: url('~img/icon/menu/action/block/embed/bilibili.svg'); } - .icon.embed-codepen { background-image: url('~img/icon/menu/action/block/embed/codepen.svg'); } - .icon.embed-facebook { background-image: url('~img/icon/menu/action/block/embed/facebook.svg'); } - .icon.embed-githubGist { background-image: url('~img/icon/menu/action/block/embed/githubGist.svg'); } - .icon.embed-graphviz { background-image: url('~img/icon/menu/action/block/embed/graphviz.svg'); } - .icon.embed-instagram { background-image: url('~img/icon/menu/action/block/embed/instagram.svg'); } - .icon.embed-kroki { background-image: url('~img/icon/menu/action/block/embed/kroki.svg'); } - .icon.embed-openStreetMap { background-image: url('~img/icon/menu/action/block/embed/openStreetMap.svg'); } - .icon.embed-reddit { background-image: url('~img/icon/menu/action/block/embed/reddit.svg'); } - .icon.embed-telegram { background-image: url('~img/icon/menu/action/block/embed/telegram.svg'); } - .icon.embed-twitter { background-image: url('~img/icon/menu/action/block/embed/twitter.svg'); } - .icon.embed-excalidraw { background-image: url('~img/icon/menu/action/block/embed/excalidraw.svg'); } - .icon.embed-sketchfab { background-image: url('~img/icon/menu/action/block/embed/sketchfab.svg'); } - - .icon.existing { background-image: url('~img/icon/menu/action/block/existing1.svg'); } - .icon.bookmark { background-image: url('~img/icon/menu/action/block/bookmark1.svg'); } - .icon.code { background-image: url('~img/icon/menu/action/block/code1.svg'); } - .icon.table { background-image: url('~img/icon/menu/action/block/table1.svg'); } - .icon.tableOfContents { background-image: url('~img/icon/menu/action/block/tableOfContents1.svg'); } - .icon.relation { background-image: url('~img/icon/menu/action/block/relation1.svg'); } - .icon.set { background-image: url('~img/icon/menu/action/block/set1.svg'); } - .icon.collection { background-image: url('~img/icon/menu/action/block/collection1.svg'); } - } - - .cell { width: calc(100% - 160px); white-space: nowrap; } - .cell.c-select { - .tagItem { margin-bottom: 0px; vertical-align: middle; } - } - - .cellContent { overflow: hidden; height: 20px; line-height: 20px; } - .cellContent { - .empty { display: block; } - } - - .cellContent.c-longText { - .name { -webkit-line-clamp: 1; -webkit-box-orient: vertical; display: -webkit-box; } - } - } -} - -html.platformWindows, html.platformLinux { - .menus { - .menu.menuBlockAdd { width: 377px !important; } - } -} +} \ No newline at end of file diff --git a/src/scss/menu/block/cover.scss b/src/scss/menu/block/cover.scss index 89450ab185..2220fa144e 100644 --- a/src/scss/menu/block/cover.scss +++ b/src/scss/menu/block/cover.scss @@ -1,9 +1,9 @@ @import "~scss/_mixins"; .menus { - .menu.menuBlockCover { width: 410px; } + .menu.menuBlockCover { width: var(--menu-width-large); } .menu.menuBlockCover { - .content { max-height: unset; height: 404px; overflow: visible; padding-bottom: 0px; } + .content { max-height: unset; height: var(--menu-width-large);; overflow: visible; padding-bottom: 0px; } .wrap { display: flex; flex-direction: column; height: 100%; } .head { @@ -23,7 +23,7 @@ .loaderWrapper { position: relative; background: none; } - .sections { overflow: auto; flex-grow: 1; } + .sections { overflow: hidden auto; flex-grow: 1; } .section > .name { margin-bottom: 8px; } .section:first-child { padding-top: 8px; } .section:last-child { padding-bottom: 8px; } @@ -74,6 +74,8 @@ html.platformWindows, html.platformLinux { .menus { - .menu.menuBlockCover { width: 425px; } + .menu.menuBlockCover { + .sections { overflow-y: overlay; } + } } } diff --git a/src/scss/menu/block/link.scss b/src/scss/menu/block/link.scss index d25c9ce516..666c4eb7d5 100644 --- a/src/scss/menu/block/link.scss +++ b/src/scss/menu/block/link.scss @@ -1,9 +1,9 @@ @import "~scss/_mixins"; .menus { - .menu.menuBlockLink { width: 420px; } + .menu.menuBlockLink { width: var(--menu-width-large); } .menu.menuBlockLink { - .content { transition: none; padding: 0px; max-height: 420px; padding: 4px 0px 0px 0px; } + .content { transition: none; padding: 0px; max-height: var(--menu-width-large); padding: 4px 0px 0px 0px; } .content.initial { .filter { .line { display: none; } diff --git a/src/scss/menu/block/linkSettings.scss b/src/scss/menu/block/linkSettings.scss index 0cca736c6d..f807d6449a 100644 --- a/src/scss/menu/block/linkSettings.scss +++ b/src/scss/menu/block/linkSettings.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuBlockLinkSettings { width: 256px; } + .menu.menuBlockLinkSettings { width: var(--menu-width-icon); } .menu.menuBlockLinkSettings { .item { .name { @include text-overflow-nw; width: calc(100% - 58px); } diff --git a/src/scss/menu/block/mention.scss b/src/scss/menu/block/mention.scss index bae13eca41..866dc1916c 100644 --- a/src/scss/menu/block/mention.scss +++ b/src/scss/menu/block/mention.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuBlockMention { width: 360px; } + .menu.menuBlockMention { width: var(--menu-width-set); } .menu.menuBlockMention { .content { transition: none; padding: 0px; } .items { height: 100%; } diff --git a/src/scss/menu/block/relation.scss b/src/scss/menu/block/relation.scss index df976c989e..811a8588b6 100644 --- a/src/scss/menu/block/relation.scss +++ b/src/scss/menu/block/relation.scss @@ -52,7 +52,9 @@ } } - .scrollWrap { padding: 22px 0px 16px 0px; height: calc(100% - 45px); overflow-x: hidden; overflow-y: auto; } + .scrollWrap { padding: 22px 0px 16px 0px; overflow-x: hidden; overflow-y: auto; flex-grow: 1; } + .bottom { flex-shrink: 0; } + .item { padding: 0px 26px; cursor: default; } .item:hover { .icon.fav { opacity: 1; } diff --git a/src/scss/menu/common.scss b/src/scss/menu/common.scss index 8dd7833e4c..c0d37bed57 100644 --- a/src/scss/menu/common.scss +++ b/src/scss/menu/common.scss @@ -52,7 +52,7 @@ .arrowDirection.c4 { right: -12px; transform: rotateZ(90deg); } } - .menu.vertical { width: 224px; } + .menu.vertical { width: var(--menu-width-common); } .menu.vertical { .content { overflow-y: auto; overflow-x: hidden; max-height: 368px; padding: 8px 0px; border-radius: inherit; transform: none; } .ReactVirtualized__List { padding: 8px 0px; } @@ -245,6 +245,7 @@ html.platformWindows { @import "./preview/object.scss"; @import "./block/common.scss"; +@import "./block/add.scss"; @import "./block/context.scss"; @import "./block/cover.scss"; @import "./block/icon.scss"; diff --git a/src/scss/menu/dataview/calendar.scss b/src/scss/menu/dataview/calendar.scss index e5d00419a7..453865202d 100644 --- a/src/scss/menu/dataview/calendar.scss +++ b/src/scss/menu/dataview/calendar.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewCalendar { width: 276px; } + .menu.menuDataviewCalendar { width: var(--menu-width-value); } .menu.menuDataviewCalendar { .titleWrapper { padding: 8px 16px 0px; } .content { padding: 10px 0px; overflow: visible; max-height: unset; } @@ -106,7 +106,7 @@ } } - .menu.menuDataviewCalendarDay.fromWidget { width: 312px; } + .menu.menuDataviewCalendarDay.fromWidget { width: var(--menu-width-value); } .menu.menuDataviewCalendarDay.fromWidget { .content { padding: 12px 0px 8px 0px; } diff --git a/src/scss/menu/dataview/create/bookmark.scss b/src/scss/menu/dataview/create/bookmark.scss index db3895129c..d4f9cad8c8 100644 --- a/src/scss/menu/dataview/create/bookmark.scss +++ b/src/scss/menu/dataview/create/bookmark.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewCreateBookmark { width: 400px; height: 44px; padding: 0px; position: fixed; top: 42px; } + .menu.menuDataviewCreateBookmark { width: var(--menu-width-large); height: 44px; padding: 0px; position: fixed; top: 42px; } .menu.menuDataviewCreateBookmark { .loaderWrapper { position: absolute; background: var(--color-bg-loader); width: 100%; height: 100%; border-radius: 8px; z-index: 10; } .loaderWrapper { diff --git a/src/scss/menu/dataview/file.scss b/src/scss/menu/dataview/file.scss index 3cbf7acf20..634b99b4a3 100644 --- a/src/scss/menu/dataview/file.scss +++ b/src/scss/menu/dataview/file.scss @@ -10,7 +10,7 @@ } } - .menu.menuDataviewFileList { width: 288px; } + .menu.menuDataviewFileList { width: var(--menu-width-value); } .menu.menuDataviewFileList { .content { padding-top: 12px; padding-bottom: 0px; transition: none; } diff --git a/src/scss/menu/dataview/filter.scss b/src/scss/menu/dataview/filter.scss index 7543c35ef3..66f1d579c8 100644 --- a/src/scss/menu/dataview/filter.scss +++ b/src/scss/menu/dataview/filter.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewFilterList { width: 360px; } + .menu.menuDataviewFilterList { width: var(--menu-width-set); } .menu.menuDataviewFilterList { .content { overflow: visible !important; padding: 0px; } .wrap { height: 100%; display: flex; flex-direction: column; } @@ -63,7 +63,7 @@ } } - .menu.menuDataviewFilterValues { width: 288px; } + .menu.menuDataviewFilterValues { width: var(--menu-width-value); } .menu.menuDataviewFilterValues { .select { border: 0px; padding: 0px; display: block; width: 100%; } .select:hover, .select.isFocused { background: none; } diff --git a/src/scss/menu/dataview/group.scss b/src/scss/menu/dataview/group.scss index c4a036431e..40d8e91a97 100644 --- a/src/scss/menu/dataview/group.scss +++ b/src/scss/menu/dataview/group.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewGroupList { width: 360px; } + .menu.menuDataviewGroupList { width: var(--menu-width-set); } .menu.menuDataviewGroupList { .content { padding: 0px; } .wrap { height: 100%; display: flex; flex-direction: column; padding: 0px; } diff --git a/src/scss/menu/dataview/object.scss b/src/scss/menu/dataview/object.scss index ea2d5d3cc4..8885613f37 100644 --- a/src/scss/menu/dataview/object.scss +++ b/src/scss/menu/dataview/object.scss @@ -2,7 +2,7 @@ .menus { - .menu.menuDataviewObjectList { width: 288px; } + .menu.menuDataviewObjectList { width: var(--menu-width-value);; } .menu.menuDataviewObjectList { .content { padding: 0px; transition: none; } @@ -23,7 +23,7 @@ .filter { flex-shrink: 0; } } - .menu.menuDataviewObjectList.single { width: 256px; } + .menu.menuDataviewObjectList.single { width: var(--menu-width-icon); } .menu.menuDataviewObjectList.single { .item { .name { margin: 0px; } @@ -31,7 +31,7 @@ } } - .menu.menuDataviewObjectValues { width: 288px; } + .menu.menuDataviewObjectValues { width: var(--menu-width-value);; } .menu.menuDataviewObjectValues { .content { padding: 0px; } @@ -69,4 +69,4 @@ .icon.dnd { display: none; } } } -} +} \ No newline at end of file diff --git a/src/scss/menu/dataview/option.scss b/src/scss/menu/dataview/option.scss index 5c58b7ede9..3d60b85f4a 100644 --- a/src/scss/menu/dataview/option.scss +++ b/src/scss/menu/dataview/option.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewOptionList { width: 288px; } + .menu.menuDataviewOptionList { width: var(--menu-width-value);; } .menu.menuDataviewOptionList { .content { overflow: visible; transition: none; padding: 0px; max-height: unset; } .content { @@ -13,26 +13,50 @@ .items { height: calc(100% - 38px); } } - .item { padding-top: 5px; padding-bottom: 5px; } + .item { display: flex; align-items: center; padding-right: 10px; gap: 0px 4px; } .item { - .clickable { width: calc(100% - 20px); } - .buttons { display: none; position: absolute; right: 6px; top: 2px; } + .buttons { display: flex; flex-direction: row; align-items: center; gap: 0px 2px; flex-shrink: 0; } + .buttons { + .icon.more { display: none; } + } } - .item:hover, .item.hover { + .item.withCheckbox { .clickable { width: calc(100% - 24px); } - .buttons { display: block; } - .icon.chk { right: 32px; } + } + + .item:hover, .item.hover { + .clickable { width: calc(100% - 28px); } + .buttons { + .icon.more { display: block; } + } } .item.withCheckbox:hover, .item.withCheckbox.hover { - .clickable { width: calc(100% - 44px); } + .clickable { width: calc(100% - 50px); } } .item.add { - .name { @include text-overflow-nw; width: calc(100% - 24px); } + .name { @include text-overflow-nw; } } } - .menu.menuDataviewOptionEdit { width: 252px; } + .menu.menuDataviewOptionList.fromFilter { + .item { + .icon.more { display: none; } + } + } + + .menu.menuDataviewOptionList.fromFeatured { + .filter { padding-top: 8px; } + .item { + .buttons, + .icon.chk { right: 14px; } + } + .item:hover, .item.hover { + .icon.chk { right: 40px; } + } + } + + .menu.menuDataviewOptionEdit { width: var(--menu-width-icon); } .menu.menuDataviewOptionEdit { .content { padding-top: 12px; overflow: visible; max-height: unset; } .filter { margin-bottom: 8px; } @@ -70,20 +94,4 @@ .section.colorPicker:after { margin: 16px 0px 0px 0px; } } - .menu.menuDataviewOptionList.fromFilter { - .item { - .icon.more { display: none; } - } - } - - .menu.menuDataviewOptionList.fromFeatured { - .filter { padding-top: 8px; } - .item { - .buttons, - .icon.chk { right: 14px; } - } - .item:hover, .item.hover { - .icon.chk { right: 40px; } - } - } } diff --git a/src/scss/menu/dataview/relation.scss b/src/scss/menu/dataview/relation.scss index 9b215883b9..7541912fce 100644 --- a/src/scss/menu/dataview/relation.scss +++ b/src/scss/menu/dataview/relation.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewRelationList { width: 360px; } + .menu.menuDataviewRelationList { width: var(--menu-width-set); } .menu.menuDataviewRelationList { .content { overflow: visible !important; padding: 0px; } .wrap { height: 100%; display: flex; flex-direction: column; padding: 0px 0px 8px 0px; } @@ -21,7 +21,7 @@ } } - .menu.menuDataviewRelationEdit { width: 224px; } + .menu.menuDataviewRelationEdit { width: var(--menu-width-icon); } .menu.menuDataviewRelationEdit { .content { padding: 0px; max-height: unset; } .form { padding: 8px 0px; } diff --git a/src/scss/menu/dataview/sort.scss b/src/scss/menu/dataview/sort.scss index 729523cf7b..3735fe9390 100644 --- a/src/scss/menu/dataview/sort.scss +++ b/src/scss/menu/dataview/sort.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewSort { width: 360px; } + .menu.menuDataviewSort { width: var(--menu-width-set); } .menu.menuDataviewSort { .content { overflow: visible !important; padding: 0px; } .wrap { height: 100%; display: flex; flex-direction: column; } diff --git a/src/scss/menu/dataview/source.scss b/src/scss/menu/dataview/source.scss index 09a9b0f000..fb4109515c 100644 --- a/src/scss/menu/dataview/source.scss +++ b/src/scss/menu/dataview/source.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewSource { width: 360px; } + .menu.menuDataviewSource { width: var(--menu-width-set); } .menu.menuDataviewSource { .content { overflow: visible !important; padding: 0px; } .scrollWrap { padding: 8px 0px; overflow-x: hidden; overflow-y: auto; max-height: 350px; } diff --git a/src/scss/menu/dataview/template.scss b/src/scss/menu/dataview/template.scss index 6d8354418b..576f469ff5 100644 --- a/src/scss/menu/dataview/template.scss +++ b/src/scss/menu/dataview/template.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewTemplateList { width: 360px; } + .menu.menuDataviewTemplateList { width: var(--menu-width-set); } .menu.menuDataviewTemplateList { .titleWrapper + .content { padding-top: 8px; } diff --git a/src/scss/menu/dataview/view.scss b/src/scss/menu/dataview/view.scss index 6793acea8a..56d8276fef 100644 --- a/src/scss/menu/dataview/view.scss +++ b/src/scss/menu/dataview/view.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuDataviewViewList { width: 360px; } + .menu.menuDataviewViewList { width: var(--menu-width-set); } .menu.menuDataviewViewList { .content { overflow: hidden; padding: 0px; } .wrap { height: 100%; display: flex; flex-direction: column; } @@ -65,7 +65,7 @@ .menu.menuDataviewViewEdit, .menu.menuDataviewViewSettings, - .menu.menuDataviewViewLayout { width: 360px; } + .menu.menuDataviewViewLayout { width: var(--menu-width-set); } .menu.menuDataviewViewEdit, .menu.menuDataviewViewSettings, .menu.menuDataviewViewLayout { diff --git a/src/scss/menu/help.scss b/src/scss/menu/help.scss index 049fe193d6..9236bd7087 100644 --- a/src/scss/menu/help.scss +++ b/src/scss/menu/help.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuHelp { width: 280px; position: fixed; } + .menu.menuHelp { width: var(--menu-width-value); position: fixed; } .menu.menuHelp { .shareTooltip { display: flex; position: absolute; left: auto; right: 0; top: 100%; margin-top: 8px; } .shareTooltip { diff --git a/src/scss/menu/onboarding.scss b/src/scss/menu/onboarding.scss index 0085381b57..3fa5cfbf4b 100644 --- a/src/scss/menu/onboarding.scss +++ b/src/scss/menu/onboarding.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuOnboarding { width: 334px; } + .menu.menuOnboarding { width: var(--menu-width-value); } .menu.menuOnboarding { .content { padding: 16px; max-height: unset; } .wrap { display: flex; flex-direction: column; } @@ -70,7 +70,7 @@ } } - .menu.menuOnboarding.isWizard { width: 280px; min-height: 458px; } + .menu.menuOnboarding.isWizard { min-height: 458px; } .menu.menuOnboarding.isWizard { .bottom { position: absolute; bottom: 16px; width: calc(100% - 32px); margin: 0px; } } diff --git a/src/scss/menu/search/object.scss b/src/scss/menu/search/object.scss index bf574e4c95..3fff89f6d7 100644 --- a/src/scss/menu/search/object.scss +++ b/src/scss/menu/search/object.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuSearchObject { width: 360px; } + .menu.menuSearchObject { width: var(--menu-width-set); } .menu.menuSearchObject { .content { transition: none; padding: 12px 0px 0px 0px; max-height: unset; } .wrap { height: 100%; display: flex; flex-direction: column; } @@ -10,7 +10,7 @@ } .wrap.withFilter { .emptySearch { height: calc(100% - 42px); } - .loaderWrapper { top: 38px; height: calc(100% - 42px); } + .loaderWrapper { top: 42px; height: calc(100% - 42px); } } .items { height: 100%; } @@ -21,7 +21,7 @@ .filter { flex-shrink: 0; } } - .menu.menuSearchObject.single { width: 224px; } + .menu.menuSearchObject.single { width: var(--menu-width-icon); } .menu.menuSearchObject.single { .item { .name { margin: 0px; } @@ -29,7 +29,7 @@ } } - .menu.menuSearchObject.big { width: 360px; } + .menu.menuSearchObject.big { width: var(--menu-width-set); } .menu.menuSearchObject.big { .content { height: 360px; } .item { diff --git a/src/scss/menu/search/text.scss b/src/scss/menu/search/text.scss index d595185530..c3c3d31231 100644 --- a/src/scss/menu/search/text.scss +++ b/src/scss/menu/search/text.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuSearchText { width: 400px; height: 44px; padding: 0px; position: fixed; top: 42px; } + .menu.menuSearchText { width: var(--menu-width-large); height: 44px; padding: 0px; position: fixed; top: 42px; } .menu.menuSearchText { .content { height: 100%; display: block; } .flex { width: 100%; flex-direction: row; align-items: center; padding: 0px 0px 0px 8px; } diff --git a/src/scss/menu/select.scss b/src/scss/menu/select.scss index b1e9e3e084..951fa67cd9 100644 --- a/src/scss/menu/select.scss +++ b/src/scss/menu/select.scss @@ -23,7 +23,7 @@ .items { height: calc(100% - 38px); } } - .menu.menuSelect.skip { width: 320px; } + .menu.menuSelect.skip { width: var(--menu-width-value); } .menu.menuSelect.skip { .name { margin: 0px; width: calc(100% - 24px); @include text-overflow-nw; } } @@ -56,7 +56,7 @@ .items { padding: 8px 0px; } } - .menu.menuSelect.spaceSelect { width: 280px; } + .menu.menuSelect.spaceSelect { width: var(--menu-width-value); } .menu.menuSelect.spaceSelect { .content { padding: 8px 0px; } .item { padding: 4px 16px; } diff --git a/src/scss/menu/smile.scss b/src/scss/menu/smile.scss index da4a855e4a..4293bef285 100644 --- a/src/scss/menu/smile.scss +++ b/src/scss/menu/smile.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuSmile { width: 404px; user-select: none; } + .menu.menuSmile { width: var(--menu-width-large); user-select: none; } .menu.menuSmile { .content { overflow: visible; padding-bottom: 0px; max-height: unset; height: 404px; } .wrap { display: flex; flex-direction: column; height: 100%; } @@ -140,6 +140,6 @@ html.platformWindows, html.platformLinux { .menus { - .menu.menuSmile { width: 401px; } + .ReactVirtualized__List { overflow-y: overlay !important; } } } diff --git a/src/scss/menu/syncStatus.scss b/src/scss/menu/syncStatus.scss index 994df85dc3..d2801c3e33 100644 --- a/src/scss/menu/syncStatus.scss +++ b/src/scss/menu/syncStatus.scss @@ -5,20 +5,21 @@ } .menus { - .menu.menuSyncStatus { width: 408px; height: 396px; } + .menu.menuSyncStatus { width: var(--menu-width-large); height: var(--menu-width-large); } .menu.menuSyncStatus { .content { padding: 0px; height: 100%; max-height: unset; } - .syncMenuWrapper { padding: 16px 0px 8px 0px; height: 100%; display: flex; flex-direction: column; } + .syncMenuWrapper { padding: 16px 0px 0px 0px; height: 100%; display: flex; flex-direction: column; } .syncPanel { height: 28px; padding: 0px 16px; margin-bottom: 4px; display: flex; justify-content: space-between; align-items: center; } .title { @include text-paragraph; font-weight: 600; padding: 0; color: var(--color-text-primary); } - .icons { display: flex; gap: 0px 8px; } + + .icons { display: flex; flex-direction: row; align-items: center; gap: 0px 8px; } .icons { .iconWrapper { display: flex; position: relative; align-items: center; justify-content: center; width: 28px; height: 28px; } .iconWrapper::before { content: ''; width: 100%; height: 100%; position: absolute; z-index: 0; border-radius: 50%; background: var(--color-shape-tertiary); } - .iconWrapper.connected::before { background: #E5F8D6; } - .iconWrapper.error::before { background: #FEE7E0; } - .iconWrapper:hover::before { opacity: .5; } + .iconWrapper.connected::before { background: #c5efa3; } + .iconWrapper.error::before { background: #fcd1c3; } + .iconWrapper:hover::before { opacity: 0.5; } .iconWrapper { .icon { width: 20px; height: 20px; } @@ -41,9 +42,9 @@ .items { height: 100%; padding: 0px; } .items { - .sides { display: flex; justify-content: space-between; align-items: center; } + .sides { display: flex; align-items: center; gap: 0px 4px; } .sides { - .side.left { display: flex; align-items: center; } + .side.left { display: flex; align-items: center; flex-grow: 1; width: calc(100% - 24px); } .side.right { width: 20px; flex-shrink: 0; display: flex; align-items: center; } .side.right { .icon { width: 20px; height: 20px; } @@ -52,24 +53,24 @@ .icon.synced { background-image: url('~img/icon/menu/syncStatus/ok.svg'); } .icon.error { background-image: url('~img/icon/menu/syncStatus/failed.svg'); display: block; margin: 0px; } .icon.more { background-image: url('~img/icon/menu/action/more0.svg'); opacity: 0; position: static; margin: 0px; } + .icon.more:hover { background-color: unset !important; background-image: url('~img/icon/menu/action/more1.svg'); } } } .sectionName { padding: 4px 16px; } + .item { padding: 3px 8px; margin: 0px 8px; width: unset; line-height: 22px; border-radius: 6px; } .item { - .info { display: flex; align-items: baseline; } + .info { display: flex; align-items: baseline; width: calc(100% - 24px); } .info { .iconObject { margin-right: 8px; } - .name { margin: 0px 6px 0px 0px; @include text-overflow-nw; max-width: 250px; } + .name { margin: 0px 6px 0px 0px; @include text-overflow-nw; } .size { color: var(--color-text-secondary); } } } - .item:hover, - .item.selected { background: var(--color-shape-highlight-medium); } - .item:hover, - .item.selected { + .item:hover, .item.hover { background: var(--color-shape-highlight-medium); } + .item:hover, .item.hover { .side.right { .icon:not(.more) { display: none; } .icon.more { opacity: 1; } @@ -92,7 +93,4 @@ .items:before { content: ''; display: block; height: 1px; margin: 8px 16px 6px; background-color: var(--color-shape-secondary); } } - .menu.menuSyncStatusContext { - #item-archive { color: var(--color-red); } - } } diff --git a/src/scss/menu/widget.scss b/src/scss/menu/widget.scss index a86a1c47ef..86c881104c 100644 --- a/src/scss/menu/widget.scss +++ b/src/scss/menu/widget.scss @@ -1,7 +1,7 @@ @import "~scss/_mixins"; .menus { - .menu.menuWidget { width: 240px; } + .menu.menuWidget { width: var(--menu-width-icon); } .menu.menuWidget { .section:last-child::after { display: none; } diff --git a/src/scss/page/main/media.scss b/src/scss/page/main/media.scss index 6f2424b9c3..098d272844 100644 --- a/src/scss/page/main/media.scss +++ b/src/scss/page/main/media.scss @@ -9,7 +9,7 @@ .blocks > .empty { width: 100%; text-align: center; color: var(--color-text-secondary); @include text-header3; } - .blocks.horizontal { width: 704px; flex-direction: column; } + .blocks.horizontal { width: 704px; flex-direction: column; padding-bottom: 80px; } .blocks.isVideo { .block.blockMedia { max-height: unset; } diff --git a/src/scss/popup/help.scss b/src/scss/popup/help.scss index 4584881cad..57c89e6b94 100644 --- a/src/scss/popup/help.scss +++ b/src/scss/popup/help.scss @@ -22,7 +22,6 @@ .content { padding: 56px 80px 40px 80px; } .highlight { color: var(--color-red); background: var(--color-shape-tertiary); white-space: nowrap; } - - .buttons { text-align: center; } + .buttons { display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 0px 16px; } } } diff --git a/src/scss/popup/membership.scss b/src/scss/popup/membership.scss index f8a0c10d4c..e83d46dd05 100644 --- a/src/scss/popup/membership.scss +++ b/src/scss/popup/membership.scss @@ -99,6 +99,9 @@ a { color: var(--color-text-secondary); } } .paidOnOtherPlatform { text-align: center; margin: 0 8px; } + .platformLabel { + .button { margin-top: 8px; } + } } } diff --git a/src/scss/popup/search.scss b/src/scss/popup/search.scss index d8f0fea215..2f510fb8e6 100644 --- a/src/scss/popup/search.scss +++ b/src/scss/popup/search.scss @@ -4,7 +4,8 @@ .popup.popupSearch { .ReactVirtualized__List { padding: 8px 0px 4px; } - .innerWrap { width: 684px; height: 684px; overflow: hidden; } + .innerWrap { width: 684px; height: 684px; max-height: calc(100% - 48px); overflow: hidden; } + @media (max-width: 700px) { .innerWrap { width: calc(100% - 32px); left: 16px; margin-left: 0px !important; } } diff --git a/src/scss/theme/dark/block.scss b/src/scss/theme/dark/block.scss index 6d04a0d266..dcf41ec9aa 100644 --- a/src/scss/theme/dark/block.scss +++ b/src/scss/theme/dark/block.scss @@ -123,6 +123,9 @@ .wrap.isEditing { background: var(--color-shape-highlight-medium); } .preview { background-image: url('#{$themePath}/icon/block/embed/default.svg'); } + .preview { + .label { color: #464646; } + } .preview.isLatex { background-image: url('#{$themePath}/icon/block/embed/latex.svg'); } .preview.isMermaid { background-image: url('#{$themePath}/icon/block/embed/mermaid.svg'); } .preview.isChart { background-image: url('#{$themePath}/icon/block/embed/chart.svg'); } @@ -159,7 +162,6 @@ .block.blockBookmark { .loaderWrapper { border: 0px; } - .inner { border-color: transparent; background-color: var(--color-shape-highlight-medium); } } /* BlockTable */ diff --git a/src/scss/theme/dark/common.scss b/src/scss/theme/dark/common.scss index 054726d63c..20f9ea82c1 100644 --- a/src/scss/theme/dark/common.scss +++ b/src/scss/theme/dark/common.scss @@ -8,11 +8,6 @@ html.themeDark { --color-text-primary: #ebebeb; --color-text-secondary: #9a9a9a; --color-text-tertiary: #606060; - - --color-text-primary: #ebebeb; - --color-text-secondary: #9a9a9a; - --color-text-tertiary: #606060; - --color-text-inversion: #171717; /* Shape */ @@ -273,6 +268,23 @@ html.themeDark { } } + /* Vault */ + + .vault { background-color: var(--color-bg-primary); } + .vault { + .item.gallery { + .iconWrap { background-image: url('#{$themePath}/icon/vault/gallery.svg'); } + } + + .item.add { + .iconWrap { background-image: url('#{$themePath}/icon/vault/plus.svg'); } + } + + .item.settings { + .iconWrap { background-image: url('#{$themePath}/icon/vault/settings.svg'); } + } + } + /* Sidebar */ .sidebar { background-color: var(--color-bg-secondary); box-shadow: 0px 4px 16px rgba(0,0,0,0.2); } diff --git a/src/scss/theme/dark/menu.scss b/src/scss/theme/dark/menu.scss index edf61d1414..f823967676 100644 --- a/src/scss/theme/dark/menu.scss +++ b/src/scss/theme/dark/menu.scss @@ -245,4 +245,21 @@ .menuQuickCapture { background: none; box-shadow: none; } .menuQuickCapture.isExpanded { background: var(--color-bg-secondary); box-shadow: 0px 4px 16px rgb(0 0 0 / 20%), 0px 0px 0px 1px #393933 inset; } + + /* SyncStatus */ + + .menuSyncStatus { + .icons { + .iconWrapper.connected::before { background: #294b0e; } + .iconWrapper.error::before { background: #581f0c; } + } + + .items { + .sides { + .side.right { + .icon.more:hover { background-image: url('#{$themePath}/icon/menu/action/more1.svg'); } + } + } + } + } } diff --git a/src/scss/theme/dark/widget.scss b/src/scss/theme/dark/widget.scss index 53a23f8d98..8377a20960 100644 --- a/src/scss/theme/dark/widget.scss +++ b/src/scss/theme/dark/widget.scss @@ -30,13 +30,13 @@ } .widget.widgetView { - .viewList, .viewGrid { - #viewSelect { - .select { - .icon.arrow { background-image: url('#{$themePath}/arrow/widget.svg') !important; } - } + #viewSelect { + .select { + .icon.arrow { background-image: url('#{$themePath}/arrow/widget.svg') !important; } } + } + .viewList, .viewGrid { .body { .item { .iconObject.isTask, .iconObject.isBookmark { background: none; } diff --git a/src/scss/widget/common.scss b/src/scss/widget/common.scss index 02e7f03b47..bc647c5c53 100644 --- a/src/scss/widget/common.scss +++ b/src/scss/widget/common.scss @@ -30,11 +30,15 @@ } .dimmer { position: absolute; height: 100%; width: 100%; border-radius: 2px; left: 0px; top: 0px; z-index: 1; cursor: grab; display: none; } - .label.empty { text-align: center; @include text-common; white-space: nowrap; } .contentWrapper { transition: height 0.4s $easeInQuint; } .innerWrap { transition: opacity 0.4s $easeInQuint; } + .emptyWrap { padding: 16px; display: flex; flex-direction: column; align-items: center; gap: 8px 0px; } + .emptyWrap { + .label { text-align: center; @include text-common; white-space: nowrap; } + } + .icon.remove { position: absolute; top: -15px; left: -15px; height: 40px; width: 40px; display: none; z-index: 2; cursor: default !important; } .icon.remove { .inner { diff --git a/src/scss/widget/space.scss b/src/scss/widget/space.scss index 6c709f34e0..467a7f97f3 100644 --- a/src/scss/widget/space.scss +++ b/src/scss/widget/space.scss @@ -1,6 +1,6 @@ @import "~scss/_mixins"; -.widget.widgetSpace { padding: 10px 16px; } +.widget.widgetSpace { padding: 16px; } .widget.widgetSpace { .icon.remove { display: none !important; } @@ -13,7 +13,6 @@ .txt { flex-grow: 1; width: calc(100% - 52px) } .name { @include text-common; @include text-overflow-nw; font-weight: 500; } - .type { @include text-small; @include text-overflow-nw; color: var(--color-text-secondary); } } .side.right { flex-shrink: 0; } diff --git a/src/scss/widget/tree.scss b/src/scss/widget/tree.scss index a114af8aab..ad20fa5b01 100644 --- a/src/scss/widget/tree.scss +++ b/src/scss/widget/tree.scss @@ -2,6 +2,7 @@ .widget.widgetTree { .ReactVirtualized__List { padding: 0px 4px 12px 4px; } + .emptyWrap { padding-top: 6px; } .item { position: relative; } .item { diff --git a/src/scss/widget/view/board.scss b/src/scss/widget/view/board.scss index 68f15b5534..3867317675 100644 --- a/src/scss/widget/view/board.scss +++ b/src/scss/widget/view/board.scss @@ -12,13 +12,13 @@ .clickable:hover::before { opacity: 1; } .clickable { - .icon { width: 24px; height: 24px; background-size: 20px; flex-shrink: 0px; transition: $transitionAllCommon; border-radius: 4px; } + .icon { width: 24px; height: 24px; background-size: 20px; flex-shrink: 0; transition: $transitionAllCommon; border-radius: 4px; } .icon.arrow { background-image: url('~img/arrow/select/dark.svg'); transform: rotate(-90deg); } .icon.plus { background-image: url('~img/icon/widget/plus.svg'); opacity: 0; } .icon.plus:hover { background-color: var(--color-shape-highlight-medium); } - .cellContent { flex-grow: 1; } + .cellContent { flex-grow: 1; width: calc(100% - 24px); } .cellContent { .empty { display: block; color: var(--color-text-secondary); } } @@ -30,6 +30,7 @@ } .clickable:hover { .icon.plus { opacity: 1; } + .cellContent { width: calc(100% - 58px); } } .clickable.isExpanded { @@ -47,6 +48,7 @@ .item { .inner { display: flex; flex-direction: row; align-items: center; gap: 0px 6px; height: 28px; } + .iconObject { flex-shrink: 0; } .name { @include text-overflow-nw; flex-grow: 1; } .buttons { flex-shrink: 0; display: flex; flex-direction: row; align-items: center; gap: 0px 6px; display: none; } diff --git a/src/scss/widget/view/calendar.scss b/src/scss/widget/view/calendar.scss index 5f9665c2b1..1850cd7b92 100644 --- a/src/scss/widget/view/calendar.scss +++ b/src/scss/widget/view/calendar.scss @@ -1,10 +1,11 @@ @import "~scss/_mixins"; .viewCalendar { - .dateSelect { padding: 0px 12px; display: flex; flex-direction: row; margin: 8px 0px; justify-content: space-between; } + .dateSelect { padding: 0px 12px; display: flex; flex-direction: row; margin: 4px 0px; justify-content: space-between; } .dateSelect { - .side.left { @include text-paragraph; font-weight: 600; display: flex; flex-direction: row; gap: 0px 2px; align-items: center; } - .side.right { display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 0px 2px; align-items: center; } + .side { gap: 0px 4px; display: flex; flex-direction: row; align-items: center; } + .side.left { @include text-paragraph; font-weight: 600; } + .side.right { justify-content: flex-end; } .select { padding: 2px 4px; border: 0px; } .select { @@ -19,31 +20,37 @@ transition: $transitionAllCommon; transform: rotateZ(90deg); } .icon.arrow.left { transform: rotateZ(270deg); } - .icon.arrow:hover { background-color: var(--color-shape-highlight-medium); } } .table { display: flex; flex-flow: column; padding: 0px 16px; } .table { .tableHead, .tableBody { display: grid; grid-template-columns: repeat(7, 1fr); } - .tableHead { flex-shrink: 0; margin: 0px 0px 8px 0px; } + .tableHead { flex-shrink: 0; height: 28px; } .tableHead { - .item { @include text-small; text-align: center; color: var(--color-text-secondary); } + .item, .inner { display: flex; flex-direction: row; align-items: center; justify-content: center; } + + .item { @include text-small; color: var(--color-text-secondary); } + .item { + .inner { width: 100%; max-width: 28px; height: 28px; } + } } } - .day { - display: flex; flex-direction: row; align-items: center; justify-content: center; @include text-small; aspect-ratio: 1; border-radius: 4px; - transition: $transitionAllCommon; position: relative; - } + .day { @include text-common; } .day.today { color: var(--color-system-accent-125); font-weight: 500; } .day.other { color: var(--color-text-secondary); } + .day, .day .inner { display: flex; flex-direction: row; align-items: center; justify-content: center; } + .day { + .inner { width: 100%; max-width: 28px; height: 28px; border-radius: 4px; transition: $transitionAllCommon; position: relative; } .bullet { width: 3px; height: 3px; border-radius: 50%; position: absolute; bottom: 2px; left: 50%; margin-left: -1.5px; background: var(--color-control-active); } } - .day:hover, .day.active { background-color: var(--color-shape-highlight-medium); } + .day:hover, .day.active { + .inner { background-color: var(--color-shape-highlight-medium); } + } .day:hover, .day.active { .bullet { background: var(--color-text-primary); } } diff --git a/src/scss/widget/view/common.scss b/src/scss/widget/view/common.scss index 4df471c7c5..5b922bf068 100644 --- a/src/scss/widget/view/common.scss +++ b/src/scss/widget/view/common.scss @@ -7,8 +7,6 @@ .contentWrapper { flex-grow: 1; min-height: 8px; } .head { padding-bottom: 4px; } - .emptyWrap { padding: 16px; display: flex; flex-direction: column; align-items: center; gap: 8px 0px; } - #viewSelect { padding: 0px 16px; } #viewSelect:empty { display: none; } #viewSelect { @@ -24,8 +22,8 @@ } .widget.widgetView.isPreview { - .body.isCompact { - .item { + .body { + .item.canDrag { .inner { padding-left: 0px !important; padding-right: 8px !important; width: calc(100% - 20px); } } } diff --git a/src/ts/app.tsx b/src/ts/app.tsx index 4a91222c8d..e5aa57bdb0 100644 --- a/src/ts/app.tsx +++ b/src/ts/app.tsx @@ -140,7 +140,7 @@ class RoutePage extends React.Component {
- S.Common.refSet('navigation', ref)} key="navigation" {...this.props} /> + S.Common.refSet('navigation', ref)} key="navigation" {...this.props} />
@@ -205,7 +205,7 @@ class App extends React.Component { - + S.Common.refSet('vault', ref)} /> {J.Route.map((path: string, i: number) => ( @@ -359,7 +359,7 @@ class App extends React.Component { S.Common.configSet(account.config, false); if (spaceId) { - U.Router.switchSpace(spaceId, '', cb); + U.Router.switchSpace(spaceId, '', false, cb); } else { U.Data.onInfo(account.info); U.Data.onAuth({}, cb); diff --git a/src/ts/component/block/cover.tsx b/src/ts/component/block/cover.tsx index 5ab1edfffa..b5bab259fd 100644 --- a/src/ts/component/block/cover.tsx +++ b/src/ts/component/block/cover.tsx @@ -312,7 +312,7 @@ const BlockCover = observer(class BlockCover extends React.Component { - const object = S.Detail.get(rootId, rootId, [ 'coverScale' ], true); - const { coverScale } = object; - if (this.refDrag) { this.refDrag.setValue(coverScale); }; @@ -340,14 +335,18 @@ const BlockCover = observer(class BlockCover extends React.Component { if (!relation || !record || relation.isReadonlyValue || record.isReadonly) { return false; }; - if ((record.layout == I.ObjectLayout.Note) && (relation.relationKey == 'name')) { + if (U.Object.isNoteLayout(record.layout) && (relation.relationKey == 'name')) { return false; }; return true; diff --git a/src/ts/component/block/dataview/cell/text.tsx b/src/ts/component/block/dataview/cell/text.tsx index 56f1c47917..793b451c3f 100644 --- a/src/ts/component/block/dataview/cell/text.tsx +++ b/src/ts/component/block/dataview/cell/text.tsx @@ -144,7 +144,7 @@ const CellText = observer(class CellText extends React.Component }; content =
{name}
; } else { - if (isName && (record.layout == I.ObjectLayout.Note)) { + if (isName && U.Object.isNoteLayout(record.layout)) { content = {translate('commonEmpty')}; } else { content = ( @@ -201,7 +201,7 @@ const CellText = observer(class CellText extends React.Component }; if (!isEditing) { - if (record.layout == I.ObjectLayout.Note) { + if (U.Object.isNoteLayout(record.layout)) { value = record.snippet; } else { value = value || translate('defaultNamePage'); @@ -411,7 +411,7 @@ const CellText = observer(class CellText extends React.Component keyboard.setFocus(false); this.range = null; - if (JSON.stringify(record[relation.relationKey]) === JSON.stringify(this.value)) { + if (U.Common.compareJSON(record[relation.relationKey], this.value)) { this.setEditing(false); return; }; diff --git a/src/ts/component/block/dataview/controls.tsx b/src/ts/component/block/dataview/controls.tsx index 7a8263ea3c..debb87127d 100644 --- a/src/ts/component/block/dataview/controls.tsx +++ b/src/ts/component/block/dataview/controls.tsx @@ -5,7 +5,7 @@ import { observer } from 'mobx-react'; import { observable } from 'mobx'; import { SortableContainer, SortableElement } from 'react-sortable-hoc'; import { Icon, Button, Filter } from 'Component'; -import { C, I, S, U, analytics, Relation, keyboard, translate, Dataview } from 'Lib'; +import { C, I, S, U, analytics, Relation, keyboard, translate, Dataview, sidebar } from 'Lib'; import Head from './head'; interface Props extends I.ViewComponent { @@ -48,7 +48,7 @@ const Controls = observer(class Controls extends React.Component { const buttonWrapCn = [ 'buttonWrap' ]; const hasSources = (isCollection || getSources().length); const isAllowedObject = this.props.isAllowedObject(); - const isAllowedTemplate = U.Object.isAllowedTemplate(getTypeId()) || (target && U.Object.isSetLayout(target.layout) && hasSources); + const isAllowedTemplate = U.Object.isAllowedTemplate(getTypeId()) || (target && U.Object.isInSetLayouts(target.layout) && hasSources); const cmd = keyboard.cmdSymbol(); const tooltip = Dataview.getCreateTooltip(rootId, block.id, target.id, view.id); @@ -483,7 +483,7 @@ const Controls = observer(class Controls extends React.Component { const sideRight = node.find('#dataviewControlsSideRight'); const container = U.Common.getPageContainer(isPopup); const { left } = sideLeft.offset(); - const sw = $('#sidebarDummy').outerWidth(); + const sw = sidebar.getDummyWidth(); const cw = container.outerWidth(); const nw = node.outerWidth(); diff --git a/src/ts/component/block/dataview/view/graph.tsx b/src/ts/component/block/dataview/view/graph.tsx index 0ee9546a0b..8384b9add7 100644 --- a/src/ts/component/block/dataview/view/graph.tsx +++ b/src/ts/component/block/dataview/view/graph.tsx @@ -126,21 +126,11 @@ const ViewGraph = observer(class ViewGraph extends React.Component S.Detail.mapper(it)); - - U.Data.onSubscribe(J.Constant.subId.graph, 'id', J.Relation.graph, { - error: {}, - records: message.nodes, - dependencies: [], - counters: { total: message.nodes.length }, - }); - - this.resize(); + this.forceUpdate(); if (this.refGraph) { this.refGraph.init(); }; - - this.forceUpdate(); }); }; diff --git a/src/ts/component/block/dataview/view/grid/body/cell.tsx b/src/ts/component/block/dataview/view/grid/body/cell.tsx index 9532cd8620..03a15cfaf4 100644 --- a/src/ts/component/block/dataview/view/grid/body/cell.tsx +++ b/src/ts/component/block/dataview/view/grid/body/cell.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { observer } from 'mobx-react'; -import { I, S, J, Relation } from 'Lib'; +import { I, S, J, U, Relation } from 'Lib'; import { Cell, Icon } from 'Component'; interface Props { @@ -54,7 +54,7 @@ const BodyCell = observer(class BodyCell extends React.Component { }; let iconEdit = null; - if ((relationKey == 'name') && (record.layout != I.ObjectLayout.Note) && canEdit) { + if ((relationKey == 'name') && !U.Object.isNoteLayout(record.layout) && canEdit) { iconEdit = ; }; diff --git a/src/ts/component/block/dataview/view/grid/body/row.tsx b/src/ts/component/block/dataview/view/grid/body/row.tsx index 43b3ca4143..6e977fb4ba 100644 --- a/src/ts/component/block/dataview/view/grid/body/row.tsx +++ b/src/ts/component/block/dataview/view/grid/body/row.tsx @@ -21,7 +21,7 @@ const BodyRow = observer(class BodyRow extends React.Component { const str = relations.map(it => widths[it.relationKey] + 'px').concat([ 'auto' ]).join(' '); const cn = [ 'row', U.Data.layoutClass('', record.layout), ]; - if ((record.layout == I.ObjectLayout.Task) && record.done) { + if (U.Object.isTaskLayout(record.layout) && record.done) { cn.push('isDone'); }; if (record.isArchived) { diff --git a/src/ts/component/block/dataview/view/list/row.tsx b/src/ts/component/block/dataview/view/list/row.tsx index 9928a9c607..2d17dbdf96 100644 --- a/src/ts/component/block/dataview/view/list/row.tsx +++ b/src/ts/component/block/dataview/view/list/row.tsx @@ -26,7 +26,7 @@ const Row = observer(class Row extends React.Component { const { hideIcon } = view; const { done } = record; - if ((record.layout == I.ObjectLayout.Task) && done) { + if (U.Object.isTaskLayout(record.layout) && done) { cn.push('isDone'); }; diff --git a/src/ts/component/block/embed.tsx b/src/ts/component/block/embed.tsx index 442248146e..ae6e20629e 100644 --- a/src/ts/component/block/embed.tsx +++ b/src/ts/component/block/embed.tsx @@ -1,11 +1,12 @@ import * as React from 'react'; +import * as ReactDOM from 'react-dom'; import $ from 'jquery'; import raf from 'raf'; import DOMPurify from 'dompurify'; import Prism from 'prismjs'; import { instance as viz } from '@viz-js/viz'; import { observer } from 'mobx-react'; -import { Icon, Label, Editable, Dimmer, Select, Error } from 'Component'; +import { Icon, Label, Editable, Dimmer, Select, Error, MediaMermaid } from 'Component'; import { I, C, S, U, J, keyboard, focus, Renderer, translate } from 'Lib'; const katex = require('katex'); @@ -134,9 +135,10 @@ const BlockEmbed = observer(class BlockEmbed extends React.Component {select ?
{select}
: ''} -
+
+
-
{empty ?