diff --git a/.github/images/icons.png b/.github/images/icons.png new file mode 100644 index 000000000..1c6876aa0 Binary files /dev/null and b/.github/images/icons.png differ diff --git a/.github/images/screenshot.png b/.github/images/screenshot.png index 0cdce1582..3fa1eef75 100644 Binary files a/.github/images/screenshot.png and b/.github/images/screenshot.png differ diff --git a/.github/images/theme.png b/.github/images/theme.png new file mode 100644 index 000000000..1a4958c3b Binary files /dev/null and b/.github/images/theme.png differ diff --git a/.gitignore b/.gitignore index 822f3e769..cb1a07213 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ test/**/failures/*.png # Example example/macos/Podfile.lock example/macos/Flutter/GeneratedPluginRegistrant.swift +.DS_Store diff --git a/README.md b/README.md index e6ca90ac6..279b30665 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,60 @@ -# Flutter Yaru Widgets +# The official Flutter Yaru Theme and Widgets Suite -[![Pub Package](https://img.shields.io/pub/v/yaru_widgets.svg)](https://pub.dev/packages/yaru_widgets) +[![Pub Package](https://img.shields.io/pub/v/yaru_widgets.svg)](https://pub.dev/packages/yaru) + + +This repository and package contains: + +- flutter widgets useful for building desktop and web applications, following but also expanding the yaru theme for the gnome desktop in Ubuntu 22.04+. +- a theme for widgets from material.dart and from this repository +- a complete icon set for flutter apps following the yaru design language + +[LIVE DEMO IN YOUR BROWSER](https://ubuntu.github.io/yaru_widgets.dart/) -Common flutter widgets useful for building desktop and web applications. ![screenshot](https://raw.githubusercontent.com/ubuntu/yaru_widgets.dart/main/.github/images/screenshot.png) +![screenshot](https://raw.githubusercontent.com/ubuntu/yaru_widgets.dart/main/.github/images/icons.png) +![screenshot](https://raw.githubusercontent.com/ubuntu/yaru_widgets.dart/main/.github/images/theme.png) + + +# Contributing + +- for everything you need + - flutter + ```console + sudo apt -y install git curl cmake meson make clang libgtk-3-dev pkg-config && mkdir -p ~/development && cd ~/development && git clone https://github.com/flutter/flutter.git -b stable && echo 'export PATH="$PATH:$HOME/development/flutter/bin"' >> ~/.bashrc && source ~/.bashrc + ``` + - VsCode + + ```console + sudo snap install code --classic + ``` +- to work on the icons and then build the font, you need to install the [icon_font_generator](https://github.com/rbcprolabs/icon_font_generator) tool: -## What is this? + ```console + dart pub global activate -sgit https://github.com/Jupi007/icon_font_generator.git --git-ref yaru + ``` -A set of convenient widgets made with `material.dart` to easily build desktop and web applications. -Design references are the [Ubuntu Yaru theme suite](https://github.com/ubuntu/yaru) and the [Vanilla framework](https://vanillaframework.io/) by Canonical. +- Source SVGs files are located inside `./icons`. The final icon name is determined by **subfolder_name** + **icon_name** (Ex: `icons/mimetype/text-plain.svg` will be named `mimetype_text_plain`). -[LIVE DEMO](https://ubuntu.github.io/yaru_widgets.dart/) +- After modifying or adding icons, you must run the build script, which will generate the icon font: -## What it ain't + ``` console + ./build-icons.sh + ``` -This is not: + or run -- a new design language -- a hard-copy of GNOME's Adwaita + ```bash + yaru_icon_font_generator assets/icons assets/yaru_icons.otf --output-class-file=lib/src/yaru_icons.dart -r + ``` -## Why not build on `foundation.dart` and `widgets.dart`? +# Copying or Reusing -You may ask why `yaru_widgets.dart` is not built directly upon `foundation.dart` and `widgets.dart` like for example the [Chicago widget library](https://github.com/tvolkert/chicago). -The answer is that `material.dart` brings functionally everything that one needs to build applications. The sometimes polarizing elevation of the material design language can be easily adjusted with a flutter theme. There is simply no need to build a whole new widget library parallel to `material.dart` or `cupertino.dart` if only the visuals should be changed. Using `material.dart` as a base brings stability to your application and you can be sure that basic widgets, containers and constraints "just work". +The theme and widgets are licensed under Mozilla Public License Version 2.0. -So `yaru_widgets.dart` uses the completeness and the level of polish `material.dart` has and adds a set of widgets to it that are useful (but not necessarily the only way) to build desktop and web applications so they all have a consistent look and use the same design patterns. +The icons have mixed licencing. You are free to copy, redistribute and/or modify aspects of this work under the terms of each licence accordingly (unless otherwise specified). -## Tested themes +The icon assets (any and all source .svg files or rendered .ttf font) are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 License. -Themes inside [`yaru.dart`](https://github.com/ubuntu/yaru.dart) are the only Material themes tested with yaru_widgets and we do not currently recommend to use any other themes. +Included scripts are free software licensed under the terms of the GNU General Public License, version 3. diff --git a/assets/LICENSE.CCBYSA b/assets/LICENSE.CCBYSA new file mode 100644 index 000000000..02cfa4464 --- /dev/null +++ b/assets/LICENSE.CCBYSA @@ -0,0 +1,425 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the "Licensor." Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/assets/fonts/CONTRIBUTING.txt b/assets/fonts/CONTRIBUTING.txt new file mode 100644 index 000000000..15bdc0c0b --- /dev/null +++ b/assets/fonts/CONTRIBUTING.txt @@ -0,0 +1,21 @@ +The Ubuntu Font Family is very long-term endeavour, and the first time +that a professionally-designed font has been funded specifically with +the intent of being an on-going community expanded project: + + http://font.ubuntu.com/ + +Development of the Ubuntu Font Family is undertaken on Launchpad: + + http://launchpad.net/ubuntu-font-family/ + +and this is where milestones, bug management and releases are handled. + +Contributions are welcomed. Your work will be used on millions of +computers every single day! Following the initial bootstrapping of +Latin, Cyrillic, Greek, Arabic and Hebrew expansion will be undertaken +by font designers from the font design and Ubuntu communities. + +To ensure that the Ubuntu Font Family can be re-licensed to future +widely-used libre font licences, copyright assignment is being required: + + https://launchpad.net/~uff-contributors diff --git a/assets/fonts/FONTLOG.txt b/assets/fonts/FONTLOG.txt new file mode 100644 index 000000000..83022be7e --- /dev/null +++ b/assets/fonts/FONTLOG.txt @@ -0,0 +1,292 @@ +This is the FONTLOG file for the Ubuntu Font Family and attempts to follow +the recommendations at: http://scripts.sil.org/OFL-FAQ_web#43cecb44 + + +Overview + +The new Ubuntu Font Family was started to enable the personality of +Ubuntu to be seen and felt in every menu, button and dialog. +The typeface is sans-serif, uses OpenType features and is manually +hinted for clarity on desktop and mobile computing screens. + +The scope of the Ubuntu Font Family includes all the languages used by +the various Ubuntu users around the world in tune with Ubuntu's +philosophy which states that every user should be able to use their +software in the language of their choice. So the Ubuntu Font Family +project will be extended to cover many more written languages. + + +History + +The Ubuntu Font Family has been creating during 2010 and 2011. As of +September 2011 coverage is provided for Latin, Cyrillic and Greek across +Regular, Italic, Bold and Bold-Italic. Further work was uptaken during +2015. + + +ChangeLog + +2015-08-21 (Paul Sladen) Ubuntu Font Family version 0.83 + + Note: This release was created by binary patching from the v0.80 + release using the scripts in 'sources/patch-0.80-0.83/' to rebuild + the necessary tables. The release selectively updates only those + proportional .ttf font files exhibiting the bug below bug number; + the Ubuntu Mono monospace font files remain unchanged, being the + original version 0.80 ones. + + [Marc Foley] + * [Engineering] Fixed wrong characters appear in some mac apps. (LP: #1334363) + + +2011-09-22 (Paul Sladen) Ubuntu Font Family version 0.80 + + [Vincent Connare/Dalton Maag] + * Wish for addition of a monospaced member to the family (LP: #640382) + * Mono: No hinting yet - Ubuntu Beta Mono font looks jagged in + Netbeans and terrible with ClearType (LP: #820493) + * Emacs: choosing normal monospace font in Emacs but gives bold-italic + (LP: #791076) + * PUA: ensure that Ubuntu Circle of Friends logo is full size: (LP: #853855) + + U+E0FF becomes large size in proportionals, remains small width in + monospaces + + U+F0FF becomes small size (proportionals only) + + U+F200 is full ubuntu logomark (proportionals only) + + [Paul Sladen] + * Monospace: Patch Family Name to be "Ubuntu Mono" + * Monospace: Patch U+EFFD version debugging glyph to be '0.8' + + [Cody Boisclair] + * Monospace: Force .null HDMX advance to 500 + * Monospace: Remap ASCII box-drawing characters (LP: #788757) + + [Júlio Reis] + * Date corrections to 'FONTLOG' (LP: #836595) + +2011-03-08 (Paul Sladen) Ubuntu Font Family version 0.71.2 + + * (Production) Adjust Medium WeightClass to 500 (Md, MdIt) (LP: #730912) + +2011-03-07 (Paul Sladen) Ubuntu Font Family version 0.71.1 + + * (Design) Add Capitalised version of glyphs and kern. (Lt, LtIt, + Md, MdIt) DM (LP: #677446) + * (Design) Re-space and tighen Regular and Italic by amount specified + by Mark Shuttleworth (minus 4 FUnits). (Rg, It) (LP: #677149) + * (Design) Design: Latin (U+0192) made straight more like l/c f with + tail (LP: #670768) + * (Design) (U+01B3) should have hook on right, as the lowercase + (U+01B4) (LP: #681026) + * (Design) Tail of Light Italic germandbls, longs and lowercase 'f' + to match Italic/BoldItalic (LP: #623925) + * (Production) Update feature (Lt, LtIt, Md, MdIt). DM + (LP: #676538, #676539) + * (Production) Remove Bulgarian locl feature for Italics. (LP: #708578) + * (Production) Update Description information with new string: + "The Ubuntu Font Family are libre fonts funded by Canonical Ltd + on behalf of the Ubuntu project. The font design work and + technical implementation is being undertaken by Dalton Maag. The + typeface is sans-serif, uses OpenType features and is manually + hinted for clarity on desktop and mobile computing screens. The + scope of the Ubuntu Font Family includes all the languages used + by the various Ubuntu users around the world in tune with + Ubuntu's philosophy which states that every user should be able + to use their software in the language of their choice. The + project is ongoing, and we expect the family will be extended to + cover many written languages in the coming years." + (Rg, It, Bd, BdIt, Lt, LtIt, Md, MdIt) (LP: #690590) + * (Production) Pixel per em indicator added at U+F000 (Lt, LtIt, Md, + MdIt) (LP: #615787) + * (Production) Version number indicator added at U+EFFD (Lt, LtIt, Md, + MdIt) (LP: #640623) + * (Production) fstype bit set to 0 - Editable (Lt, LtIt, Md, MdIt) + (LP: #648406) + * (Production) Localisation of name table has been removed because + of problems with Mac OS/X interpretation of localisation. DM + (LP: #730785) + * (Hinting) Regular '?' dot non-circular (has incorrect control + value). (LP: #654336) + * (Hinting) Too much space after latin capital 'G' in 13pt + regular. Now reduced. (LP: #683437) + * (Hinting) Balance Indian Rupee at 18,19pt (LP: #662177) + * (Hinting) Make Regular '£' less ambiguous at 13-15 ppm (LP: #685562) + * (Hinting) Regular capital 'W' made symmetrical at 31 ppem (LP: #686168) + +2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70.1 + + Packaging, rebuilt from '2010-12-08 UbuntuFontsSourceFiles_070.zip': + * (Midstream) Fstype bit != 0 (LP: #648406) + * (Midstream) Add unit test to validate fstype bits (LP: #648406) + * (Midstream) Add unit test to validate licence + +2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70 + + Release notes 0.70: + * (Design) Add Capitalised version of glyphs and kern. (Rg, It, Bd, + BdIt) DM (LP: #676538, #677446) + * (Design) Give acute and grave a slight upright move to more match + the Hungarian double acute angle. (Rg, It, Bd, BdIt) (LP: #656647) + * (Design) Shift Bold Italic accent glyphs to be consistent with the + Italic. (BdIt only) DM (LP: #677449) + * (Design) Check spacing and kerning of dcaron, lcaron and + tcaron. (Rg, It, Bd, BdIt) (LP: #664722) + * (Design) Add positive kerning to () {} [] to open out the + combinations so they are less like a closed box. (Rg, It, Bd, + BdIt) (LP: #671228) + * (Design) Change design of acute.asc and check highest points (Bd + and BdIt only) DM + * (Production) Update feature. DM (LP: #676538, #676539) + * (Production) Remove Romanian locl feature. (Rg, It, Bd, BdIt) + (LP: #635615) + * (Production) Update Copyright information with new + strings. "Copyright 2010 Canonical Ltd. Licensed under the Ubuntu + Font Licence 1.0" Trademark string "Ubuntu and Canonical are + registered trademarks of Canonical Ltd." (Rg, It, Bd, BdIt) DM + (LP: #677450) + * (Design) Check aligning of hyphen, math signs em, en, check braces + and other brackets. 16/11 (LP: #676465) + * (Production) Pixel per em indicator added at U+F000 (Rg, It, Bd, + BdIt) (LP: #615787) + * (Production) Version number indicator added at U+EFFD (Rg, It, Bd, + BdIt) (LP: #640623) + * (Production) fstype bit set to 0 - Editable (Rg, It, Bd, BdIt) + (LP: #648406) + +2010-10-05 (Paul Sladen) Ubuntu Font Family version 0.69 + + [Dalton Maag] + * Italic, + - Hinting on lowercase Italic l amended 19ppm (LP: #632451) + - Hinting on lowercase Italic u amended 12ppm (LP: #626376) + + * Regular, Italic, Bold, BoldItalic + - New Rupee Sign added @ U+20B9 (LP: #645987) + - Ubuntu Roundel added @ U+E0FF (LP: #651606) + + [Paul Sladen] + * All + - Removed "!ubu" GSUB.calt ligature for U+E0FF (LP: #651606) + + +Acknowledgements + +If you make modifications be sure to add your name (N), email (E), +web-address (if you have one) (W) and description (D). This list is in +alphabetical order. + +N: Ryan Abdullah +W: http://www.rayan.de/ +D: Arabic calligraphy and design in collaboration with Dalton Maag +D: Arabic testing + +N: Cody Boisclair +D: Monospace low-level debugging and patching ('fixboxdrawing-ft.py') + +N: Amélie Bonet +W: http://ameliebonet.com/ +D: Type design with Dalton Maag, particularly Ubuntu Mono and Ubuntu Condensed + +N: Jason Campbell +W: http://www.campbellgraphics.com/design/fonts.shtml +D: Monospace hinting (first phase) at Dalton Maag + +N: Pilar Cano +W: http://www.pilarcano.com/ +D: Hebrew realisation with Dalton Maag + +N: Fernando Caro +D: Type design with Dalton Maag, particularly Ubuntu Condensed + +N: Ron Carpenter +W: http://www.daltonmaag.com/ +D: Type design with Dalton Maag +D: Arabic realisation in collaboration with Ryan Abdullah + +N: Vincent Connare +W: http://www.connare.com/ +D: Type design, and engineering with Dalton Maag +D: Monospace hinting (second phase) at Dalton Maag + +N: Dave Crossland +E: dave@understandingfonts.com +W: http://understandingfonts.com/ +D: Documentation and libre licensing guidance +D: Google Webfont integration at Google + +N: Steve Edwards +W: http://www.madebymake.com/ +D: font.ubuntu.com revamp implementation with Canonical Web Team + +N: Iain Farrell +W: http://www.flickr.com/photos/iain +D: Ubuntu Font Family delivery for the Ubuntu UX team at Canonical + +N: Marc Foley +W: http://www.marcfoley.co/ +D: Font Engineer at Dalton Maag for the 2015 updates + +N: Shiraaz Gabru +W: http://www.daltonmaag.com/ +D: Ubuntu Font Family project management at Dalton Maag + +N: Marcus Haslam +W: http://design.canonical.com/author/marcus-haslam/ +D: Creative inspiration + +N: Ben Laenen +D: Inspiration behind the pixels-per-em (PPEM) readout debugging glyph at U+F000 + (for this font the concept was re-implemented from scratch by Dalton-Maag) + +N: Bruno Maag +W: http://www.daltonmaag.com/ +D: Stylistic direction of the Ubuntu Font Family, as head of Dalton Maag + +N: Ivanka Majic +W: http://www.ivankamajic.com/ +D: Guiding the UX team and Cyrillic feedback + +N: David Marshall +W: http://www.daltonmaag.com/ +D: Technical guidance and administration at Dalton Maag + +N: Malcolm Wooden +W: http://www.daltonmaag.com/ +D: Font Engineering at Dalton Maag + +N: Lukas Paltram +W: http://www.daltonmaag.com/ +D: Type design with Dalton Maag + +N: Júlio Reis +D: Date fixes to the documentation + +N: Rodrigo Rivas +D: Indian Rupee Sign glyph + +N: Mark Shuttleworth +E: mark@ubuntu.com +W: http://www.markshuttleworth.com/ +D: Executive quality-control and funding + +N: Paul Sladen +E: ubuntu@paul.sladen.org +W: http://www.paul.sladen.org/ +D: Bug triaging, packaging at Ubuntu and Canonical + +N: Nicolas Spalinger +W: http://planet.open-fonts.org +D: Continuous guidance on libre/open font licensing, best practises in source + tree layout, release and packaging (pkg-fonts Debian team) + +N: Kenneth Wimer +D: Initial PPA packaging + +* Canonical Ltd is the primary commercial sponsor of the Ubuntu and + Kubuntu operating systems +* Dalton Maag are a custom type foundry headed by Bruno Maag + +For further documentation, information on contributors, source code +downloads and those involved with the Ubuntu Font Family, visit: + + http://font.ubuntu.com/ diff --git a/assets/fonts/LICENCE-FAQ.txt b/assets/fonts/LICENCE-FAQ.txt new file mode 100644 index 000000000..776a25edf --- /dev/null +++ b/assets/fonts/LICENCE-FAQ.txt @@ -0,0 +1,177 @@ + Ubuntu Font Family Licensing FAQ + + Stylistic Foundations + + The Ubuntu Font Family is the first time that a libre typeface has been + designed professionally and explicitly with the intent of developing a + public and long-term community-based development process. + + When developing an open project, it is generally necessary to have firm + foundations: a font needs to maintain harmony within itself even across + many type designers and writing systems. For the [1]Ubuntu Font Family, + the process has been guided with the type foundry Dalton Maag setting + the project up with firm stylistic foundation covering several + left-to-right scripts: Latin, Greek and Cyrillic; and right-to-left + scripts: Arabic and Hebrew (due in 2011). + + With this starting point the community will, under the supervision of + [2]Canonical and [3]Dalton Maag, be able to build on the existing font + sources to expand their character coverage. Ultimately everybody will + be able to use the Ubuntu Font Family in their own written languages + across the whole of Unicode (and this will take some time!). + + Licensing + + The licence chosen by any free software project is one of the + foundational decisions that sets out how derivatives and contributions + can occur, and in turn what kind of community will form around the + project. + + Using a licence that is compatible with other popular licences is a + powerful constraint because of the [4]network effects: the freedom to + share improvements between projects allows free software to reach + high-quality over time. Licence-proliferation leads to many + incompatible licences, undermining the network effect, the freedom to + share and ultimately making the libre movement that Ubuntu is a part of + less effective. For all kinds of software, writing a new licence is not + to be taken lightly and is a choice that needs to be thoroughly + justified if this path is taken. + + Today it is not clear to Canonical what the best licence for a font + project like the Ubuntu Font Family is: one that starts life designed + by professionals and continues with the full range of community + development, from highly commercial work in new directions to curious + beginners' experimental contributions. The fast and steady pace of the + Ubuntu release cycle means that an interim libre licence has been + necessary to enable the consideration of the font family as part of + Ubuntu 10.10 operating system release. + + Before taking any decision on licensing, Canonical as sponsor and + backer of the project has reviewed the many existing licenses used for + libre/open fonts and engaged the stewards of the most popular licenses + in detailed discussions. The current interim licence is the first step + in progressing the state-of-the-art in licensing for libre/open font + development. + + The public discussion must now involve everyone in the (comparatively + new) area of the libre/open font community; including font users, + software freedom advocates, open source supporters and existing libre + font developers. Most importantly, the minds and wishes of professional + type designers considering entering the free software business + community must be taken on board. + + Conversations and discussion has taken place, privately, with + individuals from the following groups (generally speaking personally on + behalf of themselves, rather than their affiliations): + * [5]SIL International + * [6]Open Font Library + * [7]Software Freedom Law Center + * [8]Google Font API + + Document embedding + + One issue highlighted early on in the survey of existing font licences + is that of document embedding. Almost all font licences, both free and + unfree, permit embedding a font into a document to a certain degree. + Embedding a font with other works that make up a document creates a + "combined work" and copyleft would normally require the whole document + to be distributed under the terms of the font licence. As beautiful as + the font might be, such a licence makes a font too restrictive for + useful general purpose digital publishing. + + The situation is not entirely unique to fonts and is encountered also + with tools such as GNU Bison: a vanilla GNU GPL licence would require + anything generated with Bison to be made available under the terms of + the GPL as well. To avoid this, Bison is [9]published with an + additional permission to the GPL which allows the output of Bison to be + made available under any licence. + + The conflict between licensing of fonts and licensing of documents, is + addressed in two popular libre font licences, the SIL OFL and GNU GPL: + * [10]SIL Open Font Licence: When OFL fonts are embedded in a + document, the OFL's terms do not apply to that document. (See + [11]OFL-FAQ for details. + * [12]GPL Font Exception: The situation is resolved by granting an + additional permission to allow documents to not be covered by the + GPL. (The exception is being reviewed). + + The Ubuntu Font Family must also resolve this conflict, ensuring that + if the font is embedded and then extracted it is once again clearly + under the terms of its libre licence. + + Long-term licensing + + Those individuals involved, especially from Ubuntu and Canonical, are + interested in finding a long-term libre licence that finds broad favour + across the whole libre/open font community. The deliberation during the + past months has been on how to licence the Ubuntu Font Family in the + short-term, while knowingly encouraging everyone to pursue a long-term + goal. + * [13]Copyright assignment will be required so that the Ubuntu Font + Family's licensing can be progressively expanded to one (or more) + licences, as best practice continues to evolve within the + libre/open font community. + * Canonical will support and fund legal work on libre font licensing. + It is recognised that the cost and time commitments required are + likely to be significant. We invite other capable parties to join + in supporting this activity. + + The GPL version 3 (GPLv3) will be used for Ubuntu Font Family build + scripts and the CC-BY-SA for associated documentation and non-font + content: all items which do not end up embedded in general works and + documents. + +Ubuntu Font Licence + + For the short-term only, the initial licence is the [14]Ubuntu Font + License (UFL). This is loosely inspired from the work on the SIL + OFL 1.1, and seeks to clarify the issues that arose during discussions + and legal review, from the perspective of the backers, Canonical Ltd. + Those already using established licensing models such as the GPL, OFL + or Creative Commons licensing should have no worries about continuing + to use them. The Ubuntu Font Licence (UFL) and the SIL Open Font + Licence (SIL OFL) are not identical and should not be confused with + each other. Please read the terms precisely. The UFL is only intended + as an interim license, and the overriding aim is to support the + creation of a more suitable and generic libre font licence. As soon as + such a licence is developed, the Ubuntu Font Family will migrate to + it—made possible by copyright assignment in the interium. Between the + OFL 1.1, and the UFL 1.0, the following changes are made to produce the + Ubuntu Font Licence: + * Clarification: + + 1. Document embedding (see [15]embedding section above). + 2. Apply at point of distribution, instead of receipt + 3. Author vs. copyright holder disambiguation (type designers are + authors, with the copyright holder normally being the funder) + 4. Define "Propagate" (for internationalisation, similar to the GPLv3) + 5. Define "Substantially Changed" + 6. Trademarks are explicitly not transferred + 7. Refine renaming requirement + + Streamlining: + 8. Remove "not to be sold separately" clause + 9. Remove "Reserved Font Name(s)" declaration + + A visual demonstration of how these points were implemented can be + found in the accompanying coloured diff between SIL OFL 1.1 and the + Ubuntu Font Licence 1.0: [16]ofl-1.1-ufl-1.0.diff.html + +References + + 1. http://font.ubuntu.com/ + 2. http://www.canonical.com/ + 3. http://www.daltonmaag.com/ + 4. http://en.wikipedia.org/wiki/Network_effect + 5. http://scripts.sil.org/ + 6. http://openfontlibrary.org/ + 7. http://www.softwarefreedom.org/ + 8. http://code.google.com/webfonts + 9. http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF + 10. http://scripts.sil.org/OFL_web + 11. http://scripts.sil.org/OFL-FAQ_web + 12. http://www.gnu.org/licenses/gpl-faq.html#FontException + 13. https://launchpad.net/~uff-contributors + 14. http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt + 15. http://font.ubuntu.com/ufl/FAQ.html#embedding + 16. http://font.ubuntu.com/ufl/ofl-1.1-ufl-1.0.diff.html diff --git a/assets/fonts/LICENCE.txt b/assets/fonts/LICENCE.txt new file mode 100644 index 000000000..ae78a8f94 --- /dev/null +++ b/assets/fonts/LICENCE.txt @@ -0,0 +1,96 @@ +------------------------------- +UBUNTU FONT LICENCE Version 1.0 +------------------------------- + +PREAMBLE +This licence allows the licensed fonts to be used, studied, modified and +redistributed freely. The fonts, including any derivative works, can be +bundled, embedded, and redistributed provided the terms of this licence +are met. The fonts and derivatives, however, cannot be released under +any other licence. The requirement for fonts to remain under this +licence does not require any document created using the fonts or their +derivatives to be published under this licence, as long as the primary +purpose of the document is not to be a vehicle for the distribution of +the fonts. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this licence and clearly marked as such. This may +include source files, build scripts and documentation. + +"Original Version" refers to the collection of Font Software components +as received under this licence. + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to +a new environment. + +"Copyright Holder(s)" refers to all individuals and companies who have a +copyright ownership of the Font Software. + +"Substantially Changed" refers to Modified Versions which can be easily +identified as dissimilar to the Font Software by users of the Font +Software comparing the Original Version with the Modified Version. + +To "Propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification and with or without charging +a redistribution fee), making available to the public, and in some +countries other activities as well. + +PERMISSION & CONDITIONS +This licence does not grant any rights under trademark law and all such +rights are reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to propagate the Font Software, subject to +the below conditions: + +1) Each copy of the Font Software must contain the above copyright +notice and this licence. These can be included either as stand-alone +text files, human-readable headers or in the appropriate machine- +readable metadata fields within text or binary files as long as those +fields can be easily viewed by the user. + +2) The font name complies with the following: +(a) The Original Version must retain its name, unmodified. +(b) Modified Versions which are Substantially Changed must be renamed to +avoid use of the name of the Original Version or similar names entirely. +(c) Modified Versions which are not Substantially Changed must be +renamed to both (i) retain the name of the Original Version and (ii) add +additional naming elements to distinguish the Modified Version from the +Original Version. The name of such Modified Versions must be the name of +the Original Version, with "derivative X" where X represents the name of +the new work, appended to that name. + +3) The name(s) of the Copyright Holder(s) and any contributor to the +Font Software shall not be used to promote, endorse or advertise any +Modified Version, except (i) as required by this licence, (ii) to +acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with +their explicit written permission. + +4) The Font Software, modified or unmodified, in part or in whole, must +be distributed entirely under this licence, and must not be distributed +under any other licence. The requirement for fonts to remain under this +licence does not affect any document created using the Font Software, +except any version of the Font Software extracted from a document +created using the Font Software may only be distributed under this +licence. + +TERMINATION +This licence becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/README.txt b/assets/fonts/README.txt new file mode 100644 index 000000000..56028212d --- /dev/null +++ b/assets/fonts/README.txt @@ -0,0 +1,16 @@ + ---------------------- + Ubuntu Font Family + ====================== + +The Ubuntu Font Family are a set of matching new libre/open fonts in +development during 2010--2011. And with further expansion work and +bug fixing during 2015. The development is being funded by +Canonical Ltd on behalf the wider Free Software community and the +Ubuntu project. The technical font design work and implementation is +being undertaken by Dalton Maag. + +Both the final font Truetype/OpenType files and the design files used +to produce the font family are distributed under an open licence and +you are expressly encouraged to experiment, modify, share and improve. + + http://font.ubuntu.com/ diff --git a/assets/fonts/TRADEMARKS.txt b/assets/fonts/TRADEMARKS.txt new file mode 100644 index 000000000..d34265bc8 --- /dev/null +++ b/assets/fonts/TRADEMARKS.txt @@ -0,0 +1,4 @@ +Ubuntu and Canonical are registered trademarks of Canonical Ltd. + +The licence accompanying these works does not grant any rights +under trademark law and all such rights are reserved. diff --git a/assets/fonts/Ubuntu-B.ttf b/assets/fonts/Ubuntu-B.ttf new file mode 100644 index 000000000..9ac950917 Binary files /dev/null and b/assets/fonts/Ubuntu-B.ttf differ diff --git a/assets/fonts/Ubuntu-BI.ttf b/assets/fonts/Ubuntu-BI.ttf new file mode 100644 index 000000000..f76901a0b Binary files /dev/null and b/assets/fonts/Ubuntu-BI.ttf differ diff --git a/assets/fonts/Ubuntu-L.ttf b/assets/fonts/Ubuntu-L.ttf new file mode 100644 index 000000000..831dec9ac Binary files /dev/null and b/assets/fonts/Ubuntu-L.ttf differ diff --git a/assets/fonts/Ubuntu-LI.ttf b/assets/fonts/Ubuntu-LI.ttf new file mode 100644 index 000000000..160d87b25 Binary files /dev/null and b/assets/fonts/Ubuntu-LI.ttf differ diff --git a/assets/fonts/Ubuntu-M.ttf b/assets/fonts/Ubuntu-M.ttf new file mode 100644 index 000000000..18b3ad970 Binary files /dev/null and b/assets/fonts/Ubuntu-M.ttf differ diff --git a/assets/fonts/Ubuntu-MI.ttf b/assets/fonts/Ubuntu-MI.ttf new file mode 100644 index 000000000..74007c2b0 Binary files /dev/null and b/assets/fonts/Ubuntu-MI.ttf differ diff --git a/assets/fonts/Ubuntu-R.ttf b/assets/fonts/Ubuntu-R.ttf new file mode 100644 index 000000000..f5e1c9954 Binary files /dev/null and b/assets/fonts/Ubuntu-R.ttf differ diff --git a/assets/fonts/Ubuntu-RI.ttf b/assets/fonts/Ubuntu-RI.ttf new file mode 100644 index 000000000..ddf1b2848 Binary files /dev/null and b/assets/fonts/Ubuntu-RI.ttf differ diff --git a/assets/fonts/copyright.txt b/assets/fonts/copyright.txt new file mode 100644 index 000000000..77340703a --- /dev/null +++ b/assets/fonts/copyright.txt @@ -0,0 +1,5 @@ +Copyright 2010,2011 Canonical Ltd. + +This Font Software is licensed under the Ubuntu Font Licence, Version +1.0. https://launchpad.net/ubuntu-font-licence + diff --git a/assets/icons/address-book/_.svg b/assets/icons/address-book/_.svg new file mode 100644 index 000000000..a6eef9b86 --- /dev/null +++ b/assets/icons/address-book/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/address-book/filled-new.svg b/assets/icons/address-book/filled-new.svg new file mode 100644 index 000000000..971935201 --- /dev/null +++ b/assets/icons/address-book/filled-new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/address-book/filled.svg b/assets/icons/address-book/filled.svg new file mode 100644 index 000000000..8fc28e2e6 --- /dev/null +++ b/assets/icons/address-book/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/address-book/new.svg b/assets/icons/address-book/new.svg new file mode 100644 index 000000000..ccc4f433a --- /dev/null +++ b/assets/icons/address-book/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/app-grid.svg b/assets/icons/app-grid.svg new file mode 100644 index 000000000..2bb499202 --- /dev/null +++ b/assets/icons/app-grid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/appliance-filled.svg b/assets/icons/appliance-filled.svg new file mode 100644 index 000000000..4e90d82b0 --- /dev/null +++ b/assets/icons/appliance-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/appliance.svg b/assets/icons/appliance.svg new file mode 100644 index 000000000..d7b927a7e --- /dev/null +++ b/assets/icons/appliance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/application/_.svg b/assets/icons/application/_.svg new file mode 100644 index 000000000..a182cfe6e --- /dev/null +++ b/assets/icons/application/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/application/bag-filled.svg b/assets/icons/application/bag-filled.svg new file mode 100644 index 000000000..040e748ea --- /dev/null +++ b/assets/icons/application/bag-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/application/bag.svg b/assets/icons/application/bag.svg new file mode 100644 index 000000000..f511d42a8 --- /dev/null +++ b/assets/icons/application/bag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/down-outlined.svg b/assets/icons/arrow/down-outlined.svg new file mode 100644 index 000000000..95a226f0d --- /dev/null +++ b/assets/icons/arrow/down-outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/down.svg b/assets/icons/arrow/down.svg new file mode 100644 index 000000000..2720bfeea --- /dev/null +++ b/assets/icons/arrow/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/left-outlined.svg b/assets/icons/arrow/left-outlined.svg new file mode 100644 index 000000000..5069b7ee3 --- /dev/null +++ b/assets/icons/arrow/left-outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/left.svg b/assets/icons/arrow/left.svg new file mode 100644 index 000000000..b746d3516 --- /dev/null +++ b/assets/icons/arrow/left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/right-outlined.svg b/assets/icons/arrow/right-outlined.svg new file mode 100644 index 000000000..63bdd0936 --- /dev/null +++ b/assets/icons/arrow/right-outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/right.svg b/assets/icons/arrow/right.svg new file mode 100644 index 000000000..c170637b2 --- /dev/null +++ b/assets/icons/arrow/right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/up-outlined.svg b/assets/icons/arrow/up-outlined.svg new file mode 100644 index 000000000..dc76a84b8 --- /dev/null +++ b/assets/icons/arrow/up-outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/arrow/up.svg b/assets/icons/arrow/up.svg new file mode 100644 index 000000000..8ccddbfa2 --- /dev/null +++ b/assets/icons/arrow/up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/audio-card-filled.svg b/assets/icons/audio-card-filled.svg new file mode 100644 index 000000000..e48496ccb --- /dev/null +++ b/assets/icons/audio-card-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/audio-card.svg b/assets/icons/audio-card.svg new file mode 100644 index 000000000..8a3509d0f --- /dev/null +++ b/assets/icons/audio-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/1-charging.svg b/assets/icons/battery/1-charging.svg new file mode 100644 index 000000000..0380fe99f --- /dev/null +++ b/assets/icons/battery/1-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/1.svg b/assets/icons/battery/1.svg new file mode 100644 index 000000000..319d534b0 --- /dev/null +++ b/assets/icons/battery/1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/2-charging.svg b/assets/icons/battery/2-charging.svg new file mode 100644 index 000000000..6c936be33 --- /dev/null +++ b/assets/icons/battery/2-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/2.svg b/assets/icons/battery/2.svg new file mode 100644 index 000000000..a97864404 --- /dev/null +++ b/assets/icons/battery/2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/3-charging.svg b/assets/icons/battery/3-charging.svg new file mode 100644 index 000000000..cb228e370 --- /dev/null +++ b/assets/icons/battery/3-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/3.svg b/assets/icons/battery/3.svg new file mode 100644 index 000000000..5aa5c0854 --- /dev/null +++ b/assets/icons/battery/3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/4-charging.svg b/assets/icons/battery/4-charging.svg new file mode 100644 index 000000000..c0589fd98 --- /dev/null +++ b/assets/icons/battery/4-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/4.svg b/assets/icons/battery/4.svg new file mode 100644 index 000000000..9724d48fa --- /dev/null +++ b/assets/icons/battery/4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/5-charging.svg b/assets/icons/battery/5-charging.svg new file mode 100644 index 000000000..ac2cd8990 --- /dev/null +++ b/assets/icons/battery/5-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/5.svg b/assets/icons/battery/5.svg new file mode 100644 index 000000000..56592cd19 --- /dev/null +++ b/assets/icons/battery/5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/6-charging.svg b/assets/icons/battery/6-charging.svg new file mode 100644 index 000000000..a0b74b328 --- /dev/null +++ b/assets/icons/battery/6-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/6.svg b/assets/icons/battery/6.svg new file mode 100644 index 000000000..a61ae83ee --- /dev/null +++ b/assets/icons/battery/6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/7-charging.svg b/assets/icons/battery/7-charging.svg new file mode 100644 index 000000000..d9b75587a --- /dev/null +++ b/assets/icons/battery/7-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/7.svg b/assets/icons/battery/7.svg new file mode 100644 index 000000000..2554d7483 --- /dev/null +++ b/assets/icons/battery/7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/8-charging.svg b/assets/icons/battery/8-charging.svg new file mode 100644 index 000000000..0b6164a71 --- /dev/null +++ b/assets/icons/battery/8-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/8.svg b/assets/icons/battery/8.svg new file mode 100644 index 000000000..0893b041f --- /dev/null +++ b/assets/icons/battery/8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/9-charging.svg b/assets/icons/battery/9-charging.svg new file mode 100644 index 000000000..5a20b4a75 --- /dev/null +++ b/assets/icons/battery/9-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/9.svg b/assets/icons/battery/9.svg new file mode 100644 index 000000000..11585f2ba --- /dev/null +++ b/assets/icons/battery/9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/empty-charging.svg b/assets/icons/battery/empty-charging.svg new file mode 100644 index 000000000..e989d4411 --- /dev/null +++ b/assets/icons/battery/empty-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/empty.svg b/assets/icons/battery/empty.svg new file mode 100644 index 000000000..7e58e3b08 --- /dev/null +++ b/assets/icons/battery/empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/full-charging.svg b/assets/icons/battery/full-charging.svg new file mode 100644 index 000000000..0e7517997 --- /dev/null +++ b/assets/icons/battery/full-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/full.svg b/assets/icons/battery/full.svg new file mode 100644 index 000000000..3d5096da5 --- /dev/null +++ b/assets/icons/battery/full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/missing.svg b/assets/icons/battery/missing.svg new file mode 100644 index 000000000..6c644ae8f --- /dev/null +++ b/assets/icons/battery/missing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/battery/warning.svg b/assets/icons/battery/warning.svg new file mode 100644 index 000000000..c202ae97d --- /dev/null +++ b/assets/icons/battery/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/beaker-filled.svg b/assets/icons/beaker-filled.svg new file mode 100644 index 000000000..69481f536 --- /dev/null +++ b/assets/icons/beaker-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/beaker.svg b/assets/icons/beaker.svg new file mode 100644 index 000000000..eb4645668 --- /dev/null +++ b/assets/icons/beaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/bell-filled.svg b/assets/icons/bell-filled.svg new file mode 100644 index 000000000..18dcc04af --- /dev/null +++ b/assets/icons/bell-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/bell.svg b/assets/icons/bell.svg new file mode 100644 index 000000000..1cef849a1 --- /dev/null +++ b/assets/icons/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/bluetooth.svg b/assets/icons/bluetooth.svg new file mode 100644 index 000000000..8679f8d3e --- /dev/null +++ b/assets/icons/bluetooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/bold.svg b/assets/icons/bold.svg new file mode 100644 index 000000000..acfa059f8 --- /dev/null +++ b/assets/icons/bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/book-filled.svg b/assets/icons/book-filled.svg new file mode 100644 index 000000000..c98accc68 --- /dev/null +++ b/assets/icons/book-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/book.svg b/assets/icons/book.svg new file mode 100644 index 000000000..872714481 --- /dev/null +++ b/assets/icons/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/bookmark-filled.svg b/assets/icons/bookmark-filled.svg new file mode 100644 index 000000000..f7e869154 --- /dev/null +++ b/assets/icons/bookmark-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/bookmark.svg b/assets/icons/bookmark.svg new file mode 100644 index 000000000..f32486daf --- /dev/null +++ b/assets/icons/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calculator.svg b/assets/icons/calculator.svg new file mode 100644 index 000000000..503c713f0 --- /dev/null +++ b/assets/icons/calculator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/_.svg b/assets/icons/calendar/_.svg new file mode 100644 index 000000000..d627cd464 --- /dev/null +++ b/assets/icons/calendar/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/day-filled.svg b/assets/icons/calendar/day-filled.svg new file mode 100644 index 000000000..b8251e2ec --- /dev/null +++ b/assets/icons/calendar/day-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/day.svg b/assets/icons/calendar/day.svg new file mode 100644 index 000000000..79b15563b --- /dev/null +++ b/assets/icons/calendar/day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/error-filled.svg b/assets/icons/calendar/error-filled.svg new file mode 100644 index 000000000..7007a5ef3 --- /dev/null +++ b/assets/icons/calendar/error-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/error.svg b/assets/icons/calendar/error.svg new file mode 100644 index 000000000..58c597def --- /dev/null +++ b/assets/icons/calendar/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/filled.svg b/assets/icons/calendar/filled.svg new file mode 100644 index 000000000..31b6144da --- /dev/null +++ b/assets/icons/calendar/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/important-filled.svg b/assets/icons/calendar/important-filled.svg new file mode 100644 index 000000000..e8754ae3a --- /dev/null +++ b/assets/icons/calendar/important-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/important.svg b/assets/icons/calendar/important.svg new file mode 100644 index 000000000..ad53c003b --- /dev/null +++ b/assets/icons/calendar/important.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/month-filled.svg b/assets/icons/calendar/month-filled.svg new file mode 100644 index 000000000..fbd17f4d3 --- /dev/null +++ b/assets/icons/calendar/month-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/month.svg b/assets/icons/calendar/month.svg new file mode 100644 index 000000000..74b8c3fe1 --- /dev/null +++ b/assets/icons/calendar/month.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/new-filled.svg b/assets/icons/calendar/new-filled.svg new file mode 100644 index 000000000..fc088fb62 --- /dev/null +++ b/assets/icons/calendar/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/new.svg b/assets/icons/calendar/new.svg new file mode 100644 index 000000000..b71998d8b --- /dev/null +++ b/assets/icons/calendar/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/warning-filled.svg b/assets/icons/calendar/warning-filled.svg new file mode 100644 index 000000000..a7fdd5ce8 --- /dev/null +++ b/assets/icons/calendar/warning-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/warning.svg b/assets/icons/calendar/warning.svg new file mode 100644 index 000000000..948a700ad --- /dev/null +++ b/assets/icons/calendar/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/week-filled.svg b/assets/icons/calendar/week-filled.svg new file mode 100644 index 000000000..08791b424 --- /dev/null +++ b/assets/icons/calendar/week-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/calendar/week.svg b/assets/icons/calendar/week.svg new file mode 100644 index 000000000..9c11a2a1f --- /dev/null +++ b/assets/icons/calendar/week.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/call/incoming.svg b/assets/icons/call/incoming.svg new file mode 100644 index 000000000..27e786890 --- /dev/null +++ b/assets/icons/call/incoming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/call/outgoing.svg b/assets/icons/call/outgoing.svg new file mode 100644 index 000000000..48a8e0a5c --- /dev/null +++ b/assets/icons/call/outgoing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/call/start.svg b/assets/icons/call/start.svg new file mode 100644 index 000000000..1d2ef2132 --- /dev/null +++ b/assets/icons/call/start.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/call/stop.svg b/assets/icons/call/stop.svg new file mode 100644 index 000000000..87d8ba947 --- /dev/null +++ b/assets/icons/call/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/camera/photo-filed.svg b/assets/icons/camera/photo-filed.svg new file mode 100644 index 000000000..2bd62cf05 --- /dev/null +++ b/assets/icons/camera/photo-filed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/camera/photo.svg b/assets/icons/camera/photo.svg new file mode 100644 index 000000000..ef7606dc6 --- /dev/null +++ b/assets/icons/camera/photo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/camera/video-filed.svg b/assets/icons/camera/video-filed.svg new file mode 100644 index 000000000..74e61a9c2 --- /dev/null +++ b/assets/icons/camera/video-filed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/camera/video.svg b/assets/icons/camera/video.svg new file mode 100644 index 000000000..0a4601855 --- /dev/null +++ b/assets/icons/camera/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/camera/web-filled.svg b/assets/icons/camera/web-filled.svg new file mode 100644 index 000000000..3058c799c --- /dev/null +++ b/assets/icons/camera/web-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/camera/web.svg b/assets/icons/camera/web.svg new file mode 100644 index 000000000..1f940773e --- /dev/null +++ b/assets/icons/camera/web.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/character-map.svg b/assets/icons/character-map.svg new file mode 100644 index 000000000..fd97c7ea5 --- /dev/null +++ b/assets/icons/character-map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/away-filled.svg b/assets/icons/chat/away-filled.svg new file mode 100644 index 000000000..bb6dbaa52 --- /dev/null +++ b/assets/icons/chat/away-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/away.svg b/assets/icons/chat/away.svg new file mode 100644 index 000000000..d88c927f8 --- /dev/null +++ b/assets/icons/chat/away.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/bubble-filled.svg b/assets/icons/chat/bubble-filled.svg new file mode 100644 index 000000000..fed5debff --- /dev/null +++ b/assets/icons/chat/bubble-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/bubble.svg b/assets/icons/chat/bubble.svg new file mode 100644 index 000000000..0b736b99e --- /dev/null +++ b/assets/icons/chat/bubble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/idle-filled.svg b/assets/icons/chat/idle-filled.svg new file mode 100644 index 000000000..a3c5fde52 --- /dev/null +++ b/assets/icons/chat/idle-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/idle.svg b/assets/icons/chat/idle.svg new file mode 100644 index 000000000..6a24e3d0a --- /dev/null +++ b/assets/icons/chat/idle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/offline-filled.svg b/assets/icons/chat/offline-filled.svg new file mode 100644 index 000000000..8b4001b0f --- /dev/null +++ b/assets/icons/chat/offline-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/offline.svg b/assets/icons/chat/offline.svg new file mode 100644 index 000000000..6744c9af1 --- /dev/null +++ b/assets/icons/chat/offline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/text-filled.svg b/assets/icons/chat/text-filled.svg new file mode 100644 index 000000000..d25f0ee49 --- /dev/null +++ b/assets/icons/chat/text-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chat/text.svg b/assets/icons/chat/text.svg new file mode 100644 index 000000000..d65126e68 --- /dev/null +++ b/assets/icons/chat/text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/check-spelling.svg b/assets/icons/check-spelling.svg new file mode 100644 index 000000000..b4fbe8819 --- /dev/null +++ b/assets/icons/check-spelling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkbox/_.svg b/assets/icons/checkbox/_.svg new file mode 100644 index 000000000..76a89eb0e --- /dev/null +++ b/assets/icons/checkbox/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkbox/checked-filled.svg b/assets/icons/checkbox/checked-filled.svg new file mode 100644 index 000000000..f90c48cde --- /dev/null +++ b/assets/icons/checkbox/checked-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkbox/checked.svg b/assets/icons/checkbox/checked.svg new file mode 100644 index 000000000..0eeaf48bd --- /dev/null +++ b/assets/icons/checkbox/checked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkbox/filled.svg b/assets/icons/checkbox/filled.svg new file mode 100644 index 000000000..8c8705882 --- /dev/null +++ b/assets/icons/checkbox/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkbox/mixed-filled.svg b/assets/icons/checkbox/mixed-filled.svg new file mode 100644 index 000000000..0db11dc52 --- /dev/null +++ b/assets/icons/checkbox/mixed-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkbox/mixed.svg b/assets/icons/checkbox/mixed.svg new file mode 100644 index 000000000..342adf010 --- /dev/null +++ b/assets/icons/checkbox/mixed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/checkmark.svg b/assets/icons/checkmark.svg new file mode 100644 index 000000000..8d32b5194 --- /dev/null +++ b/assets/icons/checkmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chip-filled.svg b/assets/icons/chip-filled.svg new file mode 100644 index 000000000..7babb7494 --- /dev/null +++ b/assets/icons/chip-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/chip.svg b/assets/icons/chip.svg new file mode 100644 index 000000000..45286b354 --- /dev/null +++ b/assets/icons/chip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/clear-night-filled.svg b/assets/icons/clear-night-filled.svg new file mode 100644 index 000000000..19080d665 --- /dev/null +++ b/assets/icons/clear-night-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/clear-night.svg b/assets/icons/clear-night.svg new file mode 100644 index 000000000..c23fb0bef --- /dev/null +++ b/assets/icons/clear-night.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/clock-filled.svg b/assets/icons/clock-filled.svg new file mode 100644 index 000000000..96bd974f3 --- /dev/null +++ b/assets/icons/clock-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/clock.svg b/assets/icons/clock.svg new file mode 100644 index 000000000..4980562c4 --- /dev/null +++ b/assets/icons/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/cloud-filled.svg b/assets/icons/cloud-filled.svg new file mode 100644 index 000000000..60e33ac62 --- /dev/null +++ b/assets/icons/cloud-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/cloud.svg b/assets/icons/cloud.svg new file mode 100644 index 000000000..107c61dfa --- /dev/null +++ b/assets/icons/cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/code.svg b/assets/icons/code.svg new file mode 100644 index 000000000..85b34ddaa --- /dev/null +++ b/assets/icons/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/color-select.svg b/assets/icons/color-select.svg new file mode 100644 index 000000000..d4f583d7a --- /dev/null +++ b/assets/icons/color-select.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/colors-filled.svg b/assets/icons/colors-filled.svg new file mode 100644 index 000000000..624aed8ea --- /dev/null +++ b/assets/icons/colors-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/colors.svg b/assets/icons/colors.svg new file mode 100644 index 000000000..ca8753280 --- /dev/null +++ b/assets/icons/colors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/compass-filled.svg b/assets/icons/compass-filled.svg new file mode 100644 index 000000000..d9bd9cd8d --- /dev/null +++ b/assets/icons/compass-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/compass.svg b/assets/icons/compass.svg new file mode 100644 index 000000000..24d428301 --- /dev/null +++ b/assets/icons/compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/computer-filled.svg b/assets/icons/computer-filled.svg new file mode 100644 index 000000000..04908f22a --- /dev/null +++ b/assets/icons/computer-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/computer-legacy-filled.svg b/assets/icons/computer-legacy-filled.svg new file mode 100644 index 000000000..6414af65c --- /dev/null +++ b/assets/icons/computer-legacy-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/computer-legacy.svg b/assets/icons/computer-legacy.svg new file mode 100644 index 000000000..0c5fcfce5 --- /dev/null +++ b/assets/icons/computer-legacy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/computer.svg b/assets/icons/computer.svg new file mode 100644 index 000000000..51a3cdafd --- /dev/null +++ b/assets/icons/computer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/copy-filled.svg b/assets/icons/copy-filled.svg new file mode 100644 index 000000000..ee49a8191 --- /dev/null +++ b/assets/icons/copy-filled.svg @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/assets/icons/copy.svg b/assets/icons/copy.svg new file mode 100644 index 000000000..1bbb465ba --- /dev/null +++ b/assets/icons/copy.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/assets/icons/cursor-filled.svg b/assets/icons/cursor-filled.svg new file mode 100644 index 000000000..9f4da2666 --- /dev/null +++ b/assets/icons/cursor-filled.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/assets/icons/cursor.svg b/assets/icons/cursor.svg new file mode 100644 index 000000000..425d09f72 --- /dev/null +++ b/assets/icons/cursor.svg @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/assets/icons/cut.svg b/assets/icons/cut.svg new file mode 100644 index 000000000..c3b195440 --- /dev/null +++ b/assets/icons/cut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/debian.svg b/assets/icons/debian.svg new file mode 100644 index 000000000..ae9567d46 --- /dev/null +++ b/assets/icons/debian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/desktop/_.svg b/assets/icons/desktop/_.svg new file mode 100644 index 000000000..89f8f3bdc --- /dev/null +++ b/assets/icons/desktop/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/desktop/appearance-filled.svg b/assets/icons/desktop/appearance-filled.svg new file mode 100644 index 000000000..3d7c85f57 --- /dev/null +++ b/assets/icons/desktop/appearance-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/desktop/appearance.svg b/assets/icons/desktop/appearance.svg new file mode 100644 index 000000000..6dfba93fe --- /dev/null +++ b/assets/icons/desktop/appearance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/desktop/filled.svg b/assets/icons/desktop/filled.svg new file mode 100644 index 000000000..2f9c5ccbb --- /dev/null +++ b/assets/icons/desktop/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/desktop/remote-filled.svg b/assets/icons/desktop/remote-filled.svg new file mode 100644 index 000000000..57f343a20 --- /dev/null +++ b/assets/icons/desktop/remote-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/desktop/remote.svg b/assets/icons/desktop/remote.svg new file mode 100644 index 000000000..e311afa59 --- /dev/null +++ b/assets/icons/desktop/remote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/dialpad-filled.svg b/assets/icons/dialpad-filled.svg new file mode 100644 index 000000000..fb8a0614e --- /dev/null +++ b/assets/icons/dialpad-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/dialpad.svg b/assets/icons/dialpad.svg new file mode 100644 index 000000000..01c0b5ab9 --- /dev/null +++ b/assets/icons/dialpad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/dictionary-filled.svg b/assets/icons/dictionary-filled.svg new file mode 100644 index 000000000..581f054d3 --- /dev/null +++ b/assets/icons/dictionary-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/dictionary.svg b/assets/icons/dictionary.svg new file mode 100644 index 000000000..c4695b012 --- /dev/null +++ b/assets/icons/dictionary.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/disk-filled.svg b/assets/icons/disk-filled.svg new file mode 100644 index 000000000..907157dcc --- /dev/null +++ b/assets/icons/disk-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/disk.svg b/assets/icons/disk.svg new file mode 100644 index 000000000..b64469169 --- /dev/null +++ b/assets/icons/disk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/display-layout-filled.svg b/assets/icons/display-layout-filled.svg new file mode 100644 index 000000000..885296fd1 --- /dev/null +++ b/assets/icons/display-layout-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/display-layout.svg b/assets/icons/display-layout.svg new file mode 100644 index 000000000..c97cbf61f --- /dev/null +++ b/assets/icons/display-layout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/_.svg b/assets/icons/document/_.svg new file mode 100644 index 000000000..5221031bd --- /dev/null +++ b/assets/icons/document/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/filled.svg b/assets/icons/document/filled.svg new file mode 100644 index 000000000..73a143ecb --- /dev/null +++ b/assets/icons/document/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/history-filled.svg b/assets/icons/document/history-filled.svg new file mode 100644 index 000000000..76281aa56 --- /dev/null +++ b/assets/icons/document/history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/history.svg b/assets/icons/document/history.svg new file mode 100644 index 000000000..7e6aca030 --- /dev/null +++ b/assets/icons/document/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/new-filled.svg b/assets/icons/document/new-filled.svg new file mode 100644 index 000000000..7b6fd5166 --- /dev/null +++ b/assets/icons/document/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/new.svg b/assets/icons/document/new.svg new file mode 100644 index 000000000..4c7996a62 --- /dev/null +++ b/assets/icons/document/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/open-filled.svg b/assets/icons/document/open-filled.svg new file mode 100644 index 000000000..0d644b7c3 --- /dev/null +++ b/assets/icons/document/open-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/open.svg b/assets/icons/document/open.svg new file mode 100644 index 000000000..b83427e3d --- /dev/null +++ b/assets/icons/document/open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/template-filled.svg b/assets/icons/document/template-filled.svg new file mode 100644 index 000000000..6a7165950 --- /dev/null +++ b/assets/icons/document/template-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/document/template.svg b/assets/icons/document/template.svg new file mode 100644 index 000000000..9dcb13359 --- /dev/null +++ b/assets/icons/document/template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/download/_.svg b/assets/icons/download/_.svg new file mode 100644 index 000000000..e9ee67381 --- /dev/null +++ b/assets/icons/download/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/download/filled.svg b/assets/icons/download/filled.svg new file mode 100644 index 000000000..e1f72d6dc --- /dev/null +++ b/assets/icons/download/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/download/history-filled.svg b/assets/icons/download/history-filled.svg new file mode 100644 index 000000000..150af75ae --- /dev/null +++ b/assets/icons/download/history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/download/history.svg b/assets/icons/download/history.svg new file mode 100644 index 000000000..6a0bd2c9a --- /dev/null +++ b/assets/icons/download/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drag-handle.svg b/assets/icons/drag-handle.svg new file mode 100644 index 000000000..d1319eafe --- /dev/null +++ b/assets/icons/drag-handle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-broken-filled.svg b/assets/icons/drive/harddisk-broken-filled.svg new file mode 100644 index 000000000..e11081a00 --- /dev/null +++ b/assets/icons/drive/harddisk-broken-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-broken.svg b/assets/icons/drive/harddisk-broken.svg new file mode 100644 index 000000000..5c4a6e4e4 --- /dev/null +++ b/assets/icons/drive/harddisk-broken.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-disabled-filled.svg b/assets/icons/drive/harddisk-disabled-filled.svg new file mode 100644 index 000000000..5161942b0 --- /dev/null +++ b/assets/icons/drive/harddisk-disabled-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-disabled.svg b/assets/icons/drive/harddisk-disabled.svg new file mode 100644 index 000000000..24a7bf63c --- /dev/null +++ b/assets/icons/drive/harddisk-disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-error-filled.svg b/assets/icons/drive/harddisk-error-filled.svg new file mode 100644 index 000000000..d9cfa36fe --- /dev/null +++ b/assets/icons/drive/harddisk-error-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-error.svg b/assets/icons/drive/harddisk-error.svg new file mode 100644 index 000000000..d34e0c765 --- /dev/null +++ b/assets/icons/drive/harddisk-error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-filled.svg b/assets/icons/drive/harddisk-filled.svg new file mode 100644 index 000000000..365bb401d --- /dev/null +++ b/assets/icons/drive/harddisk-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-usb-filled.svg b/assets/icons/drive/harddisk-usb-filled.svg new file mode 100644 index 000000000..de9064658 --- /dev/null +++ b/assets/icons/drive/harddisk-usb-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-usb.svg b/assets/icons/drive/harddisk-usb.svg new file mode 100644 index 000000000..ea75ad2be --- /dev/null +++ b/assets/icons/drive/harddisk-usb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-warning-filled.svg b/assets/icons/drive/harddisk-warning-filled.svg new file mode 100644 index 000000000..474b586fc --- /dev/null +++ b/assets/icons/drive/harddisk-warning-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk-warning.svg b/assets/icons/drive/harddisk-warning.svg new file mode 100644 index 000000000..8747e5c02 --- /dev/null +++ b/assets/icons/drive/harddisk-warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/harddisk.svg b/assets/icons/drive/harddisk.svg new file mode 100644 index 000000000..36a8bba8b --- /dev/null +++ b/assets/icons/drive/harddisk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/ieee1394-filled.svg b/assets/icons/drive/ieee1394-filled.svg new file mode 100644 index 000000000..46dd65164 --- /dev/null +++ b/assets/icons/drive/ieee1394-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/ieee1394.svg b/assets/icons/drive/ieee1394.svg new file mode 100644 index 000000000..93d490dfd --- /dev/null +++ b/assets/icons/drive/ieee1394.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/multidisk-filled.svg b/assets/icons/drive/multidisk-filled.svg new file mode 100644 index 000000000..f61b9a4dd --- /dev/null +++ b/assets/icons/drive/multidisk-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/multidisk.svg b/assets/icons/drive/multidisk.svg new file mode 100644 index 000000000..ecf49e560 --- /dev/null +++ b/assets/icons/drive/multidisk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/optical-filled.svg b/assets/icons/drive/optical-filled.svg new file mode 100644 index 000000000..271d5d4ab --- /dev/null +++ b/assets/icons/drive/optical-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/optical.svg b/assets/icons/drive/optical.svg new file mode 100644 index 000000000..25a747c1b --- /dev/null +++ b/assets/icons/drive/optical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/removable-media-filled.svg b/assets/icons/drive/removable-media-filled.svg new file mode 100644 index 000000000..5b8a8f3f6 --- /dev/null +++ b/assets/icons/drive/removable-media-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/removable-media.svg b/assets/icons/drive/removable-media.svg new file mode 100644 index 000000000..529ff002a --- /dev/null +++ b/assets/icons/drive/removable-media.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/solidstatedisk-filled.svg b/assets/icons/drive/solidstatedisk-filled.svg new file mode 100644 index 000000000..2a10443d4 --- /dev/null +++ b/assets/icons/drive/solidstatedisk-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/drive/solidstatedisk.svg b/assets/icons/drive/solidstatedisk.svg new file mode 100644 index 000000000..8dd9595f1 --- /dev/null +++ b/assets/icons/drive/solidstatedisk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/droplets.svg b/assets/icons/droplets.svg new file mode 100644 index 000000000..49ed5f92e --- /dev/null +++ b/assets/icons/droplets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/edit-clear-all.svg b/assets/icons/edit-clear-all.svg new file mode 100644 index 000000000..b277be898 --- /dev/null +++ b/assets/icons/edit-clear-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/edit-clear-filled.svg b/assets/icons/edit-clear-filled.svg new file mode 100644 index 000000000..5f44151ad --- /dev/null +++ b/assets/icons/edit-clear-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/edit-clear.svg b/assets/icons/edit-clear.svg new file mode 100644 index 000000000..327cabc45 --- /dev/null +++ b/assets/icons/edit-clear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/education-filled.svg b/assets/icons/education-filled.svg new file mode 100644 index 000000000..0c2a737d0 --- /dev/null +++ b/assets/icons/education-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/education.svg b/assets/icons/education.svg new file mode 100644 index 000000000..0eb138019 --- /dev/null +++ b/assets/icons/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/eject.svg b/assets/icons/eject.svg new file mode 100644 index 000000000..6fb72a087 --- /dev/null +++ b/assets/icons/eject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/angel-filled.svg b/assets/icons/emote/angel-filled.svg new file mode 100644 index 000000000..2946e42ee --- /dev/null +++ b/assets/icons/emote/angel-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/angel.svg b/assets/icons/emote/angel.svg new file mode 100644 index 000000000..710d451e2 --- /dev/null +++ b/assets/icons/emote/angel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/angry-filled.svg b/assets/icons/emote/angry-filled.svg new file mode 100644 index 000000000..85491c70c --- /dev/null +++ b/assets/icons/emote/angry-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/angry.svg b/assets/icons/emote/angry.svg new file mode 100644 index 000000000..e09cd6dbf --- /dev/null +++ b/assets/icons/emote/angry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/confused-filled.svg b/assets/icons/emote/confused-filled.svg new file mode 100644 index 000000000..f347cc9ae --- /dev/null +++ b/assets/icons/emote/confused-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/confused.svg b/assets/icons/emote/confused.svg new file mode 100644 index 000000000..a6ff3bf59 --- /dev/null +++ b/assets/icons/emote/confused.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/cool-filled.svg b/assets/icons/emote/cool-filled.svg new file mode 100644 index 000000000..5c441f569 --- /dev/null +++ b/assets/icons/emote/cool-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/cool.svg b/assets/icons/emote/cool.svg new file mode 100644 index 000000000..19d8e5190 --- /dev/null +++ b/assets/icons/emote/cool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/crying-filled.svg b/assets/icons/emote/crying-filled.svg new file mode 100644 index 000000000..5a070f117 --- /dev/null +++ b/assets/icons/emote/crying-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/crying.svg b/assets/icons/emote/crying.svg new file mode 100644 index 000000000..7487c83fd --- /dev/null +++ b/assets/icons/emote/crying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/devilish-filled.svg b/assets/icons/emote/devilish-filled.svg new file mode 100644 index 000000000..e73068a0a --- /dev/null +++ b/assets/icons/emote/devilish-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/devilish.svg b/assets/icons/emote/devilish.svg new file mode 100644 index 000000000..53a869168 --- /dev/null +++ b/assets/icons/emote/devilish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/embarrassed-filled.svg b/assets/icons/emote/embarrassed-filled.svg new file mode 100644 index 000000000..1b8160080 --- /dev/null +++ b/assets/icons/emote/embarrassed-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/embarrassed.svg b/assets/icons/emote/embarrassed.svg new file mode 100644 index 000000000..3c51a31b6 --- /dev/null +++ b/assets/icons/emote/embarrassed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/glasses-filled.svg b/assets/icons/emote/glasses-filled.svg new file mode 100644 index 000000000..99aef58f1 --- /dev/null +++ b/assets/icons/emote/glasses-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/glasses.svg b/assets/icons/emote/glasses.svg new file mode 100644 index 000000000..0a493d3bc --- /dev/null +++ b/assets/icons/emote/glasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/kiss-filled.svg b/assets/icons/emote/kiss-filled.svg new file mode 100644 index 000000000..aca23b32d --- /dev/null +++ b/assets/icons/emote/kiss-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/kiss.svg b/assets/icons/emote/kiss.svg new file mode 100644 index 000000000..e5b8b6490 --- /dev/null +++ b/assets/icons/emote/kiss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/laugh-filled.svg b/assets/icons/emote/laugh-filled.svg new file mode 100644 index 000000000..30f220058 --- /dev/null +++ b/assets/icons/emote/laugh-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/laugh.svg b/assets/icons/emote/laugh.svg new file mode 100644 index 000000000..a45730635 --- /dev/null +++ b/assets/icons/emote/laugh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/monkey-filled.svg b/assets/icons/emote/monkey-filled.svg new file mode 100644 index 000000000..860996ae9 --- /dev/null +++ b/assets/icons/emote/monkey-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/monkey.svg b/assets/icons/emote/monkey.svg new file mode 100644 index 000000000..9684c9813 --- /dev/null +++ b/assets/icons/emote/monkey.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/plain-filled.svg b/assets/icons/emote/plain-filled.svg new file mode 100644 index 000000000..10a6d0de0 --- /dev/null +++ b/assets/icons/emote/plain-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/plain.svg b/assets/icons/emote/plain.svg new file mode 100644 index 000000000..faace0625 --- /dev/null +++ b/assets/icons/emote/plain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/raspberry-filled.svg b/assets/icons/emote/raspberry-filled.svg new file mode 100644 index 000000000..7fd56d450 --- /dev/null +++ b/assets/icons/emote/raspberry-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/raspberry.svg b/assets/icons/emote/raspberry.svg new file mode 100644 index 000000000..c03a8ee09 --- /dev/null +++ b/assets/icons/emote/raspberry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/sad-filled.svg b/assets/icons/emote/sad-filled.svg new file mode 100644 index 000000000..ac4f69a91 --- /dev/null +++ b/assets/icons/emote/sad-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/sad.svg b/assets/icons/emote/sad.svg new file mode 100644 index 000000000..8baa45ee1 --- /dev/null +++ b/assets/icons/emote/sad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/shutmouth-filled.svg b/assets/icons/emote/shutmouth-filled.svg new file mode 100644 index 000000000..5fc2d4c67 --- /dev/null +++ b/assets/icons/emote/shutmouth-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/shutmouth.svg b/assets/icons/emote/shutmouth.svg new file mode 100644 index 000000000..ce843c9fa --- /dev/null +++ b/assets/icons/emote/shutmouth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/sick-filled.svg b/assets/icons/emote/sick-filled.svg new file mode 100644 index 000000000..5f9134df3 --- /dev/null +++ b/assets/icons/emote/sick-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/sick.svg b/assets/icons/emote/sick.svg new file mode 100644 index 000000000..0c2f0fe86 --- /dev/null +++ b/assets/icons/emote/sick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/smile-big-filled.svg b/assets/icons/emote/smile-big-filled.svg new file mode 100644 index 000000000..f5dbb377f --- /dev/null +++ b/assets/icons/emote/smile-big-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/smile-big.svg b/assets/icons/emote/smile-big.svg new file mode 100644 index 000000000..de48849d8 --- /dev/null +++ b/assets/icons/emote/smile-big.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/smile-filled.svg b/assets/icons/emote/smile-filled.svg new file mode 100644 index 000000000..70b3d9b75 --- /dev/null +++ b/assets/icons/emote/smile-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/smile.svg b/assets/icons/emote/smile.svg new file mode 100644 index 000000000..0ef5791cb --- /dev/null +++ b/assets/icons/emote/smile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/smirk-filled.svg b/assets/icons/emote/smirk-filled.svg new file mode 100644 index 000000000..395b01d13 --- /dev/null +++ b/assets/icons/emote/smirk-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/smirk.svg b/assets/icons/emote/smirk.svg new file mode 100644 index 000000000..cc288160d --- /dev/null +++ b/assets/icons/emote/smirk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/surprise-filled.svg b/assets/icons/emote/surprise-filled.svg new file mode 100644 index 000000000..f361b3281 --- /dev/null +++ b/assets/icons/emote/surprise-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/surprise.svg b/assets/icons/emote/surprise.svg new file mode 100644 index 000000000..5a0ebf078 --- /dev/null +++ b/assets/icons/emote/surprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/tired-filled.svg b/assets/icons/emote/tired-filled.svg new file mode 100644 index 000000000..93370b70e --- /dev/null +++ b/assets/icons/emote/tired-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/tired.svg b/assets/icons/emote/tired.svg new file mode 100644 index 000000000..f34edd96c --- /dev/null +++ b/assets/icons/emote/tired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/uncertain-filled.svg b/assets/icons/emote/uncertain-filled.svg new file mode 100644 index 000000000..b0cf98bef --- /dev/null +++ b/assets/icons/emote/uncertain-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/uncertain.svg b/assets/icons/emote/uncertain.svg new file mode 100644 index 000000000..8dcd45c89 --- /dev/null +++ b/assets/icons/emote/uncertain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/wink-filled.svg b/assets/icons/emote/wink-filled.svg new file mode 100644 index 000000000..bcd0d3ee7 --- /dev/null +++ b/assets/icons/emote/wink-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/wink.svg b/assets/icons/emote/wink.svg new file mode 100644 index 000000000..38ad0a2b1 --- /dev/null +++ b/assets/icons/emote/wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/worried-filled.svg b/assets/icons/emote/worried-filled.svg new file mode 100644 index 000000000..70104919b --- /dev/null +++ b/assets/icons/emote/worried-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/worried.svg b/assets/icons/emote/worried.svg new file mode 100644 index 000000000..666fdf179 --- /dev/null +++ b/assets/icons/emote/worried.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/yawn-filled.svg b/assets/icons/emote/yawn-filled.svg new file mode 100644 index 000000000..a41b696f2 --- /dev/null +++ b/assets/icons/emote/yawn-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/emote/yawn.svg b/assets/icons/emote/yawn.svg new file mode 100644 index 000000000..7ead0e8eb --- /dev/null +++ b/assets/icons/emote/yawn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/error-filled.svg b/assets/icons/error-filled.svg new file mode 100644 index 000000000..192b17f08 --- /dev/null +++ b/assets/icons/error-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/error.svg b/assets/icons/error.svg new file mode 100644 index 000000000..dbd21e550 --- /dev/null +++ b/assets/icons/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/external-link-filled.svg b/assets/icons/external-link-filled.svg new file mode 100644 index 000000000..2aeeccbea --- /dev/null +++ b/assets/icons/external-link-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/external-link.svg b/assets/icons/external-link.svg new file mode 100644 index 000000000..57e85d4c9 --- /dev/null +++ b/assets/icons/external-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/eye-filled.svg b/assets/icons/eye-filled.svg new file mode 100644 index 000000000..20f9a27d1 --- /dev/null +++ b/assets/icons/eye-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/eye.svg b/assets/icons/eye.svg new file mode 100644 index 000000000..a4be4c7b8 --- /dev/null +++ b/assets/icons/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/familly.svg b/assets/icons/familly.svg new file mode 100644 index 000000000..f092d5a3e --- /dev/null +++ b/assets/icons/familly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fast-backward.svg b/assets/icons/fast-backward.svg new file mode 100644 index 000000000..0ca01a399 --- /dev/null +++ b/assets/icons/fast-backward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fast-forward.svg b/assets/icons/fast-forward.svg new file mode 100644 index 000000000..5071dc3a0 --- /dev/null +++ b/assets/icons/fast-forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/few-clouds-filled.svg b/assets/icons/few-clouds-filled.svg new file mode 100644 index 000000000..f45bb1d9c --- /dev/null +++ b/assets/icons/few-clouds-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/few-clouds-night-filled.svg b/assets/icons/few-clouds-night-filled.svg new file mode 100644 index 000000000..9c755aa26 --- /dev/null +++ b/assets/icons/few-clouds-night-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/few-clouds-night.svg b/assets/icons/few-clouds-night.svg new file mode 100644 index 000000000..f32d566d8 --- /dev/null +++ b/assets/icons/few-clouds-night.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/few-clouds.svg b/assets/icons/few-clouds.svg new file mode 100644 index 000000000..cfdd62a06 --- /dev/null +++ b/assets/icons/few-clouds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/find-replace-filled.svg b/assets/icons/find-replace-filled.svg new file mode 100644 index 000000000..8bffb64db --- /dev/null +++ b/assets/icons/find-replace-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/find-replace.svg b/assets/icons/find-replace.svg new file mode 100644 index 000000000..a1531d61d --- /dev/null +++ b/assets/icons/find-replace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fingerprint-filled.svg b/assets/icons/fingerprint-filled.svg new file mode 100644 index 000000000..1ea5f771f --- /dev/null +++ b/assets/icons/fingerprint-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fingerprint.svg b/assets/icons/fingerprint.svg new file mode 100644 index 000000000..4bcc1a744 --- /dev/null +++ b/assets/icons/fingerprint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/flag-filled.svg b/assets/icons/flag-filled.svg new file mode 100644 index 000000000..965d0df05 --- /dev/null +++ b/assets/icons/flag-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/flag.svg b/assets/icons/flag.svg new file mode 100644 index 000000000..ac7d7b6fe --- /dev/null +++ b/assets/icons/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/flash-card-filled.svg b/assets/icons/flash-card-filled.svg new file mode 100644 index 000000000..e7b2a680d --- /dev/null +++ b/assets/icons/flash-card-filled.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/assets/icons/flash-card.svg b/assets/icons/flash-card.svg new file mode 100644 index 000000000..de1b22c26 --- /dev/null +++ b/assets/icons/flash-card.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + diff --git a/assets/icons/flatpak.svg b/assets/icons/flatpak.svg new file mode 100644 index 000000000..1df49d146 --- /dev/null +++ b/assets/icons/flatpak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/flip-horizontal.svg b/assets/icons/flip-horizontal.svg new file mode 100644 index 000000000..39f6d3b76 --- /dev/null +++ b/assets/icons/flip-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/flip-vertical.svg b/assets/icons/flip-vertical.svg new file mode 100644 index 000000000..123c591ab --- /dev/null +++ b/assets/icons/flip-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/floppy-filled.svg b/assets/icons/floppy-filled.svg new file mode 100644 index 000000000..3b5f170ca --- /dev/null +++ b/assets/icons/floppy-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/floppy.svg b/assets/icons/floppy.svg new file mode 100644 index 000000000..74a83e3b8 --- /dev/null +++ b/assets/icons/floppy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fog-filled.svg b/assets/icons/fog-filled.svg new file mode 100644 index 000000000..d2f1efbd2 --- /dev/null +++ b/assets/icons/fog-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fog.svg b/assets/icons/fog.svg new file mode 100644 index 000000000..8209ba426 --- /dev/null +++ b/assets/icons/fog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/_.svg b/assets/icons/folder/_.svg new file mode 100644 index 000000000..b9614ca08 --- /dev/null +++ b/assets/icons/folder/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/drag-accept-filled.svg b/assets/icons/folder/drag-accept-filled.svg new file mode 100644 index 000000000..2d5794672 --- /dev/null +++ b/assets/icons/folder/drag-accept-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/drag-accept.svg b/assets/icons/folder/drag-accept.svg new file mode 100644 index 000000000..2aee5bffb --- /dev/null +++ b/assets/icons/folder/drag-accept.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/filled.svg b/assets/icons/folder/filled.svg new file mode 100644 index 000000000..a7b7f9cb9 --- /dev/null +++ b/assets/icons/folder/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/new-filled.svg b/assets/icons/folder/new-filled.svg new file mode 100644 index 000000000..47094ea1d --- /dev/null +++ b/assets/icons/folder/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/new.svg b/assets/icons/folder/new.svg new file mode 100644 index 000000000..ed466b9d0 --- /dev/null +++ b/assets/icons/folder/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/open-filled.svg b/assets/icons/folder/open-filled.svg new file mode 100644 index 000000000..409af8f21 --- /dev/null +++ b/assets/icons/folder/open-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/open.svg b/assets/icons/folder/open.svg new file mode 100644 index 000000000..f6f8d0d8e --- /dev/null +++ b/assets/icons/folder/open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/remote-filled.svg b/assets/icons/folder/remote-filled.svg new file mode 100644 index 000000000..78ce01329 --- /dev/null +++ b/assets/icons/folder/remote-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/remote.svg b/assets/icons/folder/remote.svg new file mode 100644 index 000000000..8debfe12a --- /dev/null +++ b/assets/icons/folder/remote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/search-filled.svg b/assets/icons/folder/search-filled.svg new file mode 100644 index 000000000..37753a9ad --- /dev/null +++ b/assets/icons/folder/search-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/search.svg b/assets/icons/folder/search.svg new file mode 100644 index 000000000..0b408c755 --- /dev/null +++ b/assets/icons/folder/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/simple-filled.svg b/assets/icons/folder/simple-filled.svg new file mode 100644 index 000000000..33d023271 --- /dev/null +++ b/assets/icons/folder/simple-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/folder/simple.svg b/assets/icons/folder/simple.svg new file mode 100644 index 000000000..3a70a0e00 --- /dev/null +++ b/assets/icons/folder/simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/font.svg b/assets/icons/font.svg new file mode 100644 index 000000000..fbe3ea813 --- /dev/null +++ b/assets/icons/font.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/format-remove.svg b/assets/icons/format-remove.svg new file mode 100644 index 000000000..df571a10b --- /dev/null +++ b/assets/icons/format-remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/forward.svg b/assets/icons/forward.svg new file mode 100644 index 000000000..e0eb0d8a5 --- /dev/null +++ b/assets/icons/forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fullscreen/_.svg b/assets/icons/fullscreen/_.svg new file mode 100644 index 000000000..d4f959f0e --- /dev/null +++ b/assets/icons/fullscreen/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/fullscreen/exit.svg b/assets/icons/fullscreen/exit.svg new file mode 100644 index 000000000..d395e6798 --- /dev/null +++ b/assets/icons/fullscreen/exit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-controller-filled.svg b/assets/icons/game-controller-filled.svg new file mode 100644 index 000000000..c3913b121 --- /dev/null +++ b/assets/icons/game-controller-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-controller.svg b/assets/icons/game-controller.svg new file mode 100644 index 000000000..47be65b6d --- /dev/null +++ b/assets/icons/game-controller.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/games-filled.svg b/assets/icons/games-filled.svg new file mode 100644 index 000000000..7d629a771 --- /dev/null +++ b/assets/icons/games-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/games.svg b/assets/icons/games.svg new file mode 100644 index 000000000..43acbe494 --- /dev/null +++ b/assets/icons/games.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gear-dots-filled.svg b/assets/icons/gear-dots-filled.svg new file mode 100644 index 000000000..db3e85c94 --- /dev/null +++ b/assets/icons/gear-dots-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gear-dots.svg b/assets/icons/gear-dots.svg new file mode 100644 index 000000000..3e43f726e --- /dev/null +++ b/assets/icons/gear-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gear-filled.svg b/assets/icons/gear-filled.svg new file mode 100644 index 000000000..342b21256 --- /dev/null +++ b/assets/icons/gear-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gear.svg b/assets/icons/gear.svg new file mode 100644 index 000000000..9d56df021 --- /dev/null +++ b/assets/icons/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gears-filled.svg b/assets/icons/gears-filled.svg new file mode 100644 index 000000000..4f0833cb6 --- /dev/null +++ b/assets/icons/gears-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gears.svg b/assets/icons/gears.svg new file mode 100644 index 000000000..33ee91d2b --- /dev/null +++ b/assets/icons/gears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/globe-filled.svg b/assets/icons/globe-filled.svg new file mode 100644 index 000000000..0d889bd77 --- /dev/null +++ b/assets/icons/globe-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/globe.svg b/assets/icons/globe.svg new file mode 100644 index 000000000..ae3e9f028 --- /dev/null +++ b/assets/icons/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/gnome-logo.svg b/assets/icons/gnome-logo.svg new file mode 100644 index 000000000..2754398dd --- /dev/null +++ b/assets/icons/gnome-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/bottom.svg b/assets/icons/go/bottom.svg new file mode 100644 index 000000000..414867ca3 --- /dev/null +++ b/assets/icons/go/bottom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/down.svg b/assets/icons/go/down.svg new file mode 100644 index 000000000..4ad109727 --- /dev/null +++ b/assets/icons/go/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/first.svg b/assets/icons/go/first.svg new file mode 100644 index 000000000..a836c0097 --- /dev/null +++ b/assets/icons/go/first.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/jump.svg b/assets/icons/go/jump.svg new file mode 100644 index 000000000..9943db247 --- /dev/null +++ b/assets/icons/go/jump.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/last.svg b/assets/icons/go/last.svg new file mode 100644 index 000000000..f16594554 --- /dev/null +++ b/assets/icons/go/last.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/next.svg b/assets/icons/go/next.svg new file mode 100644 index 000000000..bf1e61d05 --- /dev/null +++ b/assets/icons/go/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/previous.svg b/assets/icons/go/previous.svg new file mode 100644 index 000000000..72962b685 --- /dev/null +++ b/assets/icons/go/previous.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/top.svg b/assets/icons/go/top.svg new file mode 100644 index 000000000..bcf066c43 --- /dev/null +++ b/assets/icons/go/top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/go/up.svg b/assets/icons/go/up.svg new file mode 100644 index 000000000..b5f4f91a0 --- /dev/null +++ b/assets/icons/go/up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/graphic-tablet-filled.svg b/assets/icons/graphic-tablet-filled.svg new file mode 100644 index 000000000..0aac7c7d9 --- /dev/null +++ b/assets/icons/graphic-tablet-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/graphic-tablet.svg b/assets/icons/graphic-tablet.svg new file mode 100644 index 000000000..a1379247b --- /dev/null +++ b/assets/icons/graphic-tablet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/headphones.svg b/assets/icons/headphones.svg new file mode 100644 index 000000000..c14801a2d --- /dev/null +++ b/assets/icons/headphones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/headset.svg b/assets/icons/headset.svg new file mode 100644 index 000000000..1591a8d05 --- /dev/null +++ b/assets/icons/headset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/health-filled.svg b/assets/icons/health-filled.svg new file mode 100644 index 000000000..643c5a24d --- /dev/null +++ b/assets/icons/health-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/health.svg b/assets/icons/health.svg new file mode 100644 index 000000000..6e2c277ee --- /dev/null +++ b/assets/icons/health.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/hearing-filled.svg b/assets/icons/hearing-filled.svg new file mode 100644 index 000000000..78542343f --- /dev/null +++ b/assets/icons/hearing-filled.svg @@ -0,0 +1,57 @@ + + + + + + + + + + diff --git a/assets/icons/hearing.svg b/assets/icons/hearing.svg new file mode 100644 index 000000000..27a43a814 --- /dev/null +++ b/assets/icons/hearing.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + diff --git a/assets/icons/heart-filled.svg b/assets/icons/heart-filled.svg new file mode 100644 index 000000000..c6ad083bc --- /dev/null +++ b/assets/icons/heart-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/heart.svg b/assets/icons/heart.svg new file mode 100644 index 000000000..d7d579011 --- /dev/null +++ b/assets/icons/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/hide-filled.svg b/assets/icons/hide-filled.svg new file mode 100644 index 000000000..a8e0371eb --- /dev/null +++ b/assets/icons/hide-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/hide.svg b/assets/icons/hide.svg new file mode 100644 index 000000000..fc50e9818 --- /dev/null +++ b/assets/icons/hide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/history-filled.svg b/assets/icons/history-filled.svg new file mode 100644 index 000000000..62f03d02f --- /dev/null +++ b/assets/icons/history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/history.svg b/assets/icons/history.svg new file mode 100644 index 000000000..ddcfffa12 --- /dev/null +++ b/assets/icons/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/home-filled.svg b/assets/icons/home-filled.svg new file mode 100644 index 000000000..5f3c0ede1 --- /dev/null +++ b/assets/icons/home-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/home.svg b/assets/icons/home.svg new file mode 100644 index 000000000..cb19fd024 --- /dev/null +++ b/assets/icons/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/hourglass-filled.svg b/assets/icons/hourglass-filled.svg new file mode 100644 index 000000000..f6e083fa0 --- /dev/null +++ b/assets/icons/hourglass-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/hourglass.svg b/assets/icons/hourglass.svg new file mode 100644 index 000000000..e4150716a --- /dev/null +++ b/assets/icons/hourglass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/html-filled.svg b/assets/icons/html-filled.svg new file mode 100644 index 000000000..e6af25060 --- /dev/null +++ b/assets/icons/html-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/html.svg b/assets/icons/html.svg new file mode 100644 index 000000000..bf4dcda12 --- /dev/null +++ b/assets/icons/html.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/human.svg b/assets/icons/human.svg new file mode 100644 index 000000000..efc260253 --- /dev/null +++ b/assets/icons/human.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/_.svg b/assets/icons/image/_.svg new file mode 100644 index 000000000..5dc158e5c --- /dev/null +++ b/assets/icons/image/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/filled.svg b/assets/icons/image/filled.svg new file mode 100644 index 000000000..4c7090910 --- /dev/null +++ b/assets/icons/image/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/history-filled.svg b/assets/icons/image/history-filled.svg new file mode 100644 index 000000000..fb160b49a --- /dev/null +++ b/assets/icons/image/history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/history.svg b/assets/icons/image/history.svg new file mode 100644 index 000000000..938917800 --- /dev/null +++ b/assets/icons/image/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/loading-filled.svg b/assets/icons/image/loading-filled.svg new file mode 100644 index 000000000..5f6bd8272 --- /dev/null +++ b/assets/icons/image/loading-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/loading.svg b/assets/icons/image/loading.svg new file mode 100644 index 000000000..83ece5b2d --- /dev/null +++ b/assets/icons/image/loading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/missing-filled.svg b/assets/icons/image/missing-filled.svg new file mode 100644 index 000000000..13558a97c --- /dev/null +++ b/assets/icons/image/missing-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/image/missing.svg b/assets/icons/image/missing.svg new file mode 100644 index 000000000..672725e0b --- /dev/null +++ b/assets/icons/image/missing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/important-filled.svg b/assets/icons/important-filled.svg new file mode 100644 index 000000000..eefc9fd4d --- /dev/null +++ b/assets/icons/important-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/important.svg b/assets/icons/important.svg new file mode 100644 index 000000000..7faa87332 --- /dev/null +++ b/assets/icons/important.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/inbox-filled.svg b/assets/icons/inbox-filled.svg new file mode 100644 index 000000000..f18dc5316 --- /dev/null +++ b/assets/icons/inbox-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/inbox.svg b/assets/icons/inbox.svg new file mode 100644 index 000000000..25a75a26d --- /dev/null +++ b/assets/icons/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/indent-less.svg b/assets/icons/indent-less.svg new file mode 100644 index 000000000..493f73097 --- /dev/null +++ b/assets/icons/indent-less.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/indent-more.svg b/assets/icons/indent-more.svg new file mode 100644 index 000000000..438d3796d --- /dev/null +++ b/assets/icons/indent-more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/information-filled.svg b/assets/icons/information-filled.svg new file mode 100644 index 000000000..e6b361b49 --- /dev/null +++ b/assets/icons/information-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/information.svg b/assets/icons/information.svg new file mode 100644 index 000000000..72cf97497 --- /dev/null +++ b/assets/icons/information.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/image-filled.svg b/assets/icons/insert/image-filled.svg new file mode 100644 index 000000000..c456f61d1 --- /dev/null +++ b/assets/icons/insert/image-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/image.svg b/assets/icons/insert/image.svg new file mode 100644 index 000000000..22f184d81 --- /dev/null +++ b/assets/icons/insert/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/link-filled.svg b/assets/icons/insert/link-filled.svg new file mode 100644 index 000000000..636f1bbea --- /dev/null +++ b/assets/icons/insert/link-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/link.svg b/assets/icons/insert/link.svg new file mode 100644 index 000000000..e61b63d68 --- /dev/null +++ b/assets/icons/insert/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/object-filled.svg b/assets/icons/insert/object-filled.svg new file mode 100644 index 000000000..683f57736 --- /dev/null +++ b/assets/icons/insert/object-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/object.svg b/assets/icons/insert/object.svg new file mode 100644 index 000000000..99cc574ff --- /dev/null +++ b/assets/icons/insert/object.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/insert/text.svg b/assets/icons/insert/text.svg new file mode 100644 index 000000000..384b74c5d --- /dev/null +++ b/assets/icons/insert/text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/italic.svg b/assets/icons/italic.svg new file mode 100644 index 000000000..3cb19d676 --- /dev/null +++ b/assets/icons/italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/junk/_.svg b/assets/icons/junk/_.svg new file mode 100644 index 000000000..e3274e1b5 --- /dev/null +++ b/assets/icons/junk/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/junk/filled.svg b/assets/icons/junk/filled.svg new file mode 100644 index 000000000..c730d7c3c --- /dev/null +++ b/assets/icons/junk/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/justify/center.svg b/assets/icons/justify/center.svg new file mode 100644 index 000000000..85ad17fed --- /dev/null +++ b/assets/icons/justify/center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/justify/fill.svg b/assets/icons/justify/fill.svg new file mode 100644 index 000000000..78b491ae0 --- /dev/null +++ b/assets/icons/justify/fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/justify/left.svg b/assets/icons/justify/left.svg new file mode 100644 index 000000000..e09e00437 --- /dev/null +++ b/assets/icons/justify/left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/justify/right.svg b/assets/icons/justify/right.svg new file mode 100644 index 000000000..fca455715 --- /dev/null +++ b/assets/icons/justify/right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/kde-logo.svg b/assets/icons/kde-logo.svg new file mode 100644 index 000000000..0b166a9de --- /dev/null +++ b/assets/icons/kde-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/key-filled.svg b/assets/icons/key-filled.svg new file mode 100644 index 000000000..162baf566 --- /dev/null +++ b/assets/icons/key-filled.svg @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/assets/icons/key.svg b/assets/icons/key.svg new file mode 100644 index 000000000..a119c0a78 --- /dev/null +++ b/assets/icons/key.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/assets/icons/keyboard-filled.svg b/assets/icons/keyboard-filled.svg new file mode 100644 index 000000000..02d0069b8 --- /dev/null +++ b/assets/icons/keyboard-filled.svg @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/assets/icons/keyboard-shortcuts/_.svg b/assets/icons/keyboard-shortcuts/_.svg new file mode 100644 index 000000000..ab204de98 --- /dev/null +++ b/assets/icons/keyboard-shortcuts/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/keyboard-shortcuts/filled.svg b/assets/icons/keyboard-shortcuts/filled.svg new file mode 100644 index 000000000..97499e1ef --- /dev/null +++ b/assets/icons/keyboard-shortcuts/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/keyboard-shortcuts/new-filled.svg b/assets/icons/keyboard-shortcuts/new-filled.svg new file mode 100644 index 000000000..fc0429df7 --- /dev/null +++ b/assets/icons/keyboard-shortcuts/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/keyboard-shortcuts/new.svg b/assets/icons/keyboard-shortcuts/new.svg new file mode 100644 index 000000000..f969bd922 --- /dev/null +++ b/assets/icons/keyboard-shortcuts/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/keyboard.svg b/assets/icons/keyboard.svg new file mode 100644 index 000000000..52cd4cca6 --- /dev/null +++ b/assets/icons/keyboard.svg @@ -0,0 +1,43 @@ + + + + + + + + diff --git a/assets/icons/library/artists-filled.svg b/assets/icons/library/artists-filled.svg new file mode 100644 index 000000000..47443520f --- /dev/null +++ b/assets/icons/library/artists-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/library/artists.svg b/assets/icons/library/artists.svg new file mode 100644 index 000000000..076fb3e9d --- /dev/null +++ b/assets/icons/library/artists.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/library/music-filled.svg b/assets/icons/library/music-filled.svg new file mode 100644 index 000000000..a3ac69768 --- /dev/null +++ b/assets/icons/library/music-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/library/music.svg b/assets/icons/library/music.svg new file mode 100644 index 000000000..0c56fc664 --- /dev/null +++ b/assets/icons/library/music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/localization-filled.svg b/assets/icons/localization-filled.svg new file mode 100644 index 000000000..ac2818cb0 --- /dev/null +++ b/assets/icons/localization-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/localization.svg b/assets/icons/localization.svg new file mode 100644 index 000000000..c4e254acf --- /dev/null +++ b/assets/icons/localization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/location.svg b/assets/icons/location.svg new file mode 100644 index 000000000..28cb4a507 --- /dev/null +++ b/assets/icons/location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lock-filled.svg b/assets/icons/lock-filled.svg new file mode 100644 index 000000000..9be2549c7 --- /dev/null +++ b/assets/icons/lock-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lock.svg b/assets/icons/lock.svg new file mode 100644 index 000000000..708105953 --- /dev/null +++ b/assets/icons/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/log/in-filled.svg b/assets/icons/log/in-filled.svg new file mode 100644 index 000000000..5848d40a7 --- /dev/null +++ b/assets/icons/log/in-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/log/in.svg b/assets/icons/log/in.svg new file mode 100644 index 000000000..956a80bea --- /dev/null +++ b/assets/icons/log/in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/log/out-filled.svg b/assets/icons/log/out-filled.svg new file mode 100644 index 000000000..141791229 --- /dev/null +++ b/assets/icons/log/out-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/log/out.svg b/assets/icons/log/out.svg new file mode 100644 index 000000000..1cebaed59 --- /dev/null +++ b/assets/icons/log/out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/magnifying-glass-filled.svg b/assets/icons/magnifying-glass-filled.svg new file mode 100644 index 000000000..194293f7e --- /dev/null +++ b/assets/icons/magnifying-glass-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/magnifying-glass.svg b/assets/icons/magnifying-glass.svg new file mode 100644 index 000000000..2e0a57825 --- /dev/null +++ b/assets/icons/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/_.svg b/assets/icons/mail/_.svg new file mode 100644 index 000000000..5b735e21d --- /dev/null +++ b/assets/icons/mail/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/filled.svg b/assets/icons/mail/filled.svg new file mode 100644 index 000000000..558bd9829 --- /dev/null +++ b/assets/icons/mail/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/forwarded-filled.svg b/assets/icons/mail/forwarded-filled.svg new file mode 100644 index 000000000..4f5bc383b --- /dev/null +++ b/assets/icons/mail/forwarded-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/forwarded.svg b/assets/icons/mail/forwarded.svg new file mode 100644 index 000000000..eed92b668 --- /dev/null +++ b/assets/icons/mail/forwarded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/new-filled.svg b/assets/icons/mail/new-filled.svg new file mode 100644 index 000000000..49f822908 --- /dev/null +++ b/assets/icons/mail/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/new.svg b/assets/icons/mail/new.svg new file mode 100644 index 000000000..9e63856ac --- /dev/null +++ b/assets/icons/mail/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/ok-filled.svg b/assets/icons/mail/ok-filled.svg new file mode 100644 index 000000000..42ada2dbd --- /dev/null +++ b/assets/icons/mail/ok-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/ok.svg b/assets/icons/mail/ok.svg new file mode 100644 index 000000000..817338b25 --- /dev/null +++ b/assets/icons/mail/ok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/open-filled.svg b/assets/icons/mail/open-filled.svg new file mode 100644 index 000000000..96c16f77e --- /dev/null +++ b/assets/icons/mail/open-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/open.svg b/assets/icons/mail/open.svg new file mode 100644 index 000000000..f1281244f --- /dev/null +++ b/assets/icons/mail/open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/replied-filled.svg b/assets/icons/mail/replied-filled.svg new file mode 100644 index 000000000..9a291b54d --- /dev/null +++ b/assets/icons/mail/replied-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/replied.svg b/assets/icons/mail/replied.svg new file mode 100644 index 000000000..c7a90264d --- /dev/null +++ b/assets/icons/mail/replied.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/signed-filled.svg b/assets/icons/mail/signed-filled.svg new file mode 100644 index 000000000..b35b4efbf --- /dev/null +++ b/assets/icons/mail/signed-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/signed.svg b/assets/icons/mail/signed.svg new file mode 100644 index 000000000..bef497c00 --- /dev/null +++ b/assets/icons/mail/signed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/unread-filled.svg b/assets/icons/mail/unread-filled.svg new file mode 100644 index 000000000..ba2b359e0 --- /dev/null +++ b/assets/icons/mail/unread-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mail/unread.svg b/assets/icons/mail/unread.svg new file mode 100644 index 000000000..267814aa6 --- /dev/null +++ b/assets/icons/mail/unread.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/media/pause.svg b/assets/icons/media/pause.svg new file mode 100644 index 000000000..20064fcfa --- /dev/null +++ b/assets/icons/media/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/media/play.svg b/assets/icons/media/play.svg new file mode 100644 index 000000000..13701bb7c --- /dev/null +++ b/assets/icons/media/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/media/record.svg b/assets/icons/media/record.svg new file mode 100644 index 000000000..32a84b04d --- /dev/null +++ b/assets/icons/media/record.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/media/stop.svg b/assets/icons/media/stop.svg new file mode 100644 index 000000000..03372ecc2 --- /dev/null +++ b/assets/icons/media/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/menu.svg b/assets/icons/menu.svg new file mode 100644 index 000000000..5701f1ce6 --- /dev/null +++ b/assets/icons/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/0-filled.svg b/assets/icons/meter/0-filled.svg new file mode 100644 index 000000000..7e9c3f4ce --- /dev/null +++ b/assets/icons/meter/0-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/0.svg b/assets/icons/meter/0.svg new file mode 100644 index 000000000..29bda5937 --- /dev/null +++ b/assets/icons/meter/0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/1-filled.svg b/assets/icons/meter/1-filled.svg new file mode 100644 index 000000000..898c1f353 --- /dev/null +++ b/assets/icons/meter/1-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/1.svg b/assets/icons/meter/1.svg new file mode 100644 index 000000000..ed05b1760 --- /dev/null +++ b/assets/icons/meter/1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/2-filled.svg b/assets/icons/meter/2-filled.svg new file mode 100644 index 000000000..95800e66b --- /dev/null +++ b/assets/icons/meter/2-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/2.svg b/assets/icons/meter/2.svg new file mode 100644 index 000000000..7067812f1 --- /dev/null +++ b/assets/icons/meter/2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/3-filled.svg b/assets/icons/meter/3-filled.svg new file mode 100644 index 000000000..d62cc2533 --- /dev/null +++ b/assets/icons/meter/3-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/3.svg b/assets/icons/meter/3.svg new file mode 100644 index 000000000..9f598c9b6 --- /dev/null +++ b/assets/icons/meter/3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/4-filled.svg b/assets/icons/meter/4-filled.svg new file mode 100644 index 000000000..fdc18b517 --- /dev/null +++ b/assets/icons/meter/4-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/4.svg b/assets/icons/meter/4.svg new file mode 100644 index 000000000..d38a8e5fb --- /dev/null +++ b/assets/icons/meter/4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/5-filled.svg b/assets/icons/meter/5-filled.svg new file mode 100644 index 000000000..6baf467e8 --- /dev/null +++ b/assets/icons/meter/5-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/5.svg b/assets/icons/meter/5.svg new file mode 100644 index 000000000..aebc0e9a6 --- /dev/null +++ b/assets/icons/meter/5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/6-filled.svg b/assets/icons/meter/6-filled.svg new file mode 100644 index 000000000..d51cfe615 --- /dev/null +++ b/assets/icons/meter/6-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/6.svg b/assets/icons/meter/6.svg new file mode 100644 index 000000000..d039441a3 --- /dev/null +++ b/assets/icons/meter/6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/7-filled.svg b/assets/icons/meter/7-filled.svg new file mode 100644 index 000000000..019281964 --- /dev/null +++ b/assets/icons/meter/7-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/7.svg b/assets/icons/meter/7.svg new file mode 100644 index 000000000..8f42d7b95 --- /dev/null +++ b/assets/icons/meter/7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/8-filled.svg b/assets/icons/meter/8-filled.svg new file mode 100644 index 000000000..d6af5c167 --- /dev/null +++ b/assets/icons/meter/8-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/8.svg b/assets/icons/meter/8.svg new file mode 100644 index 000000000..1335964be --- /dev/null +++ b/assets/icons/meter/8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/9-filled.svg b/assets/icons/meter/9-filled.svg new file mode 100644 index 000000000..8605bbede --- /dev/null +++ b/assets/icons/meter/9-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/9.svg b/assets/icons/meter/9.svg new file mode 100644 index 000000000..7835f0844 --- /dev/null +++ b/assets/icons/meter/9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/middle-filled.svg b/assets/icons/meter/middle-filled.svg new file mode 100644 index 000000000..ce995e553 --- /dev/null +++ b/assets/icons/meter/middle-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/middle.svg b/assets/icons/meter/middle.svg new file mode 100644 index 000000000..0a7e6d5c9 --- /dev/null +++ b/assets/icons/meter/middle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/quarter-filled.svg b/assets/icons/meter/quarter-filled.svg new file mode 100644 index 000000000..78ca80399 --- /dev/null +++ b/assets/icons/meter/quarter-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/quarter.svg b/assets/icons/meter/quarter.svg new file mode 100644 index 000000000..f0a008898 --- /dev/null +++ b/assets/icons/meter/quarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/three-quarter-filled.svg b/assets/icons/meter/three-quarter-filled.svg new file mode 100644 index 000000000..736c253b3 --- /dev/null +++ b/assets/icons/meter/three-quarter-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/meter/three-quarter.svg b/assets/icons/meter/three-quarter.svg new file mode 100644 index 000000000..43b7e5f49 --- /dev/null +++ b/assets/icons/meter/three-quarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/_.svg b/assets/icons/microphone/_.svg new file mode 100644 index 000000000..f31305d43 --- /dev/null +++ b/assets/icons/microphone/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/filled.svg b/assets/icons/microphone/filled.svg new file mode 100644 index 000000000..a3630c765 --- /dev/null +++ b/assets/icons/microphone/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/high-filled.svg b/assets/icons/microphone/high-filled.svg new file mode 100644 index 000000000..b4ba058aa --- /dev/null +++ b/assets/icons/microphone/high-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/high.svg b/assets/icons/microphone/high.svg new file mode 100644 index 000000000..71e4dca68 --- /dev/null +++ b/assets/icons/microphone/high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/low-filled.svg b/assets/icons/microphone/low-filled.svg new file mode 100644 index 000000000..21a20f8c2 --- /dev/null +++ b/assets/icons/microphone/low-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/low.svg b/assets/icons/microphone/low.svg new file mode 100644 index 000000000..576a68a98 --- /dev/null +++ b/assets/icons/microphone/low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/medium-filled.svg b/assets/icons/microphone/medium-filled.svg new file mode 100644 index 000000000..06e65ab57 --- /dev/null +++ b/assets/icons/microphone/medium-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/medium.svg b/assets/icons/microphone/medium.svg new file mode 100644 index 000000000..af5cfbdb9 --- /dev/null +++ b/assets/icons/microphone/medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/muted-filled.svg b/assets/icons/microphone/muted-filled.svg new file mode 100644 index 000000000..04b3dfae1 --- /dev/null +++ b/assets/icons/microphone/muted-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/microphone/muted.svg b/assets/icons/microphone/muted.svg new file mode 100644 index 000000000..a80936ca1 --- /dev/null +++ b/assets/icons/microphone/muted.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/minus.svg b/assets/icons/minus.svg new file mode 100644 index 000000000..77ec51fbf --- /dev/null +++ b/assets/icons/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/modem-filled.svg b/assets/icons/modem-filled.svg new file mode 100644 index 000000000..55af4e5ed --- /dev/null +++ b/assets/icons/modem-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/modem.svg b/assets/icons/modem.svg new file mode 100644 index 000000000..56408e19a --- /dev/null +++ b/assets/icons/modem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/monitor-filled.svg b/assets/icons/monitor-filled.svg new file mode 100644 index 000000000..ba8af0785 --- /dev/null +++ b/assets/icons/monitor-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/monitor.svg b/assets/icons/monitor.svg new file mode 100644 index 000000000..45d0caa27 --- /dev/null +++ b/assets/icons/monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mouse-filled.svg b/assets/icons/mouse-filled.svg new file mode 100644 index 000000000..2295e7aab --- /dev/null +++ b/assets/icons/mouse-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/mouse.svg b/assets/icons/mouse.svg new file mode 100644 index 000000000..1fb25065a --- /dev/null +++ b/assets/icons/mouse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/multimedia-filled.svg b/assets/icons/multimedia-filled.svg new file mode 100644 index 000000000..bc21719ec --- /dev/null +++ b/assets/icons/multimedia-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/multimedia-player-filled.svg b/assets/icons/multimedia-player-filled.svg new file mode 100644 index 000000000..c1a964511 --- /dev/null +++ b/assets/icons/multimedia-player-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/multimedia-player.svg b/assets/icons/multimedia-player.svg new file mode 100644 index 000000000..593826c32 --- /dev/null +++ b/assets/icons/multimedia-player.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/multimedia.svg b/assets/icons/multimedia.svg new file mode 100644 index 000000000..e96d04ac2 --- /dev/null +++ b/assets/icons/multimedia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/artist-filled.svg b/assets/icons/music/artist-filled.svg new file mode 100644 index 000000000..8ee3d322f --- /dev/null +++ b/assets/icons/music/artist-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/artist.svg b/assets/icons/music/artist.svg new file mode 100644 index 000000000..882526578 --- /dev/null +++ b/assets/icons/music/artist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/history-filled.svg b/assets/icons/music/history-filled.svg new file mode 100644 index 000000000..a2f02b05d --- /dev/null +++ b/assets/icons/music/history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/history.svg b/assets/icons/music/history.svg new file mode 100644 index 000000000..ca6b500ab --- /dev/null +++ b/assets/icons/music/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/note.svg b/assets/icons/music/note.svg new file mode 100644 index 000000000..e0904fc12 --- /dev/null +++ b/assets/icons/music/note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/queue-filled.svg b/assets/icons/music/queue-filled.svg new file mode 100644 index 000000000..52fead2f3 --- /dev/null +++ b/assets/icons/music/queue-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/queue.svg b/assets/icons/music/queue.svg new file mode 100644 index 000000000..ed41b84ef --- /dev/null +++ b/assets/icons/music/queue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/single-filled.svg b/assets/icons/music/single-filled.svg new file mode 100644 index 000000000..4fa2fdff8 --- /dev/null +++ b/assets/icons/music/single-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/music/single.svg b/assets/icons/music/single.svg new file mode 100644 index 000000000..b97548972 --- /dev/null +++ b/assets/icons/music/single.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/_.svg b/assets/icons/network/_.svg new file mode 100644 index 000000000..be7d61aa3 --- /dev/null +++ b/assets/icons/network/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/2g.svg b/assets/icons/network/cellular/2g.svg new file mode 100644 index 000000000..74882fddc --- /dev/null +++ b/assets/icons/network/cellular/2g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/3g.svg b/assets/icons/network/cellular/3g.svg new file mode 100644 index 000000000..18c7caebd --- /dev/null +++ b/assets/icons/network/cellular/3g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/4g.svg b/assets/icons/network/cellular/4g.svg new file mode 100644 index 000000000..d85deaa35 --- /dev/null +++ b/assets/icons/network/cellular/4g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/5g.svg b/assets/icons/network/cellular/5g.svg new file mode 100644 index 000000000..fbe4891c4 --- /dev/null +++ b/assets/icons/network/cellular/5g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/_.svg b/assets/icons/network/cellular/_.svg new file mode 100644 index 000000000..b5b84e0ea --- /dev/null +++ b/assets/icons/network/cellular/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/acquiring.svg b/assets/icons/network/cellular/acquiring.svg new file mode 100644 index 000000000..cb854ae42 --- /dev/null +++ b/assets/icons/network/cellular/acquiring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/connected.svg b/assets/icons/network/cellular/connected.svg new file mode 100644 index 000000000..f3c7b6c68 --- /dev/null +++ b/assets/icons/network/cellular/connected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/disabled.svg b/assets/icons/network/cellular/disabled.svg new file mode 100644 index 000000000..35a5d2b1e --- /dev/null +++ b/assets/icons/network/cellular/disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/edge.svg b/assets/icons/network/cellular/edge.svg new file mode 100644 index 000000000..52a89d488 --- /dev/null +++ b/assets/icons/network/cellular/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/gprs.svg b/assets/icons/network/cellular/gprs.svg new file mode 100644 index 000000000..10b6e5f13 --- /dev/null +++ b/assets/icons/network/cellular/gprs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/hardware-disabled.svg b/assets/icons/network/cellular/hardware-disabled.svg new file mode 100644 index 000000000..e6387d871 --- /dev/null +++ b/assets/icons/network/cellular/hardware-disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/hspa.svg b/assets/icons/network/cellular/hspa.svg new file mode 100644 index 000000000..3dbdd9193 --- /dev/null +++ b/assets/icons/network/cellular/hspa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/no-route.svg b/assets/icons/network/cellular/no-route.svg new file mode 100644 index 000000000..c46751c0e --- /dev/null +++ b/assets/icons/network/cellular/no-route.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/offline.svg b/assets/icons/network/cellular/offline.svg new file mode 100644 index 000000000..307823b1a --- /dev/null +++ b/assets/icons/network/cellular/offline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-excellent-secure.svg b/assets/icons/network/cellular/signal-excellent-secure.svg new file mode 100644 index 000000000..b2afaad04 --- /dev/null +++ b/assets/icons/network/cellular/signal-excellent-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-excellent.svg b/assets/icons/network/cellular/signal-excellent.svg new file mode 100644 index 000000000..fd9794643 --- /dev/null +++ b/assets/icons/network/cellular/signal-excellent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-good-secure.svg b/assets/icons/network/cellular/signal-good-secure.svg new file mode 100644 index 000000000..f31515919 --- /dev/null +++ b/assets/icons/network/cellular/signal-good-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-good.svg b/assets/icons/network/cellular/signal-good.svg new file mode 100644 index 000000000..0544e222e --- /dev/null +++ b/assets/icons/network/cellular/signal-good.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-none-secure.svg b/assets/icons/network/cellular/signal-none-secure.svg new file mode 100644 index 000000000..90406a46e --- /dev/null +++ b/assets/icons/network/cellular/signal-none-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-none.svg b/assets/icons/network/cellular/signal-none.svg new file mode 100644 index 000000000..d9202101e --- /dev/null +++ b/assets/icons/network/cellular/signal-none.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-ok-secure.svg b/assets/icons/network/cellular/signal-ok-secure.svg new file mode 100644 index 000000000..259bfdf07 --- /dev/null +++ b/assets/icons/network/cellular/signal-ok-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-ok.svg b/assets/icons/network/cellular/signal-ok.svg new file mode 100644 index 000000000..3ba1e2643 --- /dev/null +++ b/assets/icons/network/cellular/signal-ok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-weak-secure.svg b/assets/icons/network/cellular/signal-weak-secure.svg new file mode 100644 index 000000000..9924c3926 --- /dev/null +++ b/assets/icons/network/cellular/signal-weak-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/cellular/signal-weak.svg b/assets/icons/network/cellular/signal-weak.svg new file mode 100644 index 000000000..198a75128 --- /dev/null +++ b/assets/icons/network/cellular/signal-weak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/error-filled.svg b/assets/icons/network/error-filled.svg new file mode 100644 index 000000000..8db6e4bc0 --- /dev/null +++ b/assets/icons/network/error-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/error.svg b/assets/icons/network/error.svg new file mode 100644 index 000000000..2789ac3ac --- /dev/null +++ b/assets/icons/network/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/filled.svg b/assets/icons/network/filled.svg new file mode 100644 index 000000000..0e127e73e --- /dev/null +++ b/assets/icons/network/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/hotspot.svg b/assets/icons/network/hotspot.svg new file mode 100644 index 000000000..d36ae42f9 --- /dev/null +++ b/assets/icons/network/hotspot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/idle.svg b/assets/icons/network/idle.svg new file mode 100644 index 000000000..05783b520 --- /dev/null +++ b/assets/icons/network/idle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/offline-filled.svg b/assets/icons/network/offline-filled.svg new file mode 100644 index 000000000..ba9aae26f --- /dev/null +++ b/assets/icons/network/offline-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/offline.svg b/assets/icons/network/offline.svg new file mode 100644 index 000000000..a71944a58 --- /dev/null +++ b/assets/icons/network/offline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/receive.svg b/assets/icons/network/receive.svg new file mode 100644 index 000000000..e539b111d --- /dev/null +++ b/assets/icons/network/receive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/transmit-receive.svg b/assets/icons/network/transmit-receive.svg new file mode 100644 index 000000000..3a4b34c76 --- /dev/null +++ b/assets/icons/network/transmit-receive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/transmit.svg b/assets/icons/network/transmit.svg new file mode 100644 index 000000000..23d3a330a --- /dev/null +++ b/assets/icons/network/transmit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wired-filled.svg b/assets/icons/network/wired-filled.svg new file mode 100644 index 000000000..0e74340a4 --- /dev/null +++ b/assets/icons/network/wired-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wired.svg b/assets/icons/network/wired.svg new file mode 100644 index 000000000..d88d45c67 --- /dev/null +++ b/assets/icons/network/wired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/_.svg b/assets/icons/network/wireless/_.svg new file mode 100644 index 000000000..4fdaf3c84 --- /dev/null +++ b/assets/icons/network/wireless/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/acquiring.svg b/assets/icons/network/wireless/acquiring.svg new file mode 100644 index 000000000..b18288072 --- /dev/null +++ b/assets/icons/network/wireless/acquiring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/disabled.svg b/assets/icons/network/wireless/disabled.svg new file mode 100644 index 000000000..eccdbf326 --- /dev/null +++ b/assets/icons/network/wireless/disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/no-route.svg b/assets/icons/network/wireless/no-route.svg new file mode 100644 index 000000000..d0e8406d0 --- /dev/null +++ b/assets/icons/network/wireless/no-route.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-excellent-secure.svg b/assets/icons/network/wireless/signal-excellent-secure.svg new file mode 100644 index 000000000..5ff9d24ff --- /dev/null +++ b/assets/icons/network/wireless/signal-excellent-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-excellent.svg b/assets/icons/network/wireless/signal-excellent.svg new file mode 100644 index 000000000..6758d2d07 --- /dev/null +++ b/assets/icons/network/wireless/signal-excellent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-good-secure.svg b/assets/icons/network/wireless/signal-good-secure.svg new file mode 100644 index 000000000..e8382adc9 --- /dev/null +++ b/assets/icons/network/wireless/signal-good-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-good.svg b/assets/icons/network/wireless/signal-good.svg new file mode 100644 index 000000000..b24695035 --- /dev/null +++ b/assets/icons/network/wireless/signal-good.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-none-secure.svg b/assets/icons/network/wireless/signal-none-secure.svg new file mode 100644 index 000000000..8ea6284a4 --- /dev/null +++ b/assets/icons/network/wireless/signal-none-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-none.svg b/assets/icons/network/wireless/signal-none.svg new file mode 100644 index 000000000..881c6c963 --- /dev/null +++ b/assets/icons/network/wireless/signal-none.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-ok-secure.svg b/assets/icons/network/wireless/signal-ok-secure.svg new file mode 100644 index 000000000..3b33fc0a4 --- /dev/null +++ b/assets/icons/network/wireless/signal-ok-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-ok.svg b/assets/icons/network/wireless/signal-ok.svg new file mode 100644 index 000000000..583b36831 --- /dev/null +++ b/assets/icons/network/wireless/signal-ok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-weak-secure.svg b/assets/icons/network/wireless/signal-weak-secure.svg new file mode 100644 index 000000000..137fac968 --- /dev/null +++ b/assets/icons/network/wireless/signal-weak-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/network/wireless/signal-weak.svg b/assets/icons/network/wireless/signal-weak.svg new file mode 100644 index 000000000..af886eb06 --- /dev/null +++ b/assets/icons/network/wireless/signal-weak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/_.svg b/assets/icons/no-package/_.svg new file mode 100644 index 000000000..9dc2f25dd --- /dev/null +++ b/assets/icons/no-package/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/deb-filled.svg b/assets/icons/no-package/deb-filled.svg new file mode 100644 index 000000000..e81244dfe --- /dev/null +++ b/assets/icons/no-package/deb-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/deb.svg b/assets/icons/no-package/deb.svg new file mode 100644 index 000000000..3e0f3d35b --- /dev/null +++ b/assets/icons/no-package/deb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/filled.svg b/assets/icons/no-package/filled.svg new file mode 100644 index 000000000..66548009b --- /dev/null +++ b/assets/icons/no-package/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/flatpak-filled.svg b/assets/icons/no-package/flatpak-filled.svg new file mode 100644 index 000000000..0fba57060 --- /dev/null +++ b/assets/icons/no-package/flatpak-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/flatpak.svg b/assets/icons/no-package/flatpak.svg new file mode 100644 index 000000000..a1db7e430 --- /dev/null +++ b/assets/icons/no-package/flatpak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/snap-filled.svg b/assets/icons/no-package/snap-filled.svg new file mode 100644 index 000000000..2d86e7b57 --- /dev/null +++ b/assets/icons/no-package/snap-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/no-package/snap.svg b/assets/icons/no-package/snap.svg new file mode 100644 index 000000000..2bf21b29a --- /dev/null +++ b/assets/icons/no-package/snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/notjunk/_.svg b/assets/icons/notjunk/_.svg new file mode 100644 index 000000000..918713931 --- /dev/null +++ b/assets/icons/notjunk/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/notjunk/filled.svg b/assets/icons/notjunk/filled.svg new file mode 100644 index 000000000..913007063 --- /dev/null +++ b/assets/icons/notjunk/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/_.svg b/assets/icons/office/_.svg new file mode 100644 index 000000000..dcdc0bd05 --- /dev/null +++ b/assets/icons/office/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/drawing-filled.svg b/assets/icons/office/drawing-filled.svg new file mode 100644 index 000000000..0ff80471f --- /dev/null +++ b/assets/icons/office/drawing-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/drawing.svg b/assets/icons/office/drawing.svg new file mode 100644 index 000000000..af1cd0a31 --- /dev/null +++ b/assets/icons/office/drawing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/filled.svg b/assets/icons/office/filled.svg new file mode 100644 index 000000000..2819c4650 --- /dev/null +++ b/assets/icons/office/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/presentation-filled.svg b/assets/icons/office/presentation-filled.svg new file mode 100644 index 000000000..bca92ec30 --- /dev/null +++ b/assets/icons/office/presentation-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/presentation.svg b/assets/icons/office/presentation.svg new file mode 100644 index 000000000..fc96d60c0 --- /dev/null +++ b/assets/icons/office/presentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/spreadsheet-filled.svg b/assets/icons/office/spreadsheet-filled.svg new file mode 100644 index 000000000..52c940033 --- /dev/null +++ b/assets/icons/office/spreadsheet-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/office/spreadsheet.svg b/assets/icons/office/spreadsheet.svg new file mode 100644 index 000000000..09af79fae --- /dev/null +++ b/assets/icons/office/spreadsheet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ok-filled.svg b/assets/icons/ok-filled.svg new file mode 100644 index 000000000..c07687251 --- /dev/null +++ b/assets/icons/ok-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ok-simple.svg b/assets/icons/ok-simple.svg new file mode 100644 index 000000000..2e45b8078 --- /dev/null +++ b/assets/icons/ok-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ok.svg b/assets/icons/ok.svg new file mode 100644 index 000000000..8f9a0058c --- /dev/null +++ b/assets/icons/ok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ordered-list/_.svg b/assets/icons/ordered-list/_.svg new file mode 100644 index 000000000..688f90cd1 --- /dev/null +++ b/assets/icons/ordered-list/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ordered-list/new.svg b/assets/icons/ordered-list/new.svg new file mode 100644 index 000000000..1acdcf0cf --- /dev/null +++ b/assets/icons/ordered-list/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ordered-list/remove.svg b/assets/icons/ordered-list/remove.svg new file mode 100644 index 000000000..a410df90e --- /dev/null +++ b/assets/icons/ordered-list/remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/outbox-filled.svg b/assets/icons/outbox-filled.svg new file mode 100644 index 000000000..3ba95ff8f --- /dev/null +++ b/assets/icons/outbox-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/outbox.svg b/assets/icons/outbox.svg new file mode 100644 index 000000000..510c978e3 --- /dev/null +++ b/assets/icons/outbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/overcast-filled.svg b/assets/icons/overcast-filled.svg new file mode 100644 index 000000000..865a7ad9f --- /dev/null +++ b/assets/icons/overcast-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/overcast.svg b/assets/icons/overcast.svg new file mode 100644 index 000000000..42e77d159 --- /dev/null +++ b/assets/icons/overcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/_.svg b/assets/icons/package/_.svg new file mode 100644 index 000000000..ebe1d5b1f --- /dev/null +++ b/assets/icons/package/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/deb-filled.svg b/assets/icons/package/deb-filled.svg new file mode 100644 index 000000000..d3fdb9a3c --- /dev/null +++ b/assets/icons/package/deb-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/deb.svg b/assets/icons/package/deb.svg new file mode 100644 index 000000000..9559b178d --- /dev/null +++ b/assets/icons/package/deb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/filled.svg b/assets/icons/package/filled.svg new file mode 100644 index 000000000..5f6a3b360 --- /dev/null +++ b/assets/icons/package/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/flatpak-filled.svg b/assets/icons/package/flatpak-filled.svg new file mode 100644 index 000000000..635f1324a --- /dev/null +++ b/assets/icons/package/flatpak-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/flatpak.svg b/assets/icons/package/flatpak.svg new file mode 100644 index 000000000..5e2372c9c --- /dev/null +++ b/assets/icons/package/flatpak.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/snap-filled.svg b/assets/icons/package/snap-filled.svg new file mode 100644 index 000000000..eb08c5d81 --- /dev/null +++ b/assets/icons/package/snap-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/package/snap.svg b/assets/icons/package/snap.svg new file mode 100644 index 000000000..2f5d2699d --- /dev/null +++ b/assets/icons/package/snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pan/down.svg b/assets/icons/pan/down.svg new file mode 100644 index 000000000..420561c31 --- /dev/null +++ b/assets/icons/pan/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pan/end.svg b/assets/icons/pan/end.svg new file mode 100644 index 000000000..524004de1 --- /dev/null +++ b/assets/icons/pan/end.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pan/start.svg b/assets/icons/pan/start.svg new file mode 100644 index 000000000..806545650 --- /dev/null +++ b/assets/icons/pan/start.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pan/up.svg b/assets/icons/pan/up.svg new file mode 100644 index 000000000..05cee03b5 --- /dev/null +++ b/assets/icons/pan/up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/panel-look-filled.svg b/assets/icons/panel-look-filled.svg new file mode 100644 index 000000000..0604f5d37 --- /dev/null +++ b/assets/icons/panel-look-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/panel-look.svg b/assets/icons/panel-look.svg new file mode 100644 index 000000000..da2526f41 --- /dev/null +++ b/assets/icons/panel-look.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/paper-clip.svg b/assets/icons/paper-clip.svg new file mode 100644 index 000000000..26287081b --- /dev/null +++ b/assets/icons/paper-clip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/paste-filled.svg b/assets/icons/paste-filled.svg new file mode 100644 index 000000000..cc35f516d --- /dev/null +++ b/assets/icons/paste-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/paste.svg b/assets/icons/paste.svg new file mode 100644 index 000000000..f94310624 --- /dev/null +++ b/assets/icons/paste.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pda-filled.svg b/assets/icons/pda-filled.svg new file mode 100644 index 000000000..b9e0fc082 --- /dev/null +++ b/assets/icons/pda-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pda.svg b/assets/icons/pda.svg new file mode 100644 index 000000000..867cd081a --- /dev/null +++ b/assets/icons/pda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pen.svg b/assets/icons/pen.svg new file mode 100644 index 000000000..877d24f82 --- /dev/null +++ b/assets/icons/pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/phone/_.svg b/assets/icons/phone/_.svg new file mode 100644 index 000000000..678fe6ca3 --- /dev/null +++ b/assets/icons/phone/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/phone/old-filled.svg b/assets/icons/phone/old-filled.svg new file mode 100644 index 000000000..b526b65d1 --- /dev/null +++ b/assets/icons/phone/old-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/phone/old.svg b/assets/icons/phone/old.svg new file mode 100644 index 000000000..0f6d98fec --- /dev/null +++ b/assets/icons/phone/old.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/phone/receiver.svg b/assets/icons/phone/receiver.svg new file mode 100644 index 000000000..0954974f5 --- /dev/null +++ b/assets/icons/phone/receiver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/pin.svg b/assets/icons/pin.svg new file mode 100644 index 000000000..607e0dc2e --- /dev/null +++ b/assets/icons/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/placeholder-icon-filled.svg b/assets/icons/placeholder-icon-filled.svg new file mode 100644 index 000000000..85b9e8c54 --- /dev/null +++ b/assets/icons/placeholder-icon-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/placeholder-icon.svg b/assets/icons/placeholder-icon.svg new file mode 100644 index 000000000..e189621dd --- /dev/null +++ b/assets/icons/placeholder-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/playlist/_.svg b/assets/icons/playlist/_.svg new file mode 100644 index 000000000..f8efc5155 --- /dev/null +++ b/assets/icons/playlist/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/playlist/filled.svg b/assets/icons/playlist/filled.svg new file mode 100644 index 000000000..433a7de62 --- /dev/null +++ b/assets/icons/playlist/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/playlist/play.svg b/assets/icons/playlist/play.svg new file mode 100644 index 000000000..a6d55d9ce --- /dev/null +++ b/assets/icons/playlist/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/plus.svg b/assets/icons/plus.svg new file mode 100644 index 000000000..52697a59e --- /dev/null +++ b/assets/icons/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/podcast-filled.svg b/assets/icons/podcast-filled.svg new file mode 100644 index 000000000..9a33b9df4 --- /dev/null +++ b/assets/icons/podcast-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/podcast.svg b/assets/icons/podcast.svg new file mode 100644 index 000000000..b8041f315 --- /dev/null +++ b/assets/icons/podcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/power-filled.svg b/assets/icons/power-filled.svg new file mode 100644 index 000000000..fd4bad9d8 --- /dev/null +++ b/assets/icons/power-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/power.svg b/assets/icons/power.svg new file mode 100644 index 000000000..129af4850 --- /dev/null +++ b/assets/icons/power.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/_.svg b/assets/icons/printer/_.svg new file mode 100644 index 000000000..1e5fefdfc --- /dev/null +++ b/assets/icons/printer/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/error-filled.svg b/assets/icons/printer/error-filled.svg new file mode 100644 index 000000000..d0a5b1483 --- /dev/null +++ b/assets/icons/printer/error-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/error.svg b/assets/icons/printer/error.svg new file mode 100644 index 000000000..9f5ceb2d1 --- /dev/null +++ b/assets/icons/printer/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/filled.svg b/assets/icons/printer/filled.svg new file mode 100644 index 000000000..963b7cb16 --- /dev/null +++ b/assets/icons/printer/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/network-filled.svg b/assets/icons/printer/network-filled.svg new file mode 100644 index 000000000..a6fc31aff --- /dev/null +++ b/assets/icons/printer/network-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/network.svg b/assets/icons/printer/network.svg new file mode 100644 index 000000000..b5e06c515 --- /dev/null +++ b/assets/icons/printer/network.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/preview-filled.svg b/assets/icons/printer/preview-filled.svg new file mode 100644 index 000000000..583dbef91 --- /dev/null +++ b/assets/icons/printer/preview-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/preview.svg b/assets/icons/printer/preview.svg new file mode 100644 index 000000000..dbdf08b25 --- /dev/null +++ b/assets/icons/printer/preview.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/printing-filled.svg b/assets/icons/printer/printing-filled.svg new file mode 100644 index 000000000..6cf8037b8 --- /dev/null +++ b/assets/icons/printer/printing-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/printing.svg b/assets/icons/printer/printing.svg new file mode 100644 index 000000000..773f8c93e --- /dev/null +++ b/assets/icons/printer/printing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/warning-filled.svg b/assets/icons/printer/warning-filled.svg new file mode 100644 index 000000000..6d9fd9656 --- /dev/null +++ b/assets/icons/printer/warning-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/printer/warning.svg b/assets/icons/printer/warning.svg new file mode 100644 index 000000000..076d65304 --- /dev/null +++ b/assets/icons/printer/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/private-mask-filled.svg b/assets/icons/private-mask-filled.svg new file mode 100644 index 000000000..889914a90 --- /dev/null +++ b/assets/icons/private-mask-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/private-mask.svg b/assets/icons/private-mask.svg new file mode 100644 index 000000000..991d5191b --- /dev/null +++ b/assets/icons/private-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/puzzle_piece.svg b/assets/icons/puzzle_piece.svg new file mode 100644 index 000000000..0fa17b47b --- /dev/null +++ b/assets/icons/puzzle_piece.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/puzzle_piece_filled.svg b/assets/icons/puzzle_piece_filled.svg new file mode 100644 index 000000000..0bb33843b --- /dev/null +++ b/assets/icons/puzzle_piece_filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/question-filled.svg b/assets/icons/question-filled.svg new file mode 100644 index 000000000..2a5b4bdd9 --- /dev/null +++ b/assets/icons/question-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/question.svg b/assets/icons/question.svg new file mode 100644 index 000000000..92148d249 --- /dev/null +++ b/assets/icons/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radio-filled.svg b/assets/icons/radio-filled.svg new file mode 100644 index 000000000..e88ca9a82 --- /dev/null +++ b/assets/icons/radio-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radio.svg b/assets/icons/radio.svg new file mode 100644 index 000000000..bf8001610 --- /dev/null +++ b/assets/icons/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radiobox/_.svg b/assets/icons/radiobox/_.svg new file mode 100644 index 000000000..c91d033ad --- /dev/null +++ b/assets/icons/radiobox/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radiobox/checked-filled.svg b/assets/icons/radiobox/checked-filled.svg new file mode 100644 index 000000000..0f8e665fa --- /dev/null +++ b/assets/icons/radiobox/checked-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radiobox/checked.svg b/assets/icons/radiobox/checked.svg new file mode 100644 index 000000000..95d6767b4 --- /dev/null +++ b/assets/icons/radiobox/checked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radiobox/filled.svg b/assets/icons/radiobox/filled.svg new file mode 100644 index 000000000..601f8d750 --- /dev/null +++ b/assets/icons/radiobox/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radiobox/mixed-filled.svg b/assets/icons/radiobox/mixed-filled.svg new file mode 100644 index 000000000..069b4cd5c --- /dev/null +++ b/assets/icons/radiobox/mixed-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/radiobox/mixed.svg b/assets/icons/radiobox/mixed.svg new file mode 100644 index 000000000..dbd53f3df --- /dev/null +++ b/assets/icons/radiobox/mixed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rain-filled.svg b/assets/icons/rain-filled.svg new file mode 100644 index 000000000..fb6f7ad52 --- /dev/null +++ b/assets/icons/rain-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rain.svg b/assets/icons/rain.svg new file mode 100644 index 000000000..e98324555 --- /dev/null +++ b/assets/icons/rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/reboot.svg b/assets/icons/reboot.svg new file mode 100644 index 000000000..a0f8255ec --- /dev/null +++ b/assets/icons/reboot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/redo.svg b/assets/icons/redo.svg new file mode 100644 index 000000000..b55db9dce --- /dev/null +++ b/assets/icons/redo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/refresh.svg b/assets/icons/refresh.svg new file mode 100644 index 000000000..18fbd874e --- /dev/null +++ b/assets/icons/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/repeat/_.svg b/assets/icons/repeat/_.svg new file mode 100644 index 000000000..6855256c8 --- /dev/null +++ b/assets/icons/repeat/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/repeat/filled.svg b/assets/icons/repeat/filled.svg new file mode 100644 index 000000000..94374d437 --- /dev/null +++ b/assets/icons/repeat/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/repeat/single-filled.svg b/assets/icons/repeat/single-filled.svg new file mode 100644 index 000000000..80c6b75f3 --- /dev/null +++ b/assets/icons/repeat/single-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/repeat/single.svg b/assets/icons/repeat/single.svg new file mode 100644 index 000000000..7bc2d298f --- /dev/null +++ b/assets/icons/repeat/single.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/reply-all.svg b/assets/icons/reply-all.svg new file mode 100644 index 000000000..750b611d5 --- /dev/null +++ b/assets/icons/reply-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/reply.svg b/assets/icons/reply.svg new file mode 100644 index 000000000..5173017fd --- /dev/null +++ b/assets/icons/reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/revert.svg b/assets/icons/revert.svg new file mode 100644 index 000000000..ebcf08b80 --- /dev/null +++ b/assets/icons/revert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rotate-left.svg b/assets/icons/rotate-left.svg new file mode 100644 index 000000000..a32fbaf27 --- /dev/null +++ b/assets/icons/rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rotate-right.svg b/assets/icons/rotate-right.svg new file mode 100644 index 000000000..fed2bd5e5 --- /dev/null +++ b/assets/icons/rotate-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rss.svg b/assets/icons/rss.svg new file mode 100644 index 000000000..18579b678 --- /dev/null +++ b/assets/icons/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rule-and-pen-filled.svg b/assets/icons/rule-and-pen-filled.svg new file mode 100644 index 000000000..72147e4eb --- /dev/null +++ b/assets/icons/rule-and-pen-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/rule-and-pen.svg b/assets/icons/rule-and-pen.svg new file mode 100644 index 000000000..c6c8ae780 --- /dev/null +++ b/assets/icons/rule-and-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/save/_.svg b/assets/icons/save/_.svg new file mode 100644 index 000000000..876ddba0a --- /dev/null +++ b/assets/icons/save/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/save/as-filled.svg b/assets/icons/save/as-filled.svg new file mode 100644 index 000000000..c76cb0456 --- /dev/null +++ b/assets/icons/save/as-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/save/as.svg b/assets/icons/save/as.svg new file mode 100644 index 000000000..b00054dd9 --- /dev/null +++ b/assets/icons/save/as.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/save/filled.svg b/assets/icons/save/filled.svg new file mode 100644 index 000000000..b779c94bb --- /dev/null +++ b/assets/icons/save/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/scanner-filled.svg b/assets/icons/scanner-filled.svg new file mode 100644 index 000000000..5896b3bf8 --- /dev/null +++ b/assets/icons/scanner-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/scanner.svg b/assets/icons/scanner.svg new file mode 100644 index 000000000..a58bfc0b8 --- /dev/null +++ b/assets/icons/scanner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/screen/_.svg b/assets/icons/screen/_.svg new file mode 100644 index 000000000..669a1314c --- /dev/null +++ b/assets/icons/screen/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/screen/filled.svg b/assets/icons/screen/filled.svg new file mode 100644 index 000000000..32b4e1ba8 --- /dev/null +++ b/assets/icons/screen/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/screen/lock-filled.svg b/assets/icons/screen/lock-filled.svg new file mode 100644 index 000000000..75ec3bc75 --- /dev/null +++ b/assets/icons/screen/lock-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/screen/lock.svg b/assets/icons/screen/lock.svg new file mode 100644 index 000000000..67b8adc9d --- /dev/null +++ b/assets/icons/screen/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/screensaver-filled.svg b/assets/icons/screensaver-filled.svg new file mode 100644 index 000000000..39619d59d --- /dev/null +++ b/assets/icons/screensaver-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/screensaver.svg b/assets/icons/screensaver.svg new file mode 100644 index 000000000..fbe5a031a --- /dev/null +++ b/assets/icons/screensaver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/script-filled.svg b/assets/icons/script-filled.svg new file mode 100644 index 000000000..544d6bc5d --- /dev/null +++ b/assets/icons/script-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/script.svg b/assets/icons/script.svg new file mode 100644 index 000000000..d42b6ab9a --- /dev/null +++ b/assets/icons/script.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/search-history-filled.svg b/assets/icons/search-history-filled.svg new file mode 100644 index 000000000..25f458aad --- /dev/null +++ b/assets/icons/search-history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/search-history.svg b/assets/icons/search-history.svg new file mode 100644 index 000000000..3432cbdce --- /dev/null +++ b/assets/icons/search-history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/selection.svg b/assets/icons/selection.svg new file mode 100644 index 000000000..73a358708 --- /dev/null +++ b/assets/icons/selection.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/send-filled.svg b/assets/icons/send-filled.svg new file mode 100644 index 000000000..7288d21c3 --- /dev/null +++ b/assets/icons/send-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/send-receive.svg b/assets/icons/send-receive.svg new file mode 100644 index 000000000..b34327abd --- /dev/null +++ b/assets/icons/send-receive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/send.svg b/assets/icons/send.svg new file mode 100644 index 000000000..f47ee1ae9 --- /dev/null +++ b/assets/icons/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/server-filled.svg b/assets/icons/server-filled.svg new file mode 100644 index 000000000..6f9805460 --- /dev/null +++ b/assets/icons/server-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/server.svg b/assets/icons/server.svg new file mode 100644 index 000000000..afc43cb43 --- /dev/null +++ b/assets/icons/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/share-filled.svg b/assets/icons/share-filled.svg new file mode 100644 index 000000000..875bcf845 --- /dev/null +++ b/assets/icons/share-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/share.svg b/assets/icons/share.svg new file mode 100644 index 000000000..733b5991c --- /dev/null +++ b/assets/icons/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/shield/_.svg b/assets/icons/shield/_.svg new file mode 100644 index 000000000..7ff920131 --- /dev/null +++ b/assets/icons/shield/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/shield/filled.svg b/assets/icons/shield/filled.svg new file mode 100644 index 000000000..f0f0abaa1 --- /dev/null +++ b/assets/icons/shield/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/shield/warning.svg b/assets/icons/shield/warning.svg new file mode 100644 index 000000000..bf007f93b --- /dev/null +++ b/assets/icons/shield/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/showers-filled.svg b/assets/icons/showers-filled.svg new file mode 100644 index 000000000..1554b6975 --- /dev/null +++ b/assets/icons/showers-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/showers-night-filled.svg b/assets/icons/showers-night-filled.svg new file mode 100644 index 000000000..bb8ce4171 --- /dev/null +++ b/assets/icons/showers-night-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/showers-night.svg b/assets/icons/showers-night.svg new file mode 100644 index 000000000..89319d698 --- /dev/null +++ b/assets/icons/showers-night.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/showers.svg b/assets/icons/showers.svg new file mode 100644 index 000000000..66b6062d6 --- /dev/null +++ b/assets/icons/showers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/shuffle.svg b/assets/icons/shuffle.svg new file mode 100644 index 000000000..90c519724 --- /dev/null +++ b/assets/icons/shuffle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/shutdown.svg b/assets/icons/shutdown.svg new file mode 100644 index 000000000..842f661b1 --- /dev/null +++ b/assets/icons/shutdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/_.svg b/assets/icons/sidebar/_.svg new file mode 100644 index 000000000..9c305eaa5 --- /dev/null +++ b/assets/icons/sidebar/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/filled.svg b/assets/icons/sidebar/filled.svg new file mode 100644 index 000000000..f1d8ad108 --- /dev/null +++ b/assets/icons/sidebar/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/hide-filled.svg b/assets/icons/sidebar/hide-filled.svg new file mode 100644 index 000000000..aee5884d5 --- /dev/null +++ b/assets/icons/sidebar/hide-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/hide-right-filled.svg b/assets/icons/sidebar/hide-right-filled.svg new file mode 100644 index 000000000..25ef8e95a --- /dev/null +++ b/assets/icons/sidebar/hide-right-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/hide-right.svg b/assets/icons/sidebar/hide-right.svg new file mode 100644 index 000000000..fa6cf1de3 --- /dev/null +++ b/assets/icons/sidebar/hide-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/hide.svg b/assets/icons/sidebar/hide.svg new file mode 100644 index 000000000..6195ed5ff --- /dev/null +++ b/assets/icons/sidebar/hide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/right-filled.svg b/assets/icons/sidebar/right-filled.svg new file mode 100644 index 000000000..424c8b666 --- /dev/null +++ b/assets/icons/sidebar/right-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sidebar/right.svg b/assets/icons/sidebar/right.svg new file mode 100644 index 000000000..2ea1901f2 --- /dev/null +++ b/assets/icons/sidebar/right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/skip-backward.svg b/assets/icons/skip-backward.svg new file mode 100644 index 000000000..b64b26161 --- /dev/null +++ b/assets/icons/skip-backward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/skip-forward.svg b/assets/icons/skip-forward.svg new file mode 100644 index 000000000..54f5b5ce4 --- /dev/null +++ b/assets/icons/skip-forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/smartphone-filled.svg b/assets/icons/smartphone-filled.svg new file mode 100644 index 000000000..b8ead69a3 --- /dev/null +++ b/assets/icons/smartphone-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/smartphone.svg b/assets/icons/smartphone.svg new file mode 100644 index 000000000..fde5345a3 --- /dev/null +++ b/assets/icons/smartphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/_.svg b/assets/icons/snapcraft/_.svg new file mode 100644 index 000000000..21173bfae --- /dev/null +++ b/assets/icons/snapcraft/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/bag-filled.svg b/assets/icons/snapcraft/bag-filled.svg new file mode 100644 index 000000000..e0cd121ff --- /dev/null +++ b/assets/icons/snapcraft/bag-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/bag.svg b/assets/icons/snapcraft/bag.svg new file mode 100644 index 000000000..fef727898 --- /dev/null +++ b/assets/icons/snapcraft/bag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/error.svg b/assets/icons/snapcraft/error.svg new file mode 100644 index 000000000..f33def022 --- /dev/null +++ b/assets/icons/snapcraft/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/important.svg b/assets/icons/snapcraft/important.svg new file mode 100644 index 000000000..d286cb637 --- /dev/null +++ b/assets/icons/snapcraft/important.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/info.svg b/assets/icons/snapcraft/info.svg new file mode 100644 index 000000000..24121805e --- /dev/null +++ b/assets/icons/snapcraft/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snapcraft/warning.svg b/assets/icons/snapcraft/warning.svg new file mode 100644 index 000000000..b83a64bd8 --- /dev/null +++ b/assets/icons/snapcraft/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snow-filled.svg b/assets/icons/snow-filled.svg new file mode 100644 index 000000000..934d09e0d --- /dev/null +++ b/assets/icons/snow-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/snow.svg b/assets/icons/snow.svg new file mode 100644 index 000000000..dc56a2d35 --- /dev/null +++ b/assets/icons/snow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sort/ascending.svg b/assets/icons/sort/ascending.svg new file mode 100644 index 000000000..ba38aa240 --- /dev/null +++ b/assets/icons/sort/ascending.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sort/descending.svg b/assets/icons/sort/descending.svg new file mode 100644 index 000000000..e85d7d169 --- /dev/null +++ b/assets/icons/sort/descending.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/_.svg b/assets/icons/speaker/_.svg new file mode 100644 index 000000000..647326d6d --- /dev/null +++ b/assets/icons/speaker/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/filled.svg b/assets/icons/speaker/filled.svg new file mode 100644 index 000000000..38ea5573e --- /dev/null +++ b/assets/icons/speaker/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/high-filled.svg b/assets/icons/speaker/high-filled.svg new file mode 100644 index 000000000..38ea5573e --- /dev/null +++ b/assets/icons/speaker/high-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/high.svg b/assets/icons/speaker/high.svg new file mode 100644 index 000000000..dfddae184 --- /dev/null +++ b/assets/icons/speaker/high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/low-filled.svg b/assets/icons/speaker/low-filled.svg new file mode 100644 index 000000000..c97104f5d --- /dev/null +++ b/assets/icons/speaker/low-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/low.svg b/assets/icons/speaker/low.svg new file mode 100644 index 000000000..dc665245f --- /dev/null +++ b/assets/icons/speaker/low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/medium-filled.svg b/assets/icons/speaker/medium-filled.svg new file mode 100644 index 000000000..78aaebb6e --- /dev/null +++ b/assets/icons/speaker/medium-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/medium.svg b/assets/icons/speaker/medium.svg new file mode 100644 index 000000000..bf4c95269 --- /dev/null +++ b/assets/icons/speaker/medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/muted-filled.svg b/assets/icons/speaker/muted-filled.svg new file mode 100644 index 000000000..53c7b03e2 --- /dev/null +++ b/assets/icons/speaker/muted-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/muted.svg b/assets/icons/speaker/muted.svg new file mode 100644 index 000000000..23fc0334e --- /dev/null +++ b/assets/icons/speaker/muted.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/overamplified-filled.svg b/assets/icons/speaker/overamplified-filled.svg new file mode 100644 index 000000000..701f770d6 --- /dev/null +++ b/assets/icons/speaker/overamplified-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/speaker/overamplified.svg b/assets/icons/speaker/overamplified.svg new file mode 100644 index 000000000..5b9473cc1 --- /dev/null +++ b/assets/icons/speaker/overamplified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/star-filled.svg b/assets/icons/star-filled.svg new file mode 100644 index 000000000..2d770822b --- /dev/null +++ b/assets/icons/star-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/star-semi-filled.svg b/assets/icons/star-semi-filled.svg new file mode 100644 index 000000000..a98cfe2e3 --- /dev/null +++ b/assets/icons/star-semi-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/star.svg b/assets/icons/star.svg new file mode 100644 index 000000000..707f1f2cd --- /dev/null +++ b/assets/icons/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/stop.svg b/assets/icons/stop.svg new file mode 100644 index 000000000..97b099e20 --- /dev/null +++ b/assets/icons/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/stopwatch-filled.svg b/assets/icons/stopwatch-filled.svg new file mode 100644 index 000000000..870e95dc6 --- /dev/null +++ b/assets/icons/stopwatch-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/stopwatch.svg b/assets/icons/stopwatch.svg new file mode 100644 index 000000000..75746dd83 --- /dev/null +++ b/assets/icons/stopwatch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/storm-filled.svg b/assets/icons/storm-filled.svg new file mode 100644 index 000000000..4b946f375 --- /dev/null +++ b/assets/icons/storm-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/storm.svg b/assets/icons/storm.svg new file mode 100644 index 000000000..54d683aec --- /dev/null +++ b/assets/icons/storm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/strikethrough.svg b/assets/icons/strikethrough.svg new file mode 100644 index 000000000..7ee623070 --- /dev/null +++ b/assets/icons/strikethrough.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/subtitles-filled.svg b/assets/icons/subtitles-filled.svg new file mode 100644 index 000000000..4145cd466 --- /dev/null +++ b/assets/icons/subtitles-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/subtitles.svg b/assets/icons/subtitles.svg new file mode 100644 index 000000000..71a60c3b7 --- /dev/null +++ b/assets/icons/subtitles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sun-filled.svg b/assets/icons/sun-filled.svg new file mode 100644 index 000000000..855906973 --- /dev/null +++ b/assets/icons/sun-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sun.svg b/assets/icons/sun.svg new file mode 100644 index 000000000..65189900e --- /dev/null +++ b/assets/icons/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/swiss-knife-filled.svg b/assets/icons/swiss-knife-filled.svg new file mode 100644 index 000000000..378f6356f --- /dev/null +++ b/assets/icons/swiss-knife-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/swiss-knife.svg b/assets/icons/swiss-knife.svg new file mode 100644 index 000000000..7ed8dc1c9 --- /dev/null +++ b/assets/icons/swiss-knife.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/switchbox/_.svg b/assets/icons/switchbox/_.svg new file mode 100644 index 000000000..dc6382995 --- /dev/null +++ b/assets/icons/switchbox/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/switchbox/checked-filled.svg b/assets/icons/switchbox/checked-filled.svg new file mode 100644 index 000000000..7649f3d52 --- /dev/null +++ b/assets/icons/switchbox/checked-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/switchbox/checked.svg b/assets/icons/switchbox/checked.svg new file mode 100644 index 000000000..16bf8d1cc --- /dev/null +++ b/assets/icons/switchbox/checked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/switchbox/filled.svg b/assets/icons/switchbox/filled.svg new file mode 100644 index 000000000..c8900ac7d --- /dev/null +++ b/assets/icons/switchbox/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sync/_.svg b/assets/icons/sync/_.svg new file mode 100644 index 000000000..95c8d73d1 --- /dev/null +++ b/assets/icons/sync/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/sync/error.svg b/assets/icons/sync/error.svg new file mode 100644 index 000000000..a4559c39f --- /dev/null +++ b/assets/icons/sync/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tab-new-filled.svg b/assets/icons/tab-new-filled.svg new file mode 100644 index 000000000..2cd355676 --- /dev/null +++ b/assets/icons/tab-new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tab-new.svg b/assets/icons/tab-new.svg new file mode 100644 index 000000000..f0a4e42fc --- /dev/null +++ b/assets/icons/tab-new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tablet-filled.svg b/assets/icons/tablet-filled.svg new file mode 100644 index 000000000..e5f33e572 --- /dev/null +++ b/assets/icons/tablet-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tablet.svg b/assets/icons/tablet.svg new file mode 100644 index 000000000..521e7af67 --- /dev/null +++ b/assets/icons/tablet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tag-filled.svg b/assets/icons/tag-filled.svg new file mode 100644 index 000000000..3ae83473b --- /dev/null +++ b/assets/icons/tag-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tag.svg b/assets/icons/tag.svg new file mode 100644 index 000000000..4d8805334 --- /dev/null +++ b/assets/icons/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tape-filled.svg b/assets/icons/tape-filled.svg new file mode 100644 index 000000000..9a7907cc8 --- /dev/null +++ b/assets/icons/tape-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tape.svg b/assets/icons/tape.svg new file mode 100644 index 000000000..69a820da4 --- /dev/null +++ b/assets/icons/tape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/target-filled.svg b/assets/icons/target-filled.svg new file mode 100644 index 000000000..92e362fd4 --- /dev/null +++ b/assets/icons/target-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/target.svg b/assets/icons/target.svg new file mode 100644 index 000000000..fd53ef2c5 --- /dev/null +++ b/assets/icons/target.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/error-filled.svg b/assets/icons/task/error-filled.svg new file mode 100644 index 000000000..1b9677d82 --- /dev/null +++ b/assets/icons/task/error-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/error.svg b/assets/icons/task/error.svg new file mode 100644 index 000000000..166fd1865 --- /dev/null +++ b/assets/icons/task/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/important-filled.svg b/assets/icons/task/important-filled.svg new file mode 100644 index 000000000..f46e1f4cd --- /dev/null +++ b/assets/icons/task/important-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/important.svg b/assets/icons/task/important.svg new file mode 100644 index 000000000..cb01d0946 --- /dev/null +++ b/assets/icons/task/important.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/list-filled.svg b/assets/icons/task/list-filled.svg new file mode 100644 index 000000000..bd4e6e7ea --- /dev/null +++ b/assets/icons/task/list-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/list.svg b/assets/icons/task/list.svg new file mode 100644 index 000000000..8afc7130a --- /dev/null +++ b/assets/icons/task/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/warning-filled.svg b/assets/icons/task/warning-filled.svg new file mode 100644 index 000000000..62018fe1c --- /dev/null +++ b/assets/icons/task/warning-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/task/warning.svg b/assets/icons/task/warning.svg new file mode 100644 index 000000000..a0850c373 --- /dev/null +++ b/assets/icons/task/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/television-filled.svg b/assets/icons/television-filled.svg new file mode 100644 index 000000000..cdac517b8 --- /dev/null +++ b/assets/icons/television-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/television.svg b/assets/icons/television.svg new file mode 100644 index 000000000..12cbcac96 --- /dev/null +++ b/assets/icons/television.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/terminal-filled.svg b/assets/icons/terminal-filled.svg new file mode 100644 index 000000000..fcc5f6a2e --- /dev/null +++ b/assets/icons/terminal-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/terminal.svg b/assets/icons/terminal.svg new file mode 100644 index 000000000..f9d420000 --- /dev/null +++ b/assets/icons/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/text-direction-ltr.svg b/assets/icons/text-direction-ltr.svg new file mode 100644 index 000000000..f7daf3cee --- /dev/null +++ b/assets/icons/text-direction-ltr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/text-direction-rtl.svg b/assets/icons/text-direction-rtl.svg new file mode 100644 index 000000000..90e05098d --- /dev/null +++ b/assets/icons/text-direction-rtl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/text-editor-filled.svg b/assets/icons/text-editor-filled.svg new file mode 100644 index 000000000..34bca0db8 --- /dev/null +++ b/assets/icons/text-editor-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/text-editor.svg b/assets/icons/text-editor.svg new file mode 100644 index 000000000..bdfc101b1 --- /dev/null +++ b/assets/icons/text-editor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/thumb/down.svg b/assets/icons/thumb/down.svg new file mode 100644 index 000000000..30e6eedb3 --- /dev/null +++ b/assets/icons/thumb/down.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/assets/icons/thumb/down_filled.svg b/assets/icons/thumb/down_filled.svg new file mode 100644 index 000000000..f602157d2 --- /dev/null +++ b/assets/icons/thumb/down_filled.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/assets/icons/thumb/up.svg b/assets/icons/thumb/up.svg new file mode 100644 index 000000000..9d3a47017 --- /dev/null +++ b/assets/icons/thumb/up.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/assets/icons/thumb/up_filled.svg b/assets/icons/thumb/up_filled.svg new file mode 100644 index 000000000..ced12e99d --- /dev/null +++ b/assets/icons/thumb/up_filled.svg @@ -0,0 +1,57 @@ + + + + + + + + + + diff --git a/assets/icons/thunderbolt.svg b/assets/icons/thunderbolt.svg new file mode 100644 index 000000000..7b6ea0bc6 --- /dev/null +++ b/assets/icons/thunderbolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tornado.svg b/assets/icons/tornado.svg new file mode 100644 index 000000000..9c7e819ce --- /dev/null +++ b/assets/icons/tornado.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/touchpad-filled.svg b/assets/icons/touchpad-filled.svg new file mode 100644 index 000000000..176f1fa6a --- /dev/null +++ b/assets/icons/touchpad-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/touchpad.svg b/assets/icons/touchpad.svg new file mode 100644 index 000000000..17e949025 --- /dev/null +++ b/assets/icons/touchpad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/trash/_.svg b/assets/icons/trash/_.svg new file mode 100644 index 000000000..153cf4dea --- /dev/null +++ b/assets/icons/trash/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/trash/filled.svg b/assets/icons/trash/filled.svg new file mode 100644 index 000000000..25f4d7e79 --- /dev/null +++ b/assets/icons/trash/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/trash/full-filled.svg b/assets/icons/trash/full-filled.svg new file mode 100644 index 000000000..fbb5a4c78 --- /dev/null +++ b/assets/icons/trash/full-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/trash/full.svg b/assets/icons/trash/full.svg new file mode 100644 index 000000000..5cee49c3f --- /dev/null +++ b/assets/icons/trash/full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tree/_.svg b/assets/icons/tree/_.svg new file mode 100644 index 000000000..8270dedec --- /dev/null +++ b/assets/icons/tree/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tree/filled.svg b/assets/icons/tree/filled.svg new file mode 100644 index 000000000..d20391115 --- /dev/null +++ b/assets/icons/tree/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tree/fir-filled.svg b/assets/icons/tree/fir-filled.svg new file mode 100644 index 000000000..34748f359 --- /dev/null +++ b/assets/icons/tree/fir-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/tree/fir.svg b/assets/icons/tree/fir.svg new file mode 100644 index 000000000..778d0acb7 --- /dev/null +++ b/assets/icons/tree/fir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/trowel-filled.svg b/assets/icons/trowel-filled.svg new file mode 100644 index 000000000..b158cb6f0 --- /dev/null +++ b/assets/icons/trowel-filled.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/assets/icons/trowel.svg b/assets/icons/trowel.svg new file mode 100644 index 000000000..d0df6bf43 --- /dev/null +++ b/assets/icons/trowel.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/assets/icons/ubuntu-logo/_.svg b/assets/icons/ubuntu-logo/_.svg new file mode 100644 index 000000000..4247ae93d --- /dev/null +++ b/assets/icons/ubuntu-logo/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ubuntu-logo/large.svg b/assets/icons/ubuntu-logo/large.svg new file mode 100644 index 000000000..7b34349b6 --- /dev/null +++ b/assets/icons/ubuntu-logo/large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ubuntu-logo/simple.svg b/assets/icons/ubuntu-logo/simple.svg new file mode 100644 index 000000000..80f767795 --- /dev/null +++ b/assets/icons/ubuntu-logo/simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/underline.svg b/assets/icons/underline.svg new file mode 100644 index 000000000..8d253ea84 --- /dev/null +++ b/assets/icons/underline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/undo.svg b/assets/icons/undo.svg new file mode 100644 index 000000000..c5ab5ec93 --- /dev/null +++ b/assets/icons/undo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/unordered-list/_.svg b/assets/icons/unordered-list/_.svg new file mode 100644 index 000000000..e8f5d00b4 --- /dev/null +++ b/assets/icons/unordered-list/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/unordered-list/new.svg b/assets/icons/unordered-list/new.svg new file mode 100644 index 000000000..3f7015b31 --- /dev/null +++ b/assets/icons/unordered-list/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/unordered-list/remove.svg b/assets/icons/unordered-list/remove.svg new file mode 100644 index 000000000..6fc6463c4 --- /dev/null +++ b/assets/icons/unordered-list/remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/update/_.svg b/assets/icons/update/_.svg new file mode 100644 index 000000000..5505a3a8b --- /dev/null +++ b/assets/icons/update/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/update/available-filled.svg b/assets/icons/update/available-filled.svg new file mode 100644 index 000000000..59831e74e --- /dev/null +++ b/assets/icons/update/available-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/update/available.svg b/assets/icons/update/available.svg new file mode 100644 index 000000000..71eff1f14 --- /dev/null +++ b/assets/icons/update/available.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/update/urgent-filled.svg b/assets/icons/update/urgent-filled.svg new file mode 100644 index 000000000..66f206ea4 --- /dev/null +++ b/assets/icons/update/urgent-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/update/urgent.svg b/assets/icons/update/urgent.svg new file mode 100644 index 000000000..384bc8226 --- /dev/null +++ b/assets/icons/update/urgent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/usb-stick-filled.svg b/assets/icons/usb-stick-filled.svg new file mode 100644 index 000000000..3a52e2edb --- /dev/null +++ b/assets/icons/usb-stick-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/usb-stick.svg b/assets/icons/usb-stick.svg new file mode 100644 index 000000000..b43afee2b --- /dev/null +++ b/assets/icons/usb-stick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/user/_.svg b/assets/icons/user/_.svg new file mode 100644 index 000000000..01f7be00f --- /dev/null +++ b/assets/icons/user/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/user/filled.svg b/assets/icons/user/filled.svg new file mode 100644 index 000000000..6fd4bc11f --- /dev/null +++ b/assets/icons/user/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/user/new-filled.svg b/assets/icons/user/new-filled.svg new file mode 100644 index 000000000..19e27d6bf --- /dev/null +++ b/assets/icons/user/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/user/new.svg b/assets/icons/user/new.svg new file mode 100644 index 000000000..95627c3f8 --- /dev/null +++ b/assets/icons/user/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/users-filled.svg b/assets/icons/users-filled.svg new file mode 100644 index 000000000..f467e9acd --- /dev/null +++ b/assets/icons/users-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/users.svg b/assets/icons/users.svg new file mode 100644 index 000000000..bbde960d4 --- /dev/null +++ b/assets/icons/users.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/video/_.svg b/assets/icons/video/_.svg new file mode 100644 index 000000000..39f03aad8 --- /dev/null +++ b/assets/icons/video/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/video/filled.svg b/assets/icons/video/filled.svg new file mode 100644 index 000000000..82e6c5f90 --- /dev/null +++ b/assets/icons/video/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/video/history-filled.svg b/assets/icons/video/history-filled.svg new file mode 100644 index 000000000..a4a778025 --- /dev/null +++ b/assets/icons/video/history-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/video/history.svg b/assets/icons/video/history.svg new file mode 100644 index 000000000..af5afb1fb --- /dev/null +++ b/assets/icons/video/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/view-more/_.svg b/assets/icons/view-more/_.svg new file mode 100644 index 000000000..d79f20b43 --- /dev/null +++ b/assets/icons/view-more/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/view-more/horizontal.svg b/assets/icons/view-more/horizontal.svg new file mode 100644 index 000000000..eb3fbde24 --- /dev/null +++ b/assets/icons/view-more/horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/wallpaper-filled.svg b/assets/icons/wallpaper-filled.svg new file mode 100644 index 000000000..d3fc41825 --- /dev/null +++ b/assets/icons/wallpaper-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/wallpaper.svg b/assets/icons/wallpaper.svg new file mode 100644 index 000000000..7006f45a9 --- /dev/null +++ b/assets/icons/wallpaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/warning-filled.svg b/assets/icons/warning-filled.svg new file mode 100644 index 000000000..2e997c9c1 --- /dev/null +++ b/assets/icons/warning-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/warning.svg b/assets/icons/warning.svg new file mode 100644 index 000000000..c7502bdf9 --- /dev/null +++ b/assets/icons/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/weather-alert-filled.svg b/assets/icons/weather-alert-filled.svg new file mode 100644 index 000000000..628025862 --- /dev/null +++ b/assets/icons/weather-alert-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/weather-alert.svg b/assets/icons/weather-alert.svg new file mode 100644 index 000000000..3d4f45aad --- /dev/null +++ b/assets/icons/weather-alert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/weather-filled.svg b/assets/icons/weather-filled.svg new file mode 100644 index 000000000..2e215debc --- /dev/null +++ b/assets/icons/weather-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/weather.svg b/assets/icons/weather.svg new file mode 100644 index 000000000..fda8be5ea --- /dev/null +++ b/assets/icons/weather.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/wind.svg b/assets/icons/wind.svg new file mode 100644 index 000000000..7598ab25c --- /dev/null +++ b/assets/icons/wind.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/_.svg b/assets/icons/window/_.svg new file mode 100644 index 000000000..1be5af7db --- /dev/null +++ b/assets/icons/window/_.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/close.svg b/assets/icons/window/close.svg new file mode 100644 index 000000000..3876c916e --- /dev/null +++ b/assets/icons/window/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/filled.svg b/assets/icons/window/filled.svg new file mode 100644 index 000000000..c0c11593a --- /dev/null +++ b/assets/icons/window/filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/maximize-filled.svg b/assets/icons/window/maximize-filled.svg new file mode 100644 index 000000000..c4808e114 --- /dev/null +++ b/assets/icons/window/maximize-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/maximize.svg b/assets/icons/window/maximize.svg new file mode 100644 index 000000000..fe110c08f --- /dev/null +++ b/assets/icons/window/maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/minimize.svg b/assets/icons/window/minimize.svg new file mode 100644 index 000000000..7a90c38ab --- /dev/null +++ b/assets/icons/window/minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/new-filled.svg b/assets/icons/window/new-filled.svg new file mode 100644 index 000000000..b4e8cdacd --- /dev/null +++ b/assets/icons/window/new-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/new.svg b/assets/icons/window/new.svg new file mode 100644 index 000000000..ad0b3d011 --- /dev/null +++ b/assets/icons/window/new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/restore-filled.svg b/assets/icons/window/restore-filled.svg new file mode 100644 index 000000000..3503dae29 --- /dev/null +++ b/assets/icons/window/restore-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/restore.svg b/assets/icons/window/restore.svg new file mode 100644 index 000000000..4d2af75ba --- /dev/null +++ b/assets/icons/window/restore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/top-bar-filled.svg b/assets/icons/window/top-bar-filled.svg new file mode 100644 index 000000000..a997ad6f0 --- /dev/null +++ b/assets/icons/window/top-bar-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/window/top-bar.svg b/assets/icons/window/top-bar.svg new file mode 100644 index 000000000..eefc0bed9 --- /dev/null +++ b/assets/icons/window/top-bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/windows-filled.svg b/assets/icons/windows-filled.svg new file mode 100644 index 000000000..42f5861ac --- /dev/null +++ b/assets/icons/windows-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/windows.svg b/assets/icons/windows.svg new file mode 100644 index 000000000..9b60f15c9 --- /dev/null +++ b/assets/icons/windows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/wrench-filled.svg b/assets/icons/wrench-filled.svg new file mode 100644 index 000000000..8d5db117f --- /dev/null +++ b/assets/icons/wrench-filled.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/assets/icons/wrench.svg b/assets/icons/wrench.svg new file mode 100644 index 000000000..d03b89c84 --- /dev/null +++ b/assets/icons/wrench.svg @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/assets/icons/xfce-logo.svg b/assets/icons/xfce-logo.svg new file mode 100644 index 000000000..a37ead7b5 --- /dev/null +++ b/assets/icons/xfce-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/fit-best.svg b/assets/icons/zoom/fit-best.svg new file mode 100644 index 000000000..27f311496 --- /dev/null +++ b/assets/icons/zoom/fit-best.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/in-filled.svg b/assets/icons/zoom/in-filled.svg new file mode 100644 index 000000000..d85e274af --- /dev/null +++ b/assets/icons/zoom/in-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/in.svg b/assets/icons/zoom/in.svg new file mode 100644 index 000000000..dfa420b4b --- /dev/null +++ b/assets/icons/zoom/in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/original-filled.svg b/assets/icons/zoom/original-filled.svg new file mode 100644 index 000000000..e6a2685c7 --- /dev/null +++ b/assets/icons/zoom/original-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/original.svg b/assets/icons/zoom/original.svg new file mode 100644 index 000000000..72173e8cb --- /dev/null +++ b/assets/icons/zoom/original.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/out-filled.svg b/assets/icons/zoom/out-filled.svg new file mode 100644 index 000000000..52b5d35aa --- /dev/null +++ b/assets/icons/zoom/out-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/zoom/out.svg b/assets/icons/zoom/out.svg new file mode 100644 index 000000000..29e06dcde --- /dev/null +++ b/assets/icons/zoom/out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/shapeshifter/compass.shapeshifter b/assets/shapeshifter/compass.shapeshifter new file mode 100644 index 000000000..b81696807 --- /dev/null +++ b/assets/shapeshifter/compass.shapeshifter @@ -0,0 +1,112 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "79", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "80", + "name": "outer_circle_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "81", + "name": "outer_circle", + "type": "path", + "pathData": "M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z", + "strokeColor": "#808080", + "strokeWidth": 1 + } + ] + }, + { + "id": "115", + "name": "needle_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "93", + "name": "needle", + "type": "path", + "pathData": "M 17.303 6.697 C 15.116 7.494 12.56 8.791 11.16 9.529 C 10.807 9.702 10.493 9.943 10.236 10.24 C 10.186 10.285 10.135 10.33 10.086 10.379 C 9.859 10.607 9.67 10.871 9.529 11.16 C 8.791 12.56 7.494 15.116 6.697 17.303 C 8.933 16.489 11.587 15.139 12.963 14.41 C 13.266 14.243 13.536 14.024 13.762 13.762 C 14.023 13.537 14.243 13.267 14.41 12.965 C 15.139 11.589 16.489 8.933 17.303 6.697 Z M 12 11 C 12.552 11 13 11.448 13 12 C 13 12.552 12.552 13 12 13 C 11.448 13 11 12.552 11 12 C 11 11.448 11.448 11 12 11 Z", + "fillColor": "#808080" + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "84", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "85", + "layerId": "80", + "propertyName": "scaleY", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.85 + }, + { + "id": "86", + "layerId": "80", + "propertyName": "scaleX", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.85 + }, + { + "id": "87", + "layerId": "80", + "propertyName": "scaleY", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.85, + "toValue": 1 + }, + { + "id": "88", + "layerId": "80", + "propertyName": "scaleX", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.85, + "toValue": 1 + }, + { + "id": "116", + "layerId": "115", + "propertyName": "rotation", + "startTime": 0, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 360 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/compass_filled.shapeshifter b/assets/shapeshifter/compass_filled.shapeshifter new file mode 100644 index 000000000..cdfe627b8 --- /dev/null +++ b/assets/shapeshifter/compass_filled.shapeshifter @@ -0,0 +1,167 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "79", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "80", + "name": "outer_circle_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "81", + "name": "outer_circle", + "type": "path", + "pathData": "M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z", + "strokeColor": "#808080", + "strokeWidth": 1 + } + ] + }, + { + "id": "115", + "name": "needle_rotation_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "118", + "name": "outlined_needle_group", + "type": "group", + "children": [ + { + "id": "119", + "name": "mask", + "type": "mask", + "pathData": "M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 Z" + }, + { + "id": "93", + "name": "needle", + "type": "path", + "pathData": "M 17.303 6.697 C 15.116 7.494 12.56 8.791 11.16 9.529 C 10.807 9.702 10.493 9.943 10.236 10.24 C 10.186 10.285 10.135 10.33 10.086 10.379 C 9.859 10.607 9.67 10.871 9.529 11.16 C 8.791 12.56 7.494 15.116 6.697 17.303 C 8.933 16.489 11.587 15.139 12.963 14.41 C 13.266 14.243 13.536 14.024 13.762 13.762 C 14.023 13.537 14.243 13.267 14.41 12.965 C 15.139 11.589 16.489 8.933 17.303 6.697 Z M 12 11 C 12.552 11 13 11.448 13 12 C 13 12.552 12.552 13 12 13 C 11.448 13 11 12.552 11 12 C 11 11.448 11.448 11 12 11 Z", + "fillColor": "#808080" + } + ] + }, + { + "id": "6691", + "name": "filled_needle_group", + "type": "group", + "children": [ + { + "id": "6731", + "name": "mask_1", + "type": "mask", + "pathData": "M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12" + }, + { + "id": "6692", + "name": "path", + "type": "path", + "pathData": "M 12 2 C 9.349 2 6.804 3.054 4.929 4.929 C 3.054 6.804 2 9.349 2 12 C 2 14.651 3.054 17.196 4.929 19.071 C 6.804 20.946 9.349 22 12 22 C 13.755 22 15.48 21.538 17 20.66 C 18.52 19.783 19.783 18.52 20.66 17 C 21.538 15.48 22 13.755 22 12 C 22 10.245 21.538 8.52 20.66 7 C 19.783 5.48 18.52 4.217 17 3.34 C 15.48 2.462 13.755 2 12 2 Z M 17.303 6.697 C 16.489 8.933 15.139 11.589 14.41 12.965 C 14.243 13.267 14.023 13.537 13.762 13.762 C 13.536 14.024 13.266 14.243 12.963 14.41 C 11.587 15.139 8.933 16.489 6.697 17.303 C 7.494 15.116 8.791 12.56 9.529 11.16 C 9.701 10.809 9.941 10.496 10.236 10.24 C 10.493 9.944 10.807 9.702 11.16 9.53 C 12.56 8.79 15.116 7.494 17.303 6.697 Z M 12 11 C 11.735 11 11.48 11.105 11.293 11.293 C 11.105 11.48 11 11.735 11 12 C 11 12.265 11.105 12.52 11.293 12.707 C 11.48 12.895 11.735 13 12 13 C 12.265 13 12.52 12.895 12.707 12.707 C 12.895 12.52 13 12.265 13 12 C 13 11.735 12.895 11.48 12.707 11.293 C 12.52 11.105 12.265 11 12 11 Z", + "fillColor": "#808080" + } + ] + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "84", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "85", + "layerId": "80", + "propertyName": "scaleY", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.85 + }, + { + "id": "86", + "layerId": "80", + "propertyName": "scaleX", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.85 + }, + { + "id": "87", + "layerId": "80", + "propertyName": "scaleY", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.85, + "toValue": 1 + }, + { + "id": "88", + "layerId": "80", + "propertyName": "scaleX", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.85, + "toValue": 1 + }, + { + "id": "116", + "layerId": "115", + "propertyName": "rotation", + "startTime": 0, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 360 + }, + { + "id": "134", + "layerId": "119", + "propertyName": "pathData", + "startTime": 150, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "path", + "fromValue": "M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12", + "toValue": "M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 1.9 C 13.772 1.9 15.513 2.367 17.049 3.254 C 18.584 4.14 19.86 5.416 20.746 6.951 C 21.633 8.487 22.1 10.228 22.1 12 C 22.1 13.772 21.633 15.513 20.746 17.049 C 19.86 18.584 18.584 19.86 17.049 20.746 C 15.513 21.633 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9" + }, + { + "id": "6747", + "layerId": "6731", + "propertyName": "pathData", + "startTime": 150, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "path", + "fromValue": "M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12", + "toValue": "M 12 1.9 C 13.772 1.9 15.514 2.366 17.049 3.253 C 18.585 4.14 19.86 5.415 20.747 6.951 C 21.634 8.486 22.1 10.228 22.1 12 C 22.1 13.772 21.634 15.514 20.747 17.049 C 19.86 18.585 18.585 19.86 17.049 20.747 C 15.514 21.634 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9" + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/heart.shapeshifter b/assets/shapeshifter/heart.shapeshifter new file mode 100644 index 000000000..3d431e040 --- /dev/null +++ b/assets/shapeshifter/heart.shapeshifter @@ -0,0 +1,121 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "43178", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "43194", + "name": "group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "43180", + "name": "path", + "type": "path", + "pathData": "M 8 4.5 C 5.5 4.5 4.525 6.153 4.5 8.5 C 4.463 11.935 6.855 16.556 12 20.301 C 17.145 16.556 19.537 11.935 19.5 8.5 C 19.475 6.153 18.5 4.5 16 4.5 C 14.5 4.5 12 6.5 12 6.5 C 12 6.5 9.5 4.5 8 4.5 Z", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 0.41, + "trimPathEnd": 0.41, + "trimPathOffset": 0.909 + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "43179", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "43191", + "layerId": "43180", + "propertyName": "trimPathStart", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 0 + }, + { + "id": "43192", + "layerId": "43180", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 1 + }, + { + "id": "43193", + "layerId": "43180", + "propertyName": "trimPathOffset", + "startTime": 299, + "endTime": 300, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.909, + "toValue": 0 + }, + { + "id": "43195", + "layerId": "43194", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "43196", + "layerId": "43194", + "propertyName": "scaleX", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "43197", + "layerId": "43194", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "43198", + "layerId": "43194", + "propertyName": "scaleY", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/heart_filled.shapeshifter b/assets/shapeshifter/heart_filled.shapeshifter new file mode 100644 index 000000000..e651ed662 --- /dev/null +++ b/assets/shapeshifter/heart_filled.shapeshifter @@ -0,0 +1,161 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "43178", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "43194", + "name": "heart_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "43180", + "name": "heart", + "type": "path", + "pathData": "M 8 4.5 C 5.5 4.5 4.525 6.153 4.5 8.5 C 4.463 11.935 6.855 16.556 12 20.301 C 17.145 16.556 19.537 11.935 19.5 8.5 C 19.475 6.153 18.5 4.5 16 4.5 C 14.5 4.5 12 6.5 12 6.5 C 12 6.5 9.5 4.5 8 4.5 Z", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 0.41, + "trimPathEnd": 0.41, + "trimPathOffset": 0.909 + } + ] + }, + { + "id": "43199", + "name": "filled_heart_group", + "type": "group", + "scaleX": 0, + "scaleY": 0, + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "43200", + "name": "filled_heart", + "type": "path", + "pathData": "M 8 4.5 C 5.5 4.5 4.525 6.153 4.5 8.5 C 4.463 11.935 6.855 16.556 12 20.301 C 17.145 16.556 19.537 11.935 19.5 8.5 C 19.475 6.153 18.5 4.5 16 4.5 C 14.5 4.5 12 6.5 12 6.5 C 12 6.5 9.5 4.5 8 4.5 Z", + "fillColor": "#808080" + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "43179", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "43191", + "layerId": "43180", + "propertyName": "trimPathStart", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 0 + }, + { + "id": "43192", + "layerId": "43180", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 1 + }, + { + "id": "43193", + "layerId": "43180", + "propertyName": "trimPathOffset", + "startTime": 299, + "endTime": 300, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.909, + "toValue": 0 + }, + { + "id": "43195", + "layerId": "43194", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "43196", + "layerId": "43194", + "propertyName": "scaleX", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "43197", + "layerId": "43194", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "43198", + "layerId": "43194", + "propertyName": "scaleY", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "43211", + "layerId": "43199", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "43212", + "layerId": "43199", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/no_network.shapeshifter b/assets/shapeshifter/no_network.shapeshifter new file mode 100644 index 000000000..2c9485310 --- /dev/null +++ b/assets/shapeshifter/no_network.shapeshifter @@ -0,0 +1,201 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "214", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "317", + "name": "mask", + "type": "mask", + "pathData": "M 0 0 L 0 12 L 0 24 L 24 24 L 24 0 L 0 0 M 4.854 3.146 L 5.561 2.439 L 5.561 2.439 L 5.561 2.439 L 4.854 3.146 L 4.854 3.146" + }, + { + "id": "306", + "name": "stripe1", + "type": "path", + "pathData": "M 18.5 17.5 L 4.5 3.5", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 1 + }, + { + "id": "156", + "name": "wave1", + "type": "path", + "pathData": "M 2.273 8.258 C 4.941 5.839 8.414 4.499 12.015 4.5 C 15.613 4.507 19.08 5.852 21.742 8.273", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 1 + }, + { + "id": "186", + "name": "wave2", + "type": "path", + "pathData": "M 4.4 10.385 C 6.501 8.527 9.21 7.501 12.015 7.5 L 12.015 7.5 C 14.819 7.503 17.526 8.53 19.626 10.389", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 1 + }, + { + "id": "226", + "name": "wave3", + "type": "path", + "pathData": "M 6.527 12.512 C 8.061 11.213 10.005 10.501 12.015 10.5 L 12.015 10.5 C 14.024 10.503 15.967 11.217 17.499 12.516", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 1 + }, + { + "id": "233", + "name": "wave4", + "type": "path", + "pathData": "M 8.651 14.645 C 9.613 13.903 10.793 13.501 12.007 13.5 L 12.007 13.5 C 13.219 13.505 14.396 13.91 15.355 14.652", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathStart": 1 + }, + { + "id": "293", + "name": "group", + "type": "group", + "children": [ + { + "id": "212", + "name": "dot", + "type": "path", + "pathData": "M 12 17 C 11.47 17 10.961 17.211 10.586 17.586 C 10.211 17.961 10 18.47 10 19 C 10 19.53 10.211 20.039 10.586 20.414 C 10.961 20.789 11.47 21 12 21 C 12.53 21 13.039 20.789 13.414 20.414 C 13.789 20.039 14 19.53 14 19 C 14 18.47 13.789 17.961 13.414 17.586 C 13.039 17.211 12.53 17 12 17 Z", + "fillColor": "#808080", + "strokeWidth": 1, + "fillType": "evenOdd" + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "127", + "name": "anim", + "duration": 600, + "blocks": [ + { + "id": "240", + "layerId": "233", + "propertyName": "trimPathStart", + "startTime": 50, + "endTime": 300, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0 + }, + { + "id": "288", + "layerId": "226", + "propertyName": "trimPathStart", + "startTime": 100, + "endTime": 350, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0 + }, + { + "id": "291", + "layerId": "186", + "propertyName": "trimPathStart", + "startTime": 150, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0 + }, + { + "id": "292", + "layerId": "156", + "propertyName": "trimPathStart", + "startTime": 200, + "endTime": 450, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0 + }, + { + "id": "294", + "layerId": "293", + "propertyName": "scaleY", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "296", + "layerId": "293", + "propertyName": "pivotX", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 12, + "toValue": 12 + }, + { + "id": "297", + "layerId": "293", + "propertyName": "pivotY", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 19, + "toValue": 19 + }, + { + "id": "298", + "layerId": "293", + "propertyName": "scaleX", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "311", + "layerId": "306", + "propertyName": "trimPathStart", + "startTime": 350, + "endTime": 600, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0 + }, + { + "id": "336", + "layerId": "317", + "propertyName": "pathData", + "startTime": 350, + "endTime": 600, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "path", + "fromValue": "M 0 0 L 0 12 L 0 24 L 24 24 L 24 0 L 0 0 M 4.854 3.146 L 5.561 2.439 L 5.561 2.439 L 5.561 2.439 L 4.854 3.146 L 4.854 3.146", + "toValue": "M 0 0 L 0 0 L 0 24 L 24 24 L 24 0 L 0 0 M 4.854 3.146 L 5.561 2.439 L 5.561 2.439 L 19.561 16.439 L 18.854 17.146 L 4.854 3.146" + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/ok.shapeshifter b/assets/shapeshifter/ok.shapeshifter new file mode 100644 index 000000000..c7a47cd66 --- /dev/null +++ b/assets/shapeshifter/ok.shapeshifter @@ -0,0 +1,122 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "79", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "80", + "name": "outer_circle_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "81", + "name": "outer_circle", + "type": "path", + "pathData": "M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z", + "strokeColor": "#808080", + "strokeWidth": 1 + } + ] + }, + { + "id": "82", + "name": "mask", + "type": "mask", + "pathData": "M 22 12 C 22 13.755 21.538 15.48 20.66 17 C 19.783 18.52 18.52 19.783 17 20.66 C 15.48 21.538 13.755 22 12 22 C 9.349 22 6.804 20.946 4.929 19.071 C 3.054 17.196 2 14.651 2 12 C 2 9.349 3.054 6.804 4.929 4.929 C 6.804 3.054 9.349 2 12 2 C 13.755 2 15.48 2.462 17 3.34 C 18.52 4.217 19.783 5.48 20.66 7 C 21.538 8.52 22 10.245 22 12 Z" + }, + { + "id": "83", + "name": "path", + "type": "path", + "pathData": "M 8 12 L 12.5 16.5 L 21.5 7.5", + "strokeColor": "#808080", + "strokeWidth": 1.5, + "trimPathEnd": 0 + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "84", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "85", + "layerId": "80", + "propertyName": "scaleY", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "86", + "layerId": "80", + "propertyName": "scaleX", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "87", + "layerId": "80", + "propertyName": "scaleY", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "88", + "layerId": "80", + "propertyName": "scaleX", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "89", + "layerId": "83", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 350, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0, + "toValue": 0.33 + }, + { + "id": "90", + "layerId": "83", + "propertyName": "trimPathEnd", + "startTime": 350, + "endTime": 500, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 0.33, + "toValue": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/ok_filled.shapeshifter b/assets/shapeshifter/ok_filled.shapeshifter new file mode 100644 index 000000000..f822fcf97 --- /dev/null +++ b/assets/shapeshifter/ok_filled.shapeshifter @@ -0,0 +1,170 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "151", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "152", + "name": "group", + "type": "group", + "children": [ + { + "id": "153", + "name": "mask_1", + "type": "mask", + "pathData": "M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 Z" + }, + { + "id": "154", + "name": "outer_circle_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "155", + "name": "outer_circle", + "type": "path", + "pathData": "M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z", + "strokeColor": "#808080", + "strokeWidth": 1 + } + ] + }, + { + "id": "156", + "name": "mask", + "type": "mask", + "pathData": "M 22 12 C 22 13.755 21.538 15.48 20.66 17 C 19.783 18.52 18.52 19.783 17 20.66 C 15.48 21.538 13.755 22 12 22 C 9.349 22 6.804 20.946 4.929 19.071 C 3.054 17.196 2 14.651 2 12 C 2 9.349 3.054 6.804 4.929 4.929 C 6.804 3.054 9.349 2 12 2 C 13.755 2 15.48 2.462 17 3.34 C 18.52 4.217 19.783 5.48 20.66 7 C 21.538 8.52 22 10.245 22 12 Z" + }, + { + "id": "157", + "name": "path", + "type": "path", + "pathData": "M 8 12 L 12.5 16.5 L 21.5 7.5", + "strokeColor": "#808080", + "strokeWidth": 1.5, + "trimPathEnd": 0 + } + ] + }, + { + "id": "158", + "name": "mask_2", + "type": "mask", + "pathData": "M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12" + }, + { + "id": "159", + "name": "path_1", + "type": "path", + "pathData": "M 12 2 C 9.349 2 6.804 3.054 4.929 4.929 C 3.054 6.804 2 9.349 2 12 C 2 14.651 3.054 17.196 4.929 19.071 C 6.804 20.946 9.349 22 12 22 C 13.755 22 15.48 21.538 17 20.66 C 18.52 19.783 19.783 18.52 20.66 17 C 21.538 15.48 22 13.755 22 12 C 22 10.856 21.804 9.721 21.42 8.643 L 12.5 17.56 L 7.469 12.53 L 8.53 11.47 L 12.499 15.439 L 20.757 7.181 C 19.895 5.613 18.627 4.305 17.087 3.393 C 15.547 2.482 13.79 2.001 12 2 Z", + "fillColor": "#808080" + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "160", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "161", + "layerId": "154", + "propertyName": "scaleY", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "162", + "layerId": "154", + "propertyName": "scaleX", + "startTime": 0, + "endTime": 250, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.8 + }, + { + "id": "163", + "layerId": "154", + "propertyName": "scaleY", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "164", + "layerId": "154", + "propertyName": "scaleX", + "startTime": 250, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.8, + "toValue": 1 + }, + { + "id": "165", + "layerId": "157", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 350, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0, + "toValue": 0.33 + }, + { + "id": "166", + "layerId": "157", + "propertyName": "trimPathEnd", + "startTime": 350, + "endTime": 500, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 0.33, + "toValue": 1 + }, + { + "id": "167", + "layerId": "153", + "propertyName": "pathData", + "startTime": 325, + "endTime": 500, + "interpolator": "ACCELERATE_DECELERATE", + "type": "path", + "fromValue": "M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12", + "toValue": "M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 1.9 C 13.772 1.9 15.513 2.367 17.049 3.254 C 18.584 4.14 19.86 5.416 20.746 6.951 C 21.633 8.487 22.1 10.228 22.1 12 C 22.1 13.772 21.633 15.513 20.746 17.049 C 19.86 18.584 18.584 19.86 17.049 20.746 C 15.513 21.633 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9" + }, + { + "id": "168", + "layerId": "158", + "propertyName": "pathData", + "startTime": 325, + "endTime": 500, + "interpolator": "ACCELERATE_DECELERATE", + "type": "path", + "fromValue": "M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12", + "toValue": "M 12 1.9 C 13.772 1.9 15.514 2.366 17.049 3.253 C 18.585 4.14 19.86 5.415 20.747 6.951 C 21.634 8.486 22.1 10.228 22.1 12 C 22.1 13.772 21.634 15.514 20.747 17.049 C 19.86 18.585 18.585 19.86 17.049 20.747 C 15.514 21.634 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9" + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/star.shapeshifter b/assets/shapeshifter/star.shapeshifter new file mode 100644 index 000000000..7b408e5b9 --- /dev/null +++ b/assets/shapeshifter/star.shapeshifter @@ -0,0 +1,119 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "67", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "68", + "name": "heart_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "69", + "name": "heart", + "type": "path", + "pathData": "M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathOffset": 0.2 + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "70", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "71", + "layerId": "69", + "propertyName": "trimPathStart", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 0 + }, + { + "id": "72", + "layerId": "69", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 1 + }, + { + "id": "73", + "layerId": "68", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.75 + }, + { + "id": "74", + "layerId": "68", + "propertyName": "scaleX", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "75", + "layerId": "68", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.75 + }, + { + "id": "76", + "layerId": "68", + "propertyName": "scaleY", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "77", + "layerId": "69", + "propertyName": "trimPathOffset", + "startTime": 299, + "endTime": 300, + "interpolator": "LINEAR", + "type": "number", + "fromValue": 0.2, + "toValue": 0 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/star_filled.shapeshifter b/assets/shapeshifter/star_filled.shapeshifter new file mode 100644 index 000000000..352ec2149 --- /dev/null +++ b/assets/shapeshifter/star_filled.shapeshifter @@ -0,0 +1,159 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "29", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "30", + "name": "heart_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "31", + "name": "heart", + "type": "path", + "pathData": "M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathOffset": 0.199 + } + ] + }, + { + "id": "32", + "name": "filled_heart_group", + "type": "group", + "scaleX": 0, + "scaleY": 0, + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "33", + "name": "filled_heart", + "type": "path", + "pathData": "M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z", + "fillColor": "#808080" + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "34", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "35", + "layerId": "31", + "propertyName": "trimPathStart", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 0 + }, + { + "id": "36", + "layerId": "31", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 1 + }, + { + "id": "37", + "layerId": "30", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.75 + }, + { + "id": "38", + "layerId": "30", + "propertyName": "scaleX", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "39", + "layerId": "30", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.75 + }, + { + "id": "40", + "layerId": "30", + "propertyName": "scaleY", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "41", + "layerId": "32", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "42", + "layerId": "32", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "43", + "layerId": "31", + "propertyName": "trimPathOffset", + "startTime": 299, + "endTime": 300, + "interpolator": "LINEAR", + "type": "number", + "fromValue": 0.199, + "toValue": 0 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/star_half_filled.shapeshifter b/assets/shapeshifter/star_half_filled.shapeshifter new file mode 100644 index 000000000..e138cabc3 --- /dev/null +++ b/assets/shapeshifter/star_half_filled.shapeshifter @@ -0,0 +1,165 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "29", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "30", + "name": "heart_group", + "type": "group", + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "31", + "name": "heart", + "type": "path", + "pathData": "M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z", + "strokeColor": "#808080", + "strokeWidth": 1, + "trimPathOffset": 0.199 + } + ] + }, + { + "id": "32", + "name": "filled_heart_group", + "type": "group", + "scaleX": 0, + "scaleY": 0, + "pivotX": 12, + "pivotY": 12, + "children": [ + { + "id": "124", + "name": "half_mask", + "type": "mask", + "pathData": "M 0 0 L 12 0 L 12 24 L 0 24 Z" + }, + { + "id": "33", + "name": "filled_heart", + "type": "path", + "pathData": "M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z", + "fillColor": "#808080" + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "34", + "name": "anim", + "duration": 500, + "blocks": [ + { + "id": "35", + "layerId": "31", + "propertyName": "trimPathStart", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 0 + }, + { + "id": "36", + "layerId": "31", + "propertyName": "trimPathEnd", + "startTime": 0, + "endTime": 300, + "interpolator": "ACCELERATE", + "type": "number", + "fromValue": 0.5, + "toValue": 1 + }, + { + "id": "37", + "layerId": "30", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.75 + }, + { + "id": "38", + "layerId": "30", + "propertyName": "scaleX", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "39", + "layerId": "30", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 400, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1, + "toValue": 0.75 + }, + { + "id": "40", + "layerId": "30", + "propertyName": "scaleY", + "startTime": 400, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "41", + "layerId": "32", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "42", + "layerId": "32", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 500, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "43", + "layerId": "31", + "propertyName": "trimPathOffset", + "startTime": 299, + "endTime": 300, + "interpolator": "LINEAR", + "type": "number", + "fromValue": 0.199, + "toValue": 0 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/thumb_up.shapeshifter b/assets/shapeshifter/thumb_up.shapeshifter new file mode 100644 index 000000000..5eb476798 --- /dev/null +++ b/assets/shapeshifter/thumb_up.shapeshifter @@ -0,0 +1,129 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "49", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "50", + "name": "thumb_group", + "type": "group", + "pivotX": 10, + "pivotY": 17, + "children": [ + { + "id": "51", + "name": "thumb", + "type": "path", + "pathData": "M 12.123 3 L 10.123 10 L 4 10 L 4 21 L 9 21 L 9 11 L 10.877 11 L 12.877 4 L 13.5 4 C 13.715 4 13.859 4.034 13.939 4.072 C 14.02 4.111 14.052 4.138 14.096 4.234 C 14.183 4.428 14.216 4.973 14.012 5.891 L 12.877 11 L 17.5 11 C 18.139 11 18.5 11.196 18.723 11.453 C 18.945 11.71 19.04 12.067 19.002 12.451 L 18.502 17.451 C 18.361 18.858 17.959 19.39 17.404 19.682 C 16.85 19.974 16 20 15 20 C 14.003 20 12.939 19.976 12.199 19.705 C 11.46 19.434 11.032 19.052 11 17.984 L 10 18.016 C 10.042 19.411 10.863 20.279 11.855 20.643 C 12.848 21.006 13.997 21 15 21 C 16 21 17.001 21.026 17.871 20.568 C 18.741 20.11 19.339 19.142 19.498 17.549 L 19.998 12.549 C 20.06 11.934 19.906 11.292 19.479 10.799 C 19.051 10.305 18.361 10 17.5 10 L 14.123 10 L 14.988 6.109 C 15.211 5.109 15.267 4.403 15.008 3.826 C 14.878 3.538 14.645 3.3 14.373 3.17 C 14.101 3.039 13.807 3 13.5 3 L 12.123 3 Z M 5 11 L 8 11 L 8 20 L 5 20 L 5 11 Z", + "fillColor": "#808080", + "strokeWidth": 1 + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "52", + "name": "anim", + "duration": 1000, + "blocks": [ + { + "id": "55", + "layerId": "50", + "propertyName": "rotation", + "startTime": 0, + "endTime": 200, + "interpolator": "DECELERATE", + "type": "number", + "fromValue": 0, + "toValue": 5 + }, + { + "id": "56", + "layerId": "50", + "propertyName": "rotation", + "startTime": 200, + "endTime": 500, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 5, + "toValue": -23 + }, + { + "id": "57", + "layerId": "50", + "propertyName": "rotation", + "startTime": 600, + "endTime": 850, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": -23, + "toValue": 7 + }, + { + "id": "58", + "layerId": "50", + "propertyName": "rotation", + "startTime": 850, + "endTime": 1000, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 7, + "toValue": 0 + }, + { + "id": "59", + "layerId": "50", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 1, + "toValue": 1.15 + }, + { + "id": "60", + "layerId": "50", + "propertyName": "scaleX", + "startTime": 600, + "endTime": 850, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1.15, + "toValue": 1 + }, + { + "id": "61", + "layerId": "50", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 1, + "toValue": 1.15 + }, + { + "id": "62", + "layerId": "50", + "propertyName": "scaleY", + "startTime": 600, + "endTime": 850, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1.15, + "toValue": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/shapeshifter/thumb_up_filled.shapeshifter b/assets/shapeshifter/thumb_up_filled.shapeshifter new file mode 100644 index 000000000..bc6981880 --- /dev/null +++ b/assets/shapeshifter/thumb_up_filled.shapeshifter @@ -0,0 +1,191 @@ +{ + "version": 1, + "layers": { + "vectorLayer": { + "id": "136", + "name": "vector", + "type": "vector", + "width": 24, + "height": 24, + "children": [ + { + "id": "137", + "name": "thumb_group", + "type": "group", + "pivotX": 10, + "pivotY": 17, + "children": [ + { + "id": "138", + "name": "thumb", + "type": "path", + "pathData": "M 12.123 3 L 10.123 10 L 4 10 L 4 21 L 9 21 L 9 11 L 10.877 11 L 12.877 4 L 13.5 4 C 13.715 4 13.859 4.034 13.939 4.072 C 14.02 4.111 14.052 4.138 14.096 4.234 C 14.183 4.428 14.216 4.973 14.012 5.891 L 12.877 11 L 17.5 11 C 18.139 11 18.5 11.196 18.723 11.453 C 18.945 11.71 19.04 12.067 19.002 12.451 L 18.502 17.451 C 18.361 18.858 17.959 19.39 17.404 19.682 C 16.85 19.974 16 20 15 20 C 14.003 20 12.939 19.976 12.199 19.705 C 11.46 19.434 11.032 19.052 11 17.984 L 10 18.016 C 10.042 19.411 10.863 20.279 11.855 20.643 C 12.848 21.006 13.997 21 15 21 C 16 21 17.001 21.026 17.871 20.568 C 18.741 20.11 19.339 19.142 19.498 17.549 L 19.998 12.549 C 20.06 11.934 19.906 11.292 19.479 10.799 C 19.051 10.305 18.361 10 17.5 10 L 14.123 10 L 14.988 6.109 C 15.211 5.109 15.267 4.403 15.008 3.826 C 14.878 3.538 14.645 3.3 14.373 3.17 C 14.101 3.039 13.807 3 13.5 3 L 12.123 3 Z M 5 11 L 8 11 L 8 20 L 5 20 L 5 11 Z", + "fillColor": "#808080", + "strokeWidth": 1 + }, + { + "id": "139", + "name": "thumb_filled_group", + "type": "group", + "pivotX": 15, + "pivotY": 15, + "children": [ + { + "id": "140", + "name": "thumb_filled", + "type": "path", + "pathData": "M 12.123 3 L 10 10.43 L 10 18.016 C 10.042 19.411 10.863 20.279 11.855 20.643 C 12.848 21.006 13.997 21 15 21 C 16 21 17.001 21.026 17.871 20.568 C 18.741 20.11 19.339 19.142 19.498 17.549 L 19.998 12.549 C 20.06 11.934 19.906 11.292 19.479 10.799 C 19.051 10.305 18.361 10 17.5 10 L 13.623 10 L 14.488 6.109 C 14.711 5.109 14.767 4.403 14.508 3.826 C 14.379 3.538 14.145 3.3 13.873 3.17 C 13.601 3.039 13.308 3 13 3 Z M 9 10 L 9 21 L 4 21 L 4 10 Z", + "fillColor": "#808080", + "fillAlpha": 0, + "strokeWidth": 1 + } + ] + } + ] + } + ] + }, + "hiddenLayerIds": [] + }, + "timeline": { + "animation": { + "id": "141", + "name": "anim", + "duration": 1000, + "blocks": [ + { + "id": "144", + "layerId": "137", + "propertyName": "rotation", + "startTime": 0, + "endTime": 200, + "interpolator": "DECELERATE", + "type": "number", + "fromValue": 0, + "toValue": 5 + }, + { + "id": "145", + "layerId": "137", + "propertyName": "rotation", + "startTime": 200, + "endTime": 500, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 5, + "toValue": -23 + }, + { + "id": "146", + "layerId": "138", + "propertyName": "fillAlpha", + "startTime": 200, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 1, + "toValue": 0 + }, + { + "id": "147", + "layerId": "140", + "propertyName": "fillAlpha", + "startTime": 200, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 0, + "toValue": 1 + }, + { + "id": "148", + "layerId": "137", + "propertyName": "rotation", + "startTime": 600, + "endTime": 850, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": -23, + "toValue": 7 + }, + { + "id": "149", + "layerId": "137", + "propertyName": "rotation", + "startTime": 850, + "endTime": 1000, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 7, + "toValue": 0 + }, + { + "id": "150", + "layerId": "137", + "propertyName": "scaleX", + "startTime": 300, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 1, + "toValue": 1.15 + }, + { + "id": "151", + "layerId": "137", + "propertyName": "scaleX", + "startTime": 600, + "endTime": 850, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1.15, + "toValue": 1 + }, + { + "id": "152", + "layerId": "137", + "propertyName": "scaleY", + "startTime": 300, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 1, + "toValue": 1.15 + }, + { + "id": "153", + "layerId": "137", + "propertyName": "scaleY", + "startTime": 600, + "endTime": 850, + "interpolator": "FAST_OUT_SLOW_IN", + "type": "number", + "fromValue": 1.15, + "toValue": 1 + }, + { + "id": "156", + "layerId": "139", + "propertyName": "scaleX", + "startTime": 200, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + }, + { + "id": "157", + "layerId": "139", + "propertyName": "scaleY", + "startTime": 200, + "endTime": 450, + "interpolator": "ACCELERATE_DECELERATE", + "type": "number", + "fromValue": 0.75, + "toValue": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/assets/symlinks.json b/assets/symlinks.json new file mode 100644 index 000000000..8c9457cad --- /dev/null +++ b/assets/symlinks.json @@ -0,0 +1,14 @@ +{ + "battery": "battery_full", + "extension": "puzzle_piece", + "extension_filled": "puzzle_piece_filled", + "notification": "bell", + "notification_filled": "bell_filled", + "parental_control": "familly", + "search": "magnifying_glass", + "search_filled": "magnifying_glass_filled", + "settings": "gear", + "settings_filled": "gear_filled", + "utilities": "swiss_knife", + "utilities_filled": "swiss_knife_filled" +} diff --git a/assets/yaru_icons.otf b/assets/yaru_icons.otf new file mode 100644 index 000000000..d129f6f3d Binary files /dev/null and b/assets/yaru_icons.otf differ diff --git a/build-icons.sh b/build-icons.sh new file mode 100755 index 000000000..65275ff90 --- /dev/null +++ b/build-icons.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# +# Legal Stuff: +# +# This file is free software; you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License as published by the Free Software +# Foundation; version 3. +# +# This file is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License along with +# this program; if not, see + +## Flutter Yaru icons build script +## +## usage: ./build-icons.sh + +# Build icon font + +if ! command -v yaru_icon_font_generator >/dev/null +then + echo + read -p "yaru_icon_font_generator is required, do you want to install it right now? (y/n)" -r + echo + if [[ $REPLY =~ ^[Yy]$ ]] + then + dart pub global activate -sgit https://github.com/Jupi007/icon_font_generator.git --git-ref yaru + fi +fi + +yaru_icon_font_generator diff --git a/example/lib/code_snippet_button.dart b/example/lib/code_snippet_button.dart index 1b0ae541e..15288c66e 100644 --- a/example/lib/code_snippet_button.dart +++ b/example/lib/code_snippet_button.dart @@ -4,7 +4,6 @@ import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/themes/vs.dart'; import 'package:flutter_highlight/themes/vs2015.dart'; import 'package:provider/provider.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import 'example_model.dart'; import 'example_page_items.dart'; @@ -42,22 +41,36 @@ class CodeSnippedButton extends StatelessWidget { } } -class _CodeDialog extends StatelessWidget { - // ignore: unused_element - const _CodeDialog({super.key, required this.pageItem}); +class _CodeDialog extends StatefulWidget { + const _CodeDialog({required this.pageItem}); final PageItem pageItem; + @override + State<_CodeDialog> createState() => _CodeDialogState(); +} + +class _CodeDialogState extends State<_CodeDialog> { + late Future _snippet; + + @override + void initState() { + super.initState(); + _snippet = widget.pageItem.snippetUrl?.isNotEmpty == false + ? Future.value('') + : context.read().getCodeSnippet( + widget.pageItem.snippetUrl!, + ); + } + @override Widget build(BuildContext context) { final model = context.watch(); - var snippet = ''; - return AlertDialog( titlePadding: EdgeInsets.zero, title: YaruDialogTitleBar( - title: Text(!model.appIsOnline ? 'Offline' : pageItem.title), + title: Text(!model.appIsOnline ? 'Offline' : widget.pageItem.title), leading: !model.appIsOnline ? null : Center( @@ -65,24 +78,22 @@ class _CodeDialog extends StatelessWidget { icon: const Icon(YaruIcons.copy), tooltip: 'Copy', onPressed: () async { - await Clipboard.setData( - ClipboardData(text: snippet), + await _snippet.then( + (value) => Clipboard.setData( + ClipboardData(text: value), + ), ); }, ), ), ), - contentPadding: const EdgeInsets.only(top: 10, bottom: 10), + contentPadding: EdgeInsets.zero, content: !model.appIsOnline ? Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ - YaruAnimatedIcon( - const YaruAnimatedNoNetworkIcon(), - size: 200, - color: Theme.of(context).colorScheme.error, - ), + const YaruAnimatedVectorIcon(YaruAnimatedIcons.no_network), Padding( padding: const EdgeInsets.symmetric( horizontal: kYaruPagePadding, @@ -97,9 +108,7 @@ class _CodeDialog extends StatelessWidget { ), ) : FutureBuilder( - future: model.getCodeSnippet( - pageItem.snippetUrl ?? '', - ), + future: _snippet, builder: (context, snapshot) { if (!snapshot.hasData) { return const Center( @@ -109,31 +118,19 @@ class _CodeDialog extends StatelessWidget { ); } - switch (snapshot.connectionState) { - case ConnectionState.none: - case ConnectionState.waiting: - case ConnectionState.active: - return const Center( - child: YaruCircularProgressIndicator( - strokeWidth: 3, - ), - ); - case ConnectionState.done: - snippet = snapshot.data!; - return SingleChildScrollView( - child: HighlightView( - snippet, - language: 'dart', - theme: Theme.of(context).brightness == Brightness.dark - ? vs2015Theme - : vsTheme, - padding: const EdgeInsets.all(12), - textStyle: const TextStyle( - fontSize: 16, - ), - ), - ); - } + return SingleChildScrollView( + child: HighlightView( + snapshot.data!, + language: 'dart', + theme: Theme.of(context).brightness == Brightness.dark + ? vs2015Theme + : vsTheme, + padding: const EdgeInsets.all(12), + textStyle: const TextStyle( + fontSize: 16, + ), + ), + ); }, ), ); diff --git a/example/lib/example.dart b/example/lib/example.dart index 91d77dab9..0999327db 100644 --- a/example/lib/example.dart +++ b/example/lib/example.dart @@ -2,7 +2,6 @@ import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:ubuntu_service/ubuntu_service.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import 'code_snippet_button.dart'; diff --git a/example/lib/example_page_items.dart b/example/lib/example_page_items.dart index 6d7a3fe6f..fc567a280 100644 --- a/example/lib/example_page_items.dart +++ b/example/lib/example_page_items.dart @@ -1,6 +1,5 @@ import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import 'pages/autocomplete_page.dart'; @@ -15,6 +14,7 @@ import 'pages/draggable_page.dart'; import 'pages/expandable_page.dart'; import 'pages/expansion_panel_page.dart'; import 'pages/icon_button_page.dart'; +import 'pages/icons_page/icons_page.dart'; import 'pages/navigation_page.dart'; import 'pages/option_button_page.dart'; import 'pages/page_indicator.dart'; @@ -26,6 +26,7 @@ import 'pages/section_page.dart'; import 'pages/selectable_container_page.dart'; import 'pages/switch_page.dart'; import 'pages/tab_bar_page.dart'; +import 'pages/theme_page/theme_page.dart'; import 'pages/tile_page.dart'; import 'pages/window_controls_page.dart'; @@ -83,7 +84,7 @@ final examplePageItems = [ PageItem( title: 'YaruChoiceChipBar', snippetUrl: - 'https://raw.githubusercontent.com/ubuntu/yaru_widgets.dart/main/example/lib/pages/filter_pills_page.dart', + 'https://raw.githubusercontent.com/ubuntu/yaru_widgets.dart/main/example/lib/pages/choice_chip_bar_page.dart', iconBuilder: (context, selected) => const Icon(YaruIcons.paper_clip), pageBuilder: (_) => const ChoiceChipBarPage(), ), @@ -248,4 +249,22 @@ final examplePageItems = [ : const Icon(YaruIcons.window_top_bar), pageBuilder: (_) => const WindowControlsPage(), ), + PageItem( + title: 'YaruIcons', + pageBuilder: (context) { + return IconsPage.create(context: context); + }, + iconBuilder: (context, selected) => selected + ? const Icon(YaruIcons.placeholder_icon_filled) + : const Icon(YaruIcons.placeholder_icon), + ), + PageItem( + title: 'YaruTheme', + pageBuilder: (context) { + return const ThemePage(); + }, + iconBuilder: (context, selected) => selected + ? const Icon(YaruIcons.colors_filled) + : const Icon(YaruIcons.colors), + ), ].sortedBy((page) => page.title); diff --git a/example/lib/main.dart b/example/lib/main.dart index af1445451..61e0a597f 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -2,7 +2,6 @@ import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:ubuntu_service/ubuntu_service.dart'; -import 'package:yaru/yaru.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import 'example.dart'; diff --git a/example/lib/pages/banner_page.dart b/example/lib/pages/banner_page.dart index 18f426ef1..2a3f0fd0c 100644 --- a/example/lib/pages/banner_page.dart +++ b/example/lib/pages/banner_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; const _lorem = diff --git a/example/lib/pages/carousel_page.dart b/example/lib/pages/carousel_page.dart index 048cf5239..d4d288189 100644 --- a/example/lib/pages/carousel_page.dart +++ b/example/lib/pages/carousel_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class CarouselPage extends StatefulWidget { diff --git a/example/lib/pages/color_disk_page.dart b/example/lib/pages/color_disk_page.dart index af3d1fb93..39ed2e911 100644 --- a/example/lib/pages/color_disk_page.dart +++ b/example/lib/pages/color_disk_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import '../theme.dart'; diff --git a/example/lib/pages/icon_button_page.dart b/example/lib/pages/icon_button_page.dart index 32c296c28..d96ee1619 100644 --- a/example/lib/pages/icon_button_page.dart +++ b/example/lib/pages/icon_button_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class IconButtonPage extends StatefulWidget { diff --git a/example/lib/pages/icons_page/common/clickable_icon.dart b/example/lib/pages/icons_page/common/clickable_icon.dart new file mode 100644 index 000000000..887c2bdc5 --- /dev/null +++ b/example/lib/pages/icons_page/common/clickable_icon.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; + +import '../icon_items.dart'; +import 'icon_dialog.dart'; + +class ClickableIcon extends StatelessWidget { + const ClickableIcon({ + super.key, + required this.iconItem, + required this.iconSize, + }); + + final IconItem iconItem; + final double iconSize; + + @override + Widget build(BuildContext context) { + return AspectRatio( + aspectRatio: 1, + child: InkWell( + onTap: () => showDialog( + context: context, + builder: (context) => IconDialog( + iconItem: iconItem, + ), + ), + child: Center( + child: iconItem.iconBuilder( + context, + iconSize, + ), + ), + ), + ); + } +} diff --git a/example/lib/pages/icons_page/common/icon_dialog.dart b/example/lib/pages/icons_page/common/icon_dialog.dart new file mode 100644 index 000000000..24f50e686 --- /dev/null +++ b/example/lib/pages/icons_page/common/icon_dialog.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +import '../icon_items.dart'; +import '../utils.dart'; +import 'icon_usage.dart'; + +const _iconDialogSizes = [ + 16.0, + 24.0, + 32.0, + 48.0, + 64.0, + 128.0, +]; +const _dialogContentPaddingValue = 16.0; + +class IconDialog extends StatelessWidget { + const IconDialog({ + super.key, + required this.iconItem, + }); + + final IconItem iconItem; + + @override + Widget build(BuildContext context) { + return SimpleDialog( + titlePadding: EdgeInsets.zero, + contentPadding: + const EdgeInsets.symmetric(vertical: _dialogContentPaddingValue), + title: YaruDialogTitleBar( + title: Text(beautifyIconName(iconItem.name)), + ), + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + for (final size in _iconDialogSizes) + Padding( + padding: EdgeInsets.symmetric( + horizontal: (_iconDialogSizes.last - size) / 10 + + _dialogContentPaddingValue / 2, + ), + child: Column( + children: [ + DecoratedBox( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(size / 10), + color: Theme.of(context) + .colorScheme + .onSurface + .withOpacity(0.05), + ), + child: iconItem.iconBuilder(context, size), + ), + const SizedBox( + height: 6, + ), + Text( + '${size.toInt().toString()}px', + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ), + ], + ), + const Divider( + indent: _dialogContentPaddingValue, + endIndent: _dialogContentPaddingValue, + height: _dialogContentPaddingValue * 2, + ), + IconUsage( + usage: iconItem.usage, + label: true, + mainAxisAlignment: MainAxisAlignment.center, + ), + ], + ); + } +} diff --git a/example/lib/pages/icons_page/common/icon_grid.dart b/example/lib/pages/icons_page/common/icon_grid.dart new file mode 100644 index 000000000..35577757d --- /dev/null +++ b/example/lib/pages/icons_page/common/icon_grid.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; + +import '../icon_items.dart'; +import '../utils.dart'; +import 'clickable_icon.dart'; + +class IconGrid extends StatelessWidget { + const IconGrid({ + super.key, + required this.iconItems, + required this.iconSize, + }); + + final List iconItems; + final double iconSize; + + @override + Widget build(BuildContext context) { + return GridView.builder( + gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: iconSize * 1.5, + ), + padding: const EdgeInsets.all(8), + itemCount: iconItems.length, + itemBuilder: (context, index) { + return Tooltip( + verticalOffset: iconSize / 2, + waitDuration: const Duration(milliseconds: 250), + message: beautifyIconName(iconItems[index].name), + child: ClickableIcon( + iconItem: iconItems[index], + iconSize: iconSize, + ), + ); + }, + ); + } +} diff --git a/example/lib/pages/icons_page/common/icon_table.dart b/example/lib/pages/icons_page/common/icon_table.dart new file mode 100644 index 000000000..8ecbdade0 --- /dev/null +++ b/example/lib/pages/icons_page/common/icon_table.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +import '../icon_items.dart'; +import '../utils.dart'; +import 'clickable_icon.dart'; +import 'icon_usage.dart'; + +@immutable +class IconTable extends StatelessWidget { + const IconTable({ + super.key, + required this.iconItems, + required this.iconSize, + }); + + final List iconItems; + final double iconSize; + + @override + Widget build(BuildContext context) { + return ListView.builder( + padding: const EdgeInsets.all(16), + itemCount: iconItems.length, + itemBuilder: (context, index) => Column( + children: [ + Row( + children: [ + SizedBox.square( + dimension: iconSize * 1.5, + child: ClickableIcon( + iconItem: iconItems[index], + iconSize: iconSize, + ), + ), + const SizedBox( + width: 16, + ), + Expanded( + child: SelectableText( + beautifyIconName(iconItems[index].name), + style: Theme.of(context).textTheme.bodySmall, + ), + ), + Expanded( + child: IconUsage( + usage: iconItems[index].usage, + label: false, + mainAxisAlignment: MainAxisAlignment.start, + ), + ), + ], + ), + if (index < iconItems.length - 1) const Divider(), + ], + ), + ); + } +} diff --git a/example/lib/pages/icons_page/common/icon_usage.dart b/example/lib/pages/icons_page/common/icon_usage.dart new file mode 100644 index 000000000..0e52cfe27 --- /dev/null +++ b/example/lib/pages/icons_page/common/icon_usage.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; + +class IconUsage extends StatelessWidget { + const IconUsage({ + super.key, + required this.usage, + required this.label, + required this.mainAxisAlignment, + }); + + final String usage; + final bool label; + final MainAxisAlignment mainAxisAlignment; + + @override + Widget build(BuildContext context) { + final usageTextStyle = Theme.of(context).textTheme.bodyLarge!.copyWith( + fontFamily: 'Monospace', + ); + + return Row( + mainAxisAlignment: mainAxisAlignment, + children: [ + if (label) ...[ + Text( + 'Usage: ', + style: usageTextStyle, + ), + const SizedBox( + width: 8, + ), + ], + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4), + color: Theme.of(context).highlightColor, + ), + child: SelectableText( + usage, + style: usageTextStyle, + ), + ), + ], + ); + } +} diff --git a/example/lib/pages/icons_page/icon_items.dart b/example/lib/pages/icons_page/icon_items.dart new file mode 100644 index 000000000..16a34565f --- /dev/null +++ b/example/lib/pages/icons_page/icon_items.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/icons.dart'; + +class IconItem { + const IconItem({ + required this.name, + required this.usage, + required this.iconBuilder, + }); + + final String name; + final String usage; + final Widget Function(BuildContext context, double iconSize) iconBuilder; +} + +final List _staticIconItems = [ + for (final iconName in YaruIcons.all.keys.toList()) + IconItem( + name: iconName, + usage: 'YaruIcons.$iconName', + iconBuilder: (context, iconSize) => Icon( + YaruIcons.all[iconName]!, + size: iconSize, + ), + ), +]; + +final List _animatedIconItems = [ + for (final iconName in YaruAnimatedIcons.all.keys.toList()) + IconItem( + name: iconName, + usage: 'YaruAnimatedIcons.$iconName', + iconBuilder: (context, iconSize) => YaruAnimatedVectorIcon( + YaruAnimatedIcons.all[iconName]!, + size: iconSize, + ), + ), +]; + +final List _widgetIconItems = [ + IconItem( + name: 'Placeholder', + usage: 'YaruPlaceholderIcon()', + iconBuilder: (context, iconSize) => YaruPlaceholderIcon( + size: Size.square(iconSize), + ), + ), +]; + +abstract class IconItems { + static List static = _staticIconItems; + static List animated = _animatedIconItems; + static List widget = _widgetIconItems; +} diff --git a/example/lib/pages/icons_page/icon_view.dart b/example/lib/pages/icons_page/icon_view.dart new file mode 100644 index 000000000..4a0812ab6 --- /dev/null +++ b/example/lib/pages/icons_page/icon_view.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import 'common/icon_grid.dart'; +import 'common/icon_table.dart'; +import 'icon_items.dart'; +import 'provider/icon_view_model.dart'; + +class IconView extends StatelessWidget { + const IconView({ + super.key, + required this.iconItems, + }); + + final List iconItems; + + @override + Widget build(BuildContext context) { + final searchActive = + context.select((m) => m.searchActive); + final searchQuery = + context.select((m) => m.searchQuery); + final gridView = context.select((m) => m.gridView); + final iconSize = context.select((m) => m.iconSize); + + final localIconItems = searchActive + ? iconItems.where((iconItem) { + return iconItem.name + .toLowerCase() + .contains(searchQuery.toLowerCase()); + }).toList() + : iconItems; + + return gridView + ? IconGrid( + iconItems: localIconItems, + iconSize: iconSize, + ) + : IconTable( + iconItems: localIconItems, + iconSize: iconSize, + ); + } +} diff --git a/example/lib/pages/icons_page/icons_page.dart b/example/lib/pages/icons_page/icons_page.dart new file mode 100644 index 000000000..ea74b758d --- /dev/null +++ b/example/lib/pages/icons_page/icons_page.dart @@ -0,0 +1,133 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +import 'icon_items.dart'; +import 'icon_view.dart'; +import 'provider/icon_view_model.dart'; + +class IconsPage extends StatefulWidget { + const IconsPage({super.key}); + + static Widget create({ + required BuildContext context, + }) { + return ChangeNotifierProvider( + create: (_) => IconViewModel(), + child: const IconsPage(), + ); + } + + @override + State createState() => _IconsPageState(); +} + +class _IconsPageState extends State { + @override + Widget build(BuildContext context) { + final iconSize = context.select((m) => m.iconSize); + final isMinIconSize = + context.select((m) => m.isMinIconSize); + final isMaxIconSize = + context.select((m) => m.isMaxIconSize); + final gridView = context.select((m) => m.gridView); + final searchActive = + context.select((m) => m.searchActive); + + return Scaffold( + appBar: AppBar( + title: YaruSearchTitleField( + searchActive: searchActive, + width: 250, + title: const Text( + 'Flutter Yaru Icons Demo', + ), + onSearchActive: context.read().toggleSearch, + onClear: context.read().toggleSearch, + onChanged: context.read().onSearchChanged, + ), + actions: [ + Tooltip( + message: gridView ? 'Toggle list view' : 'Toggle grid view', + child: IconButton( + onPressed: context.read().toggleGridView, + icon: gridView + ? const Icon(YaruIcons.unordered_list) + : const Icon(YaruIcons.app_grid), + ), + ), + Tooltip( + message: 'Decrease icon size', + child: IconButton( + onPressed: isMinIconSize + ? null + : context.read().decreaseIconSize, + icon: const Icon(YaruIcons.minus), + ), + ), + Text('${iconSize.truncate()}px'), + Tooltip( + message: 'Increase icon size', + child: IconButton( + onPressed: isMaxIconSize + ? null + : context.read().increaseIconSize, + icon: const Icon(YaruIcons.plus), + ), + ), + ], + ), + body: YaruNavigationPage( + length: 3, + itemBuilder: (context, index, selected) { + const style = YaruNavigationRailStyle.labelled; + + switch (index) { + case 0: + return const YaruNavigationRailItem( + icon: Icon(YaruIcons.image), + label: Text('Static icons'), + tooltip: 'Static icons', + style: style, + ); + case 1: + return const YaruNavigationRailItem( + icon: Icon(YaruIcons.video), + label: Text('Animated icons'), + tooltip: 'Animated icons', + style: style, + ); + case 2: + return const YaruNavigationRailItem( + icon: Icon(YaruIcons.rule_and_pen), + label: Text('Widget icons'), + tooltip: 'Widget icons', + style: style, + ); + default: + throw 'Invalid index'; + } + }, + pageBuilder: (context, index) { + List iconItems; + + switch (index) { + case 0: + iconItems = IconItems.static; + break; + case 1: + iconItems = IconItems.animated; + break; + case 2: + iconItems = IconItems.widget; + break; + default: + throw 'Invalid index'; + } + + return IconView(iconItems: iconItems); + }, + ), + ); + } +} diff --git a/example/lib/pages/icons_page/provider/icon_view_model.dart b/example/lib/pages/icons_page/provider/icon_view_model.dart new file mode 100644 index 000000000..a494e50b4 --- /dev/null +++ b/example/lib/pages/icons_page/provider/icon_view_model.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +class IconViewModel extends ChangeNotifier { + bool _gridView = true; + bool get gridView => _gridView; + + void toggleGridView() { + _gridView = !_gridView; + notifyListeners(); + } + + double _iconSize = 48; + double get iconSize => _iconSize; + + set iconSize(double iconSize) { + _iconSize = iconSize; + notifyListeners(); + } + + void increaseIconSize() { + if (!isMaxIconSize) { + _iconSize += 8; + notifyListeners(); + } + } + + void decreaseIconSize() { + if (!isMinIconSize) { + _iconSize -= 8; + notifyListeners(); + } + } + + bool get isMinIconSize => _iconSize <= 16 ? true : false; + bool get isMaxIconSize => _iconSize >= 128 ? true : false; + + bool _searchActive = false; + bool get searchActive => _searchActive; + + void toggleSearch() { + _searchActive = !_searchActive; + + if (!_searchActive) { + _searchQuery = ''; + } + + notifyListeners(); + } + + String _searchQuery = ''; + String get searchQuery => _searchQuery; + + void onSearchChanged(String? value) { + _searchQuery = value ?? ''; + + notifyListeners(); + } +} diff --git a/example/lib/pages/icons_page/utils.dart b/example/lib/pages/icons_page/utils.dart new file mode 100644 index 000000000..5aeea0303 --- /dev/null +++ b/example/lib/pages/icons_page/utils.dart @@ -0,0 +1,7 @@ +String beautifyIconName(String iconName) { + iconName = iconName.replaceAll('_', ' '); + + return iconName.isNotEmpty + ? '${iconName[0].toUpperCase()}${iconName.substring(1).toLowerCase()}' + : ''; +} diff --git a/example/lib/pages/option_button_page.dart b/example/lib/pages/option_button_page.dart index cafcb1325..bc16ef60d 100644 --- a/example/lib/pages/option_button_page.dart +++ b/example/lib/pages/option_button_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class OptionButtonPage extends StatefulWidget { diff --git a/example/lib/pages/page_indicator.dart b/example/lib/pages/page_indicator.dart index 348641950..24e88d16a 100644 --- a/example/lib/pages/page_indicator.dart +++ b/example/lib/pages/page_indicator.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class PageIndicatorPage extends StatefulWidget { diff --git a/example/lib/pages/section_page.dart b/example/lib/pages/section_page.dart index a631f2771..5cb6c1de1 100644 --- a/example/lib/pages/section_page.dart +++ b/example/lib/pages/section_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; const kMinSectionWidth = 400.0; diff --git a/example/lib/pages/selectable_container_page.dart b/example/lib/pages/selectable_container_page.dart index 3e3a3e40a..034911264 100644 --- a/example/lib/pages/selectable_container_page.dart +++ b/example/lib/pages/selectable_container_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class SelectableContainerPage extends StatefulWidget { diff --git a/example/lib/pages/tab_bar_page.dart b/example/lib/pages/tab_bar_page.dart index f30f1b63c..63df3dced 100644 --- a/example/lib/pages/tab_bar_page.dart +++ b/example/lib/pages/tab_bar_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class TabBarPage extends StatefulWidget { diff --git a/example/lib/pages/theme_page/colors.dart b/example/lib/pages/theme_page/colors.dart new file mode 100644 index 000000000..fc62d238c --- /dev/null +++ b/example/lib/pages/theme_page/colors.dart @@ -0,0 +1 @@ +export 'src/colors/colors_view.dart'; diff --git a/example/lib/pages/theme_page/containers.dart b/example/lib/pages/theme_page/containers.dart new file mode 100644 index 000000000..4a1757504 --- /dev/null +++ b/example/lib/pages/theme_page/containers.dart @@ -0,0 +1 @@ +export 'src/containers/containers_view.dart'; diff --git a/example/lib/pages/theme_page/controls.dart b/example/lib/pages/theme_page/controls.dart new file mode 100644 index 000000000..8fb2d0149 --- /dev/null +++ b/example/lib/pages/theme_page/controls.dart @@ -0,0 +1 @@ +export 'src/controls/controls_view.dart'; diff --git a/example/lib/pages/theme_page/example.dart b/example/lib/pages/theme_page/example.dart new file mode 100644 index 000000000..a3eabf664 --- /dev/null +++ b/example/lib/pages/theme_page/example.dart @@ -0,0 +1,5 @@ +export 'colors.dart'; +export 'containers.dart'; +export 'controls.dart'; +export 'home.dart'; +export 'textfields.dart'; diff --git a/example/lib/pages/theme_page/fonts.dart b/example/lib/pages/theme_page/fonts.dart new file mode 100644 index 000000000..ea188e718 --- /dev/null +++ b/example/lib/pages/theme_page/fonts.dart @@ -0,0 +1 @@ +export 'src/fonts/fonts_view.dart'; diff --git a/example/lib/pages/theme_page/home.dart b/example/lib/pages/theme_page/home.dart new file mode 100644 index 000000000..4b3ea0c86 --- /dev/null +++ b/example/lib/pages/theme_page/home.dart @@ -0,0 +1,2 @@ +export 'src/home/color_disk.dart'; +export 'src/home/home_page.dart'; diff --git a/example/lib/pages/theme_page/src/colors/colors_view.dart b/example/lib/pages/theme_page/src/colors/colors_view.dart new file mode 100644 index 000000000..c6325c6c9 --- /dev/null +++ b/example/lib/pages/theme_page/src/colors/colors_view.dart @@ -0,0 +1,261 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/theme.dart'; + +const _gridDelegate = SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 300, + mainAxisExtent: 40, + mainAxisSpacing: 20, + crossAxisSpacing: 20, +); + +class ColorsView extends StatelessWidget { + const ColorsView({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final accentColors = _getAccentColors(theme); + final baseColors = _getBaseColors(theme); + final specialColors = _getSpecialColors(theme); + final extensionColors = _getExtensionColors(theme); + + return ListView( + padding: const EdgeInsets.all(15), + children: [ + ..._themeSection( + theme: theme, + colors: accentColors, + headline: 'Theme Accent Colors', + ), + ..._themeSection( + theme: theme, + colors: baseColors, + headline: 'Theme Base Colors', + ), + ..._themeSection( + theme: theme, + colors: specialColors, + headline: 'Theme Special Colors', + ), + ..._themeSection( + theme: theme, + colors: _getYaruPrimaryColors(theme), + headline: 'Primary Color Yaru Variations', + ), + ..._themeSection( + theme: theme, + colors: _getUbuntuFlavourColors(theme), + headline: 'Ubuntu Flavor Colors', + ), + ..._themeSection( + theme: theme, + colors: extensionColors, + headline: 'Extension Colors', + ), + ], + ); + } + + List _themeSection({ + required ThemeData theme, + required Map colors, + required String headline, + }) { + final headlineStyle = theme.textTheme.headlineMedium; + + return [ + Padding( + padding: const EdgeInsets.only(bottom: 20, left: 5), + child: Text( + headline, + style: headlineStyle, + ), + ), + GridView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + gridDelegate: _gridDelegate, + itemCount: colors.length, + itemBuilder: (context, index) { + final e = colors.entries.elementAt(index); + return _colorContainer( + e.key, + e.value.$1, + e.value.$2, + ); + }, + ), + const _SpacedDivider(), + ]; + } + + Widget _colorContainer( + String colorName, + Color backgroundColor, [ + Color? foregroundColor, + ]) { + return Container( + decoration: BoxDecoration( + color: backgroundColor, + borderRadius: BorderRadius.circular(6), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + offset: const Offset(0, 1), + spreadRadius: 1, + blurRadius: 2, + ), + ], + ), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + colorName, + style: TextStyle( + color: foregroundColor ?? contrastColor(backgroundColor), + fontSize: 11, + ), + ), + Text( + backgroundColor + .toString() + .replaceAll('Color(0x', '#') + .replaceAll(')', ''), + style: TextStyle( + color: foregroundColor ?? contrastColor(backgroundColor), + fontSize: 8, + ), + ), + ], + ), + ), + ); + } +} + +class _SpacedDivider extends StatelessWidget { + const _SpacedDivider(); + + @override + Widget build(BuildContext context) { + return const Padding( + padding: EdgeInsets.only(top: 30, bottom: 20), + child: Divider( + height: 0, + ), + ); + } +} + +Map _getSpecialColors(ThemeData theme) { + final s = theme.colorScheme; + + final colors = { + 'error': (s.error, s.onError), + 'onError': (s.onError, null), + 'shadow': (s.shadow, null), + 'scrim': (s.scrim, null), + }; + return colors; +} + +Map _getAccentColors(ThemeData theme) { + final s = theme.colorScheme; + + final colors = { + 'primary': (s.primary, s.onPrimary), + 'onPrimary': (s.onPrimary, null), + 'inversePrimary': (s.inversePrimary, null), + 'primaryContainer': (s.primaryContainer, s.onPrimaryContainer), + 'onPrimaryContainer': (s.onPrimaryContainer, null), + 'secondary': (s.secondary, s.onSecondary), + 'onSecondary': (s.onSecondary, null), + 'secondaryContainer': (s.secondaryContainer, s.onSecondaryContainer), + 'onSecondaryContainer': (s.onSecondaryContainer, null), + 'tertiary': (s.tertiary, s.onTertiary), + 'onTertiary': (s.onTertiary, null), + 'tertiaryContainer': (s.tertiaryContainer, s.onTertiaryContainer), + 'onTertiaryContainer': (s.onTertiaryContainer, null), + }; + return colors; +} + +Map _getBaseColors(ThemeData theme) { + final s = theme.colorScheme; + + final colors = { + 'background': (s.background, s.onBackground), + 'onBackground': (s.onBackground, null), + 'surface': (s.surface, s.onSurface), + 'onSurface': (s.onSurface, null), + 'surfaceTint': (s.surfaceTint, null), + 'surfaceVariant': (s.surfaceVariant, s.onSurfaceVariant), + 'onSurfaceVariant': (s.onSurfaceVariant, null), + 'inverseSurface': (s.inverseSurface, s.onInverseSurface), + 'onInverseSurface': (s.onInverseSurface, null), + }; + return colors; +} + +Map _getYaruPrimaryColors(ThemeData theme) { + return { + 'orange': (YaruColors.orange, theme.colorScheme.onPrimary), + 'olive': (YaruColors.olive, theme.colorScheme.onPrimary), + 'viridian': (YaruColors.viridian, theme.colorScheme.onPrimary), + 'purple': (YaruColors.purple, theme.colorScheme.onPrimary), + 'red': (YaruColors.red, theme.colorScheme.onPrimary), + 'blue': (YaruColors.blue, theme.colorScheme.onPrimary), + 'magenta': (YaruColors.magenta, theme.colorScheme.onPrimary), + 'sage': (YaruColors.sage, theme.colorScheme.onPrimary), + 'prussianGreen': (YaruColors.prussianGreen, theme.colorScheme.onPrimary), + 'bark': (YaruColors.bark, theme.colorScheme.onPrimary), + }; +} + +Map _getUbuntuFlavourColors(ThemeData theme) { + return { + 'kubuntuBlue': (YaruColors.kubuntuBlue, theme.colorScheme.onPrimary), + 'lubuntuBlue': (YaruColors.lubuntuBlue, theme.colorScheme.onPrimary), + 'ubuntuBudgieBlue': ( + YaruColors.ubuntuBudgieBlue, + theme.colorScheme.onPrimary + ), + 'ubuntuButterflyPink': ( + YaruColors.ubuntuButterflyPink, + theme.colorScheme.onPrimary + ), + 'ubuntuCinnamonBrown': ( + YaruColors.ubuntuCinnamonBrown, + theme.colorScheme.onPrimary + ), + 'ubuntuMateGreen': ( + YaruColors.ubuntuMateGreen, + theme.colorScheme.onPrimary + ), + 'ubuntuStudioBlue': ( + YaruColors.ubuntuStudioBlue, + theme.colorScheme.onPrimary + ), + 'ubuntuUnityPurple': ( + YaruColors.ubuntuUnityPurple, + theme.colorScheme.onPrimary + ), + 'xubuntuBlue': (YaruColors.xubuntuBlue, theme.colorScheme.onPrimary), + }; +} + +Map _getExtensionColors(ThemeData theme) { + return { + 'success': ( + theme.colorScheme.success, + contrastColor(theme.colorScheme.success) + ), + 'warning': ( + theme.colorScheme.warning, + contrastColor(theme.colorScheme.warning) + ), + 'link': (theme.colorScheme.link, contrastColor(theme.colorScheme.link)), + }; +} diff --git a/example/lib/pages/theme_page/src/constants.dart b/example/lib/pages/theme_page/src/constants.dart new file mode 100644 index 000000000..f1d9bbd37 --- /dev/null +++ b/example/lib/pages/theme_page/src/constants.dart @@ -0,0 +1,2 @@ +const kWrapSpacing = 20.0; +const kWrapPadding = 20.0; diff --git a/example/lib/pages/theme_page/src/containers/containers_view.dart b/example/lib/pages/theme_page/src/containers/containers_view.dart new file mode 100644 index 000000000..3000a77b1 --- /dev/null +++ b/example/lib/pages/theme_page/src/containers/containers_view.dart @@ -0,0 +1,118 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +import '../constants.dart'; + +class ContainersView extends StatefulWidget { + const ContainersView({super.key}); + + @override + State createState() => _ContainersViewState(); +} + +class _ContainersViewState extends State { + var _elevation = 2.0; + var _inDialog = true; + final _icons = [ + YaruIcons.address_book, + YaruIcons.application_bag, + YaruIcons.beaker, + YaruIcons.calendar_important, + ]; + + @override + Widget build(BuildContext context) { + final card = Card( + elevation: _elevation, + child: const SizedBox( + height: 150, + width: 200, + child: Center( + child: Text('Card'), + ), + ), + ); + + final slider = Row( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.only(left: 10), + child: Text(_elevation.toStringAsFixed(2)), + ), + Slider( + value: _elevation, + max: 10, + min: 0, + onChanged: (value) => setState(() => _elevation = value), + ), + ], + ); + + final containerWithBorder = Padding( + padding: const EdgeInsets.all(12.0), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + border: Border.all(color: Theme.of(context).dividerColor), + ), + child: const Padding( + padding: EdgeInsets.symmetric(horizontal: 70, vertical: 50), + child: Text('Just a border'), + ), + ), + ); + + final children = [ + card, + slider, + containerWithBorder, + for (var i = 0; i < _icons.length; i++) + ListTile( + leading: Icon(_icons[i]), + title: Text('ListTile title $i'), + subtitle: i.isEven ? null : const Text('Subtitle'), + trailing: const Text('Trailing'), + ), + ]; + + return SizedBox( + width: 400, + child: ListView( + children: [ + const SizedBox( + height: kWrapSpacing, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Switch( + value: _inDialog, + onChanged: (v) => setState( + () => _inDialog = v, + ), + ), + const Padding( + padding: EdgeInsets.symmetric(horizontal: 20), + child: SizedBox(height: 40, child: VerticalDivider()), + ), + const Text('Show in dialog'), + ], + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Divider(), + ), + if (_inDialog) + SimpleDialog( + shadowColor: Colors.black, + contentPadding: const EdgeInsets.all(kWrapSpacing), + children: children, + ) + else + ...children, + ], + ), + ); + } +} diff --git a/example/lib/pages/theme_page/src/controls/buttons.dart b/example/lib/pages/theme_page/src/controls/buttons.dart new file mode 100644 index 000000000..40303872b --- /dev/null +++ b/example/lib/pages/theme_page/src/controls/buttons.dart @@ -0,0 +1,121 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +import '../constants.dart'; + +class Buttons extends StatelessWidget { + const Buttons({super.key}); + + @override + Widget build(BuildContext context) { + const icon = Icon(YaruIcons.notification_filled); + final buttons = <(Widget, Widget)>[ + ( + TextButton( + onPressed: () {}, + child: const Text('Text'), + ), + const TextButton( + onPressed: null, + autofocus: true, + child: Text('Text'), + ), + ), + ( + OutlinedButton( + onPressed: () {}, + child: const Text('Outlined'), + ), + const OutlinedButton( + onPressed: null, + child: Text('Outlined'), + ), + ), + ( + FilledButton( + onPressed: () {}, + child: const Text('Filled'), + ), + const FilledButton( + onPressed: null, + child: Text('Filled'), + ), + ), + ( + ElevatedButton( + onPressed: () {}, + child: const Text('Elevated'), + ), + const ElevatedButton( + onPressed: null, + child: Text('Elevated'), + ), + ), + ( + ElevatedButton.icon( + icon: icon, + onPressed: () {}, + label: const Text('Elevated'), + ), + ElevatedButton.icon( + icon: icon, + onPressed: null, + label: const Text('Elevated'), + ), + ), + ( + IconButton.filled( + onPressed: () {}, + icon: icon, + ), + const IconButton.filled( + onPressed: null, + icon: icon, + ), + ), + ( + IconButton.outlined( + onPressed: () {}, + icon: icon, + ), + const IconButton.outlined( + onPressed: null, + icon: icon, + ), + ), + ( + IconButton.filledTonal( + onPressed: () {}, + icon: icon, + ), + const IconButton.filledTonal( + onPressed: null, + icon: icon, + ), + ), + ( + IconButton( + onPressed: () {}, + icon: icon, + ), + const IconButton( + onPressed: null, + icon: icon, + ), + ), + ]; + + return Wrap( + direction: Axis.vertical, + spacing: kWrapSpacing, + runSpacing: kWrapSpacing, + children: [ + for (final button in buttons) + Wrap( + spacing: kWrapSpacing, + children: [button.$1, button.$2], + ), + ], + ); + } +} diff --git a/example/lib/pages/theme_page/src/controls/chips.dart b/example/lib/pages/theme_page/src/controls/chips.dart new file mode 100644 index 000000000..0f45615f8 --- /dev/null +++ b/example/lib/pages/theme_page/src/controls/chips.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; + +import '../constants.dart'; + +class Chips extends StatelessWidget { + const Chips({super.key}); + + @override + Widget build(BuildContext context) { + return Wrap( + spacing: kWrapSpacing, + runSpacing: kWrapSpacing, + children: [ + const Chip(label: Text('Ch-ch-ch-Chip n Dale')), + Chip( + label: const Text('Rescue Rangers'), + onDeleted: () {}, + ), + const ChoiceChip( + label: Text('Ch-ch-ch-Chip n Dale'), + selected: false, + onSelected: null, + ), + ChoiceChip( + label: const Text("When there's danger"), + selected: true, + onSelected: (value) {}, + ), + const ChoiceChip( + label: Text('No, no, it never fails'), + selected: true, + onSelected: null, + ), + ChoiceChip( + label: const Text('Once they re involved'), + selected: false, + onSelected: (value) {}, + ), + ], + ); + } +} diff --git a/example/lib/pages/theme_page/src/controls/controls_view.dart b/example/lib/pages/theme_page/src/controls/controls_view.dart new file mode 100644 index 000000000..39fd4a299 --- /dev/null +++ b/example/lib/pages/theme_page/src/controls/controls_view.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; + +import 'buttons.dart'; +import 'chips.dart'; +import 'fabs.dart'; +import 'progres.dart'; +import 'toggleables.dart'; + +class ControlsView extends StatefulWidget { + const ControlsView({super.key}); + + @override + State createState() => _ControlsViewState(); +} + +class _ControlsViewState extends State + with TickerProviderStateMixin { + late TabController tabController; + final items = const <(Widget, Widget)>[ + (Tab(text: 'Buttons'), Buttons()), + (Tab(text: 'Fabs'), Fabs()), + (Tab(text: 'Toggleables'), Toggleables()), + (Tab(text: 'Chips'), Chips()), + (Tab(text: 'Progress'), Progress()), + ]; + + @override + void initState() { + tabController = TabController(length: items.length, vsync: this); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + TabBar( + controller: tabController, + tabs: items.map((e) => e.$1).toList(), + ), + Expanded( + child: TabBarView( + controller: tabController, + children: items + .map( + (e) => Padding( + padding: const EdgeInsets.all(20), + child: e.$2, + ), + ) + .toList(), + ), + ), + ], + ); + } +} diff --git a/example/lib/pages/theme_page/src/controls/fabs.dart b/example/lib/pages/theme_page/src/controls/fabs.dart new file mode 100644 index 000000000..8897390e0 --- /dev/null +++ b/example/lib/pages/theme_page/src/controls/fabs.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +import '../constants.dart'; +import '../utils.dart'; + +class Fabs extends StatelessWidget { + const Fabs({super.key}); + + @override + Widget build(BuildContext context) { + void onPressed() => showSnack(context); + + return Wrap( + spacing: kWrapSpacing, + runSpacing: kWrapSpacing, + children: [ + FloatingActionButton( + onPressed: onPressed, + child: const Icon(YaruIcons.plus), + ), + FloatingActionButton.extended( + onPressed: onPressed, + label: const Text('Yay! +1 ❤️ for Yaru'), + ), + FloatingActionButton.small( + onPressed: onPressed, + child: const Icon(YaruIcons.plus), + ), + FloatingActionButton.large( + onPressed: onPressed, + child: const Icon(YaruIcons.plus), + ), + ], + ); + } +} diff --git a/example/lib/pages/theme_page/src/controls/progres.dart b/example/lib/pages/theme_page/src/controls/progres.dart new file mode 100644 index 000000000..efb960f84 --- /dev/null +++ b/example/lib/pages/theme_page/src/controls/progres.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; + +import '../constants.dart'; + +class Progress extends StatefulWidget { + const Progress({super.key}); + + @override + State createState() => _ProgressState(); +} + +class _ProgressState extends State { + var _level = 1.0; + final _width = 300.0; + @override + Widget build(BuildContext context) { + final children = [ + SizedBox( + width: _width, + child: LinearProgressIndicator(value: _level), + ), + CircularProgressIndicator(value: _level), + SizedBox(width: _width, child: const LinearProgressIndicator()), + const CircularProgressIndicator(), + ]; + + return Padding( + padding: const EdgeInsets.all(kWrapPadding), + child: Column( + children: [ + SizedBox( + width: _width, + child: Slider( + value: _level, + max: 1, + min: 0, + onChanged: (value) => setState(() => _level = value), + ), + ), + const SizedBox( + height: kWrapSpacing, + ), + Wrap( + spacing: kWrapSpacing, + runSpacing: kWrapSpacing, + crossAxisAlignment: WrapCrossAlignment.center, + direction: Axis.vertical, + verticalDirection: VerticalDirection.down, + children: children, + ), + ], + ), + ); + } +} diff --git a/example/lib/pages/theme_page/src/controls/toggleables.dart b/example/lib/pages/theme_page/src/controls/toggleables.dart new file mode 100644 index 000000000..79e832b94 --- /dev/null +++ b/example/lib/pages/theme_page/src/controls/toggleables.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; + +import '../constants.dart'; + +class Toggleables extends StatelessWidget { + const Toggleables({super.key}); + + @override + Widget build(BuildContext context) { + return Wrap( + spacing: 10, + runSpacing: 10, + children: [ + Row( + children: [ + Checkbox(value: true, onChanged: (_) {}), + Checkbox(value: false, onChanged: (_) {}), + const Checkbox(value: true, onChanged: null), + const Checkbox(value: false, onChanged: null), + ], + ), + Row( + children: [ + Radio( + value: true, + groupValue: true, + onChanged: (_) {}, + ), + Radio( + value: false, + groupValue: true, + onChanged: (_) {}, + ), + const Radio( + value: true, + groupValue: true, + onChanged: null, + ), + const Radio( + value: false, + groupValue: true, + onChanged: null, + ), + ], + ), + Row( + children: [ + Switch(onChanged: (value) {}, value: true), + Switch(onChanged: (value) {}, value: false), + const Switch(value: true, onChanged: null), + const Switch(value: false, onChanged: null), + ], + ), + Row( + children: [ + ToggleButtons( + isSelected: const [true, false, false], + onPressed: (v) {}, + children: const [Text('Off'), Text('Off'), Text('Off')], + ), + const SizedBox( + width: kWrapSpacing, + ), + ToggleButtons( + isSelected: const [true, false, false], + children: const [Text('Off'), Text('Off'), Text('Off')], + ), + ], + ), + ], + ); + } +} diff --git a/example/lib/pages/theme_page/src/fonts/fonts_view.dart b/example/lib/pages/theme_page/src/fonts/fonts_view.dart new file mode 100644 index 000000000..c8609acc5 --- /dev/null +++ b/example/lib/pages/theme_page/src/fonts/fonts_view.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; + +import '../constants.dart'; + +class FontsView extends StatelessWidget { + const FontsView({super.key}); + + @override + Widget build(BuildContext context) { + return ListView( + padding: const EdgeInsets.all(kWrapSpacing), + children: [ + Text( + 'displayLarge', + style: Theme.of(context).textTheme.displayLarge, + ), + Text( + 'displayMedium', + style: Theme.of(context).textTheme.displayMedium, + ), + Text( + 'displaySmall', + style: Theme.of(context).textTheme.displaySmall, + ), + Text( + 'headlineLarge', + style: Theme.of(context).textTheme.headlineLarge, + ), + Text( + 'headlineMedium', + style: Theme.of(context).textTheme.headlineMedium, + ), + Text( + 'headlineSmall', + style: Theme.of(context).textTheme.headlineSmall, + ), + Text( + 'titleLarge', + style: Theme.of(context).textTheme.titleLarge, + ), + Text( + 'titleMedium', + style: Theme.of(context).textTheme.titleMedium, + ), + Text( + 'titleSmall', + style: Theme.of(context).textTheme.titleSmall, + ), + Text( + 'bodyLarge', + style: Theme.of(context).textTheme.bodyLarge, + ), + Text( + 'bodyMedium', + style: Theme.of(context).textTheme.bodyMedium, + ), + Text( + 'bodySmall', + style: Theme.of(context).textTheme.bodySmall, + ), + Text( + 'labelLarge', + style: Theme.of(context).textTheme.labelLarge, + ), + Text( + 'labelMedium', + style: Theme.of(context).textTheme.labelMedium, + ), + Text( + 'labelSmall', + style: Theme.of(context).textTheme.labelSmall, + ), + ], + ); + } +} diff --git a/example/lib/pages/theme_page/src/home/color_disk.dart b/example/lib/pages/theme_page/src/home/color_disk.dart new file mode 100644 index 000000000..666dfb879 --- /dev/null +++ b/example/lib/pages/theme_page/src/home/color_disk.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; + +class ColorDisk extends StatelessWidget { + const ColorDisk({ + Key? key, + this.onPressed, + required this.color, + required this.selected, + }) : super(key: key); + + final VoidCallback? onPressed; + final Color color; + final bool selected; + + @override + Widget build(BuildContext context) { + return SizedBox( + width: 42, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: TextButton( + style: TextButton.styleFrom( + padding: EdgeInsets.zero, + shape: CircleBorder( + side: BorderSide( + color: selected + ? Theme.of(context).primaryColor + : Colors.transparent, + ), + ), + ), + onPressed: onPressed, + child: SizedBox( + height: 20, + width: 20, + child: DecoratedBox( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(100), + color: color, + ), + ), + ), + ), + ), + ); + } +} diff --git a/example/lib/pages/theme_page/src/home/home_page.dart b/example/lib/pages/theme_page/src/home/home_page.dart new file mode 100644 index 000000000..7c704847b --- /dev/null +++ b/example/lib/pages/theme_page/src/home/home_page.dart @@ -0,0 +1,264 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +import '../../colors.dart'; +import '../../containers.dart'; +import '../../controls.dart'; +import '../../fonts.dart'; +import '../../textfields.dart'; +import '../../theme_page.dart'; +import '../constants.dart'; +import '../utils.dart'; +import 'color_disk.dart'; + +final GlobalKey _scaffoldKey = GlobalKey(); + +class HomePage extends StatefulWidget { + const HomePage({Key? key}) : super(key: key); + + @override + HomePageState createState() => HomePageState(); +} + +class HomePageState extends State { + HomePageState(); + + int _selectedIndex = 0; + + final _items = { + const FontsView(): ( + const Badge( + label: Text('123'), + child: Icon(YaruIcons.font), + ), + const Badge( + label: Text('123'), + child: Icon(YaruIcons.font), + ), + 'Fonts' + ), + const ControlsView(): ( + const Icon(YaruIcons.radiobox_checked), + const Icon(YaruIcons.radiobox_checked_filled), + 'Controls' + ), + const TextFieldsView(): ( + const Icon(YaruIcons.text_editor), + const Icon(YaruIcons.text_editor_filled), + 'TextFields' + ), + const ColorsView(): ( + const Icon(YaruIcons.colors), + const Icon(YaruIcons.colors_filled), + 'Palette' + ), + const ContainersView(): ( + const Icon(YaruIcons.window), + const Icon(YaruIcons.window_filled), + 'Containers' + ), + }; + + @override + Widget build(BuildContext context) { + return Scaffold( + key: _scaffoldKey, + drawer: _Drawer( + selectedIndex: _selectedIndex, + onSelected: (index) { + setState(() => _selectedIndex = index); + Navigator.of(context).pop(); + }, + items: _items, + ), + appBar: AppBar( + backgroundColor: Colors.transparent, + leading: Center( + child: IconButton( + onPressed: () => _scaffoldKey.currentState?.openDrawer(), + icon: const Icon(YaruIcons.menu), + ), + ), + title: const _Title(), + actions: [ + IconButton( + onPressed: () => showSnack(context), + icon: const Icon(YaruIcons.plus), + ), + const Padding( + padding: EdgeInsets.symmetric(horizontal: kWrapSpacing), + child: _ThemeButton(), + ), + ], + ), + body: LayoutBuilder( + builder: (context, constraints) { + if (constraints.maxWidth > 800) { + return Row( + children: [ + NavigationRail( + destinations: [ + for (final item in _items.entries) + NavigationRailDestination( + icon: item.value.$1, + selectedIcon: item.value.$2, + label: Text(item.value.$3), + ), + ], + selectedIndex: _selectedIndex, + onDestinationSelected: (index) => + setState(() => _selectedIndex = index), + ), + if (!isMobile) + const VerticalDivider( + width: 0.0, + ), + Expanded( + child: Center( + child: _items.entries.elementAt(_selectedIndex).key, + ), + ), + ], + ); + } else { + return Column( + children: [ + Expanded( + child: Center( + child: _items.entries.elementAt(_selectedIndex).key, + ), + ), + if (!isMobile) + const Divider( + height: 0.0, + ), + NavigationBar( + destinations: [ + for (final item in _items.entries) + NavigationDestination( + icon: item.value.$1, + selectedIcon: item.value.$2, + label: item.value.$3, + ), + ], + selectedIndex: _selectedIndex, + onDestinationSelected: (index) => + setState(() => _selectedIndex = index), + ), + ], + ); + } + }, + ), + ); + } +} + +class _ThemeButton extends StatelessWidget { + const _ThemeButton(); + + @override + Widget build(BuildContext context) { + final theme = YaruTheme.of(context); + final light = theme.themeMode == ThemeMode.light; + + return PopupMenuButton( + padding: EdgeInsets.zero, + icon: Icon( + YaruIcons.color_select, + color: Theme.of(context).primaryColor, + ), + itemBuilder: (context) { + return [ + PopupMenuItem( + onTap: () => AppTheme.apply(context, highContrast: true), + child: Row( + children: [ + ColorDisk( + color: light ? Colors.black : Colors.white, + selected: theme.highContrast == true, + ), + const Text('highContrast'), + ], + ), + ), + for (final variant in YaruVariant.values) // skip flavors + PopupMenuItem( + onTap: () => AppTheme.apply( + context, + variant: variant, + highContrast: false, + ), + child: Row( + children: [ + ColorDisk( + color: variant.color, + selected: + variant == theme.variant && theme.highContrast != true, + ), + Text(variant.name), + ], + ), + ), + ]; + }, + ); + } +} + +class _Title extends StatelessWidget { + const _Title(); + + @override + Widget build(BuildContext context) { + final theme = YaruTheme.of(context); + final light = theme.themeMode == ThemeMode.light; + + return IconButton( + onPressed: () { + return AppTheme.apply( + context, + themeMode: light ? ThemeMode.dark : ThemeMode.light, + ); + }, + icon: Icon( + light ? YaruIcons.sun_filled : YaruIcons.clear_night_filled, + ), + ); + } +} + +class _Drawer extends StatelessWidget { + const _Drawer({ + required this.items, + required this.onSelected, + required this.selectedIndex, + }); + + final Map items; + final Function(int index) onSelected; + final int selectedIndex; + + @override + Widget build(BuildContext context) { + return Drawer( + child: ListView( + padding: EdgeInsets.zero, + children: [ + const DrawerHeader( + child: Text('Drawer Header'), + ), + for (var i = 0; i < items.length; i++) + ListTile( + selected: i == selectedIndex, + leading: i == selectedIndex + ? items.entries.elementAt(i).value.$2 + : items.entries.elementAt(i).value.$1, + title: Text(items.entries.elementAt(i).value.$3), + onTap: () => onSelected(i), + ), + ], + ), + ); + } +} diff --git a/example/lib/pages/theme_page/src/textfields/text_fields_view.dart b/example/lib/pages/theme_page/src/textfields/text_fields_view.dart new file mode 100644 index 000000000..0602fb5a6 --- /dev/null +++ b/example/lib/pages/theme_page/src/textfields/text_fields_view.dart @@ -0,0 +1,110 @@ +import 'package:flutter/material.dart'; + +import '../constants.dart'; + +class TextFieldsView extends StatefulWidget { + const TextFieldsView({super.key}); + + @override + State createState() => _TextFieldsViewState(); +} + +class _TextFieldsViewState extends State { + late TextEditingController textController; + + @override + void initState() { + super.initState(); + textController = TextEditingController( + text: + 'My code fails, I do not know why.\nMy code works, I do not know why.\nText in other scripts: Tamaziɣt Taqbaylit, 中文(简体), Čeština, Беларуская, Ελληνικά, עברית, Русский, བོད་ཡིག, Norsk bokmål.', + ); + } + + @override + void dispose() { + textController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final children = [ + Row( + children: [ + Expanded( + child: FilledButton( + onPressed: () {}, + child: const Text( + 'Filled Button', + overflow: TextOverflow.ellipsis, + ), + ), + ), + const SizedBox( + width: kWrapSpacing, + ), + Expanded( + child: OutlinedButton( + onPressed: () {}, + child: const Text( + 'Outlined Button', + overflow: TextOverflow.ellipsis, + ), + ), + ), + const SizedBox( + width: kWrapSpacing, + ), + const Expanded( + child: TextField( + decoration: InputDecoration( + labelText: 'Username', + ), + ), + ), + ], + ), + const TextField( + enabled: false, + onChanged: null, + decoration: InputDecoration( + labelText: 'Disabled', + ), + ), + const TextField( + obscureText: true, + decoration: InputDecoration( + labelText: 'Password', + ), + ), + const TextField( + decoration: InputDecoration( + errorText: "You're doing it wrong", + ), + ), + TextField( + keyboardType: TextInputType.multiline, + controller: textController, + minLines: 5, + maxLines: 5, + ), + const DropdownMenu( + dropdownMenuEntries: [ + DropdownMenuEntry(value: 1, label: '1'), + DropdownMenuEntry(value: 2, label: '2'), + DropdownMenuEntry(value: 3, label: '3'), + ], + ), + ]; + + return Padding( + padding: const EdgeInsets.all(18.0), + child: ListView.separated( + itemBuilder: (context, index) => children[index], + separatorBuilder: (context, index) => const SizedBox(height: 15), + itemCount: children.length, + ), + ); + } +} diff --git a/example/lib/pages/theme_page/src/utils.dart b/example/lib/pages/theme_page/src/utils.dart new file mode 100644 index 000000000..6919bc6e9 --- /dev/null +++ b/example/lib/pages/theme_page/src/utils.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +ScaffoldFeatureController showSnack( + BuildContext context, +) { + return ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: const Text('Yay! ❤️ for Yaru'), + action: SnackBarAction( + label: 'Ok', + onPressed: () {}, + ), + ), + ); +} diff --git a/example/lib/pages/theme_page/textfields.dart b/example/lib/pages/theme_page/textfields.dart new file mode 100644 index 000000000..8230561ea --- /dev/null +++ b/example/lib/pages/theme_page/textfields.dart @@ -0,0 +1 @@ +export 'src/textfields/text_fields_view.dart'; diff --git a/example/lib/pages/theme_page/theme_page.dart b/example/lib/pages/theme_page/theme_page.dart new file mode 100644 index 000000000..cc73b5a36 --- /dev/null +++ b/example/lib/pages/theme_page/theme_page.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/theme.dart'; + +import 'home.dart'; + +class ThemePage extends StatelessWidget { + const ThemePage({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Builder( + builder: (context) => YaruTheme( + data: AppTheme.of(context), + child: const HomePage(), + ), + ), + debugShowCheckedModeBanner: false, + ); + } +} + +class AppTheme { + static YaruThemeData of(BuildContext context) { + return SharedAppData.getValue( + context, + 'theme', + () => const YaruThemeData(), + ); + } + + static void apply( + BuildContext context, { + YaruVariant? variant, + bool? highContrast, + ThemeMode? themeMode, + }) { + SharedAppData.setValue( + context, + 'theme', + AppTheme.of(context).copyWith( + themeMode: themeMode, + variant: variant, + highContrast: highContrast, + ), + ); + } +} diff --git a/example/lib/pages/tile_page.dart b/example/lib/pages/tile_page.dart index a0f27d7ff..b1cb8b084 100644 --- a/example/lib/pages/tile_page.dart +++ b/example/lib/pages/tile_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class TilePage extends StatelessWidget { diff --git a/example/lib/theme.dart b/example/lib/theme.dart index ce2aa89a0..5ac6ca0af 100644 --- a/example/lib/theme.dart +++ b/example/lib/theme.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; class InheritedYaruVariant extends InheritedNotifier> { diff --git a/example/macos/Runner/DebugProfile.entitlements b/example/macos/Runner/DebugProfile.entitlements index dddb8a30c..08c3ab17c 100644 --- a/example/macos/Runner/DebugProfile.entitlements +++ b/example/macos/Runner/DebugProfile.entitlements @@ -8,5 +8,7 @@ com.apple.security.network.server + com.apple.security.network.client + diff --git a/example/macos/Runner/Release.entitlements b/example/macos/Runner/Release.entitlements index 852fa1a47..ee95ab7e5 100644 --- a/example/macos/Runner/Release.entitlements +++ b/example/macos/Runner/Release.entitlements @@ -4,5 +4,7 @@ com.apple.security.app-sandbox + com.apple.security.network.client + diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 0f3b657d7..f68895665 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -18,8 +18,6 @@ dependencies: provider: ^6.0.2 safe_change_notifier: ^0.3.1 ubuntu_service: ^0.2.4 - yaru: ^1.2.0 - yaru_icons: ">=1.0.0 <3.0.0" yaru_widgets: path: ../ diff --git a/lib/constants.dart b/lib/constants.dart index ad197c91f..135175fa1 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -22,3 +22,6 @@ const kYaruTitleBarItemHeight = 34.0; /// The default icon size const kYaruIconSize = 20.0; + +const kTargetCanvasSize = 24.0; +const kTargetIconSize = 20.0; diff --git a/lib/icons.dart b/lib/icons.dart new file mode 100644 index 000000000..5179f46bb --- /dev/null +++ b/lib/icons.dart @@ -0,0 +1,7 @@ +// Animated Icons +export 'src/icons_widgets/yaru_animated_icon.dart'; +export 'src/icons_widgets/yaru_animated_icons.dart'; +// Widgets +export 'src/icons_widgets/yaru_placeholder_icon.dart'; +export 'src/yaru_freedesktop_icons.dart'; +export 'src/yaru_icons.dart'; diff --git a/lib/src/colors.dart b/lib/src/colors.dart new file mode 100644 index 000000000..c32eec113 --- /dev/null +++ b/lib/src/colors.dart @@ -0,0 +1,315 @@ +import 'package:flutter/material.dart'; + +/// Available Yaru colors. +class YaruColors { + const YaruColors._({ + required this.error, + required this.success, + required this.warning, + required this.link, + }); + + /// Colors derived from the given [brightness]. + factory YaruColors.from(Brightness brightness) { + return switch (brightness) { + Brightness.light => YaruColors.light, + Brightness.dark => YaruColors.dark, + }; + } + + /// Colors for the given [context]. + static YaruColors of(BuildContext context) { + return YaruColors.from(Theme.of(context).brightness); + } + + /// Theme-specific colors for light themes. + static const light = YaruColors._( + error: Color(0xFFB52A4A), // YaruColors.red[700], + success: Color(0xFF0e8420), + warning: Color(0xFFf99b11), + link: Color(0xFF0073E5), // YaruColors.blue[700], + ); + + /// Theme-specific colors for dark themes. + static const dark = YaruColors._( + error: Color(0xFFE86581), // YaruColors.red[300] + success: Color(0xFF0e8420), + warning: Color(0xFFf99b11), + link: Color(0xFF0094FF), // YaruColors.blue[500] + ); + + /// Ubuntu Orange + static const Color orange = Color(0xFFE95420); + + /// Warm Grey + /// + /// For balance. The addition of warm grey softens the combination of orange + /// and aubergine and provides a bridge between the two. + /// + /// Warm grey can be used for; backgrounds, graphics, dot patterns, charts and + /// diagrams. It can also be used for large size text. + static const Color warmGrey = Color(0xFFAEA79F); + + /// Cool Grey + /// + /// For typography, particularly body copy. Black can be quite harsh in + /// combination with aubergine, but grey delivers more balance while still + /// being legible. + /// + /// Cool grey can also be used within charts and diagrams. + static const Color coolGrey = Color(0xFF333333); + + /// Text Grey + /// + /// Text grey is used for small size headings, sub-headings and body copy text + /// only. + static const Color textGrey = Color(0xFF111111); + + /// Error + final Color error; + + @Deprecated('Use YaruColors.dark.error instead.') + static const Color errorLight = Color(0xFFE86581); // YaruColors.red[300] + + @Deprecated('Use YaruColors.light.error instead.') + static const Color errorDark = Color(0xFFB52A4A); // YaruColors.red[700] + + /// Warning + final Color warning; + + /// Success + final Color success; + + /// Porcelain + static const Color porcelain = Color(0xFFFAFAFA); + + /// Inkstone + static const Color inkstone = Color(0xFF3B3B3B); + + /// Jet + static const Color jet = Color(0xFF2B2B2B); + + /// Dark Jet + static const Color darkJet = Color(0xFF252525); + + /// Light title bar + static const Color titleBarLight = Color(0xFFEBEBEB); + + /// Dark title bar + static const Color titleBarDark = Color(0xFF303030); + + /// Link + final Color link; + + @Deprecated('Use YaruColors.dark.link instead.') + static const Color linkLight = Color(0xFF0094FF); // YaruColors.blue[500] + + @Deprecated('Use YaruColors.light.link instead.') + static const Color linkDark = Color(0xFF0073E5); // YaruColors.blue[700] + + /// Olive + static const Color olive = Color(0xFF4B8501); + + /// Bark + static const Color bark = Color(0xFF787859); + + /// Sage + static const Color sage = Color(0xFF657B69); + + /// Prussian Green + static const Color prussianGreen = Color(0xFF308280); + + /// Viridian + static const Color viridian = Color(0xFF03875B); + + /// Purple + static const Color purple = Color(0xFF7764D8); + + /// Red + static const Color red = Color(0xFFDA3450); + + /// Blue + static const Color blue = Color(0xFF0073E5); + + /// Magenta + static const Color magenta = Color(0xFFB34CB3); + + /// Kubuntu Blue + static const Color kubuntuBlue = Color(0xFF0079C1); + + /// Lubuntu Blue + static const Color lubuntuBlue = Color(0xFF0068C8); + + /// Ubuntu Budgie Blue + static const Color ubuntuBudgieBlue = Color(0xFF2196F3); + + /// Ubuntu Butterfly Pink + static const Color ubuntuButterflyPink = Color(0xFFFF135B); + + /// Ubuntu Cinnamon Brown + static const Color ubuntuCinnamonBrown = Color(0xFFDD682A); + + /// Ubuntu MATE Green + static const Color ubuntuMateGreen = Color(0xFF73AF59); + + /// Ubuntu Studio Blue + static const Color ubuntuStudioBlue = Color(0xFF009BF9); + + /// Ubuntu Unity Purple + static const Color ubuntuUnityPurple = Color(0xFF9005D5); + + /// Xubuntu Blue + static const Color xubuntuBlue = Color(0xFF0044AA); +} + +/// Set of useful methods when working with [Color] +extension YaruColorExtension on Color { + /// Scale color attributes relatively to current ones. + /// [alpha], [hue], [saturation] and [lightness] values must be clamped between -1.0 and 1.0 + Color scale({ + double alpha = 0.0, + double hue = 0.0, + double saturation = 0.0, + double lightness = 0.0, + }) { + assert(alpha >= -1.0 && alpha <= 1.0); + assert(hue >= -1.0 && hue <= 1.0); + assert(saturation >= -1.0 && saturation <= 1.0); + assert(lightness >= -1.0 && lightness <= 1.0); + + final hslColor = _getPatchedHslColor(); + + double scale(double value, double amount, [double upperLimit = 1.0]) { + var result = value; + + if (amount > 0) { + result = value + (upperLimit - value) * amount; + } else if (amount < 0) { + result = value + value * amount; + } + + return result.clamp(0.0, upperLimit); + } + + return hslColor + .withAlpha(scale(opacity, alpha)) + .withHue(scale(hslColor.hue, hue, 360.0)) + .withSaturation(scale(hslColor.saturation, saturation)) + .withLightness(scale(hslColor.lightness, lightness)) + .toColor(); + } + + /// Adjust color attributes by the given values. + /// [alpha], [saturation] and [lightness] values must be clamped between -1.0 and 1.0 + /// [hue] value must be clamped between -360.0 and 360.0 + Color adjust({ + double alpha = 0.0, + double hue = 0.0, + double saturation = 0.0, + double lightness = 0.0, + }) { + assert(alpha >= -1.0 && alpha <= 1.0); + assert(hue >= -360.0 && hue <= 360.0); + assert(saturation >= -1.0 && saturation <= 1.0); + assert(lightness >= -1.0 && lightness <= 1.0); + + final hslColor = _getPatchedHslColor(); + + double adjust(double value, double amount, [double upperLimit = 1.0]) { + return (value + amount).clamp(0.0, upperLimit); + } + + return hslColor + .withAlpha(adjust(hslColor.alpha, alpha)) + .withHue(adjust(hslColor.hue, hue, 360.0)) + .withSaturation(adjust(hslColor.saturation, saturation)) + .withLightness(adjust(hslColor.lightness, lightness)) + .toColor(); + } + + /// Return a copy of this color with attributes replaced by given values. + /// [alpha], [saturation] and [lightness] values must be clamped between 0.0 and 1.0 + /// [hue] value must be clamped between 0.0 and 360.0 + Color copyWith({ + double? alpha, + double? hue, + double? saturation, + double? lightness, + }) { + assert(alpha == null || (alpha >= 0.0 && alpha <= 1.0)); + assert(hue == null || (hue >= 0.0 && hue <= 360.0)); + assert(saturation == null || (saturation >= 0.0 && saturation <= 1.0)); + assert(lightness == null || (lightness >= 0.0 && lightness <= 1.0)); + + final hslColor = _getPatchedHslColor(); + + return hslColor + .withAlpha(alpha ?? hslColor.alpha) + .withHue(hue ?? hslColor.hue) + .withSaturation(saturation ?? hslColor.saturation) + .withLightness(lightness ?? hslColor.lightness) + .toColor(); + } + + Color cap({ + double alpha = 1.0, + double saturation = 1.0, + double lightness = 1.0, + }) { + assert(alpha >= 0.0 && alpha <= 1.0); + assert(saturation >= 0.0 && saturation <= 1.0); + assert(lightness >= 0.0 && lightness <= 1.0); + + final hslColor = _getPatchedHslColor(); + + return hslColor + .withAlpha(hslColor.alpha <= alpha ? hslColor.alpha : alpha) + .withSaturation( + hslColor.saturation <= saturation ? hslColor.saturation : saturation, + ) + .withLightness( + hslColor.lightness <= lightness ? hslColor.lightness : lightness, + ) + .toColor(); + } + + Color capDown({ + double alpha = 0.0, + double saturation = 0.0, + double lightness = 0.0, + }) { + assert(alpha >= 0.0 && alpha <= 1.0); + assert(saturation >= 0.0 && saturation <= 1.0); + assert(lightness >= 0.0 && lightness <= 1.0); + + final hslColor = _getPatchedHslColor(); + + return hslColor + .withAlpha(hslColor.alpha >= alpha ? hslColor.alpha : alpha) + .withSaturation( + hslColor.saturation >= saturation ? hslColor.saturation : saturation, + ) + .withLightness( + hslColor.lightness >= lightness ? hslColor.lightness : lightness, + ) + .toColor(); + } + + HSLColor _getPatchedHslColor() { + final hslColor = HSLColor.fromColor(this); + + // A pure dark color have saturation level at 1.0, which results in red when lighten it. + // We reset this value to 0.0, so the result is desaturated as expected: + return hslColor + .withSaturation(hslColor.lightness == 0.0 ? 0.0 : hslColor.saturation); + } + + /// Returns a hex representation (`#AARRGGBB`) of the color. + String toHex() { + return '#${alpha.toHex()}${red.toHex()}${green.toHex()}${blue.toHex()}'; + } +} + +extension on int { + String toHex() => toRadixString(16).padLeft(2, '0'); +} diff --git a/lib/src/icons_foundation/canvas_extension.dart b/lib/src/icons_foundation/canvas_extension.dart new file mode 100644 index 000000000..b50afc7e5 --- /dev/null +++ b/lib/src/icons_foundation/canvas_extension.dart @@ -0,0 +1,33 @@ +import 'dart:math' as math; + +import 'package:flutter/material.dart'; + +typedef CanvasCallback = void Function(Canvas canvas); + +extension YaruCanvasExtension on Canvas { + void paintScaled({ + required Offset origin, + required Size scale, + required CanvasCallback paint, + }) { + save(); + translate(origin.dx, origin.dy); + this.scale(scale.width, scale.height); + translate(-origin.dx, -origin.dy); + paint(this); + restore(); + } + + void paintRotated({ + required Offset center, + required double angle, + required CanvasCallback paint, + }) { + save(); + translate(center.dx, center.dy); + rotate(math.pi * 2 * angle); + translate(-center.dx, -center.dy); + paint(this); + restore(); + } +} diff --git a/lib/src/icons_foundation/local_progress_mixin.dart b/lib/src/icons_foundation/local_progress_mixin.dart new file mode 100644 index 000000000..d608d1078 --- /dev/null +++ b/lib/src/icons_foundation/local_progress_mixin.dart @@ -0,0 +1,17 @@ +mixin LocalProgress { + double get progress; + + double computeLocalProgress( + double start, + double duration, + ) { + assert(start >= 0.0 && start <= 1.0); + assert(duration >= 0.0 && duration <= 1.0); + assert(start + duration <= 1.0); + + final localProgress = + progress >= start ? (progress - start) * (1.0 / duration) : 0.0; + + return localProgress < 1.0 ? localProgress : 1.0; + } +} diff --git a/lib/src/icons_widgets/yaru_animated_icon.dart b/lib/src/icons_widgets/yaru_animated_icon.dart new file mode 100644 index 000000000..16098563f --- /dev/null +++ b/lib/src/icons_widgets/yaru_animated_icon.dart @@ -0,0 +1,116 @@ +import 'package:animated_vector/animated_vector.dart'; +import 'package:flutter/material.dart'; + +/// Describes how a [YaruAnimatedIcon] will run. +enum YaruAnimationMode { + /// Play the animation only one time. + once, + + /// Play the animation indefinitely. + repeat +} + +/// A runner widget for all Yaru animated icons. +class YaruAnimatedVectorIcon extends StatefulWidget { + /// Create a Yaru animated icon runner. + const YaruAnimatedVectorIcon( + this.data, { + this.duration, + this.size, + this.color, + this.mode = YaruAnimationMode.once, + this.initialProgress, + super.key, + }); + + /// Describe which animation will be played. + final AnimatedVectorData data; + + /// Duration of the animation. + /// If null, defaults to [data.duration]. + final Duration? duration; + + /// Size of the canvas used to draw the icon. + /// If null, the default value of the related [data.build] widget will be used. + final double? size; + + /// Color used to draw the icon. + /// If null, the default value of the related [data.build] widget will be used. + final Color? color; + + /// Describes how the animation will run. + /// See [YaruAnimationMode]. + final YaruAnimationMode mode; + + /// Initial progress of the animation. + /// If null, the animation will play from the beginning. + final double? initialProgress; + + @override + State createState() => _YaruAnimatedVectorIconState(); +} + +class _YaruAnimatedVectorIconState extends State + with SingleTickerProviderStateMixin { + late AnimationController _controller; + + @override + void initState() { + super.initState(); + + _controller = AnimationController( + value: widget.initialProgress, + vsync: this, + duration: widget.data.duration, + ); + _runAnimationController(); + } + + @override + void didUpdateWidget(YaruAnimatedVectorIcon old) { + if (widget.data != old.data) { + _controller.value = 0.0; + } + if (widget.duration != old.duration) { + _controller.duration = widget.duration ?? widget.data.duration; + } + if (widget.mode != old.mode || widget.data != old.data) { + _runAnimationController(); + } + + super.didUpdateWidget(old); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + void _runAnimationController() { + switch (widget.mode) { + case YaruAnimationMode.once: + _controller.forward(); + break; + case YaruAnimationMode.repeat: + _controller.repeat(); + break; + } + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: _controller, + builder: (context, _) { + return AnimatedVector( + vector: widget.data, + progress: _controller, + size: widget.size != null ? Size.square(widget.size!) : null, + applyTheme: true, + color: widget.color, + ); + }, + ); + } +} diff --git a/lib/src/icons_widgets/yaru_animated_icons.dart b/lib/src/icons_widgets/yaru_animated_icons.dart new file mode 100644 index 000000000..ea6df8bfe --- /dev/null +++ b/lib/src/icons_widgets/yaru_animated_icons.dart @@ -0,0 +1,59 @@ +import 'package:animated_vector/animated_vector.dart'; +import 'package:animated_vector_annotations/animated_vector_annotations.dart'; +import 'package:flutter/widgets.dart'; + +part 'yaru_animated_icons.g.dart'; + +// ignore_for_file: constant_identifier_names +abstract final class YaruAnimatedIcons { + @ShapeShifterAsset('assets/shapeshifter/compass.shapeshifter') + static const compass = _$compass; + + @ShapeShifterAsset('assets/shapeshifter/compass_filled.shapeshifter') + static const compass_filled = _$compass_filled; + + @ShapeShifterAsset('assets/shapeshifter/heart.shapeshifter') + static const heart = _$heart; + + @ShapeShifterAsset('assets/shapeshifter/heart_filled.shapeshifter') + static const heart_filled = _$heart_filled; + + @ShapeShifterAsset('assets/shapeshifter/no_network.shapeshifter') + static const no_network = _$no_network; + + @ShapeShifterAsset('assets/shapeshifter/ok.shapeshifter') + static const ok = _$ok; + + @ShapeShifterAsset('assets/shapeshifter/ok_filled.shapeshifter') + static const ok_filled = _$ok_filled; + + @ShapeShifterAsset('assets/shapeshifter/star.shapeshifter') + static const star = _$star; + + @ShapeShifterAsset('assets/shapeshifter/star_filled.shapeshifter') + static const star_filled = _$star_filled; + + @ShapeShifterAsset('assets/shapeshifter/star_half_filled.shapeshifter') + static const star_half_filled = _$star_half_filled; + + @ShapeShifterAsset('assets/shapeshifter/thumb_up.shapeshifter') + static const thumb_up = _$thumb_up; + + @ShapeShifterAsset('assets/shapeshifter/thumb_up_filled.shapeshifter') + static const thumb_up_filled = _$thumb_up_filled; + + static const all = { + 'compass': compass, + 'compass_filled': compass_filled, + 'heart': heart, + 'heart_filled': heart_filled, + 'no_network': no_network, + 'ok': ok, + 'ok_filled': ok_filled, + 'star': star, + 'star_filled': star_filled, + 'star_half_filled': star_half_filled, + 'thumb_up': thumb_up, + 'thumb_up_filled': thumb_up_filled, + }; +} diff --git a/lib/src/icons_widgets/yaru_animated_icons.g.dart b/lib/src/icons_widgets/yaru_animated_icons.g.dart new file mode 100644 index 000000000..4abc363a7 --- /dev/null +++ b/lib/src/icons_widgets/yaru_animated_icons.g.dart @@ -0,0 +1,1727 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: constant_identifier_names +part of 'yaru_animated_icons.dart'; + +// ************************************************************************** +// ShapeshifterAssetGenerator +// ************************************************************************** + +const AnimatedVectorData _$compass = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z', + ), + strokeColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.85, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.85, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.85, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.85, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 17.303 6.697 C 15.116 7.494 12.56 8.791 11.16 9.529 C 10.807 9.702 10.493 9.943 10.236 10.24 C 10.186 10.285 10.135 10.33 10.086 10.379 C 9.859 10.607 9.67 10.871 9.529 11.16 C 8.791 12.56 7.494 15.116 6.697 17.303 C 8.933 16.489 11.587 15.139 12.963 14.41 C 13.266 14.243 13.536 14.024 13.762 13.762 C 14.023 13.537 14.243 13.267 14.41 12.965 C 15.139 11.589 16.489 8.933 17.303 6.697 Z M 12 11 C 12.552 11 13 11.448 13 12 C 13 12.552 12.552 13 12 13 C 11.448 13 11 12.552 11 12 C 11 11.448 11.448 11 12 11 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + rotation: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 360.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$compass_filled = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z', + ), + strokeColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.85, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.85, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.85, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.85, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + GroupElement( + elements: [ + ClipPathElement( + pathData: PathData.parse( + 'M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 Z', + ), + properties: ClipPathAnimationProperties( + pathData: [ + AnimationStep( + tween: ConstPathDataTween( + begin: PathData.parse( + 'M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12', + ), + end: PathData.parse( + 'M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 1.9 C 13.772 1.9 15.513 2.367 17.049 3.254 C 18.584 4.14 19.86 5.416 20.746 6.951 C 21.633 8.487 22.1 10.228 22.1 12 C 22.1 13.772 21.633 15.513 20.746 17.049 C 19.86 18.584 18.584 19.86 17.049 20.746 C 15.513 21.633 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9', + ), + ), + interval: AnimationInterval( + start: Duration(milliseconds: 150), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 17.303 6.697 C 15.116 7.494 12.56 8.791 11.16 9.529 C 10.807 9.702 10.493 9.943 10.236 10.24 C 10.186 10.285 10.135 10.33 10.086 10.379 C 9.859 10.607 9.67 10.871 9.529 11.16 C 8.791 12.56 7.494 15.116 6.697 17.303 C 8.933 16.489 11.587 15.139 12.963 14.41 C 13.266 14.243 13.536 14.024 13.762 13.762 C 14.023 13.537 14.243 13.267 14.41 12.965 C 15.139 11.589 16.489 8.933 17.303 6.697 Z M 12 11 C 12.552 11 13 11.448 13 12 C 13 12.552 12.552 13 12 13 C 11.448 13 11 12.552 11 12 C 11 11.448 11.448 11 12 11 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + ), + GroupElement( + elements: [ + ClipPathElement( + pathData: PathData.parse( + 'M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12', + ), + properties: ClipPathAnimationProperties( + pathData: [ + AnimationStep( + tween: ConstPathDataTween( + begin: PathData.parse( + 'M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12', + ), + end: PathData.parse( + 'M 12 1.9 C 13.772 1.9 15.514 2.366 17.049 3.253 C 18.585 4.14 19.86 5.415 20.747 6.951 C 21.634 8.486 22.1 10.228 22.1 12 C 22.1 13.772 21.634 15.514 20.747 17.049 C 19.86 18.585 18.585 19.86 17.049 20.747 C 15.514 21.634 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9', + ), + ), + interval: AnimationInterval( + start: Duration(milliseconds: 150), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 12 2 C 9.349 2 6.804 3.054 4.929 4.929 C 3.054 6.804 2 9.349 2 12 C 2 14.651 3.054 17.196 4.929 19.071 C 6.804 20.946 9.349 22 12 22 C 13.755 22 15.48 21.538 17 20.66 C 18.52 19.783 19.783 18.52 20.66 17 C 21.538 15.48 22 13.755 22 12 C 22 10.245 21.538 8.52 20.66 7 C 19.783 5.48 18.52 4.217 17 3.34 C 15.48 2.462 13.755 2 12 2 Z M 17.303 6.697 C 16.489 8.933 15.139 11.589 14.41 12.965 C 14.243 13.267 14.023 13.537 13.762 13.762 C 13.536 14.024 13.266 14.243 12.963 14.41 C 11.587 15.139 8.933 16.489 6.697 17.303 C 7.494 15.116 8.791 12.56 9.529 11.16 C 9.701 10.809 9.941 10.496 10.236 10.24 C 10.493 9.944 10.807 9.702 11.16 9.53 C 12.56 8.79 15.116 7.494 17.303 6.697 Z M 12 11 C 11.735 11 11.48 11.105 11.293 11.293 C 11.105 11.48 11 11.735 11 12 C 11 12.265 11.105 12.52 11.293 12.707 C 11.48 12.895 11.735 13 12 13 C 12.265 13 12.52 12.895 12.707 12.707 C 12.895 12.52 13 12.265 13 12 C 13 11.735 12.895 11.48 12.707 11.293 C 12.52 11.105 12.265 11 12 11 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + ), + ], + properties: GroupAnimationProperties( + rotation: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 360.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$heart = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 8 4.5 C 5.5 4.5 4.525 6.153 4.5 8.5 C 4.463 11.935 6.855 16.556 12 20.301 C 17.145 16.556 19.537 11.935 19.5 8.5 C 19.475 6.153 18.5 4.5 16 4.5 C 14.5 4.5 12 6.5 12 6.5 C 12 6.5 9.5 4.5 8 4.5 Z', + ), + strokeColor: Color(0xFF808080), + trimStart: 0.41, + trimEnd: 0.41, + trimOffset: 0.909, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 0.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimOffset: [ + AnimationStep( + tween: ConstTween( + begin: 0.909, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 299), + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$heart_filled = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 8 4.5 C 5.5 4.5 4.525 6.153 4.5 8.5 C 4.463 11.935 6.855 16.556 12 20.301 C 17.145 16.556 19.537 11.935 19.5 8.5 C 19.475 6.153 18.5 4.5 16 4.5 C 14.5 4.5 12 6.5 12 6.5 C 12 6.5 9.5 4.5 8 4.5 Z', + ), + strokeColor: Color(0xFF808080), + trimStart: 0.41, + trimEnd: 0.41, + trimOffset: 0.909, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 0.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimOffset: [ + AnimationStep( + tween: ConstTween( + begin: 0.909, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 299), + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + GroupElement( + scaleX: 0.0, + scaleY: 0.0, + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 8 4.5 C 5.5 4.5 4.525 6.153 4.5 8.5 C 4.463 11.935 6.855 16.556 12 20.301 C 17.145 16.556 19.537 11.935 19.5 8.5 C 19.475 6.153 18.5 4.5 16 4.5 C 14.5 4.5 12 6.5 12 6.5 C 12 6.5 9.5 4.5 8 4.5 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$no_network = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 600), + root: RootVectorElement( + elements: [ + ClipPathElement( + pathData: PathData.parse( + 'M 0 0 L 0 12 L 0 24 L 24 24 L 24 0 L 0 0 M 4.854 3.146 L 5.561 2.439 L 5.561 2.439 L 5.561 2.439 L 4.854 3.146 L 4.854 3.146', + ), + properties: ClipPathAnimationProperties( + pathData: [ + AnimationStep( + tween: ConstPathDataTween( + begin: PathData.parse( + 'M 0 0 L 0 12 L 0 24 L 24 24 L 24 0 L 0 0 M 4.854 3.146 L 5.561 2.439 L 5.561 2.439 L 5.561 2.439 L 4.854 3.146 L 4.854 3.146', + ), + end: PathData.parse( + 'M 0 0 L 0 0 L 0 24 L 24 24 L 24 0 L 0 0 M 4.854 3.146 L 5.561 2.439 L 5.561 2.439 L 19.561 16.439 L 18.854 17.146 L 4.854 3.146', + ), + ), + interval: AnimationInterval( + start: Duration(milliseconds: 350), + end: Duration(milliseconds: 600), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 18.5 17.5 L 4.5 3.5', + ), + strokeColor: Color(0xFF808080), + trimStart: 1.0, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 350), + end: Duration(milliseconds: 600), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 2.273 8.258 C 4.941 5.839 8.414 4.499 12.015 4.5 C 15.613 4.507 19.08 5.852 21.742 8.273', + ), + strokeColor: Color(0xFF808080), + trimStart: 1.0, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 4.4 10.385 C 6.501 8.527 9.21 7.501 12.015 7.5 L 12.015 7.5 C 14.819 7.503 17.526 8.53 19.626 10.389', + ), + strokeColor: Color(0xFF808080), + trimStart: 1.0, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 150), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 6.527 12.512 C 8.061 11.213 10.005 10.501 12.015 10.5 L 12.015 10.5 C 14.024 10.503 15.967 11.217 17.499 12.516', + ), + strokeColor: Color(0xFF808080), + trimStart: 1.0, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 100), + end: Duration(milliseconds: 350), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 8.651 14.645 C 9.613 13.903 10.793 13.501 12.007 13.5 L 12.007 13.5 C 13.219 13.505 14.396 13.91 15.355 14.652', + ), + strokeColor: Color(0xFF808080), + trimStart: 1.0, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 50), + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + GroupElement( + elements: [ + PathElement( + pathData: PathData.parse( + 'M 12 17 C 11.47 17 10.961 17.211 10.586 17.586 C 10.211 17.961 10 18.47 10 19 C 10 19.53 10.211 20.039 10.586 20.414 C 10.961 20.789 11.47 21 12 21 C 12.53 21 13.039 20.789 13.414 20.414 C 13.789 20.039 14 19.53 14 19 C 14 18.47 13.789 17.961 13.414 17.586 C 13.039 17.211 12.53 17 12 17 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + pivotX: [ + AnimationStep( + tween: ConstTween( + begin: 12.0, + end: 12.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + pivotY: [ + AnimationStep( + tween: ConstTween( + begin: 19.0, + end: 19.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$ok = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z', + ), + strokeColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ClipPathElement( + pathData: PathData.parse( + 'M 22 12 C 22 13.755 21.538 15.48 20.66 17 C 19.783 18.52 18.52 19.783 17 20.66 C 15.48 21.538 13.755 22 12 22 C 9.349 22 6.804 20.946 4.929 19.071 C 3.054 17.196 2 14.651 2 12 C 2 9.349 3.054 6.804 4.929 4.929 C 6.804 3.054 9.349 2 12 2 C 13.755 2 15.48 2.462 17 3.34 C 18.52 4.217 19.783 5.48 20.66 7 C 21.538 8.52 22 10.245 22 12 Z', + ), + ), + PathElement( + pathData: PathData.parse( + 'M 8 12 L 12.5 16.5 L 21.5 7.5', + ), + strokeColor: Color(0xFF808080), + strokeWidth: 1.5, + trimEnd: 0.0, + properties: PathAnimationProperties( + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 0.33, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 350), + ), + curve: ShapeShifterCurves.accelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 0.33, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 350), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$ok_filled = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + elements: [ + ClipPathElement( + pathData: PathData.parse( + 'M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 Z', + ), + properties: ClipPathAnimationProperties( + pathData: [ + AnimationStep( + tween: ConstPathDataTween( + begin: PathData.parse( + 'M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12', + ), + end: PathData.parse( + 'M 0 0 L 0 24 L 24 24 L 24 0 L 0 0 Z M 12 1.9 C 13.772 1.9 15.513 2.367 17.049 3.254 C 18.584 4.14 19.86 5.416 20.746 6.951 C 21.633 8.487 22.1 10.228 22.1 12 C 22.1 13.772 21.633 15.513 20.746 17.049 C 19.86 18.584 18.584 19.86 17.049 20.746 C 15.513 21.633 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9', + ), + ), + interval: AnimationInterval( + start: Duration(milliseconds: 325), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 21.5 12 C 21.5 14.519 20.498 16.937 18.718 18.718 C 16.937 20.498 14.519 21.5 12 21.5 C 9.481 21.5 7.063 20.498 5.282 18.718 C 3.502 16.937 2.5 14.519 2.5 12 C 2.5 9.481 3.502 7.063 5.282 5.282 C 7.063 3.502 9.481 2.5 12 2.5 C 14.519 2.5 16.937 3.502 18.718 5.282 C 20.498 7.063 21.5 9.481 21.5 12 Z', + ), + strokeColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.8, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 250), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.8, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 250), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ClipPathElement( + pathData: PathData.parse( + 'M 22 12 C 22 13.755 21.538 15.48 20.66 17 C 19.783 18.52 18.52 19.783 17 20.66 C 15.48 21.538 13.755 22 12 22 C 9.349 22 6.804 20.946 4.929 19.071 C 3.054 17.196 2 14.651 2 12 C 2 9.349 3.054 6.804 4.929 4.929 C 6.804 3.054 9.349 2 12 2 C 13.755 2 15.48 2.462 17 3.34 C 18.52 4.217 19.783 5.48 20.66 7 C 21.538 8.52 22 10.245 22 12 Z', + ), + ), + PathElement( + pathData: PathData.parse( + 'M 8 12 L 12.5 16.5 L 21.5 7.5', + ), + strokeColor: Color(0xFF808080), + strokeWidth: 1.5, + trimEnd: 0.0, + properties: PathAnimationProperties( + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 0.33, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 350), + ), + curve: ShapeShifterCurves.accelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 0.33, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 350), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + ], + ), + ClipPathElement( + pathData: PathData.parse( + 'M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12', + ), + properties: ClipPathAnimationProperties( + pathData: [ + AnimationStep( + tween: ConstPathDataTween( + begin: PathData.parse( + 'M 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 L 12 12', + ), + end: PathData.parse( + 'M 12 1.9 C 13.772 1.9 15.514 2.366 17.049 3.253 C 18.585 4.14 19.86 5.415 20.747 6.951 C 21.634 8.486 22.1 10.228 22.1 12 C 22.1 13.772 21.634 15.514 20.747 17.049 C 19.86 18.585 18.585 19.86 17.049 20.747 C 15.514 21.634 13.772 22.1 12 22.1 C 9.322 22.1 6.753 21.035 4.859 19.141 C 2.965 17.247 1.9 14.678 1.9 12 C 1.9 9.322 2.965 6.753 4.859 4.859 C 6.753 2.965 9.322 1.9 12 1.9 L 12 1.9', + ), + ), + interval: AnimationInterval( + start: Duration(milliseconds: 325), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + PathElement( + pathData: PathData.parse( + 'M 12 2 C 9.349 2 6.804 3.054 4.929 4.929 C 3.054 6.804 2 9.349 2 12 C 2 14.651 3.054 17.196 4.929 19.071 C 6.804 20.946 9.349 22 12 22 C 13.755 22 15.48 21.538 17 20.66 C 18.52 19.783 19.783 18.52 20.66 17 C 21.538 15.48 22 13.755 22 12 C 22 10.856 21.804 9.721 21.42 8.643 L 12.5 17.56 L 7.469 12.53 L 8.53 11.47 L 12.499 15.439 L 20.757 7.181 C 19.895 5.613 18.627 4.305 17.087 3.393 C 15.547 2.482 13.79 2.001 12 2 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + ), +); + +const AnimatedVectorData _$star = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z', + ), + strokeColor: Color(0xFF808080), + trimOffset: 0.2, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 0.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimOffset: [ + AnimationStep( + tween: ConstTween( + begin: 0.2, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 299), + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.linear, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.75, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.75, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$star_filled = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z', + ), + strokeColor: Color(0xFF808080), + trimOffset: 0.199, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 0.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimOffset: [ + AnimationStep( + tween: ConstTween( + begin: 0.199, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 299), + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.linear, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.75, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.75, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + GroupElement( + scaleX: 0.0, + scaleY: 0.0, + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$star_half_filled = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 500), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 12.0, + pivotY: 12.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z', + ), + strokeColor: Color(0xFF808080), + trimOffset: 0.199, + properties: PathAnimationProperties( + trimStart: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 0.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimEnd: [ + AnimationStep( + tween: ConstTween( + begin: 0.5, + end: 1.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.accelerate, + ), + ], + trimOffset: [ + AnimationStep( + tween: ConstTween( + begin: 0.199, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 299), + end: Duration(milliseconds: 300), + ), + curve: ShapeShifterCurves.linear, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.75, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.75, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 400), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 400), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + GroupElement( + scaleX: 0.0, + scaleY: 0.0, + pivotX: 12.0, + pivotY: 12.0, + elements: [ + ClipPathElement( + pathData: PathData.parse( + 'M 0 0 L 12 0 L 12 24 L 0 24 Z', + ), + ), + PathElement( + pathData: PathData.parse( + 'M 3.063 9.475 L 9.845 9.413 L 12 2.983 L 14.155 9.413 L 20.937 9.475 L 15.485 13.511 L 17.522 19.981 L 12 16.044 L 6.478 19.981 L 8.515 13.511 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$thumb_up = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 1000), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 10.0, + pivotY: 17.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 12.123 3 L 10.123 10 L 4 10 L 4 21 L 9 21 L 9 11 L 10.877 11 L 12.877 4 L 13.5 4 C 13.715 4 13.859 4.034 13.939 4.072 C 14.02 4.111 14.052 4.138 14.096 4.234 C 14.183 4.428 14.216 4.973 14.012 5.891 L 12.877 11 L 17.5 11 C 18.139 11 18.5 11.196 18.723 11.453 C 18.945 11.71 19.04 12.067 19.002 12.451 L 18.502 17.451 C 18.361 18.858 17.959 19.39 17.404 19.682 C 16.85 19.974 16 20 15 20 C 14.003 20 12.939 19.976 12.199 19.705 C 11.46 19.434 11.032 19.052 11 17.984 L 10 18.016 C 10.042 19.411 10.863 20.279 11.855 20.643 C 12.848 21.006 13.997 21 15 21 C 16 21 17.001 21.026 17.871 20.568 C 18.741 20.11 19.339 19.142 19.498 17.549 L 19.998 12.549 C 20.06 11.934 19.906 11.292 19.479 10.799 C 19.051 10.305 18.361 10 17.5 10 L 14.123 10 L 14.988 6.109 C 15.211 5.109 15.267 4.403 15.008 3.826 C 14.878 3.538 14.645 3.3 14.373 3.17 C 14.101 3.039 13.807 3 13.5 3 L 12.123 3 Z M 5 11 L 8 11 L 8 20 L 5 20 L 5 11 Z', + ), + fillColor: Color(0xFF808080), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 1.15, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 1.15, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 600), + end: Duration(milliseconds: 850), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 1.15, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 1.15, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 600), + end: Duration(milliseconds: 850), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + rotation: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 5.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 200), + ), + curve: ShapeShifterCurves.decelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 5.0, + end: -23.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + AnimationStep( + tween: ConstTween( + begin: -23.0, + end: 7.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 600), + end: Duration(milliseconds: 850), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 7.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 850), + end: Duration(milliseconds: 1000), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + ], + ), +); + +const AnimatedVectorData _$thumb_up_filled = AnimatedVectorData( + viewportSize: Size(24, 24), + duration: Duration(milliseconds: 1000), + root: RootVectorElement( + elements: [ + GroupElement( + pivotX: 10.0, + pivotY: 17.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 12.123 3 L 10.123 10 L 4 10 L 4 21 L 9 21 L 9 11 L 10.877 11 L 12.877 4 L 13.5 4 C 13.715 4 13.859 4.034 13.939 4.072 C 14.02 4.111 14.052 4.138 14.096 4.234 C 14.183 4.428 14.216 4.973 14.012 5.891 L 12.877 11 L 17.5 11 C 18.139 11 18.5 11.196 18.723 11.453 C 18.945 11.71 19.04 12.067 19.002 12.451 L 18.502 17.451 C 18.361 18.858 17.959 19.39 17.404 19.682 C 16.85 19.974 16 20 15 20 C 14.003 20 12.939 19.976 12.199 19.705 C 11.46 19.434 11.032 19.052 11 17.984 L 10 18.016 C 10.042 19.411 10.863 20.279 11.855 20.643 C 12.848 21.006 13.997 21 15 21 C 16 21 17.001 21.026 17.871 20.568 C 18.741 20.11 19.339 19.142 19.498 17.549 L 19.998 12.549 C 20.06 11.934 19.906 11.292 19.479 10.799 C 19.051 10.305 18.361 10 17.5 10 L 14.123 10 L 14.988 6.109 C 15.211 5.109 15.267 4.403 15.008 3.826 C 14.878 3.538 14.645 3.3 14.373 3.17 C 14.101 3.039 13.807 3 13.5 3 L 12.123 3 Z M 5 11 L 8 11 L 8 20 L 5 20 L 5 11 Z', + ), + fillColor: Color(0xFF808080), + properties: PathAnimationProperties( + fillAlpha: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + GroupElement( + pivotX: 15.0, + pivotY: 15.0, + elements: [ + PathElement( + pathData: PathData.parse( + 'M 12.123 3 L 10 10.43 L 10 18.016 C 10.042 19.411 10.863 20.279 11.855 20.643 C 12.848 21.006 13.997 21 15 21 C 16 21 17.001 21.026 17.871 20.568 C 18.741 20.11 19.339 19.142 19.498 17.549 L 19.998 12.549 C 20.06 11.934 19.906 11.292 19.479 10.799 C 19.051 10.305 18.361 10 17.5 10 L 13.623 10 L 14.488 6.109 C 14.711 5.109 14.767 4.403 14.508 3.826 C 14.379 3.538 14.145 3.3 13.873 3.17 C 13.601 3.039 13.308 3 13 3 Z M 9 10 L 9 21 L 4 21 L 4 10 Z', + ), + fillColor: Color(0xFF808080), + fillAlpha: 0.0, + properties: PathAnimationProperties( + fillAlpha: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 0.75, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + ], + properties: GroupAnimationProperties( + scaleX: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 1.15, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 1.15, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 600), + end: Duration(milliseconds: 850), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + scaleY: [ + AnimationStep( + tween: ConstTween( + begin: 1.0, + end: 1.15, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 300), + end: Duration(milliseconds: 450), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 1.15, + end: 1.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 600), + end: Duration(milliseconds: 850), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + ], + rotation: [ + AnimationStep( + tween: ConstTween( + begin: 0.0, + end: 5.0, + ), + interval: AnimationInterval( + end: Duration(milliseconds: 200), + ), + curve: ShapeShifterCurves.decelerate, + ), + AnimationStep( + tween: ConstTween( + begin: 5.0, + end: -23.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 200), + end: Duration(milliseconds: 500), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + AnimationStep( + tween: ConstTween( + begin: -23.0, + end: 7.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 600), + end: Duration(milliseconds: 850), + ), + curve: ShapeShifterCurves.fastOutSlowIn, + ), + AnimationStep( + tween: ConstTween( + begin: 7.0, + end: 0.0, + ), + interval: AnimationInterval( + start: Duration(milliseconds: 850), + end: Duration(milliseconds: 1000), + ), + curve: ShapeShifterCurves.accelerateDecelerate, + ), + ], + ), + ), + ], + ), +); diff --git a/lib/src/icons_widgets/yaru_placeholder_icon.dart b/lib/src/icons_widgets/yaru_placeholder_icon.dart new file mode 100644 index 000000000..49b78ffb3 --- /dev/null +++ b/lib/src/icons_widgets/yaru_placeholder_icon.dart @@ -0,0 +1,130 @@ +import 'package:flutter/material.dart'; + +class YaruPlaceholderIcon extends StatelessWidget { + const YaruPlaceholderIcon({ + super.key, + required this.size, + this.borderRadius, + }); + + /// Determines the icon canvas size. + final Size size; + + /// Border radius used to build the clip widget. + /// If null, it defaults to an oval clip. + final BorderRadiusGeometry? borderRadius; + + @override + Widget build(BuildContext context) { + final brightness = Theme.of(context).brightness; + + // https://github.com/ubuntu-flutter-community/software/issues/798#issuecomment-1398266697 + final backgroundColor = brightness == Brightness.light + ? const Color(0xFFC8C7C7) + : const Color(0xFF5c5c5c); + final detail1Color = brightness == Brightness.light + ? const Color(0xFFEEEDED) + : const Color(0xFF737373); + final detail2Color = brightness == Brightness.light + ? const Color(0xFFD9D9D9) + : const Color(0xFF616161); + + return RepaintBoundary( + child: _buildClip( + CustomPaint( + size: size, + painter: _YaruPlaceholderIconPainter( + size: size, + backgroundColor: backgroundColor, + detail1Color: detail1Color, + detail2Color: detail2Color, + ), + ), + ), + ); + } + + Widget _buildClip(Widget child) { + if (borderRadius == null) { + return ClipOval(child: child); + } + + return ClipRRect( + borderRadius: borderRadius ?? BorderRadius.zero, + child: child, + ); + } +} + +class _YaruPlaceholderIconPainter extends CustomPainter { + _YaruPlaceholderIconPainter({ + required this.size, + required this.backgroundColor, + required this.detail1Color, + required this.detail2Color, + }); + + final Size size; + final Color backgroundColor; + final Color detail1Color; + final Color detail2Color; + + @override + void paint(Canvas canvas, Size canvasSize) { + _drawBackground(canvas, size); + _drawObject1(canvas, size); + _drawObject2(canvas, size); + _drawObject3(canvas, size); + } + + void _drawBackground(Canvas canvas, Size size) { + canvas.drawRect( + Rect.fromLTRB(0, 0, size.width, size.height), + Paint()..color = backgroundColor, + ); + } + + void _drawObject1(Canvas canvas, Size size) { + final path = Path() + ..moveTo(_computeX(131), _computeY(0)) + ..lineTo(_computeX(11), _computeY(31.596)) + ..lineTo(_computeX(40.583), _computeY(0)) + ..close(); + + canvas.drawPath(path, Paint()..color = detail1Color); + } + + void _drawObject2(Canvas canvas, Size size) { + final path = Path() + ..moveTo(_computeX(40.583), _computeY(0)) + ..lineTo(_computeX(11), _computeY(31.596)) + ..lineTo(_computeX(23.834), _computeY(0)) + ..close(); + + canvas.drawPath(path, Paint()..color = detail2Color); + } + + void _drawObject3(Canvas canvas, Size size) { + final path = Path() + ..moveTo(_computeX(23.834), _computeY(0)) + ..lineTo(_computeX(11), _computeY(31.596)) + ..lineTo(_computeX(0), _computeY(51.496)) + ..lineTo(_computeX(0), _computeY(0)) + ..close(); + + canvas.drawPath(path, Paint()..color = detail1Color); + } + + // The svg reference was 131 x 51.496 + // We want the icon to be scalled depending on the widget height only + double _computeX(double x) => size.width - (x / 51.496 * size.height); + double _computeY(double y) => size.height - (y / 51.496 * size.height); + + @override + bool shouldRepaint(_YaruPlaceholderIconPainter oldDelegate) { + return oldDelegate.size != size || + oldDelegate.backgroundColor != backgroundColor || + oldDelegate.detail1Color != detail1Color || + oldDelegate.detail2Color != detail2Color; + } +} diff --git a/lib/src/settings.dart b/lib/src/settings.dart new file mode 100644 index 000000000..3c62ebed6 --- /dev/null +++ b/lib/src/settings.dart @@ -0,0 +1,28 @@ +import 'package:flutter/foundation.dart'; +import 'package:gtk/gtk.dart'; + +abstract class YaruSettings { + factory YaruSettings() = YaruGtkSettings; + const YaruSettings._(); + + String? getThemeName(); + Stream get themeNameChanged; +} + +class YaruGtkSettings extends YaruSettings { + YaruGtkSettings([@visibleForTesting GtkSettings? settings]) + : _settings = settings ?? GtkSettings(), + super._(); + + final GtkSettings _settings; + + @override + String? getThemeName() { + return _settings.getProperty(kGtkThemeName) as String?; + } + + @override + Stream get themeNameChanged { + return _settings.notifyProperty(kGtkThemeName).cast(); + } +} diff --git a/lib/src/text/fonts/CONTRIBUTING.txt b/lib/src/text/fonts/CONTRIBUTING.txt new file mode 100644 index 000000000..15bdc0c0b --- /dev/null +++ b/lib/src/text/fonts/CONTRIBUTING.txt @@ -0,0 +1,21 @@ +The Ubuntu Font Family is very long-term endeavour, and the first time +that a professionally-designed font has been funded specifically with +the intent of being an on-going community expanded project: + + http://font.ubuntu.com/ + +Development of the Ubuntu Font Family is undertaken on Launchpad: + + http://launchpad.net/ubuntu-font-family/ + +and this is where milestones, bug management and releases are handled. + +Contributions are welcomed. Your work will be used on millions of +computers every single day! Following the initial bootstrapping of +Latin, Cyrillic, Greek, Arabic and Hebrew expansion will be undertaken +by font designers from the font design and Ubuntu communities. + +To ensure that the Ubuntu Font Family can be re-licensed to future +widely-used libre font licences, copyright assignment is being required: + + https://launchpad.net/~uff-contributors diff --git a/lib/src/text/fonts/FONTLOG.txt b/lib/src/text/fonts/FONTLOG.txt new file mode 100644 index 000000000..83022be7e --- /dev/null +++ b/lib/src/text/fonts/FONTLOG.txt @@ -0,0 +1,292 @@ +This is the FONTLOG file for the Ubuntu Font Family and attempts to follow +the recommendations at: http://scripts.sil.org/OFL-FAQ_web#43cecb44 + + +Overview + +The new Ubuntu Font Family was started to enable the personality of +Ubuntu to be seen and felt in every menu, button and dialog. +The typeface is sans-serif, uses OpenType features and is manually +hinted for clarity on desktop and mobile computing screens. + +The scope of the Ubuntu Font Family includes all the languages used by +the various Ubuntu users around the world in tune with Ubuntu's +philosophy which states that every user should be able to use their +software in the language of their choice. So the Ubuntu Font Family +project will be extended to cover many more written languages. + + +History + +The Ubuntu Font Family has been creating during 2010 and 2011. As of +September 2011 coverage is provided for Latin, Cyrillic and Greek across +Regular, Italic, Bold and Bold-Italic. Further work was uptaken during +2015. + + +ChangeLog + +2015-08-21 (Paul Sladen) Ubuntu Font Family version 0.83 + + Note: This release was created by binary patching from the v0.80 + release using the scripts in 'sources/patch-0.80-0.83/' to rebuild + the necessary tables. The release selectively updates only those + proportional .ttf font files exhibiting the bug below bug number; + the Ubuntu Mono monospace font files remain unchanged, being the + original version 0.80 ones. + + [Marc Foley] + * [Engineering] Fixed wrong characters appear in some mac apps. (LP: #1334363) + + +2011-09-22 (Paul Sladen) Ubuntu Font Family version 0.80 + + [Vincent Connare/Dalton Maag] + * Wish for addition of a monospaced member to the family (LP: #640382) + * Mono: No hinting yet - Ubuntu Beta Mono font looks jagged in + Netbeans and terrible with ClearType (LP: #820493) + * Emacs: choosing normal monospace font in Emacs but gives bold-italic + (LP: #791076) + * PUA: ensure that Ubuntu Circle of Friends logo is full size: (LP: #853855) + + U+E0FF becomes large size in proportionals, remains small width in + monospaces + + U+F0FF becomes small size (proportionals only) + + U+F200 is full ubuntu logomark (proportionals only) + + [Paul Sladen] + * Monospace: Patch Family Name to be "Ubuntu Mono" + * Monospace: Patch U+EFFD version debugging glyph to be '0.8' + + [Cody Boisclair] + * Monospace: Force .null HDMX advance to 500 + * Monospace: Remap ASCII box-drawing characters (LP: #788757) + + [Júlio Reis] + * Date corrections to 'FONTLOG' (LP: #836595) + +2011-03-08 (Paul Sladen) Ubuntu Font Family version 0.71.2 + + * (Production) Adjust Medium WeightClass to 500 (Md, MdIt) (LP: #730912) + +2011-03-07 (Paul Sladen) Ubuntu Font Family version 0.71.1 + + * (Design) Add Capitalised version of glyphs and kern. (Lt, LtIt, + Md, MdIt) DM (LP: #677446) + * (Design) Re-space and tighen Regular and Italic by amount specified + by Mark Shuttleworth (minus 4 FUnits). (Rg, It) (LP: #677149) + * (Design) Design: Latin (U+0192) made straight more like l/c f with + tail (LP: #670768) + * (Design) (U+01B3) should have hook on right, as the lowercase + (U+01B4) (LP: #681026) + * (Design) Tail of Light Italic germandbls, longs and lowercase 'f' + to match Italic/BoldItalic (LP: #623925) + * (Production) Update feature (Lt, LtIt, Md, MdIt). DM + (LP: #676538, #676539) + * (Production) Remove Bulgarian locl feature for Italics. (LP: #708578) + * (Production) Update Description information with new string: + "The Ubuntu Font Family are libre fonts funded by Canonical Ltd + on behalf of the Ubuntu project. The font design work and + technical implementation is being undertaken by Dalton Maag. The + typeface is sans-serif, uses OpenType features and is manually + hinted for clarity on desktop and mobile computing screens. The + scope of the Ubuntu Font Family includes all the languages used + by the various Ubuntu users around the world in tune with + Ubuntu's philosophy which states that every user should be able + to use their software in the language of their choice. The + project is ongoing, and we expect the family will be extended to + cover many written languages in the coming years." + (Rg, It, Bd, BdIt, Lt, LtIt, Md, MdIt) (LP: #690590) + * (Production) Pixel per em indicator added at U+F000 (Lt, LtIt, Md, + MdIt) (LP: #615787) + * (Production) Version number indicator added at U+EFFD (Lt, LtIt, Md, + MdIt) (LP: #640623) + * (Production) fstype bit set to 0 - Editable (Lt, LtIt, Md, MdIt) + (LP: #648406) + * (Production) Localisation of name table has been removed because + of problems with Mac OS/X interpretation of localisation. DM + (LP: #730785) + * (Hinting) Regular '?' dot non-circular (has incorrect control + value). (LP: #654336) + * (Hinting) Too much space after latin capital 'G' in 13pt + regular. Now reduced. (LP: #683437) + * (Hinting) Balance Indian Rupee at 18,19pt (LP: #662177) + * (Hinting) Make Regular '£' less ambiguous at 13-15 ppm (LP: #685562) + * (Hinting) Regular capital 'W' made symmetrical at 31 ppem (LP: #686168) + +2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70.1 + + Packaging, rebuilt from '2010-12-08 UbuntuFontsSourceFiles_070.zip': + * (Midstream) Fstype bit != 0 (LP: #648406) + * (Midstream) Add unit test to validate fstype bits (LP: #648406) + * (Midstream) Add unit test to validate licence + +2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70 + + Release notes 0.70: + * (Design) Add Capitalised version of glyphs and kern. (Rg, It, Bd, + BdIt) DM (LP: #676538, #677446) + * (Design) Give acute and grave a slight upright move to more match + the Hungarian double acute angle. (Rg, It, Bd, BdIt) (LP: #656647) + * (Design) Shift Bold Italic accent glyphs to be consistent with the + Italic. (BdIt only) DM (LP: #677449) + * (Design) Check spacing and kerning of dcaron, lcaron and + tcaron. (Rg, It, Bd, BdIt) (LP: #664722) + * (Design) Add positive kerning to () {} [] to open out the + combinations so they are less like a closed box. (Rg, It, Bd, + BdIt) (LP: #671228) + * (Design) Change design of acute.asc and check highest points (Bd + and BdIt only) DM + * (Production) Update feature. DM (LP: #676538, #676539) + * (Production) Remove Romanian locl feature. (Rg, It, Bd, BdIt) + (LP: #635615) + * (Production) Update Copyright information with new + strings. "Copyright 2010 Canonical Ltd. Licensed under the Ubuntu + Font Licence 1.0" Trademark string "Ubuntu and Canonical are + registered trademarks of Canonical Ltd." (Rg, It, Bd, BdIt) DM + (LP: #677450) + * (Design) Check aligning of hyphen, math signs em, en, check braces + and other brackets. 16/11 (LP: #676465) + * (Production) Pixel per em indicator added at U+F000 (Rg, It, Bd, + BdIt) (LP: #615787) + * (Production) Version number indicator added at U+EFFD (Rg, It, Bd, + BdIt) (LP: #640623) + * (Production) fstype bit set to 0 - Editable (Rg, It, Bd, BdIt) + (LP: #648406) + +2010-10-05 (Paul Sladen) Ubuntu Font Family version 0.69 + + [Dalton Maag] + * Italic, + - Hinting on lowercase Italic l amended 19ppm (LP: #632451) + - Hinting on lowercase Italic u amended 12ppm (LP: #626376) + + * Regular, Italic, Bold, BoldItalic + - New Rupee Sign added @ U+20B9 (LP: #645987) + - Ubuntu Roundel added @ U+E0FF (LP: #651606) + + [Paul Sladen] + * All + - Removed "!ubu" GSUB.calt ligature for U+E0FF (LP: #651606) + + +Acknowledgements + +If you make modifications be sure to add your name (N), email (E), +web-address (if you have one) (W) and description (D). This list is in +alphabetical order. + +N: Ryan Abdullah +W: http://www.rayan.de/ +D: Arabic calligraphy and design in collaboration with Dalton Maag +D: Arabic testing + +N: Cody Boisclair +D: Monospace low-level debugging and patching ('fixboxdrawing-ft.py') + +N: Amélie Bonet +W: http://ameliebonet.com/ +D: Type design with Dalton Maag, particularly Ubuntu Mono and Ubuntu Condensed + +N: Jason Campbell +W: http://www.campbellgraphics.com/design/fonts.shtml +D: Monospace hinting (first phase) at Dalton Maag + +N: Pilar Cano +W: http://www.pilarcano.com/ +D: Hebrew realisation with Dalton Maag + +N: Fernando Caro +D: Type design with Dalton Maag, particularly Ubuntu Condensed + +N: Ron Carpenter +W: http://www.daltonmaag.com/ +D: Type design with Dalton Maag +D: Arabic realisation in collaboration with Ryan Abdullah + +N: Vincent Connare +W: http://www.connare.com/ +D: Type design, and engineering with Dalton Maag +D: Monospace hinting (second phase) at Dalton Maag + +N: Dave Crossland +E: dave@understandingfonts.com +W: http://understandingfonts.com/ +D: Documentation and libre licensing guidance +D: Google Webfont integration at Google + +N: Steve Edwards +W: http://www.madebymake.com/ +D: font.ubuntu.com revamp implementation with Canonical Web Team + +N: Iain Farrell +W: http://www.flickr.com/photos/iain +D: Ubuntu Font Family delivery for the Ubuntu UX team at Canonical + +N: Marc Foley +W: http://www.marcfoley.co/ +D: Font Engineer at Dalton Maag for the 2015 updates + +N: Shiraaz Gabru +W: http://www.daltonmaag.com/ +D: Ubuntu Font Family project management at Dalton Maag + +N: Marcus Haslam +W: http://design.canonical.com/author/marcus-haslam/ +D: Creative inspiration + +N: Ben Laenen +D: Inspiration behind the pixels-per-em (PPEM) readout debugging glyph at U+F000 + (for this font the concept was re-implemented from scratch by Dalton-Maag) + +N: Bruno Maag +W: http://www.daltonmaag.com/ +D: Stylistic direction of the Ubuntu Font Family, as head of Dalton Maag + +N: Ivanka Majic +W: http://www.ivankamajic.com/ +D: Guiding the UX team and Cyrillic feedback + +N: David Marshall +W: http://www.daltonmaag.com/ +D: Technical guidance and administration at Dalton Maag + +N: Malcolm Wooden +W: http://www.daltonmaag.com/ +D: Font Engineering at Dalton Maag + +N: Lukas Paltram +W: http://www.daltonmaag.com/ +D: Type design with Dalton Maag + +N: Júlio Reis +D: Date fixes to the documentation + +N: Rodrigo Rivas +D: Indian Rupee Sign glyph + +N: Mark Shuttleworth +E: mark@ubuntu.com +W: http://www.markshuttleworth.com/ +D: Executive quality-control and funding + +N: Paul Sladen +E: ubuntu@paul.sladen.org +W: http://www.paul.sladen.org/ +D: Bug triaging, packaging at Ubuntu and Canonical + +N: Nicolas Spalinger +W: http://planet.open-fonts.org +D: Continuous guidance on libre/open font licensing, best practises in source + tree layout, release and packaging (pkg-fonts Debian team) + +N: Kenneth Wimer +D: Initial PPA packaging + +* Canonical Ltd is the primary commercial sponsor of the Ubuntu and + Kubuntu operating systems +* Dalton Maag are a custom type foundry headed by Bruno Maag + +For further documentation, information on contributors, source code +downloads and those involved with the Ubuntu Font Family, visit: + + http://font.ubuntu.com/ diff --git a/lib/src/text/fonts/LICENCE-FAQ.txt b/lib/src/text/fonts/LICENCE-FAQ.txt new file mode 100644 index 000000000..776a25edf --- /dev/null +++ b/lib/src/text/fonts/LICENCE-FAQ.txt @@ -0,0 +1,177 @@ + Ubuntu Font Family Licensing FAQ + + Stylistic Foundations + + The Ubuntu Font Family is the first time that a libre typeface has been + designed professionally and explicitly with the intent of developing a + public and long-term community-based development process. + + When developing an open project, it is generally necessary to have firm + foundations: a font needs to maintain harmony within itself even across + many type designers and writing systems. For the [1]Ubuntu Font Family, + the process has been guided with the type foundry Dalton Maag setting + the project up with firm stylistic foundation covering several + left-to-right scripts: Latin, Greek and Cyrillic; and right-to-left + scripts: Arabic and Hebrew (due in 2011). + + With this starting point the community will, under the supervision of + [2]Canonical and [3]Dalton Maag, be able to build on the existing font + sources to expand their character coverage. Ultimately everybody will + be able to use the Ubuntu Font Family in their own written languages + across the whole of Unicode (and this will take some time!). + + Licensing + + The licence chosen by any free software project is one of the + foundational decisions that sets out how derivatives and contributions + can occur, and in turn what kind of community will form around the + project. + + Using a licence that is compatible with other popular licences is a + powerful constraint because of the [4]network effects: the freedom to + share improvements between projects allows free software to reach + high-quality over time. Licence-proliferation leads to many + incompatible licences, undermining the network effect, the freedom to + share and ultimately making the libre movement that Ubuntu is a part of + less effective. For all kinds of software, writing a new licence is not + to be taken lightly and is a choice that needs to be thoroughly + justified if this path is taken. + + Today it is not clear to Canonical what the best licence for a font + project like the Ubuntu Font Family is: one that starts life designed + by professionals and continues with the full range of community + development, from highly commercial work in new directions to curious + beginners' experimental contributions. The fast and steady pace of the + Ubuntu release cycle means that an interim libre licence has been + necessary to enable the consideration of the font family as part of + Ubuntu 10.10 operating system release. + + Before taking any decision on licensing, Canonical as sponsor and + backer of the project has reviewed the many existing licenses used for + libre/open fonts and engaged the stewards of the most popular licenses + in detailed discussions. The current interim licence is the first step + in progressing the state-of-the-art in licensing for libre/open font + development. + + The public discussion must now involve everyone in the (comparatively + new) area of the libre/open font community; including font users, + software freedom advocates, open source supporters and existing libre + font developers. Most importantly, the minds and wishes of professional + type designers considering entering the free software business + community must be taken on board. + + Conversations and discussion has taken place, privately, with + individuals from the following groups (generally speaking personally on + behalf of themselves, rather than their affiliations): + * [5]SIL International + * [6]Open Font Library + * [7]Software Freedom Law Center + * [8]Google Font API + + Document embedding + + One issue highlighted early on in the survey of existing font licences + is that of document embedding. Almost all font licences, both free and + unfree, permit embedding a font into a document to a certain degree. + Embedding a font with other works that make up a document creates a + "combined work" and copyleft would normally require the whole document + to be distributed under the terms of the font licence. As beautiful as + the font might be, such a licence makes a font too restrictive for + useful general purpose digital publishing. + + The situation is not entirely unique to fonts and is encountered also + with tools such as GNU Bison: a vanilla GNU GPL licence would require + anything generated with Bison to be made available under the terms of + the GPL as well. To avoid this, Bison is [9]published with an + additional permission to the GPL which allows the output of Bison to be + made available under any licence. + + The conflict between licensing of fonts and licensing of documents, is + addressed in two popular libre font licences, the SIL OFL and GNU GPL: + * [10]SIL Open Font Licence: When OFL fonts are embedded in a + document, the OFL's terms do not apply to that document. (See + [11]OFL-FAQ for details. + * [12]GPL Font Exception: The situation is resolved by granting an + additional permission to allow documents to not be covered by the + GPL. (The exception is being reviewed). + + The Ubuntu Font Family must also resolve this conflict, ensuring that + if the font is embedded and then extracted it is once again clearly + under the terms of its libre licence. + + Long-term licensing + + Those individuals involved, especially from Ubuntu and Canonical, are + interested in finding a long-term libre licence that finds broad favour + across the whole libre/open font community. The deliberation during the + past months has been on how to licence the Ubuntu Font Family in the + short-term, while knowingly encouraging everyone to pursue a long-term + goal. + * [13]Copyright assignment will be required so that the Ubuntu Font + Family's licensing can be progressively expanded to one (or more) + licences, as best practice continues to evolve within the + libre/open font community. + * Canonical will support and fund legal work on libre font licensing. + It is recognised that the cost and time commitments required are + likely to be significant. We invite other capable parties to join + in supporting this activity. + + The GPL version 3 (GPLv3) will be used for Ubuntu Font Family build + scripts and the CC-BY-SA for associated documentation and non-font + content: all items which do not end up embedded in general works and + documents. + +Ubuntu Font Licence + + For the short-term only, the initial licence is the [14]Ubuntu Font + License (UFL). This is loosely inspired from the work on the SIL + OFL 1.1, and seeks to clarify the issues that arose during discussions + and legal review, from the perspective of the backers, Canonical Ltd. + Those already using established licensing models such as the GPL, OFL + or Creative Commons licensing should have no worries about continuing + to use them. The Ubuntu Font Licence (UFL) and the SIL Open Font + Licence (SIL OFL) are not identical and should not be confused with + each other. Please read the terms precisely. The UFL is only intended + as an interim license, and the overriding aim is to support the + creation of a more suitable and generic libre font licence. As soon as + such a licence is developed, the Ubuntu Font Family will migrate to + it—made possible by copyright assignment in the interium. Between the + OFL 1.1, and the UFL 1.0, the following changes are made to produce the + Ubuntu Font Licence: + * Clarification: + + 1. Document embedding (see [15]embedding section above). + 2. Apply at point of distribution, instead of receipt + 3. Author vs. copyright holder disambiguation (type designers are + authors, with the copyright holder normally being the funder) + 4. Define "Propagate" (for internationalisation, similar to the GPLv3) + 5. Define "Substantially Changed" + 6. Trademarks are explicitly not transferred + 7. Refine renaming requirement + + Streamlining: + 8. Remove "not to be sold separately" clause + 9. Remove "Reserved Font Name(s)" declaration + + A visual demonstration of how these points were implemented can be + found in the accompanying coloured diff between SIL OFL 1.1 and the + Ubuntu Font Licence 1.0: [16]ofl-1.1-ufl-1.0.diff.html + +References + + 1. http://font.ubuntu.com/ + 2. http://www.canonical.com/ + 3. http://www.daltonmaag.com/ + 4. http://en.wikipedia.org/wiki/Network_effect + 5. http://scripts.sil.org/ + 6. http://openfontlibrary.org/ + 7. http://www.softwarefreedom.org/ + 8. http://code.google.com/webfonts + 9. http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF + 10. http://scripts.sil.org/OFL_web + 11. http://scripts.sil.org/OFL-FAQ_web + 12. http://www.gnu.org/licenses/gpl-faq.html#FontException + 13. https://launchpad.net/~uff-contributors + 14. http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt + 15. http://font.ubuntu.com/ufl/FAQ.html#embedding + 16. http://font.ubuntu.com/ufl/ofl-1.1-ufl-1.0.diff.html diff --git a/lib/src/text/fonts/LICENCE.txt b/lib/src/text/fonts/LICENCE.txt new file mode 100644 index 000000000..ae78a8f94 --- /dev/null +++ b/lib/src/text/fonts/LICENCE.txt @@ -0,0 +1,96 @@ +------------------------------- +UBUNTU FONT LICENCE Version 1.0 +------------------------------- + +PREAMBLE +This licence allows the licensed fonts to be used, studied, modified and +redistributed freely. The fonts, including any derivative works, can be +bundled, embedded, and redistributed provided the terms of this licence +are met. The fonts and derivatives, however, cannot be released under +any other licence. The requirement for fonts to remain under this +licence does not require any document created using the fonts or their +derivatives to be published under this licence, as long as the primary +purpose of the document is not to be a vehicle for the distribution of +the fonts. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this licence and clearly marked as such. This may +include source files, build scripts and documentation. + +"Original Version" refers to the collection of Font Software components +as received under this licence. + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to +a new environment. + +"Copyright Holder(s)" refers to all individuals and companies who have a +copyright ownership of the Font Software. + +"Substantially Changed" refers to Modified Versions which can be easily +identified as dissimilar to the Font Software by users of the Font +Software comparing the Original Version with the Modified Version. + +To "Propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification and with or without charging +a redistribution fee), making available to the public, and in some +countries other activities as well. + +PERMISSION & CONDITIONS +This licence does not grant any rights under trademark law and all such +rights are reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to propagate the Font Software, subject to +the below conditions: + +1) Each copy of the Font Software must contain the above copyright +notice and this licence. These can be included either as stand-alone +text files, human-readable headers or in the appropriate machine- +readable metadata fields within text or binary files as long as those +fields can be easily viewed by the user. + +2) The font name complies with the following: +(a) The Original Version must retain its name, unmodified. +(b) Modified Versions which are Substantially Changed must be renamed to +avoid use of the name of the Original Version or similar names entirely. +(c) Modified Versions which are not Substantially Changed must be +renamed to both (i) retain the name of the Original Version and (ii) add +additional naming elements to distinguish the Modified Version from the +Original Version. The name of such Modified Versions must be the name of +the Original Version, with "derivative X" where X represents the name of +the new work, appended to that name. + +3) The name(s) of the Copyright Holder(s) and any contributor to the +Font Software shall not be used to promote, endorse or advertise any +Modified Version, except (i) as required by this licence, (ii) to +acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with +their explicit written permission. + +4) The Font Software, modified or unmodified, in part or in whole, must +be distributed entirely under this licence, and must not be distributed +under any other licence. The requirement for fonts to remain under this +licence does not affect any document created using the Font Software, +except any version of the Font Software extracted from a document +created using the Font Software may only be distributed under this +licence. + +TERMINATION +This licence becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. diff --git a/lib/src/text/fonts/README.txt b/lib/src/text/fonts/README.txt new file mode 100644 index 000000000..56028212d --- /dev/null +++ b/lib/src/text/fonts/README.txt @@ -0,0 +1,16 @@ + ---------------------- + Ubuntu Font Family + ====================== + +The Ubuntu Font Family are a set of matching new libre/open fonts in +development during 2010--2011. And with further expansion work and +bug fixing during 2015. The development is being funded by +Canonical Ltd on behalf the wider Free Software community and the +Ubuntu project. The technical font design work and implementation is +being undertaken by Dalton Maag. + +Both the final font Truetype/OpenType files and the design files used +to produce the font family are distributed under an open licence and +you are expressly encouraged to experiment, modify, share and improve. + + http://font.ubuntu.com/ diff --git a/lib/src/text/fonts/TRADEMARKS.txt b/lib/src/text/fonts/TRADEMARKS.txt new file mode 100644 index 000000000..d34265bc8 --- /dev/null +++ b/lib/src/text/fonts/TRADEMARKS.txt @@ -0,0 +1,4 @@ +Ubuntu and Canonical are registered trademarks of Canonical Ltd. + +The licence accompanying these works does not grant any rights +under trademark law and all such rights are reserved. diff --git a/lib/src/text/fonts/Ubuntu-B.ttf b/lib/src/text/fonts/Ubuntu-B.ttf new file mode 100644 index 000000000..9ac950917 Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-B.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-BI.ttf b/lib/src/text/fonts/Ubuntu-BI.ttf new file mode 100644 index 000000000..f76901a0b Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-BI.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-L.ttf b/lib/src/text/fonts/Ubuntu-L.ttf new file mode 100644 index 000000000..831dec9ac Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-L.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-LI.ttf b/lib/src/text/fonts/Ubuntu-LI.ttf new file mode 100644 index 000000000..160d87b25 Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-LI.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-M.ttf b/lib/src/text/fonts/Ubuntu-M.ttf new file mode 100644 index 000000000..18b3ad970 Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-M.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-MI.ttf b/lib/src/text/fonts/Ubuntu-MI.ttf new file mode 100644 index 000000000..74007c2b0 Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-MI.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-R.ttf b/lib/src/text/fonts/Ubuntu-R.ttf new file mode 100644 index 000000000..f5e1c9954 Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-R.ttf differ diff --git a/lib/src/text/fonts/Ubuntu-RI.ttf b/lib/src/text/fonts/Ubuntu-RI.ttf new file mode 100644 index 000000000..ddf1b2848 Binary files /dev/null and b/lib/src/text/fonts/Ubuntu-RI.ttf differ diff --git a/lib/src/text/fonts/copyright.txt b/lib/src/text/fonts/copyright.txt new file mode 100644 index 000000000..77340703a --- /dev/null +++ b/lib/src/text/fonts/copyright.txt @@ -0,0 +1,5 @@ +Copyright 2010,2011 Canonical Ltd. + +This Font Software is licensed under the Ubuntu Font Licence, Version +1.0. https://launchpad.net/ubuntu-font-licence + diff --git a/lib/src/text/text_theme.dart b/lib/src/text/text_theme.dart new file mode 100644 index 000000000..0bb7dc996 --- /dev/null +++ b/lib/src/text/text_theme.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; + +TextTheme createTextTheme(Color textColor) { + return TextTheme( + displayLarge: _UbuntuTextStyle( + fontSize: 96, + fontWeight: FontWeight.w300, + textColor: textColor, + ), + displayMedium: _UbuntuTextStyle( + fontSize: 60, + fontWeight: FontWeight.w300, + textColor: textColor, + ), + displaySmall: _UbuntuTextStyle( + fontSize: 48, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + headlineLarge: _UbuntuTextStyle( + fontSize: 40, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + headlineMedium: _UbuntuTextStyle( + fontSize: 34, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + headlineSmall: _UbuntuTextStyle( + fontSize: 24, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + titleLarge: _UbuntuTextStyle( + fontSize: 20, + fontWeight: FontWeight.w500, + textColor: textColor, + ), + titleMedium: _UbuntuTextStyle( + fontSize: 16, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + titleSmall: _UbuntuTextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + textColor: textColor, + ), + bodyLarge: _UbuntuTextStyle( + fontSize: 16, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + bodyMedium: _UbuntuTextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + bodySmall: _UbuntuTextStyle( + fontSize: 12, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + labelLarge: _UbuntuTextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + textColor: textColor, + ), + labelMedium: _UbuntuTextStyle( + fontSize: 12, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + labelSmall: _UbuntuTextStyle( + fontSize: 10, + fontWeight: FontWeight.normal, + textColor: textColor, + ), + ); +} + +class _UbuntuTextStyle extends TextStyle { + const _UbuntuTextStyle({ + super.fontSize, + super.fontWeight, + required this.textColor, + }) : super( + fontFamily: 'Ubuntu', + // TODO: careful not not miss this when we migrate the name to yaru again + package: 'yaru_widgets', + color: textColor, + ); + final Color textColor; +} diff --git a/lib/src/theme_widgets/inherited_theme.dart b/lib/src/theme_widgets/inherited_theme.dart new file mode 100644 index 000000000..c8df359c4 --- /dev/null +++ b/lib/src/theme_widgets/inherited_theme.dart @@ -0,0 +1,377 @@ +import 'dart:async'; + +import 'package:collection/collection.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:platform/platform.dart'; +import 'package:yaru_widgets/src/settings.dart'; + +import '../../theme.dart'; + +YaruVariant? _detectYaruVariant(Platform platform) { + final desktop = !kIsWeb + ? platform.environment['XDG_CURRENT_DESKTOP']?.toUpperCase() + : null; + if (desktop != null) { + if (desktop.contains('BUDGIE')) return YaruVariant.ubuntuBudgieBlue; + if (desktop.contains('CINNAMON')) return YaruVariant.ubuntuCinnamonBrown; + if (desktop.contains('GNOME')) return YaruVariant.orange; + if (desktop.contains('KDE')) return YaruVariant.kubuntuBlue; + if (desktop.contains('LXQT')) return YaruVariant.lubuntuBlue; + if (desktop.contains('MATE')) return YaruVariant.ubuntuMateGreen; + if (desktop.contains('UNITY')) return YaruVariant.ubuntuUnityPurple; + if (desktop.contains('XFCE')) return YaruVariant.xubuntuBlue; + } + return null; +} + +/// Applies Yaru theme to descendant widgets. +/// +/// Descendant widgets obtain the current theme's [YaruThemeData] object using +/// [YaruTheme.of]. When a widget uses [YaruTheme.of], it is automatically +/// rebuilt if the theme later changes, so that the changes can be applied. +/// +/// There are two ways to use [YaruTheme] - with a child widget or as a builder. +/// +/// ### Child widget +/// +/// The simplest way to use [YaruTheme] is to wrap a child widget in it. +/// +/// ```dart +/// MaterialApp( +/// home: YaruTheme( +/// child: ... +/// ), +/// ) +/// ``` +/// +/// **Note**: [YaruTheme] must be a _descendant_ of [MaterialApp] to avoid that +/// [MaterialApp] overrides [YaruTheme]. +/// +/// When used like this, [YaruTheme] internally creates an [AnimatedTheme] +/// widget populated with the appropriate Yaru theme data. Moreover, The child +/// widget gets automatically rebuilt whenever the system theme changes. +/// +/// ### Builder +/// +/// An alternative way to use [YaruTheme] is to use it as a builder. +/// +/// ```dart +/// YaruTheme( +/// builder: (context, yaru, child) { +/// return MaterialApp( +/// theme: yaru.theme, +/// darkTheme: yaru.darkTheme, +/// home: ... +/// ); +/// }, +/// ) +/// ``` +/// +/// When used like this, [YaruTheme] does not create an [AnimatedTheme] widget. +/// Instead, it passes a [YaruThemeData] object to the [builder] function to +/// allow passing the desired values to [MaterialApp]. This has the advantage +/// that any widget created by [MaterialApp], such as the built-in [Navigator], +/// gains Yaru-theme as well. +/// +/// ### Theme data overrides +/// +/// The [data] property can be used to override parts of the default theme data. +/// For example, the following code overrides the default page transitions and +/// visual density: +/// +/// ```dart +/// YaruTheme( +/// data: YaruThemeData( +/// pageTransitionsTheme: PageTransitionsTheme(/*...*/), +/// visualDensity: VisualDensity(horizontal: -4, vertical: -4), +/// ), +/// builder: (context, yaru, child) { +/// return MaterialApp( +/// theme: yaru.theme, +/// darkTheme: yaru.darkTheme, +/// home: ... +/// ); +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [YaruThemeData] +class YaruTheme extends StatefulWidget { + /// Applies the given theme [data] to [child]. + /// + /// The [data] and [child] arguments must not be null. + const YaruTheme({ + super.key, + this.builder, + this.child, + this.data = const YaruThemeData(), + @visibleForTesting Platform? platform, + @visibleForTesting YaruSettings? settings, + }) : assert( + builder != null || child != null, + 'Either builder or child must be provided', + ), + _platform = platform ?? const LocalPlatform(), + _settings = settings; + + /// Builds the widget below this widget in the tree. + final ValueWidgetBuilder? builder; + + /// The widget below this widget in the tree. + final Widget? child; + + /// Specifies the theme for descendant widgets. + final YaruThemeData data; + + final Platform _platform; + final YaruSettings? _settings; + + /// The data from the closest [YaruTheme] instance that encloses the given + /// context. + static YaruThemeData of(BuildContext context) => maybeOf(context)!; + + /// An optional data from the closest [YaruTheme] instance that encloses the + /// given context or `null` if there is no such ancestor. + static YaruThemeData? maybeOf(BuildContext context) { + final theme = + context.dependOnInheritedWidgetOfExactType<_YaruInheritedTheme>(); + return theme?.data; + } + + @override + State createState() => _YaruThemeState(); +} + +class _YaruThemeState extends State { + YaruVariant? _variant; + YaruSettings? _settings; + StreamSubscription? _subscription; + + @override + void initState() { + super.initState(); + if (widget.data.variant == null && canDetectVariant()) { + _settings = widget._settings ?? YaruSettings(); + _variant = resolveVariant(_settings?.getThemeName()); + _subscription = _settings!.themeNameChanged.listen(updateVariant); + } + } + + @override + void dispose() { + _subscription?.cancel(); + super.dispose(); + } + + bool canDetectVariant() { + return !kIsWeb && + widget._platform.isLinux && + !widget._platform.environment.containsKey('FLUTTER_TEST'); + } + + // "Yaru-prussiangreen-dark" => YaruAccent.prussianGreen + YaruVariant? resolveVariant(String? name) { + if (name?.endsWith('-dark') == true) { + name = name!.substring(0, name.length - 5); + } + if (name?.startsWith('Yaru-') == true) { + name = name!.substring(5); + } + if (name == 'Yaru') { + return YaruVariant.orange; + } + for (final value in YaruVariant.values) { + if (value.name.toLowerCase() == name?.toLowerCase()) { + return value; + } + } + return _detectYaruVariant(widget._platform); + } + + void updateVariant([String? value]) { + assert(canDetectVariant()); + final name = value ?? _settings?.getThemeName(); + setState(() => _variant = resolveVariant(name)); + } + + ThemeMode resolveMode() { + final mode = widget.data.themeMode ?? ThemeMode.system; + if (mode == ThemeMode.system) { + return MediaQuery.platformBrightnessOf(context) == Brightness.dark + ? ThemeMode.dark + : ThemeMode.light; + } + return mode; + } + + YaruThemeData resolveData() { + return widget.data.copyWith( + variant: widget.data.variant ?? _variant, + highContrast: + widget.data.highContrast ?? MediaQuery.highContrastOf(context), + themeMode: resolveMode(), + ); + } + + ThemeData resolveTheme(YaruThemeData data) { + final dark = data.themeMode == ThemeMode.dark; + + if (data.highContrast!) { + return dark ? yaruHighContrastDark : yaruHighContrastLight; + } + + final variant = data.variant ?? YaruVariant.orange; + return (dark ? variant.darkTheme : variant.theme).overrideWith(data); + } + + @override + Widget build(BuildContext context) { + if (_settings != null && _subscription == null) { + return const SizedBox.shrink(); // #231 + } + final data = resolveData(); + return _YaruInheritedTheme( + data: data, + child: widget.builder?.call(context, data, widget.child) ?? + AnimatedTheme( + data: resolveTheme(data), + child: widget.child!, + ), + ); + } +} + +@immutable +class YaruThemeData with Diagnosticable { + const YaruThemeData({ + this.variant, + this.highContrast, + this.themeMode, + this.extensions, + this.pageTransitionsTheme, + this.useMaterial3, + this.visualDensity, + }); + + /// Specifies the theme variant. + final YaruVariant? variant; + + /// Whether to use high contrast colors. + final bool? highContrast; + + /// Whether a light or dark theme is used. + final ThemeMode? themeMode; + + /// Overrides [ThemeData.extensions]. + final Iterable>? extensions; + + /// Overrides [ThemeData.pageTransitionsTheme]. + final PageTransitionsTheme? pageTransitionsTheme; + + /// Overrides [ThemeData.useMaterial3]. + final bool? useMaterial3; + + /// Overrides [ThemeData.visualDensity]. + final VisualDensity? visualDensity; + + /// The light theme of [variant] (or [yaruLight] if not available) merged with + /// the `YaruThemeData` overrides. + ThemeData? get theme => (variant?.theme ?? yaruLight).overrideWith(this); + + /// The dark theme of [variant] (or [yaruDark] if not available) merged with + /// the `YaruThemeData` overrides. + ThemeData? get darkTheme => + (variant?.darkTheme ?? yaruDark).overrideWith(this); + + /// Creates a copy of this [YaruThemeData] with the provided values. + YaruThemeData copyWith({ + YaruVariant? variant, + bool? highContrast, + ThemeMode? themeMode, + Iterable>? extensions, + PageTransitionsTheme? pageTransitionsTheme, + bool? useMaterial3, + VisualDensity? visualDensity, + }) { + return YaruThemeData( + variant: variant ?? this.variant, + highContrast: highContrast ?? this.highContrast, + themeMode: themeMode ?? this.themeMode, + extensions: extensions ?? this.extensions, + pageTransitionsTheme: pageTransitionsTheme ?? this.pageTransitionsTheme, + useMaterial3: useMaterial3 ?? this.useMaterial3, + visualDensity: visualDensity ?? this.visualDensity, + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('variant', variant)); + properties.add(DiagnosticsProperty('highContrast', highContrast)); + properties.add(DiagnosticsProperty('themeMode', themeMode)); + properties.add(IterableProperty('extensions', extensions)); + properties + .add(DiagnosticsProperty('pageTransitionsTheme', pageTransitionsTheme)); + properties.add(DiagnosticsProperty('useMaterial3', useMaterial3)); + properties.add(DiagnosticsProperty('visualDensity', visualDensity)); + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + final iterableEquals = const IterableEquality().equals; + return other is YaruThemeData && + other.variant == variant && + other.highContrast == highContrast && + other.themeMode == themeMode && + iterableEquals(other.extensions, extensions) && + other.pageTransitionsTheme == pageTransitionsTheme && + other.useMaterial3 == useMaterial3 && + other.visualDensity == visualDensity; + } + + @override + int get hashCode { + return Object.hash( + variant, + highContrast, + themeMode, + extensions, + pageTransitionsTheme, + useMaterial3, + visualDensity, + ); + } +} + +class _YaruInheritedTheme extends InheritedTheme { + const _YaruInheritedTheme({ + required this.data, + required super.child, + }); + + final YaruThemeData? data; + + @override + bool updateShouldNotify(covariant _YaruInheritedTheme oldWidget) { + return data != oldWidget.data; + } + + @override + Widget wrap(BuildContext context, Widget child) { + return _YaruInheritedTheme(data: data, child: child); + } +} + +extension _YaruThemeDataX on ThemeData { + ThemeData overrideWith(YaruThemeData data) { + return copyWith( + extensions: data.extensions, + pageTransitionsTheme: data.pageTransitionsTheme, + visualDensity: data.visualDensity, + ); + } +} diff --git a/lib/src/themes/common_themes.dart b/lib/src/themes/common_themes.dart new file mode 100644 index 000000000..cc35c7061 --- /dev/null +++ b/lib/src/themes/common_themes.dart @@ -0,0 +1,834 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:yaru_widgets/theme.dart'; + +import '../text/text_theme.dart'; +import 'constants.dart'; + +const kDividerColorDark = Color.fromARGB(255, 65, 65, 65); +const kDividerColorLight = Color(0xffdcdcdc); + +bool get isMobile => + !kIsWeb && (Platform.isAndroid || Platform.isIOS || Platform.isFuchsia); + +// AppBar + +AppBarTheme _createAppBarTheme(ColorScheme colorScheme) { + return AppBarTheme( + shape: Border( + bottom: BorderSide( + strokeAlign: -1, + color: colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.onSurface.withOpacity( + colorScheme.isLight ? 0.2 : 0.07, + ), + ), + ), + scrolledUnderElevation: kAppBarElevation, + surfaceTintColor: colorScheme.surface, + elevation: kAppBarElevation, + systemOverlayStyle: colorScheme.isLight + ? SystemUiOverlayStyle.light + : SystemUiOverlayStyle.dark, + backgroundColor: colorScheme.surface, + foregroundColor: colorScheme.onSurface, + titleTextStyle: createTextTheme(colorScheme.onSurface).titleLarge!.copyWith( + color: colorScheme.onSurface, + fontWeight: FontWeight.normal, + ), + iconTheme: IconThemeData( + color: colorScheme.onSurface, + size: kCompactIconSize, + ), + actionsIconTheme: IconThemeData(color: colorScheme.onSurface), + toolbarHeight: kCompactAppBarHeight, + ); +} + +InputDecorationTheme _createInputDecorationTheme(ColorScheme colorScheme) { + final radius = BorderRadius.circular(kButtonRadius); + const width = 1.0; + const strokeAlign = 0.0; + final fill = colorScheme.isLight + ? const Color(0xFFededed) + : const Color.fromARGB(255, 40, 40, 40); + final border = colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.outline; + final disabledBorder = colorScheme.isLight + ? const Color.fromARGB(255, 237, 237, 237) + : const Color.fromARGB(255, 67, 67, 67); + + const textStyle = TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + ); + + return InputDecorationTheme( + filled: true, + fillColor: fill, + border: OutlineInputBorder( + borderSide: BorderSide( + width: width, + color: border, + ), + borderRadius: radius, + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(width: width, color: colorScheme.primary), + borderRadius: radius, + ), + enabledBorder: OutlineInputBorder( + borderSide: + BorderSide(width: width, color: border, strokeAlign: strokeAlign), + borderRadius: radius, + ), + activeIndicatorBorder: + const BorderSide(width: width, strokeAlign: strokeAlign), + outlineBorder: const BorderSide(width: width, strokeAlign: strokeAlign), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + width: width, + color: colorScheme.error, + strokeAlign: strokeAlign, + ), + borderRadius: radius, + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + width: width, + color: colorScheme.error, + strokeAlign: strokeAlign, + ), + borderRadius: radius, + ), + disabledBorder: OutlineInputBorder( + borderSide: BorderSide( + width: width, + color: disabledBorder, + strokeAlign: strokeAlign, + ), + borderRadius: radius, + ), + isDense: true, + iconColor: colorScheme.onSurface, + contentPadding: + const EdgeInsets.only(left: 12, right: 12, bottom: 9, top: 10), + helperStyle: textStyle, + hintStyle: textStyle, + labelStyle: textStyle, + suffixStyle: textStyle.copyWith( + color: colorScheme.onSurface.scale(lightness: -0.2), + ), + prefixStyle: textStyle.copyWith( + color: colorScheme.onSurface.scale(lightness: -0.2), + ), + ); +} + +TextSelectionThemeData _createTextSelectionTheme(ColorScheme colorScheme) { + return TextSelectionThemeData( + cursorColor: colorScheme.onSurface, + selectionColor: colorScheme.primary.withOpacity(0.40), + ); +} + +const _tooltipThemeData = TooltipThemeData( + waitDuration: Duration(milliseconds: 500), +); + +// Buttons + +const _commonButtonStyle = ButtonStyle( + padding: MaterialStatePropertyAll(EdgeInsets.all(16)), + iconSize: MaterialStatePropertyAll(kCompactButtonIconSize), +); + +final _buttonThemeData = ButtonThemeData( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(kButtonRadius), + ), +); + +OutlinedButtonThemeData _createOutlinedButtonTheme( + ColorScheme colorScheme, +) { + return OutlinedButtonThemeData( + style: OutlinedButton.styleFrom( + side: BorderSide( + color: colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.outline, + ), + // backgroundColor: colorScheme.surface, // defaults to transparent + foregroundColor: colorScheme.onSurface, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(kButtonRadius), + ), + ).merge(_commonButtonStyle), + ); +} + +TextButtonThemeData _createTextButtonTheme( + ColorScheme colorScheme, +) { + return TextButtonThemeData( + style: TextButton.styleFrom( + iconColor: colorScheme.primary, + foregroundColor: colorScheme.primary, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(kButtonRadius), + ), + ).merge(_commonButtonStyle), + ); +} + +ElevatedButtonThemeData _createElevatedButtonTheme({ + required Color color, + required ColorScheme colorScheme, + Color? textColor, +}) { + return ElevatedButtonThemeData( + style: ElevatedButton.styleFrom( + backgroundColor: color, + foregroundColor: textColor ?? contrastColor(color), + elevation: 0, + shadowColor: Colors.transparent, + shape: RoundedRectangleBorder( + side: colorScheme.isHighContrast + ? BorderSide(color: colorScheme.outlineVariant) + : BorderSide.none, + borderRadius: BorderRadius.circular(kButtonRadius), + ), + ).merge(_commonButtonStyle), + ); +} + +FilledButtonThemeData _createFilledButtonTheme( + ColorScheme colorScheme, +) { + return FilledButtonThemeData( + style: FilledButton.styleFrom( + disabledBackgroundColor: colorScheme.onSurface.withOpacity(0.12), + backgroundColor: colorScheme.onSurface.withOpacity(0.1), + surfaceTintColor: colorScheme.onSurface.withOpacity(0.1), + foregroundColor: colorScheme.onSurface, + elevation: 0, + shadowColor: Colors.transparent, + shape: RoundedRectangleBorder( + side: colorScheme.isHighContrast + ? BorderSide(color: colorScheme.outlineVariant) + : BorderSide.none, + borderRadius: BorderRadius.circular(kButtonRadius), + ), + ).merge(_commonButtonStyle), + ); +} + +IconButtonThemeData _createIconButtonTheme(ColorScheme colorScheme) { + return IconButtonThemeData( + style: IconButton.styleFrom( + padding: EdgeInsets.zero, + foregroundColor: colorScheme.onSurface, + highlightColor: colorScheme.onSurface.withOpacity(0.05), + surfaceTintColor: colorScheme.background, + fixedSize: const Size(kCompactButtonHeight, kCompactButtonHeight), + minimumSize: const Size(kCompactButtonHeight, kCompactButtonHeight), + maximumSize: const Size(kCompactButtonHeight, kCompactButtonHeight), + tapTargetSize: MaterialTapTargetSize.shrinkWrap, + iconSize: kCompactIconSize, + ), + ); +} + +MenuButtonThemeData _createMenuItemTheme( + ColorScheme colorScheme, + TextTheme textTheme, +) { + return MenuButtonThemeData( + style: ButtonStyle( + tapTargetSize: MaterialTapTargetSize.shrinkWrap, + alignment: Alignment.center, + textStyle: MaterialStatePropertyAll(textTheme.bodyMedium), + maximumSize: const MaterialStatePropertyAll( + Size( + 999, + kCompactButtonHeight + 10, + ), + ), + minimumSize: const MaterialStatePropertyAll( + Size( + 20, + kCompactButtonHeight + 10, + ), + ), + ), + ); +} + +ToggleButtonsThemeData _createToggleButtonsTheme(ColorScheme colorScheme) { + return ToggleButtonsThemeData( + constraints: const BoxConstraints( + minHeight: kCompactButtonHeight, + minWidth: 50, + maxWidth: double.infinity, + maxHeight: kCompactButtonHeight, + ), + borderRadius: const BorderRadius.all(Radius.circular(kButtonRadius)), + borderColor: colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.outline, + selectedColor: colorScheme.onSurface, + selectedBorderColor: + colorScheme.isHighContrast ? colorScheme.outlineVariant : null, + fillColor: colorScheme.outline, + hoverColor: colorScheme.onSurface.withOpacity(.05), + ); +} + +// Dialogs + +DialogTheme _createDialogTheme(ColorScheme colorScheme) { + final bgColor = colorScheme.brightness == Brightness.dark + ? YaruColors.darkJet + : YaruColors.porcelain; + return DialogTheme( + backgroundColor: bgColor, + surfaceTintColor: bgColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(kWindowRadius), + side: colorScheme.isDark + ? BorderSide( + color: Colors.white + .withOpacity(colorScheme.isHighContrast ? 1 : 0.2), + ) + : BorderSide.none, + ), + ); +} + +// Switches + +SwitchThemeData _createSwitchTheme(ColorScheme colorScheme) { + return SwitchThemeData( + trackOutlineColor: MaterialStateColor.resolveWith( + (states) => Colors.transparent, + ), + thumbColor: MaterialStateProperty.resolveWith( + (states) => _getSwitchThumbColor(states, colorScheme), + ), + trackColor: MaterialStateProperty.resolveWith( + (states) => _getSwitchTrackColor(states, colorScheme), + ), + ); +} + +Color _getSwitchThumbColor(Set states, ColorScheme colorScheme) { + if (states.contains(MaterialState.disabled)) { + if (states.contains(MaterialState.selected)) { + return colorScheme.onSurface.withOpacity(0.5); + } + return colorScheme.onSurface.withOpacity(0.5); + } else { + return colorScheme.onPrimary; + } +} + +Color _getSwitchTrackColor(Set states, ColorScheme colorScheme) { + final uncheckedColor = colorScheme.onSurface.withOpacity(.25); + final disabledUncheckedColor = colorScheme.onSurface.withOpacity(.15); + final disabledCheckedColor = colorScheme.onSurface.withOpacity(.18); + + if (states.contains(MaterialState.disabled)) { + if (states.contains(MaterialState.selected)) { + return disabledCheckedColor; + } + return disabledUncheckedColor; + } else { + if (states.contains(MaterialState.selected)) { + return colorScheme.primary; + } else { + return uncheckedColor; + } + } +} + +// Checks & Radios + +Color _getCheckFillColor(Set states, ColorScheme colorScheme) { + if (!states.contains(MaterialState.disabled)) { + if (states.contains(MaterialState.selected)) { + return colorScheme.primary; + } + return colorScheme.onSurface.withOpacity(0.75); + } + if (states.contains(MaterialState.selected)) { + return colorScheme.onSurface.withOpacity(0.2); + } + return colorScheme.onSurface.withOpacity(0.2); +} + +Color _getCheckColor(Set states, ColorScheme colorScheme) { + if (!states.contains(MaterialState.disabled)) { + return ThemeData.estimateBrightnessForColor(colorScheme.primary) == + Brightness.light + ? Colors.black + : Colors.white; + } + return YaruColors.warmGrey; +} + +CheckboxThemeData _createCheckBoxTheme(ColorScheme colorScheme) { + return CheckboxThemeData( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(kCheckRadius), + ), + fillColor: MaterialStateProperty.resolveWith( + (states) => _getCheckFillColor(states, colorScheme), + ), + checkColor: MaterialStateProperty.resolveWith( + (states) => _getCheckColor(states, colorScheme), + ), + ); +} + +RadioThemeData _createRadioTheme(ColorScheme colorScheme) { + return RadioThemeData( + fillColor: MaterialStateProperty.resolveWith( + (states) => _getCheckFillColor(states, colorScheme), + ), + ); +} + +TabBarTheme _createTabBarTheme(ColorScheme colorScheme, Color dividerColor) { + return TabBarTheme( + labelColor: colorScheme.isLight + ? colorScheme.onSurface + : Colors.white.withOpacity(0.8), + indicatorColor: colorScheme.primary, + dividerColor: dividerColor, + overlayColor: MaterialStateColor.resolveWith( + (states) => colorScheme.onSurface.withOpacity(0.05), + ), + ); +} + +ProgressIndicatorThemeData _createProgressIndicatorTheme( + ColorScheme colorScheme, +) { + return ProgressIndicatorThemeData( + circularTrackColor: colorScheme.primary.withOpacity(0.3), + linearTrackColor: colorScheme.primary.withOpacity(0.3), + color: colorScheme.primary, + ); +} + +FloatingActionButtonThemeData _createFloatingActionButtonTheme( + ColorScheme colorScheme, [ + Color? buttonColor, +]) { + const elevation = 3.0; + final bg = buttonColor ?? colorScheme.primary; + + return FloatingActionButtonThemeData( + backgroundColor: bg, + foregroundColor: contrastColor(bg), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30), + side: colorScheme.isHighContrast + ? BorderSide(color: colorScheme.outlineVariant) + : BorderSide.none, + ), + elevation: elevation, + focusElevation: elevation, + hoverElevation: elevation, + disabledElevation: elevation, + highlightElevation: elevation, + ); +} + +SliderThemeData _createSliderTheme(ColorScheme colorScheme) { + return SliderThemeData( + thumbColor: Colors.white, + overlayShape: const RoundSliderOverlayShape( + overlayRadius: 13, + ), + overlayColor: + colorScheme.primary.withOpacity(colorScheme.isLight ? 0.4 : 0.7), + thumbShape: const RoundSliderThumbShape(elevation: 3.0), + inactiveTrackColor: colorScheme.onSurface.withOpacity(0.3), + ); +} + +Color contrastColor(Color color) => ThemeData.estimateBrightnessForColor( + color, + ) == + Brightness.light + ? Colors.black + : Colors.white; + +PopupMenuThemeData _createPopupMenuTheme(ColorScheme colorScheme) { + final bgColor = + colorScheme.isDark ? colorScheme.surfaceVariant : colorScheme.surface; + return PopupMenuThemeData( + color: bgColor, + surfaceTintColor: bgColor, + shape: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide( + color: colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.onSurface.withOpacity( + colorScheme.isLight ? 0.3 : 0.2, + ), + width: 1, + ), + ), + ); +} + +MenuStyle _createMenuStyle(ColorScheme colorScheme) { + final bgColor = + colorScheme.isDark ? colorScheme.surfaceVariant : colorScheme.surface; + return MenuStyle( + surfaceTintColor: MaterialStateColor.resolveWith((states) => bgColor), + shape: MaterialStateProperty.resolveWith( + (states) => RoundedRectangleBorder( + side: BorderSide( + color: colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.onSurface.withOpacity( + colorScheme.isLight ? 0.3 : 0.2, + ), + width: 1, + ), + borderRadius: BorderRadius.circular(8), + ), + ), + side: MaterialStateBorderSide.resolveWith( + (states) => BorderSide( + color: colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.onSurface.withOpacity( + colorScheme.isLight ? 0.3 : 0.2, + ), + width: 1, + ), + ), + elevation: MaterialStateProperty.resolveWith((states) => 1), + backgroundColor: MaterialStateProperty.resolveWith((states) => bgColor), + ); +} + +MenuThemeData _createMenuTheme(ColorScheme colorScheme) { + return MenuThemeData( + style: _createMenuStyle(colorScheme), + ); +} + +DropdownMenuThemeData _createDropdownMenuTheme(ColorScheme colorScheme) { + return DropdownMenuThemeData( + inputDecorationTheme: _createInputDecorationTheme(colorScheme).copyWith( + constraints: const BoxConstraints( + maxHeight: kCompactButtonHeight, + minHeight: kCompactButtonHeight, + ), + ), + menuStyle: _createMenuStyle(colorScheme), + ); +} + +NavigationBarThemeData _createNavigationBarTheme(ColorScheme colorScheme) { + return NavigationBarThemeData( + height: kCompactNavigationBarHeight, + backgroundColor: colorScheme.surface, + surfaceTintColor: colorScheme.surface, + indicatorColor: colorScheme.onSurface.withOpacity(0.1), + iconTheme: MaterialStateProperty.resolveWith( + (states) => states.contains(MaterialState.selected) + ? IconThemeData(color: colorScheme.onSurface) + : IconThemeData(color: colorScheme.onSurface.withOpacity(0.8)), + ), + ); +} + +NavigationRailThemeData _createNavigationRailTheme(ColorScheme colorScheme) { + return NavigationRailThemeData( + backgroundColor: colorScheme.surface, + indicatorColor: colorScheme.onSurface.withOpacity(0.1), + selectedIconTheme: IconThemeData( + color: colorScheme.onSurface, + size: kCompactIconSize, + ), + unselectedIconTheme: IconThemeData( + color: colorScheme.onSurface.withOpacity(0.8), + size: kCompactIconSize, + ), + ); +} + +DrawerThemeData _createDrawerTheme(ColorScheme colorScheme) { + return DrawerThemeData( + shape: RoundedRectangleBorder( + borderRadius: const BorderRadiusDirectional.only( + topEnd: Radius.circular(kWindowRadius), + bottomEnd: Radius.circular(kWindowRadius), + ), + side: BorderSide( + color: colorScheme.isLight ? Colors.transparent : kDividerColorDark, + ), + ), + backgroundColor: colorScheme.background, + ); +} + +SnackBarThemeData _createSnackBarTheme(ColorScheme colorScheme) { + const fg = Colors.white; + return SnackBarThemeData( + backgroundColor: const Color.fromARGB(250, 20, 20, 20), + closeIconColor: fg, + actionTextColor: colorScheme.primary, + contentTextStyle: const TextStyle(color: fg), + disabledActionTextColor: fg.withOpacity(0.7), + behavior: SnackBarBehavior.floating, + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + kCompactButtonHeight, + ), + ), + ); +} + +ChipThemeData _createChipTheme({ + required Color selectedColor, + required ColorScheme colorScheme, +}) { + return ChipThemeData( + selectedColor: selectedColor.withOpacity(.4), + ); +} + +/// Helper function to create a new Yaru theme +ThemeData createYaruTheme({ + required ColorScheme colorScheme, + Color? dividerColor, + Color? elevatedButtonColor, + Color? elevatedButtonTextColor, + bool? useMaterial3 = true, +}) { + dividerColor ??= colorScheme.isHighContrast + ? colorScheme.outlineVariant + : colorScheme.outline; + final textTheme = createTextTheme(colorScheme.onSurface); + + if (isMobile) { + return ThemeData( + textTheme: textTheme, + dividerColor: dividerColor, + scaffoldBackgroundColor: colorScheme.surface, + dividerTheme: DividerThemeData( + color: dividerColor, + space: 1.0, + thickness: 1.0, + ), + useMaterial3: true, + colorScheme: colorScheme, + ); + } + + return ThemeData.from( + useMaterial3: useMaterial3, + colorScheme: colorScheme, + ).copyWith( + iconTheme: IconThemeData( + color: colorScheme.onSurface, + size: kCompactIconSize, + ), + primaryIconTheme: IconThemeData(color: colorScheme.onSurface), + progressIndicatorTheme: _createProgressIndicatorTheme(colorScheme), + pageTransitionsTheme: YaruPageTransitionsTheme.horizontal, + tabBarTheme: _createTabBarTheme(colorScheme, dividerColor), + dialogTheme: _createDialogTheme(colorScheme), + brightness: colorScheme.brightness, + primaryColor: colorScheme.primary, + canvasColor: colorScheme.background, + scaffoldBackgroundColor: colorScheme.background, + cardColor: colorScheme.surface, + dividerColor: dividerColor, + dialogBackgroundColor: colorScheme.background, + textTheme: textTheme, + indicatorColor: colorScheme.primary, + applyElevationOverlayColor: colorScheme.isDark, + buttonTheme: _buttonThemeData, + outlinedButtonTheme: _createOutlinedButtonTheme(colorScheme), + elevatedButtonTheme: _createElevatedButtonTheme( + color: elevatedButtonColor ?? colorScheme.primary, + colorScheme: colorScheme, + textColor: elevatedButtonTextColor, + ), + filledButtonTheme: _createFilledButtonTheme( + colorScheme, + ), + textButtonTheme: _createTextButtonTheme(colorScheme), + iconButtonTheme: _createIconButtonTheme(colorScheme), + menuButtonTheme: _createMenuItemTheme(colorScheme, textTheme), + switchTheme: _createSwitchTheme(colorScheme), + checkboxTheme: _createCheckBoxTheme(colorScheme), + radioTheme: _createRadioTheme(colorScheme), + primaryColorDark: colorScheme.isDark ? colorScheme.primary : null, + appBarTheme: _createAppBarTheme(colorScheme), + floatingActionButtonTheme: + _createFloatingActionButtonTheme(colorScheme, elevatedButtonColor), + bottomNavigationBarTheme: BottomNavigationBarThemeData( + selectedItemColor: colorScheme.primary, + unselectedItemColor: colorScheme.onSurface.withOpacity(0.8), + ), + inputDecorationTheme: _createInputDecorationTheme(colorScheme), + toggleButtonsTheme: _createToggleButtonsTheme(colorScheme), + textSelectionTheme: _createTextSelectionTheme(colorScheme), + dropdownMenuTheme: _createDropdownMenuTheme(colorScheme), + menuTheme: _createMenuTheme(colorScheme), + popupMenuTheme: _createPopupMenuTheme(colorScheme), + tooltipTheme: _tooltipThemeData, + bottomAppBarTheme: BottomAppBarTheme(color: colorScheme.surface), + navigationBarTheme: _createNavigationBarTheme(colorScheme), + navigationRailTheme: _createNavigationRailTheme(colorScheme), + dividerTheme: + DividerThemeData(color: dividerColor, space: 1.0, thickness: 0.0), + badgeTheme: BadgeThemeData( + backgroundColor: elevatedButtonColor ?? colorScheme.primary, + textColor: contrastColor(elevatedButtonColor ?? colorScheme.primary), + ), + scrollbarTheme: const ScrollbarThemeData( + mainAxisMargin: 3.0, + crossAxisMargin: 3.0, + ), + splashFactory: NoSplash.splashFactory, + sliderTheme: _createSliderTheme(colorScheme), + drawerTheme: _createDrawerTheme(colorScheme), + listTileTheme: ListTileThemeData( + iconColor: colorScheme.onSurface.withOpacity(0.8), + ), + snackBarTheme: _createSnackBarTheme(colorScheme), + chipTheme: _createChipTheme( + selectedColor: elevatedButtonColor ?? colorScheme.primary, + colorScheme: colorScheme, + ), + ); +} + +/// Helper function to create a new Yaru light theme +ThemeData createYaruLightTheme({ + required Color primaryColor, + Color? elevatedButtonColor, + Color? elevatedButtonTextColor, + bool? useMaterial3 = true, +}) { + final secondary = primaryColor.scale(lightness: 0.2).cap(saturation: .9); + final secondaryContainer = + primaryColor.scale(lightness: 0.85).cap(saturation: .5); + final tertiary = primaryColor.scale(lightness: 0.5).cap(saturation: .8); + final tertiaryContainer = + primaryColor.scale(lightness: 0.75).cap(saturation: .75); + + final colorScheme = ColorScheme.fromSeed( + seedColor: primaryColor, + error: YaruColors.light.error, + onError: Colors.white, + brightness: Brightness.light, + primary: primaryColor, + onPrimary: contrastColor(primaryColor), + primaryContainer: YaruColors.porcelain, + onPrimaryContainer: YaruColors.jet, + inversePrimary: YaruColors.jet, + secondary: secondary, + onSecondary: contrastColor(secondary), + secondaryContainer: secondaryContainer, + onSecondaryContainer: contrastColor(secondaryContainer), + background: Colors.white, + onBackground: YaruColors.jet, + surface: Colors.white, + onSurface: YaruColors.jet, + inverseSurface: YaruColors.jet, + onInverseSurface: YaruColors.porcelain, + surfaceTint: YaruColors.warmGrey, + surfaceVariant: YaruColors.warmGrey, + tertiary: tertiary, + onTertiary: contrastColor(tertiary), + tertiaryContainer: tertiaryContainer, + onTertiaryContainer: contrastColor(tertiaryContainer), + onSurfaceVariant: YaruColors.coolGrey, + outline: const Color.fromARGB(255, 221, 221, 221), + outlineVariant: Colors.black, + scrim: Colors.black, + ); + return createYaruTheme( + colorScheme: colorScheme, + dividerColor: colorScheme.isHighContrast ? null : kDividerColorLight, + elevatedButtonColor: elevatedButtonColor, + elevatedButtonTextColor: elevatedButtonTextColor, + useMaterial3: useMaterial3, + ); +} + +/// Helper function to create a new Yaru dark theme +ThemeData createYaruDarkTheme({ + required Color primaryColor, + Color? elevatedButtonColor, + Color? elevatedButtonTextColor, + bool? useMaterial3 = true, + bool highContrast = false, +}) { + final secondary = primaryColor.scale(lightness: -0.3, saturation: -0.15); + final secondaryContainer = primaryColor + .scale(lightness: -0.6, saturation: -0.75) + .capDown(lightness: .175); + final tertiary = primaryColor.scale(lightness: -0.5, saturation: -0.25); + final tertiaryContainer = primaryColor + .scale(lightness: -0.5, saturation: -0.65) + .capDown(lightness: .2); + + final colorScheme = ColorScheme.fromSeed( + seedColor: primaryColor, + error: YaruColors.dark.error, + onError: Colors.white, + brightness: Brightness.dark, + primary: primaryColor, + primaryContainer: YaruColors.coolGrey, + onPrimary: contrastColor(primaryColor), + onPrimaryContainer: YaruColors.porcelain, + inversePrimary: YaruColors.porcelain, + secondary: secondary, + onSecondary: contrastColor(primaryColor.scale(lightness: -0.25)), + secondaryContainer: secondaryContainer, + onSecondaryContainer: Colors.white, + background: YaruColors.darkJet, + onBackground: YaruColors.porcelain, + surface: YaruColors.jet, + onSurface: YaruColors.porcelain, + inverseSurface: YaruColors.porcelain, + onInverseSurface: YaruColors.inkstone, + surfaceTint: YaruColors.coolGrey, + surfaceVariant: const Color.fromARGB(255, 34, 34, 34), + tertiary: tertiary, + onTertiary: YaruColors.porcelain, + tertiaryContainer: tertiaryContainer, + onTertiaryContainer: YaruColors.porcelain, + onSurfaceVariant: YaruColors.warmGrey, + outline: const Color.fromARGB(255, 68, 68, 68), + outlineVariant: Colors.white, + scrim: Colors.black, + ); + return createYaruTheme( + colorScheme: colorScheme, + dividerColor: colorScheme.isHighContrast ? null : kDividerColorDark, + elevatedButtonColor: elevatedButtonColor, + elevatedButtonTextColor: elevatedButtonTextColor, + useMaterial3: useMaterial3, + ); +} diff --git a/lib/src/themes/constants.dart b/lib/src/themes/constants.dart new file mode 100644 index 000000000..33259b766 --- /dev/null +++ b/lib/src/themes/constants.dart @@ -0,0 +1,16 @@ +const kButtonRadius = 6.0; +const kCheckRadius = 3.0; +const kWindowRadius = 8.0; +const kAppBarElevation = 0.0; +const kCompactAppBarHeight = 46.0; +const kComfortableAppBarHeight = 56.0; +const kCompactNavigationBarHeight = 64.0; +const kComfortableNavigationBarHeight = 74.0; +const kSnackBarWidth = 350.0; + +const kCompactButtonHeight = 34.0; +const kComfortableButtonHeight = 44.0; +const kCompactButtonIconSize = 20.0; +const kComfortableButtonIconSize = 24.0; +const kCompactIconSize = 20.0; +const kComfortableIconSize = 24.0; diff --git a/lib/src/themes/extensions.dart b/lib/src/themes/extensions.dart new file mode 100644 index 000000000..5975ef4d9 --- /dev/null +++ b/lib/src/themes/extensions.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; + +import '../colors.dart'; + +@Deprecated('Use YaruColorSchemeExtension instead.') +extension YaruThemeDataExtension on ThemeData { + @Deprecated('Use ColorScheme.success instead.') + Color get successColor => colorScheme.success; + + @Deprecated('Use ColorScheme.warning instead.') + Color get warningColor => colorScheme.warning; +} + +/// Yaru-specific color scheme extensions. +extension YaruColorSchemeExtension on ColorScheme { + /// Whether the brightness is dark. + bool get isDark => brightness == Brightness.dark; + + /// Whether the brightness is light. + bool get isLight => brightness == Brightness.light; + + /// Whether the primary color is either black or white. + bool get isHighContrast => + const [Colors.black, Colors.white].contains(primary); + + /// A color to indicate success e.g. for text input validation. + /// + /// ```dart + /// Theme.of(context).colorScheme.success + /// ``` + /// + /// See also: + /// * [ColorScheme.error] + Color get success => YaruColors.from(brightness).success; + + /// A color to indicate warnings. + /// + /// This is the counterpart of [ColorScheme.error]. + /// + /// ```dart + /// Theme.of(context).colorScheme.warning + /// ``` + /// + /// See also: + /// * [ColorScheme.error] + Color get warning => YaruColors.from(brightness).warning; + + /// A color for presenting links. + /// + /// ```dart + /// Theme.of(context).colorScheme.link + /// ``` + Color get link => YaruColors.from(brightness).link; + + /// A color for presenting links on [inverseSurface]. + /// + /// ```dart + /// Theme.of(context).colorScheme.inverseLink + /// ``` + Color get inverseLink => YaruColors.from(brightness.inverse).link; +} + +extension on Brightness { + Brightness get inverse => + this == Brightness.light ? Brightness.dark : Brightness.light; +} diff --git a/lib/src/themes/high_contrast.dart b/lib/src/themes/high_contrast.dart new file mode 100644 index 000000000..55d9f0a11 --- /dev/null +++ b/lib/src/themes/high_contrast.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; + +import '../../theme.dart'; + +final yaruHighContrastLight = createYaruLightTheme( + primaryColor: Colors.black, +); + +final yaruHighContrastDark = createYaruDarkTheme( + primaryColor: Colors.white, + highContrast: true, + elevatedButtonTextColor: Colors.black, +); diff --git a/lib/src/themes/kubuntu.dart b/lib/src/themes/kubuntu.dart new file mode 100644 index 000000000..8bc0190d2 --- /dev/null +++ b/lib/src/themes/kubuntu.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.kubuntuBlue; + +final yaruKubuntuLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruKubuntuDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/lubuntu.dart b/lib/src/themes/lubuntu.dart new file mode 100644 index 000000000..df8ce5071 --- /dev/null +++ b/lib/src/themes/lubuntu.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.lubuntuBlue; + +final yaruLubuntuLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruLubuntuDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/page_transitions.dart b/lib/src/themes/page_transitions.dart new file mode 100644 index 000000000..59b4b7729 --- /dev/null +++ b/lib/src/themes/page_transitions.dart @@ -0,0 +1,150 @@ +import 'package:flutter/material.dart'; + +class YaruPageTransitionsTheme extends PageTransitionsTheme { + const YaruPageTransitionsTheme._({required super.builders}); + + /// Horizontal slide and fade page transitions. + /// + /// This page transitions theme is best suited for applications using a + /// horizontal navigation pattern, such as classic desktop wizards or master- + /// detail applications in portrait mode. + static const horizontal = YaruPageTransitionsTheme._( + builders: { + TargetPlatform.linux: _horizontalBuilder, + TargetPlatform.macOS: _horizontalBuilder, + TargetPlatform.windows: _horizontalBuilder, + }, + ); + + /// Vertical slide and fade page transitions. + /// + /// This page transitions theme is best suited for applications using a + /// vertical navigation pattern, such as master-detail applications in + /// landscape mode. + static const vertical = YaruPageTransitionsTheme._( + builders: { + TargetPlatform.linux: _verticalBuilder, + TargetPlatform.macOS: _verticalBuilder, + TargetPlatform.windows: _verticalBuilder, + }, + ); + + static const _horizontalBuilder = _YaruHorizontalPageTransitionsBuilder(); + static const _verticalBuilder = _YaruVerticalPageTransitionsBuilder(); +} + +class _YaruHorizontalPageTransitionsBuilder extends PageTransitionsBuilder { + const _YaruHorizontalPageTransitionsBuilder(); + + @override + Widget buildTransitions( + PageRoute? route, + BuildContext? context, + Animation animation, + Animation secondaryAnimation, + Widget child, + ) { + return _YaruHorizontalPageTransitions( + animation: animation, + secondaryAnimation: secondaryAnimation, + child: child, + ); + } +} + +class _YaruHorizontalPageTransitions extends StatelessWidget { + _YaruHorizontalPageTransitions({ + required Animation animation, + required Animation secondaryAnimation, + required this.child, + }) : _position = animation.drive(_tween.chain(_fastOutSlowInTween)), + _secondaryPosition = secondaryAnimation + .drive(_secondaryTween.chain(_fastOutSlowInTween)), + _opacity = animation.drive(_easeInTween), + _secondaryOpacity = secondaryAnimation.drive(_easeInTween); + + static final _tween = Tween(begin: const Offset(0.2, 0.0), end: Offset.zero); + static final _secondaryTween = + Tween(begin: Offset.zero, end: const Offset(-0.2, 0.0)); + static final _fastOutSlowInTween = CurveTween(curve: Curves.fastOutSlowIn); + static final _easeInTween = CurveTween(curve: Curves.easeIn); + + final Animation _position, _secondaryPosition; + final Animation _opacity, _secondaryOpacity; + final Widget child; + + @override + Widget build(BuildContext context) { + final textDirection = Directionality.of(context); + return SlideTransition( + position: _secondaryPosition, + textDirection: textDirection, + child: FadeTransition( + opacity: ReverseAnimation(_secondaryOpacity), + child: SlideTransition( + position: _position, + textDirection: textDirection, + child: FadeTransition(opacity: _opacity, child: child), + ), + ), + ); + } +} + +class _YaruVerticalPageTransitionsBuilder extends PageTransitionsBuilder { + const _YaruVerticalPageTransitionsBuilder(); + + @override + Widget buildTransitions( + PageRoute? route, + BuildContext? context, + Animation animation, + Animation secondaryAnimation, + Widget child, + ) { + return _YaruVerticalPageTransitions( + animation: animation, + secondaryAnimation: secondaryAnimation, + child: child, + ); + } +} + +class _YaruVerticalPageTransitions extends StatelessWidget { + _YaruVerticalPageTransitions({ + required Animation animation, + required Animation secondaryAnimation, + required this.child, + }) : _position = animation.drive(_tween.chain(_fastOutSlowInTween)), + _secondaryPosition = secondaryAnimation + .drive(_secondaryTween.chain(_fastOutSlowInTween)), + _opacity = animation.drive(_easeInTween), + _secondaryOpacity = secondaryAnimation.drive(_easeOutTween); + + static final _tween = Tween(begin: const Offset(0.0, 0.1), end: Offset.zero); + static final _secondaryTween = Tween(begin: Offset.zero, end: Offset.zero); + static final _fastOutSlowInTween = CurveTween(curve: Curves.fastOutSlowIn); + static final _easeInTween = CurveTween(curve: Curves.easeIn); + static final _easeOutTween = CurveTween(curve: Curves.easeOutExpo); + + final Animation _position, _secondaryPosition; + final Animation _opacity, _secondaryOpacity; + final Widget child; + + @override + Widget build(BuildContext context) { + final textDirection = Directionality.of(context); + return SlideTransition( + position: _secondaryPosition, + textDirection: textDirection, + child: FadeTransition( + opacity: ReverseAnimation(_secondaryOpacity), + child: SlideTransition( + position: _position, + textDirection: textDirection, + child: FadeTransition(opacity: _opacity, child: child), + ), + ), + ); + } +} diff --git a/lib/src/themes/ubuntu_budgie.dart b/lib/src/themes/ubuntu_budgie.dart new file mode 100644 index 000000000..ede229792 --- /dev/null +++ b/lib/src/themes/ubuntu_budgie.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.ubuntuBudgieBlue; + +final yaruUbuntuBudgieLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruUbuntuBudgieDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/ubuntu_butterfly.dart b/lib/src/themes/ubuntu_butterfly.dart new file mode 100644 index 000000000..5e4125458 --- /dev/null +++ b/lib/src/themes/ubuntu_butterfly.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.ubuntuButterflyPink; + +final yaruUbuntuButterflyLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruUbuntuButterflyDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/ubuntu_cinnamon.dart b/lib/src/themes/ubuntu_cinnamon.dart new file mode 100644 index 000000000..bbe3d118a --- /dev/null +++ b/lib/src/themes/ubuntu_cinnamon.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.ubuntuCinnamonBrown; + +final yaruUbuntuCinnamonLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruUbuntuCinnamonDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/ubuntu_mate.dart b/lib/src/themes/ubuntu_mate.dart new file mode 100644 index 000000000..920bcf74b --- /dev/null +++ b/lib/src/themes/ubuntu_mate.dart @@ -0,0 +1,17 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.ubuntuMateGreen; + +@Deprecated('Use yaruUbuntuMateLight instead') +final yaruMateLight = yaruUbuntuMateLight; + +final yaruUbuntuMateLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +@Deprecated('Use yaruUbuntuMateDark instead') +final yaruMateDark = yaruUbuntuMateDark; + +final yaruUbuntuMateDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/ubuntu_studio.dart b/lib/src/themes/ubuntu_studio.dart new file mode 100644 index 000000000..ecdc3852f --- /dev/null +++ b/lib/src/themes/ubuntu_studio.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.ubuntuStudioBlue; + +final yaruUbuntuStudioLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruUbuntuStudioDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/ubuntu_unity.dart b/lib/src/themes/ubuntu_unity.dart new file mode 100644 index 000000000..e7fd19c49 --- /dev/null +++ b/lib/src/themes/ubuntu_unity.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.ubuntuUnityPurple; + +final yaruUbuntuUnityLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruUbuntuUnityDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/variant.dart b/lib/src/themes/variant.dart new file mode 100644 index 000000000..4aea24224 --- /dev/null +++ b/lib/src/themes/variant.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; +import 'package:yaru_widgets/src/themes/ubuntu_butterfly.dart'; +import '../../theme.dart'; + +/// Describes a Yaru variant and its primary color. +enum YaruVariant { + orange(YaruColors.orange), + bark(YaruColors.bark), + sage(YaruColors.sage), + olive(YaruColors.olive), + viridian(YaruColors.viridian), + prussianGreen(YaruColors.prussianGreen), + blue(YaruColors.blue), + purple(YaruColors.purple), + magenta(YaruColors.magenta), + red(YaruColors.red), + + /// Kubuntu + kubuntuBlue(YaruColors.kubuntuBlue), + + /// Lubuntu + lubuntuBlue(YaruColors.lubuntuBlue), + + /// Ubuntu Budgie + ubuntuBudgieBlue(YaruColors.ubuntuBudgieBlue), + + /// Ubuntu Butterfly + ubuntuButterflyPink(YaruColors.ubuntuButterflyPink), + + /// Ubuntu Cinnamon Remix + ubuntuCinnamonBrown(YaruColors.ubuntuCinnamonBrown), + + /// Ubuntu MATE + ubuntuMateGreen(YaruColors.ubuntuMateGreen), + + /// Ubuntu Studio + ubuntuStudioBlue(YaruColors.ubuntuStudioBlue), + + /// Ubuntu Unity + ubuntuUnityPurple(YaruColors.ubuntuUnityPurple), + + /// Xubuntu + xubuntuBlue(YaruColors.xubuntuBlue); + + const YaruVariant(this.color); + + /// The primary color of the variant. + final Color color; + + /// A light theme for the variant. + ThemeData get theme => _yaruLightThemes[this]!; + + /// A dark theme for the variant. + ThemeData get darkTheme => _yaruDarkThemes[this]!; + + /// The available accent color variants excluding Ubuntu flavors. + static const List accents = [ + orange, + bark, + sage, + olive, + viridian, + prussianGreen, + blue, + purple, + magenta, + red, + ]; +} + +final _yaruLightThemes = { + YaruVariant.orange: yaruLight, + YaruVariant.bark: yaruBarkLight, + YaruVariant.sage: yaruSageLight, + YaruVariant.olive: yaruOliveLight, + YaruVariant.viridian: yaruViridianLight, + YaruVariant.prussianGreen: yaruPrussianGreenLight, + YaruVariant.blue: yaruBlueLight, + YaruVariant.purple: yaruPurpleLight, + YaruVariant.magenta: yaruMagentaLight, + YaruVariant.red: yaruRedLight, + YaruVariant.kubuntuBlue: yaruKubuntuLight, + YaruVariant.lubuntuBlue: yaruLubuntuLight, + YaruVariant.ubuntuBudgieBlue: yaruUbuntuBudgieLight, + YaruVariant.ubuntuButterflyPink: yaruUbuntuButterflyLight, + YaruVariant.ubuntuCinnamonBrown: yaruUbuntuCinnamonLight, + YaruVariant.ubuntuMateGreen: yaruUbuntuMateLight, + YaruVariant.ubuntuStudioBlue: yaruUbuntuStudioLight, + YaruVariant.ubuntuUnityPurple: yaruUbuntuUnityLight, + YaruVariant.xubuntuBlue: yaruXubuntuLight, +}; + +final _yaruDarkThemes = { + YaruVariant.orange: yaruDark, + YaruVariant.bark: yaruBarkDark, + YaruVariant.sage: yaruSageDark, + YaruVariant.olive: yaruOliveDark, + YaruVariant.viridian: yaruViridianDark, + YaruVariant.prussianGreen: yaruPrussianGreenDark, + YaruVariant.blue: yaruBlueDark, + YaruVariant.purple: yaruPurpleDark, + YaruVariant.magenta: yaruMagentaDark, + YaruVariant.red: yaruRedDark, + YaruVariant.kubuntuBlue: yaruKubuntuDark, + YaruVariant.lubuntuBlue: yaruLubuntuDark, + YaruVariant.ubuntuBudgieBlue: yaruUbuntuBudgieDark, + YaruVariant.ubuntuButterflyPink: yaruUbuntuButterflyDark, + YaruVariant.ubuntuCinnamonBrown: yaruUbuntuCinnamonDark, + YaruVariant.ubuntuMateGreen: yaruUbuntuMateDark, + YaruVariant.ubuntuStudioBlue: yaruUbuntuStudioDark, + YaruVariant.ubuntuUnityPurple: yaruUbuntuUnityDark, + YaruVariant.xubuntuBlue: yaruXubuntuDark, +}; diff --git a/lib/src/themes/xubuntu.dart b/lib/src/themes/xubuntu.dart new file mode 100644 index 000000000..c36c7dd51 --- /dev/null +++ b/lib/src/themes/xubuntu.dart @@ -0,0 +1,11 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.xubuntuBlue; + +final yaruXubuntuLight = createYaruLightTheme( + primaryColor: _primaryColor, +); + +final yaruXubuntuDark = createYaruDarkTheme( + primaryColor: _primaryColor, +); diff --git a/lib/src/themes/yaru.dart b/lib/src/themes/yaru.dart new file mode 100644 index 000000000..d64b0124d --- /dev/null +++ b/lib/src/themes/yaru.dart @@ -0,0 +1,85 @@ +import '../../theme.dart'; + +const _primaryColor = YaruColors.orange; + +final yaruLight = createYaruLightTheme( + primaryColor: _primaryColor, + elevatedButtonColor: YaruColors.light.success, +); + +final yaruDark = createYaruDarkTheme( + primaryColor: _primaryColor, + elevatedButtonColor: YaruColors.dark.success, +); + +final yaruSageLight = createYaruLightTheme( + primaryColor: YaruColors.sage, +); + +final yaruSageDark = createYaruDarkTheme( + primaryColor: YaruColors.sage, +); + +final yaruPrussianGreenLight = createYaruLightTheme( + primaryColor: YaruColors.prussianGreen, +); + +final yaruPrussianGreenDark = createYaruDarkTheme( + primaryColor: YaruColors.prussianGreen, +); + +final yaruOliveLight = createYaruLightTheme( + primaryColor: YaruColors.olive, +); + +final yaruOliveDark = createYaruDarkTheme( + primaryColor: YaruColors.olive, +); + +final yaruBarkLight = createYaruLightTheme( + primaryColor: YaruColors.bark, +); + +final yaruBarkDark = createYaruDarkTheme( + primaryColor: YaruColors.bark, +); + +final yaruViridianLight = createYaruLightTheme( + primaryColor: YaruColors.viridian, +); + +final yaruViridianDark = createYaruDarkTheme( + primaryColor: YaruColors.viridian, +); + +final yaruPurpleLight = createYaruLightTheme( + primaryColor: YaruColors.purple, +); + +final yaruPurpleDark = createYaruDarkTheme( + primaryColor: YaruColors.purple, +); + +final yaruRedLight = createYaruLightTheme( + primaryColor: YaruColors.red, +); + +final yaruRedDark = createYaruDarkTheme( + primaryColor: YaruColors.red, +); + +final yaruBlueLight = createYaruLightTheme( + primaryColor: YaruColors.blue, +); + +final yaruBlueDark = createYaruDarkTheme( + primaryColor: YaruColors.blue, +); + +final yaruMagentaLight = createYaruLightTheme( + primaryColor: YaruColors.magenta, +); + +final yaruMagentaDark = createYaruDarkTheme( + primaryColor: YaruColors.magenta, +); diff --git a/lib/src/widgets/master_detail/yaru_master_detail_theme.dart b/lib/src/widgets/master_detail/yaru_master_detail_theme.dart index 9d7b2a851..21662da96 100644 --- a/lib/src/widgets/master_detail/yaru_master_detail_theme.dart +++ b/lib/src/widgets/master_detail/yaru_master_detail_theme.dart @@ -2,8 +2,8 @@ import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; import 'package:yaru_widgets/constants.dart'; +import 'package:yaru_widgets/theme.dart'; /// Holds theme data for [YaruMasterDetailTheme]. @immutable diff --git a/lib/src/widgets/master_detail/yaru_master_tile.dart b/lib/src/widgets/master_detail/yaru_master_tile.dart index f14895ca7..bb580c89f 100644 --- a/lib/src/widgets/master_detail/yaru_master_tile.dart +++ b/lib/src/widgets/master_detail/yaru_master_tile.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; import 'package:yaru_widgets/constants.dart'; +import 'package:yaru_widgets/theme.dart'; const double _kScrollbarThickness = 8.0; const double _kScrollbarMargin = 2.0; diff --git a/lib/src/widgets/navi_rail/yaru_navigation_page_theme.dart b/lib/src/widgets/navi_rail/yaru_navigation_page_theme.dart index d47b6ead7..7599d0f35 100644 --- a/lib/src/widgets/navi_rail/yaru_navigation_page_theme.dart +++ b/lib/src/widgets/navi_rail/yaru_navigation_page_theme.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; +import 'package:yaru_widgets/theme.dart'; @immutable class YaruNavigationPageThemeData diff --git a/lib/src/widgets/yaru_back_button.dart b/lib/src/widgets/yaru_back_button.dart index 1271034d4..b600562b3 100644 --- a/lib/src/widgets/yaru_back_button.dart +++ b/lib/src/widgets/yaru_back_button.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; +import 'package:yaru_widgets/icons.dart'; import 'yaru_back_button_theme.dart'; import 'yaru_icon_button.dart'; diff --git a/lib/src/widgets/yaru_carousel.dart b/lib/src/widgets/yaru_carousel.dart index 7c9f6980b..ddc9eb4a2 100644 --- a/lib/src/widgets/yaru_carousel.dart +++ b/lib/src/widgets/yaru_carousel.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; +import 'package:yaru_widgets/icons.dart'; import 'yaru_page_indicator.dart'; diff --git a/lib/src/widgets/yaru_choice_chip_bar.dart b/lib/src/widgets/yaru_choice_chip_bar.dart index 5e44fa52c..9c5d10c47 100644 --- a/lib/src/widgets/yaru_choice_chip_bar.dart +++ b/lib/src/widgets/yaru_choice_chip_bar.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/constants.dart'; +import 'package:yaru_widgets/icons.dart'; +import 'package:yaru_widgets/theme.dart'; /// A list of [ChoiceChipBar]s wrapped either in a controllable [ListView] or [Wrap]. class YaruChoiceChipBar extends StatefulWidget { diff --git a/lib/src/widgets/yaru_close_button.dart b/lib/src/widgets/yaru_close_button.dart index d637e7862..269765126 100644 --- a/lib/src/widgets/yaru_close_button.dart +++ b/lib/src/widgets/yaru_close_button.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; +import 'package:yaru_widgets/icons.dart'; import 'yaru_icon_button.dart'; diff --git a/lib/src/widgets/yaru_expandable.dart b/lib/src/widgets/yaru_expandable.dart index 5b16051b2..0e5cac46a 100644 --- a/lib/src/widgets/yaru_expandable.dart +++ b/lib/src/widgets/yaru_expandable.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; +import 'package:yaru_widgets/icons.dart'; import 'yaru_icon_button.dart'; diff --git a/lib/src/widgets/yaru_popup_menu_button.dart b/lib/src/widgets/yaru_popup_menu_button.dart index 1106b6382..cfa21e747 100644 --- a/lib/src/widgets/yaru_popup_menu_button.dart +++ b/lib/src/widgets/yaru_popup_menu_button.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/constants.dart'; +import 'package:yaru_widgets/icons.dart'; import 'yaru_check_button.dart'; diff --git a/lib/src/widgets/yaru_search_field.dart b/lib/src/widgets/yaru_search_field.dart index 87190c7ee..4fa5af43f 100644 --- a/lib/src/widgets/yaru_search_field.dart +++ b/lib/src/widgets/yaru_search_field.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:yaru/yaru.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/constants.dart'; +import 'package:yaru_widgets/icons.dart'; import 'package:yaru_widgets/src/widgets/yaru_icon_button.dart'; +import 'package:yaru_widgets/theme.dart'; /// A [TextField] to with fully rounded corners, /// ideally in a [YaruWindowTitleBar] or [YaruDialogTitleBar] diff --git a/lib/src/widgets/yaru_switch.dart b/lib/src/widgets/yaru_switch.dart index ca167eb34..f73068d32 100644 --- a/lib/src/widgets/yaru_switch.dart +++ b/lib/src/widgets/yaru_switch.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; +import 'package:yaru_widgets/theme.dart'; import 'yaru_checkbox.dart'; import 'yaru_radio.dart'; diff --git a/lib/src/widgets/yaru_title_bar.dart b/lib/src/widgets/yaru_title_bar.dart index 76108c658..cf6f4e830 100644 --- a/lib/src/widgets/yaru_title_bar.dart +++ b/lib/src/widgets/yaru_title_bar.dart @@ -3,8 +3,8 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; import 'package:yaru_widgets/constants.dart'; +import 'package:yaru_widgets/theme.dart'; import 'package:yaru_window/yaru_window.dart'; import 'yaru_title_bar_gesture_detector.dart'; diff --git a/lib/src/widgets/yaru_togglable.dart b/lib/src/widgets/yaru_togglable.dart index d29ea141a..34d535096 100644 --- a/lib/src/widgets/yaru_togglable.dart +++ b/lib/src/widgets/yaru_togglable.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; +import 'package:yaru_widgets/theme.dart'; import 'yaru_checkbox.dart'; import 'yaru_radio.dart'; diff --git a/lib/src/widgets/yaru_window_control.dart b/lib/src/widgets/yaru_window_control.dart index a5f69cb2e..90d522842 100644 --- a/lib/src/widgets/yaru_window_control.dart +++ b/lib/src/widgets/yaru_window_control.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; +import 'package:yaru_widgets/theme.dart'; /// The size of a [YaruWindowControl] on the [YaruWindowControlPlatform.yaru] platform. const kYaruWindowControlSize = 24.0; diff --git a/lib/src/yaru_freedesktop_icons.dart b/lib/src/yaru_freedesktop_icons.dart new file mode 100644 index 000000000..2820c892b --- /dev/null +++ b/lib/src/yaru_freedesktop_icons.dart @@ -0,0 +1,323 @@ +// ignore_for_file: sort_constructors_first, constant_identifier_names + +import 'package:flutter/material.dart'; + +import '../icons.dart'; + +/// Binding name enumeration between [YaruIcons] and the Freedesktop Icon Naming Specification +/// Based on: https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html +/// +/// Usage: +/// ``` +/// Icon( +/// YaruFreedesktopIcons.help_about.icon +/// // or +/// YaruFreedesktopIcons.all['help_about']!.icon +/// ) +/// ``` +enum YaruFreedesktopIcons { + // Actions + address_book_new._(YaruIcons.address_book_new), + application_exit._(YaruIcons.window_close), + appointment_new._(YaruIcons.calendar_new), + call_start._(YaruIcons.call_start), + call_stop._(YaruIcons.call_stop), + contact_new._(YaruIcons.user_new), + document_new._(YaruIcons.document_new), + document_open._(YaruIcons.document_open), + document_open_recent._(YaruIcons.document_history), + document_page_setup._(YaruIcons.document_template), + document_print._(YaruIcons.printer), + document_print_preview._(YaruIcons.printer_preview), + document_properties._(YaruIcons.gear), + document_revert._(YaruIcons.revert), + document_save._(YaruIcons.save), + document_save_as._(YaruIcons.save_as), + document_send._(YaruIcons.send), + edit_clear._(YaruIcons.edit_clear), + edit_copy._(YaruIcons.copy), + edit_cut._(YaruIcons.cut), + edit_delete._(YaruIcons.trash), + edit_find._(YaruIcons.search), + edit_find_replace._(YaruIcons.find_replace), + edit_paste._(YaruIcons.paste), + edit_redo._(YaruIcons.redo), + edit_select_all._(YaruIcons.selection), + edit_undo._(YaruIcons.undo), + folder_new._(YaruIcons.folder_new), + format_indent_less._(YaruIcons.indent_less), + format_indent_more._(YaruIcons.indent_more), + format_justify_center._(YaruIcons.justify_center), + format_justify_fill._(YaruIcons.justify_fill), + format_justify_left._(YaruIcons.justify_left), + format_justify_right._(YaruIcons.justify_right), + format_text_direction_ltr._(YaruIcons.text_direction_ltr), + format_text_direction_rtl._(YaruIcons.text_direction_rtl), + format_text_bold._(YaruIcons.bold), + format_text_italic._(YaruIcons.italic), + format_text_underline._(YaruIcons.underline), + format_text_strikethrough._(YaruIcons.strikethrough), + go_bottom._(YaruIcons.go_bottom), + go_down._(YaruIcons.go_down), + go_first._(YaruIcons.go_first), + go_home._(YaruIcons.home), + go_jump._(YaruIcons.go_jump), + go_last._(YaruIcons.go_last), + go_next._(YaruIcons.go_next), + go_previous._(YaruIcons.go_previous), + go_top._(YaruIcons.go_top), + go_up._(YaruIcons.go_up), + help_about._(YaruIcons.information), + help_contents._(YaruIcons.question), + help_faq._(YaruIcons.question), + list_add._(YaruIcons.unordered_list_new), + list_remove._(YaruIcons.unordered_list_remove), + mail_forward._(YaruIcons.forward), + mail_mark_important._(YaruIcons.important), + mail_mark_junk._(YaruIcons.junk), + mail_mark_notjunk._(YaruIcons.notjunk), + mail_mark_read._(YaruIcons.mail_open), + mail_mark_unread._(YaruIcons.mail_unread), + mail_message_new._(YaruIcons.mail_new), + mail_reply_all._(YaruIcons.reply_all), + mail_reply_sender._(YaruIcons.reply), + mail_send._(YaruIcons.send), + mail_send_receive._(YaruIcons.send_receive), + media_eject._(YaruIcons.eject), + media_playback_pause._(YaruIcons.media_pause), + media_playback_start._(YaruIcons.media_play), + media_playback_stop._(YaruIcons.media_stop), + media_playback_record._(YaruIcons.media_record), + media_seek_backward._(YaruIcons.fast_backward), + media_seek_forward._(YaruIcons.fast_forward), + media_skip_backward._(YaruIcons.skip_backward), + media_skip_forward._(YaruIcons.skip_forward), + object_flip_horizontal._(YaruIcons.flip_horizontal), + object_flip_vertical._(YaruIcons.flip_vertical), + object_rotate_left._(YaruIcons.rotate_left), + object_rotate_right._(YaruIcons.rotate_right), + process_stop._(YaruIcons.stop), + system_lock_screen._(YaruIcons.screen_lock), + system_log_out._(YaruIcons.log_out), + system_run._(YaruIcons.gears), + system_search._(YaruIcons.search), + system_reboot._(YaruIcons.reboot), + system_shutdown._(YaruIcons.shutdown), + tools_check_spelling._(YaruIcons.check_spelling), + view_fullscreen._(YaruIcons.fullscreen), + view_refresh._(YaruIcons.refresh), + view_restore._(YaruIcons.fullscreen_exit), + view_sort_ascending._(YaruIcons.sort_ascending), + view_sort_descending._(YaruIcons.sort_descending), + window_close._(YaruIcons.window_close), + window_new._(YaruIcons.window_new), + zoom_fit_best._(YaruIcons.zoom_fit_best), + zoom_in._(YaruIcons.zoom_in), + zoom_original._(YaruIcons.zoom_original), + zoom_out._(YaruIcons.zoom_out), + + // Applications + accessories_calculator._(YaruIcons.calculator), + accessories_character_map._(YaruIcons.character_map), + accessories_dictionary._(YaruIcons.dictionary), + accessories_text_editor._(YaruIcons.text_editor), + help_browser._(YaruIcons.question), + multimedia_volume_control._(YaruIcons.music_note), + preferences_desktop_accessibility._(YaruIcons.human), + preferences_desktop_font._(YaruIcons.font), + preferences_desktop_keyboard._(YaruIcons.keyboard), + preferences_desktop_locale._(YaruIcons.localization), + preferences_desktop_multimedia._(YaruIcons.multimedia), + preferences_desktop_screensaver._(YaruIcons.screensaver), + preferences_desktop_theme._(YaruIcons.desktop_appearance), + preferences_desktop_wallpaper._(YaruIcons.wallpaper), + system_file_manager._(YaruIcons.folder), + system_software_install._(YaruIcons.package), + system_software_update._(YaruIcons.update), + utilities_system_monitor._(YaruIcons.monitor), + utilities_terminal._(YaruIcons.terminal), + + // Categories + applications_accessories._(YaruIcons.rule_and_pen), + applications_development._(YaruIcons.trowel), + applications_engineering._(YaruIcons.wrench), + applications_games._(YaruIcons.games), + applications_graphics._(YaruIcons.image), + applications_internet._(YaruIcons.network), + applications_multimedia._(YaruIcons.multimedia), + applications_office._(YaruIcons.office), + applications_other._(YaruIcons.app_grid), + applications_science._(YaruIcons.beaker), + applications_system._(YaruIcons.gear), + applications_utilities._(YaruIcons.swiss_knife), + preferences_desktop._(YaruIcons.desktop), + preferences_desktop_peripherals._(YaruIcons.keyboard), + preferences_desktop_personal._(YaruIcons.users), + preferences_other._(YaruIcons.gear_dots), + preferences_system._(YaruIcons.gear), + preferences_system_network._(YaruIcons.network), + system_help._(YaruIcons.question), + + // Devices + audio_card._(YaruIcons.audio_card), + audio_input_microphone._(YaruIcons.microphone), + battery._(YaruIcons.battery), + camera_photo._(YaruIcons.camera_photo), + camera_video._(YaruIcons.camera_video), + camera_web._(YaruIcons.camera_web), + computer._(YaruIcons.computer), + drive_harddisk._(YaruIcons.drive_harddisk), + drive_optical._(YaruIcons.drive_optical), + drive_removable_media._(YaruIcons.drive_removable_media), + input_gaming._(YaruIcons.game_controller), + input_keyboard._(YaruIcons.keyboard), + input_mouse._(YaruIcons.mouse), + input_tablet._(YaruIcons.graphic_tablet), + media_flash._(YaruIcons.flash_card), + media_floppy._(YaruIcons.floppy), + media_optical._(YaruIcons.disk), + media_tape._(YaruIcons.tape), + modem._(YaruIcons.modem), + multimedia_player._(YaruIcons.multimedia_player), + network_wired._(YaruIcons.network_wired), + network_wireless._(YaruIcons.network_wireless), + pda._(YaruIcons.pda), + phone._(YaruIcons.smartphone), + printer._(YaruIcons.printer), + scanner._(YaruIcons.scanner), + video_display._(YaruIcons.screen), + + // Emblems + emblem_default._(YaruIcons.ok), + emblem_documents._(YaruIcons.document), + emblem_downloads._(YaruIcons.download), + emblem_favorite._(YaruIcons.heart_filled), + emblem_important._(YaruIcons.important), + emblem_mail._(YaruIcons.mail), + emblem_photos._(YaruIcons.image), + emblem_readonly._(YaruIcons.lock), + emblem_shared._(YaruIcons.share), + emblem_symbolic_link._(YaruIcons.sync), + emblem_system._(YaruIcons.gear), + emblem_unreadable._(YaruIcons.error), + + // Emotes + emote_angel._(YaruIcons.emote_angel), + emote_angry._(YaruIcons.emote_angry), + emote_confused._(YaruIcons.emote_confused), + emote_crying._(YaruIcons.emote_crying), + emote_devilish._(YaruIcons.emote_devilish), + emote_embarrassed._(YaruIcons.emote_embarrassed), + emote_glasses._(YaruIcons.emote_glasses), + emote_kiss._(YaruIcons.emote_kiss), + emote_laugh._(YaruIcons.emote_laugh), + emote_monkey._(YaruIcons.emote_monkey), + emote_plain._(YaruIcons.emote_plain), + emote_raspberry._(YaruIcons.emote_raspberry), + emote_sad._(YaruIcons.emote_sad), + emote_shutmouth._(YaruIcons.emote_shutmouth), + emote_sick._(YaruIcons.emote_sick), + emote_smile_big._(YaruIcons.emote_smile_big), + emote_smile._(YaruIcons.emote_smile), + emote_smirk._(YaruIcons.emote_smirk), + emote_surprise._(YaruIcons.emote_surprise), + emote_tired._(YaruIcons.emote_tired), + emote_uncertain._(YaruIcons.emote_uncertain), + emote_wink._(YaruIcons.emote_wink), + emote_worried._(YaruIcons.emote_worried), + emote_yawn._(YaruIcons.emote_yawn), + + // Mimetypes + application_x_executable._(YaruIcons.gears), + audio_x_generic._(YaruIcons.music_note), + font_x_generic._(YaruIcons.font), + image_x_generic._(YaruIcons.image), + package_x_generic._(YaruIcons.package), + text_html._(YaruIcons.html), + text_x_generic._(YaruIcons.document), + text_x_generic_template._(YaruIcons.document_template), + text_x_script._(YaruIcons.script), + video_x_generic._(YaruIcons.video), + x_office_address_book._(YaruIcons.address_book), + x_office_calendar._(YaruIcons.calendar), + x_office_document._(YaruIcons.office), + x_office_presentation._(YaruIcons.office_presentation), + x_office_spreadsheet._(YaruIcons.office_spreadsheet), + + //Places + folder._(YaruIcons.folder), + folder_remote._(YaruIcons.folder_remote), + network_server._(YaruIcons.server), + network_workgroup._(YaruIcons.globe), + start_here._(YaruIcons.ubuntu_logo), + user_bookmarks._(YaruIcons.bookmark), + user_desktop._(YaruIcons.desktop), + user_trash._(YaruIcons.trash), + + // Status + appointment_missed._(YaruIcons.calendar_important), + appointment_soon._(YaruIcons.calendar_warning), + audio_volume_high._(YaruIcons.speaker_high), + audio_volume_low._(YaruIcons.speaker_low), + audio_volume_medium._(YaruIcons.speaker_medium), + audio_volume_muted._(YaruIcons.speaker_muted), + battery_caution._(YaruIcons.battery_4), + battery_low._(YaruIcons.battery_warning), + dialog_error._(YaruIcons.error), + dialog_information._(YaruIcons.information), + dialog_password._(YaruIcons.key), + dialog_question._(YaruIcons.question), + dialog_warning._(YaruIcons.warning), + folder_drag_accept._(YaruIcons.folder_drag_accept), + folder_open._(YaruIcons.folder_open), + folder_visiting._(YaruIcons.folder_simple), + image_loading._(YaruIcons.image_loading), + image_missing._(YaruIcons.image_missing), + mail_attachment._(YaruIcons.paper_clip), + mail_unread._(YaruIcons.mail_unread), + mail_read._(YaruIcons.mail_open), + mail_replied._(YaruIcons.mail_replied), + mail_signed._(YaruIcons.mail_signed), + mail_signed_verified._(YaruIcons.mail_ok), + media_playlist_repeat._(YaruIcons.repeat), + media_playlist_shuffle._(YaruIcons.shuffle), + network_error._(YaruIcons.network_error), + network_idle._(YaruIcons.network_idle), + network_offline._(YaruIcons.network_offline), + network_receive._(YaruIcons.network_receive), + network_transmit._(YaruIcons.network_transmit), + network_transmit_receive._(YaruIcons.network_transmit_receive), + printer_error._(YaruIcons.printer_error), + printer_printing._(YaruIcons.printer_printing), + security_high._(YaruIcons.shield_filled), + security_medium._(YaruIcons.shield), + security_low._(YaruIcons.shield_warning), + software_update_available._(YaruIcons.update_available), + software_update_urgent._(YaruIcons.update_urgent), + sync_error._(YaruIcons.sync_error), + sync_synchronizing._(YaruIcons.sync), + task_due._(YaruIcons.task_warning), + task_past_due._(YaruIcons.task_error), + user_available._(YaruIcons.chat_text), + user_away._(YaruIcons.chat_away), + user_idle._(YaruIcons.chat_idle), + user_offline._(YaruIcons.chat_offline), + user_trash_full._(YaruIcons.trash_full), + weather_clear._(YaruIcons.sun), + weather_clear_night._(YaruIcons.clear_night), + weather_few_clouds._(YaruIcons.few_clouds), + weather_few_clouds_night._(YaruIcons.few_clouds_night), + weather_fog._(YaruIcons.fog), + weather_overcast._(YaruIcons.overcast), + weather_severe_alert._(YaruIcons.weather_alert), + weather_showers._(YaruIcons.showers), + weather_showers_scattered._(YaruIcons.rain), + weather_snow._(YaruIcons.snow), + weather_storm._(YaruIcons.storm); + + final IconData icon; + const YaruFreedesktopIcons._(this.icon); + + /// Shortcut to get enum values as string map + static Map get all => values.asNameMap(); +} diff --git a/lib/src/yaru_icons.dart b/lib/src/yaru_icons.dart new file mode 100644 index 000000000..cf09f0614 --- /dev/null +++ b/lib/src/yaru_icons.dart @@ -0,0 +1,8189 @@ +// Generated code: do not hand-edit. + +// Generated using icon_font_generator. +// Copyright © 2024 icon_font_generator (https://pub.dev/packages/icon_font_generator). + +// ignore_for_file: constant_identifier_names + +import 'package:flutter/widgets.dart'; + +/// Identifiers for the icons. +/// +/// Use with the [Icon] class to show specific icons. +/// +/// Icons are identified by their name as listed below. +/// +/// To use this class, make sure you declare the font in your +/// project's `pubspec.yaml` file in the `fonts` section. This ensures that +/// the "YaruIcons" font is included in your application. This font is used to +/// display the icons. For example: +/// +/// ```yaml +/// flutter: +/// fonts: +/// - family: YaruIcons +/// fonts: +/// - asset: fonts/yaru_icons.otf +/// ``` +@staticIconProvider +abstract final class YaruIcons { + const YaruIcons._(); + + static const iconFontFamily = 'YaruIcons'; + static const iconFontPackage = 'yaru_widgets'; + + /// Font icon named "__underline__" + /// + /// + static const underline = IconData( + 0xe000, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__weather__" + /// + /// + static const weather = IconData( + 0xe001, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__warning filled__" + /// + /// + static const warning_filled = IconData( + 0xe002, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkmark__" + /// + /// + static const checkmark = IconData( + 0xe003, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__clear night__" + /// + /// + static const clear_night = IconData( + 0xe004, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__scanner filled__" + /// + /// + static const scanner_filled = IconData( + 0xe005, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar__" + /// + /// + static const sidebar = IconData( + 0xe006, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar hide filled__" + /// + /// + static const sidebar_hide_filled = IconData( + 0xe007, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar hide right filled__" + /// + /// + static const sidebar_hide_right_filled = IconData( + 0xe008, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar hide__" + /// + /// + static const sidebar_hide = IconData( + 0xe009, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar right__" + /// + /// + static const sidebar_right = IconData( + 0xe00a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar filled__" + /// + /// + static const sidebar_filled = IconData( + 0xe00b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar right filled__" + /// + /// + static const sidebar_right_filled = IconData( + 0xe00c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sidebar hide right__" + /// + /// + static const sidebar_hide_right = IconData( + 0xe00d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rain filled__" + /// + /// + static const rain_filled = IconData( + 0xe00e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__screensaver filled__" + /// + /// + static const screensaver_filled = IconData( + 0xe00f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tree fir__" + /// + /// + static const tree_fir = IconData( + 0xe010, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tree__" + /// + /// + static const tree = IconData( + 0xe011, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tree filled__" + /// + /// + static const tree_filled = IconData( + 0xe012, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tree fir filled__" + /// + /// + static const tree_fir_filled = IconData( + 0xe013, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__touchpad filled__" + /// + /// + static const touchpad_filled = IconData( + 0xe014, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music queue__" + /// + /// + static const music_queue = IconData( + 0xe015, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music note__" + /// + /// + static const music_note = IconData( + 0xe016, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music artist filled__" + /// + /// + static const music_artist_filled = IconData( + 0xe017, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music queue filled__" + /// + /// + static const music_queue_filled = IconData( + 0xe018, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music single__" + /// + /// + static const music_single = IconData( + 0xe019, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music artist__" + /// + /// + static const music_artist = IconData( + 0xe01a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music single filled__" + /// + /// + static const music_single_filled = IconData( + 0xe01b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music history filled__" + /// + /// + static const music_history_filled = IconData( + 0xe01c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__music history__" + /// + /// + static const music_history = IconData( + 0xe01d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radio filled__" + /// + /// + static const radio_filled = IconData( + 0xe01e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__shield__" + /// + /// + static const shield = IconData( + 0xe01f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__shield warning__" + /// + /// + static const shield_warning = IconData( + 0xe020, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__shield filled__" + /// + /// + static const shield_filled = IconData( + 0xe021, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__wind__" + /// + /// + static const wind = IconData( + 0xe022, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__computer legacy__" + /// + /// + static const computer_legacy = IconData( + 0xe023, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flip vertical__" + /// + /// + static const flip_vertical = IconData( + 0xe024, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rotate left__" + /// + /// + static const rotate_left = IconData( + 0xe025, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__target__" + /// + /// + static const target = IconData( + 0xe026, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__information__" + /// + /// + static const information = IconData( + 0xe027, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__usb stick filled__" + /// + /// + static const usb_stick_filled = IconData( + 0xe028, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__repeat__" + /// + /// + static const repeat = IconData( + 0xe029, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__repeat filled__" + /// + /// + static const repeat_filled = IconData( + 0xe02a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__repeat single__" + /// + /// + static const repeat_single = IconData( + 0xe02b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__repeat single filled__" + /// + /// + static const repeat_single_filled = IconData( + 0xe02c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__hourglass__" + /// + /// + static const hourglass = IconData( + 0xe02d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__games filled__" + /// + /// + static const games_filled = IconData( + 0xe02e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__reply__" + /// + /// + static const reply = IconData( + 0xe02f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__edit clear filled__" + /// + /// + static const edit_clear_filled = IconData( + 0xe030, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snow__" + /// + /// + static const snow = IconData( + 0xe031, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__revert__" + /// + /// + static const revert = IconData( + 0xe032, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__video__" + /// + /// + static const video = IconData( + 0xe033, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__video filled__" + /// + /// + static const video_filled = IconData( + 0xe034, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__video history filled__" + /// + /// + static const video_history_filled = IconData( + 0xe035, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__video history__" + /// + /// + static const video_history = IconData( + 0xe036, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__hearing__" + /// + /// + static const hearing = IconData( + 0xe037, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__playlist__" + /// + /// + static const playlist = IconData( + 0xe038, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__playlist filled__" + /// + /// + static const playlist_filled = IconData( + 0xe039, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__playlist play__" + /// + /// + static const playlist_play = IconData( + 0xe03a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__podcast filled__" + /// + /// + static const podcast_filled = IconData( + 0xe03b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__modem__" + /// + /// + static const modem = IconData( + 0xe03c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__edit clear__" + /// + /// + static const edit_clear = IconData( + 0xe03d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tape__" + /// + /// + static const tape = IconData( + 0xe03e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__computer filled__" + /// + /// + static const computer_filled = IconData( + 0xe03f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__home__" + /// + /// + static const home = IconData( + 0xe040, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__game controller filled__" + /// + /// + static const game_controller_filled = IconData( + 0xe041, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__smartphone__" + /// + /// + static const smartphone = IconData( + 0xe042, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__xfce logo__" + /// + /// + static const xfce_logo = IconData( + 0xe043, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__television__" + /// + /// + static const television = IconData( + 0xe044, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__few clouds night filled__" + /// + /// + static const few_clouds_night_filled = IconData( + 0xe045, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__panel look__" + /// + /// + static const panel_look = IconData( + 0xe046, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__eject__" + /// + /// + static const eject = IconData( + 0xe047, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__strikethrough__" + /// + /// + static const strikethrough = IconData( + 0xe048, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go down__" + /// + /// + static const go_down = IconData( + 0xe049, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go bottom__" + /// + /// + static const go_bottom = IconData( + 0xe04a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go up__" + /// + /// + static const go_up = IconData( + 0xe04b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go jump__" + /// + /// + static const go_jump = IconData( + 0xe04c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go first__" + /// + /// + static const go_first = IconData( + 0xe04d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go previous__" + /// + /// + static const go_previous = IconData( + 0xe04e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go next__" + /// + /// + static const go_next = IconData( + 0xe04f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go last__" + /// + /// + static const go_last = IconData( + 0xe050, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__go top__" + /// + /// + static const go_top = IconData( + 0xe051, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar warning filled__" + /// + /// + static const calendar_warning_filled = IconData( + 0xe052, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar month filled__" + /// + /// + static const calendar_month_filled = IconData( + 0xe053, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar important__" + /// + /// + static const calendar_important = IconData( + 0xe054, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar__" + /// + /// + static const calendar = IconData( + 0xe055, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar week filled__" + /// + /// + static const calendar_week_filled = IconData( + 0xe056, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar day__" + /// + /// + static const calendar_day = IconData( + 0xe057, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar month__" + /// + /// + static const calendar_month = IconData( + 0xe058, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar new filled__" + /// + /// + static const calendar_new_filled = IconData( + 0xe059, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar week__" + /// + /// + static const calendar_week = IconData( + 0xe05a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar day filled__" + /// + /// + static const calendar_day_filled = IconData( + 0xe05b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar error filled__" + /// + /// + static const calendar_error_filled = IconData( + 0xe05c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar warning__" + /// + /// + static const calendar_warning = IconData( + 0xe05d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar filled__" + /// + /// + static const calendar_filled = IconData( + 0xe05e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar important filled__" + /// + /// + static const calendar_important_filled = IconData( + 0xe05f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar new__" + /// + /// + static const calendar_new = IconData( + 0xe060, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calendar error__" + /// + /// + static const calendar_error = IconData( + 0xe061, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__html filled__" + /// + /// + static const html_filled = IconData( + 0xe062, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone medium__" + /// + /// + static const microphone_medium = IconData( + 0xe063, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone high filled__" + /// + /// + static const microphone_high_filled = IconData( + 0xe064, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone muted filled__" + /// + /// + static const microphone_muted_filled = IconData( + 0xe065, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone__" + /// + /// + static const microphone = IconData( + 0xe066, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone muted__" + /// + /// + static const microphone_muted = IconData( + 0xe067, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone high__" + /// + /// + static const microphone_high = IconData( + 0xe068, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone filled__" + /// + /// + static const microphone_filled = IconData( + 0xe069, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone low__" + /// + /// + static const microphone_low = IconData( + 0xe06a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone medium filled__" + /// + /// + static const microphone_medium_filled = IconData( + 0xe06b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__microphone low filled__" + /// + /// + static const microphone_low_filled = IconData( + 0xe06c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__computer legacy filled__" + /// + /// + static const computer_legacy_filled = IconData( + 0xe06d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert image filled__" + /// + /// + static const insert_image_filled = IconData( + 0xe06e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert object filled__" + /// + /// + static const insert_object_filled = IconData( + 0xe06f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert link__" + /// + /// + static const insert_link = IconData( + 0xe070, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert text__" + /// + /// + static const insert_text = IconData( + 0xe071, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert image__" + /// + /// + static const insert_image = IconData( + 0xe072, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert link filled__" + /// + /// + static const insert_link_filled = IconData( + 0xe073, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__insert object__" + /// + /// + static const insert_object = IconData( + 0xe074, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chip__" + /// + /// + static const chip = IconData( + 0xe075, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__important__" + /// + /// + static const important = IconData( + 0xe076, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__subtitles filled__" + /// + /// + static const subtitles_filled = IconData( + 0xe077, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tag__" + /// + /// + static const tag = IconData( + 0xe078, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ok filled__" + /// + /// + static const ok_filled = IconData( + 0xe079, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__magnifying glass filled__" + /// + /// + static const magnifying_glass_filled = IconData( + 0xe07a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tab new filled__" + /// + /// + static const tab_new_filled = IconData( + 0xe07b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__switchbox checked__" + /// + /// + static const switchbox_checked = IconData( + 0xe07c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__switchbox__" + /// + /// + static const switchbox = IconData( + 0xe07d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__switchbox checked filled__" + /// + /// + static const switchbox_checked_filled = IconData( + 0xe07e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__switchbox filled__" + /// + /// + static const switchbox_filled = IconData( + 0xe07f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__information filled__" + /// + /// + static const information_filled = IconData( + 0xe080, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__book filled__" + /// + /// + static const book_filled = IconData( + 0xe081, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__hearing filled__" + /// + /// + static const hearing_filled = IconData( + 0xe082, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__headset__" + /// + /// + static const headset = IconData( + 0xe083, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__inbox__" + /// + /// + static const inbox = IconData( + 0xe084, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__trowel__" + /// + /// + static const trowel = IconData( + 0xe085, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__multimedia__" + /// + /// + static const multimedia = IconData( + 0xe086, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__power__" + /// + /// + static const power = IconData( + 0xe087, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__update available filled__" + /// + /// + static const update_available_filled = IconData( + 0xe088, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__update__" + /// + /// + static const update = IconData( + 0xe089, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__update available__" + /// + /// + static const update_available = IconData( + 0xe08a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__update urgent__" + /// + /// + static const update_urgent = IconData( + 0xe08b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__update urgent filled__" + /// + /// + static const update_urgent_filled = IconData( + 0xe08c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat offline__" + /// + /// + static const chat_offline = IconData( + 0xe08d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat idle__" + /// + /// + static const chat_idle = IconData( + 0xe08e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat bubble__" + /// + /// + static const chat_bubble = IconData( + 0xe08f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat away filled__" + /// + /// + static const chat_away_filled = IconData( + 0xe090, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat text filled__" + /// + /// + static const chat_text_filled = IconData( + 0xe091, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat away__" + /// + /// + static const chat_away = IconData( + 0xe092, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat idle filled__" + /// + /// + static const chat_idle_filled = IconData( + 0xe093, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat text__" + /// + /// + static const chat_text = IconData( + 0xe094, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat offline filled__" + /// + /// + static const chat_offline_filled = IconData( + 0xe095, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chat bubble filled__" + /// + /// + static const chat_bubble_filled = IconData( + 0xe096, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__justify right__" + /// + /// + static const justify_right = IconData( + 0xe097, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__justify center__" + /// + /// + static const justify_center = IconData( + 0xe098, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__justify left__" + /// + /// + static const justify_left = IconData( + 0xe099, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__justify fill__" + /// + /// + static const justify_fill = IconData( + 0xe09a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__cloud filled__" + /// + /// + static const cloud_filled = IconData( + 0xe09b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sort ascending__" + /// + /// + static const sort_ascending = IconData( + 0xe09c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sort descending__" + /// + /// + static const sort_descending = IconData( + 0xe09d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tornado__" + /// + /// + static const tornado = IconData( + 0xe09e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__smartphone filled__" + /// + /// + static const smartphone_filled = IconData( + 0xe09f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flatpak__" + /// + /// + static const flatpak = IconData( + 0xe0a0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office spreadsheet filled__" + /// + /// + static const office_spreadsheet_filled = IconData( + 0xe0a1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office drawing__" + /// + /// + static const office_drawing = IconData( + 0xe0a2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office presentation__" + /// + /// + static const office_presentation = IconData( + 0xe0a3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office__" + /// + /// + static const office = IconData( + 0xe0a4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office spreadsheet__" + /// + /// + static const office_spreadsheet = IconData( + 0xe0a5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office filled__" + /// + /// + static const office_filled = IconData( + 0xe0a6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office presentation filled__" + /// + /// + static const office_presentation_filled = IconData( + 0xe0a7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__office drawing filled__" + /// + /// + static const office_drawing_filled = IconData( + 0xe0a8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__search history__" + /// + /// + static const search_history = IconData( + 0xe0a9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__familly__" + /// + /// + static const familly = IconData( + 0xe0aa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__subtitles__" + /// + /// + static const subtitles = IconData( + 0xe0ab, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__games__" + /// + /// + static const games = IconData( + 0xe0ac, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__placeholder icon filled__" + /// + /// + static const placeholder_icon_filled = IconData( + 0xe0ad, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__graphic tablet__" + /// + /// + static const graphic_tablet = IconData( + 0xe0ae, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gear dots__" + /// + /// + static const gear_dots = IconData( + 0xe0af, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__terminal__" + /// + /// + static const terminal = IconData( + 0xe0b0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__thumb up filled__" + /// + /// + static const thumb_up_filled = IconData( + 0xe0b1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__thumb down filled__" + /// + /// + static const thumb_down_filled = IconData( + 0xe0b2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__thumb down__" + /// + /// + static const thumb_down = IconData( + 0xe0b3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__thumb up__" + /// + /// + static const thumb_up = IconData( + 0xe0b4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ordered list__" + /// + /// + static const ordered_list = IconData( + 0xe0b5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ordered list new__" + /// + /// + static const ordered_list_new = IconData( + 0xe0b6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ordered list remove__" + /// + /// + static const ordered_list_remove = IconData( + 0xe0b7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__education filled__" + /// + /// + static const education_filled = IconData( + 0xe0b8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__text direction rtl__" + /// + /// + static const text_direction_rtl = IconData( + 0xe0b9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mouse filled__" + /// + /// + static const mouse_filled = IconData( + 0xe0ba, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gear filled__" + /// + /// + static const gear_filled = IconData( + 0xe0bb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__television filled__" + /// + /// + static const television_filled = IconData( + 0xe0bc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__search history filled__" + /// + /// + static const search_history_filled = IconData( + 0xe0bd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker medium__" + /// + /// + static const speaker_medium = IconData( + 0xe0be, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker overamplified__" + /// + /// + static const speaker_overamplified = IconData( + 0xe0bf, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker high filled__" + /// + /// + static const speaker_high_filled = IconData( + 0xe0c0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker muted filled__" + /// + /// + static const speaker_muted_filled = IconData( + 0xe0c1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker__" + /// + /// + static const speaker = IconData( + 0xe0c2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker muted__" + /// + /// + static const speaker_muted = IconData( + 0xe0c3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker high__" + /// + /// + static const speaker_high = IconData( + 0xe0c4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker filled__" + /// + /// + static const speaker_filled = IconData( + 0xe0c5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker low__" + /// + /// + static const speaker_low = IconData( + 0xe0c6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker medium filled__" + /// + /// + static const speaker_medium_filled = IconData( + 0xe0c7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker overamplified filled__" + /// + /// + static const speaker_overamplified_filled = IconData( + 0xe0c8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__speaker low filled__" + /// + /// + static const speaker_low_filled = IconData( + 0xe0c9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__cursor filled__" + /// + /// + static const cursor_filled = IconData( + 0xe0ca, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__beaker filled__" + /// + /// + static const beaker_filled = IconData( + 0xe0cb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__keyboard__" + /// + /// + static const keyboard = IconData( + 0xe0cc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow down__" + /// + /// + static const arrow_down = IconData( + 0xe0cd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow up__" + /// + /// + static const arrow_up = IconData( + 0xe0ce, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow left outlined__" + /// + /// + static const arrow_left_outlined = IconData( + 0xe0cf, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow right__" + /// + /// + static const arrow_right = IconData( + 0xe0d0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow up outlined__" + /// + /// + static const arrow_up_outlined = IconData( + 0xe0d1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow right outlined__" + /// + /// + static const arrow_right_outlined = IconData( + 0xe0d2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow down outlined__" + /// + /// + static const arrow_down_outlined = IconData( + 0xe0d3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__arrow left__" + /// + /// + static const arrow_left = IconData( + 0xe0d4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ubuntu logo__" + /// + /// + static const ubuntu_logo = IconData( + 0xe0d5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ubuntu logo large__" + /// + /// + static const ubuntu_logo_large = IconData( + 0xe0d6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ubuntu logo simple__" + /// + /// + static const ubuntu_logo_simple = IconData( + 0xe0d7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__question__" + /// + /// + static const question = IconData( + 0xe0d8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__lock__" + /// + /// + static const lock = IconData( + 0xe0d9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__reboot__" + /// + /// + static const reboot = IconData( + 0xe0da, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__keyboard filled__" + /// + /// + static const keyboard_filled = IconData( + 0xe0db, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__health__" + /// + /// + static const health = IconData( + 0xe0dc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail unread__" + /// + /// + static const mail_unread = IconData( + 0xe0dd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail unread filled__" + /// + /// + static const mail_unread_filled = IconData( + 0xe0de, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail forwarded__" + /// + /// + static const mail_forwarded = IconData( + 0xe0df, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail ok filled__" + /// + /// + static const mail_ok_filled = IconData( + 0xe0e0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail__" + /// + /// + static const mail = IconData( + 0xe0e1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail open filled__" + /// + /// + static const mail_open_filled = IconData( + 0xe0e2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail ok__" + /// + /// + static const mail_ok = IconData( + 0xe0e3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail new filled__" + /// + /// + static const mail_new_filled = IconData( + 0xe0e4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail signed__" + /// + /// + static const mail_signed = IconData( + 0xe0e5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail replied filled__" + /// + /// + static const mail_replied_filled = IconData( + 0xe0e6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail replied__" + /// + /// + static const mail_replied = IconData( + 0xe0e7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail signed filled__" + /// + /// + static const mail_signed_filled = IconData( + 0xe0e8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail filled__" + /// + /// + static const mail_filled = IconData( + 0xe0e9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail forwarded filled__" + /// + /// + static const mail_forwarded_filled = IconData( + 0xe0ea, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail open__" + /// + /// + static const mail_open = IconData( + 0xe0eb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mail new__" + /// + /// + static const mail_new = IconData( + 0xe0ec, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pen__" + /// + /// + static const pen = IconData( + 0xe0ed, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__showers filled__" + /// + /// + static const showers_filled = IconData( + 0xe0ee, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__camera video filed__" + /// + /// + static const camera_video_filed = IconData( + 0xe0ef, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__camera web filled__" + /// + /// + static const camera_web_filled = IconData( + 0xe0f0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__camera web__" + /// + /// + static const camera_web = IconData( + 0xe0f1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__camera video__" + /// + /// + static const camera_video = IconData( + 0xe0f2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__camera photo filed__" + /// + /// + static const camera_photo_filed = IconData( + 0xe0f3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__camera photo__" + /// + /// + static const camera_photo = IconData( + 0xe0f4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__key__" + /// + /// + static const key = IconData( + 0xe0f5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__bell filled__" + /// + /// + static const bell_filled = IconData( + 0xe0f6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__showers night__" + /// + /// + static const showers_night = IconData( + 0xe0f7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__hide filled__" + /// + /// + static const hide_filled = IconData( + 0xe0f8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snow filled__" + /// + /// + static const snow_filled = IconData( + 0xe0f9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__beaker__" + /// + /// + static const beaker = IconData( + 0xe0fa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__wallpaper__" + /// + /// + static const wallpaper = IconData( + 0xe0fb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__selection__" + /// + /// + static const selection = IconData( + 0xe0fc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__paste filled__" + /// + /// + static const paste_filled = IconData( + 0xe0fd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__stopwatch__" + /// + /// + static const stopwatch = IconData( + 0xe0fe, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__dictionary__" + /// + /// + static const dictionary = IconData( + 0xe0ff, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__wallpaper filled__" + /// + /// + static const wallpaper_filled = IconData( + 0xe100, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer warning filled__" + /// + /// + static const printer_warning_filled = IconData( + 0xe101, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer printing__" + /// + /// + static const printer_printing = IconData( + 0xe102, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer__" + /// + /// + static const printer = IconData( + 0xe103, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer printing filled__" + /// + /// + static const printer_printing_filled = IconData( + 0xe104, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer network filled__" + /// + /// + static const printer_network_filled = IconData( + 0xe105, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer preview__" + /// + /// + static const printer_preview = IconData( + 0xe106, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer error filled__" + /// + /// + static const printer_error_filled = IconData( + 0xe107, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer warning__" + /// + /// + static const printer_warning = IconData( + 0xe108, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer preview filled__" + /// + /// + static const printer_preview_filled = IconData( + 0xe109, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer filled__" + /// + /// + static const printer_filled = IconData( + 0xe10a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer network__" + /// + /// + static const printer_network = IconData( + 0xe10b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__printer error__" + /// + /// + static const printer_error = IconData( + 0xe10c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tablet filled__" + /// + /// + static const tablet_filled = IconData( + 0xe10d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package deb__" + /// + /// + static const no_package_deb = IconData( + 0xe10e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package flatpak filled__" + /// + /// + static const no_package_flatpak_filled = IconData( + 0xe10f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package__" + /// + /// + static const no_package = IconData( + 0xe110, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package flatpak__" + /// + /// + static const no_package_flatpak = IconData( + 0xe111, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package filled__" + /// + /// + static const no_package_filled = IconData( + 0xe112, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package snap filled__" + /// + /// + static const no_package_snap_filled = IconData( + 0xe113, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package deb filled__" + /// + /// + static const no_package_deb_filled = IconData( + 0xe114, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__no package snap__" + /// + /// + static const no_package_snap = IconData( + 0xe115, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__monitor filled__" + /// + /// + static const monitor_filled = IconData( + 0xe116, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__paper clip__" + /// + /// + static const paper_clip = IconData( + 0xe117, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ok simple__" + /// + /// + static const ok_simple = IconData( + 0xe118, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder search__" + /// + /// + static const folder_search = IconData( + 0xe119, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder remote__" + /// + /// + static const folder_remote = IconData( + 0xe11a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder__" + /// + /// + static const folder = IconData( + 0xe11b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder search filled__" + /// + /// + static const folder_search_filled = IconData( + 0xe11c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder open filled__" + /// + /// + static const folder_open_filled = IconData( + 0xe11d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder simple filled__" + /// + /// + static const folder_simple_filled = IconData( + 0xe11e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder new filled__" + /// + /// + static const folder_new_filled = IconData( + 0xe11f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder drag accept__" + /// + /// + static const folder_drag_accept = IconData( + 0xe120, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder filled__" + /// + /// + static const folder_filled = IconData( + 0xe121, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder open__" + /// + /// + static const folder_open = IconData( + 0xe122, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder remote filled__" + /// + /// + static const folder_remote_filled = IconData( + 0xe123, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder new__" + /// + /// + static const folder_new = IconData( + 0xe124, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder simple__" + /// + /// + static const folder_simple = IconData( + 0xe125, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__folder drag accept filled__" + /// + /// + static const folder_drag_accept_filled = IconData( + 0xe126, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__outbox__" + /// + /// + static const outbox = IconData( + 0xe127, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__game controller__" + /// + /// + static const game_controller = IconData( + 0xe128, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network offline__" + /// + /// + static const network_offline = IconData( + 0xe129, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network__" + /// + /// + static const network = IconData( + 0xe12a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network idle__" + /// + /// + static const network_idle = IconData( + 0xe12b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network error filled__" + /// + /// + static const network_error_filled = IconData( + 0xe12c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network receive__" + /// + /// + static const network_receive = IconData( + 0xe12d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wired filled__" + /// + /// + static const network_wired_filled = IconData( + 0xe12e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network hotspot__" + /// + /// + static const network_hotspot = IconData( + 0xe12f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network filled__" + /// + /// + static const network_filled = IconData( + 0xe130, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wired__" + /// + /// + static const network_wired = IconData( + 0xe131, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal weak__" + /// + /// + static const network_wireless_signal_weak = IconData( + 0xe132, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless no route__" + /// + /// + static const network_wireless_no_route = IconData( + 0xe133, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal none secure__" + /// + /// + static const network_wireless_signal_none_secure = IconData( + 0xe134, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal excellent secure__" + /// + /// + static const network_wireless_signal_excellent_secure = IconData( + 0xe135, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless__" + /// + /// + static const network_wireless = IconData( + 0xe136, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal good secure__" + /// + /// + static const network_wireless_signal_good_secure = IconData( + 0xe137, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal none__" + /// + /// + static const network_wireless_signal_none = IconData( + 0xe138, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal weak secure__" + /// + /// + static const network_wireless_signal_weak_secure = IconData( + 0xe139, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal ok secure__" + /// + /// + static const network_wireless_signal_ok_secure = IconData( + 0xe13a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal ok__" + /// + /// + static const network_wireless_signal_ok = IconData( + 0xe13b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal good__" + /// + /// + static const network_wireless_signal_good = IconData( + 0xe13c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless signal excellent__" + /// + /// + static const network_wireless_signal_excellent = IconData( + 0xe13d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless acquiring__" + /// + /// + static const network_wireless_acquiring = IconData( + 0xe13e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network wireless disabled__" + /// + /// + static const network_wireless_disabled = IconData( + 0xe13f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network offline filled__" + /// + /// + static const network_offline_filled = IconData( + 0xe140, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network transmit receive__" + /// + /// + static const network_transmit_receive = IconData( + 0xe141, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular hardware disabled__" + /// + /// + static const network_cellular_hardware_disabled = IconData( + 0xe142, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular offline__" + /// + /// + static const network_cellular_offline = IconData( + 0xe143, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal weak__" + /// + /// + static const network_cellular_signal_weak = IconData( + 0xe144, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular no route__" + /// + /// + static const network_cellular_no_route = IconData( + 0xe145, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal none secure__" + /// + /// + static const network_cellular_signal_none_secure = IconData( + 0xe146, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal excellent secure__" + /// + /// + static const network_cellular_signal_excellent_secure = IconData( + 0xe147, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular__" + /// + /// + static const network_cellular = IconData( + 0xe148, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal good secure__" + /// + /// + static const network_cellular_signal_good_secure = IconData( + 0xe149, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular connected__" + /// + /// + static const network_cellular_connected = IconData( + 0xe14a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular edge__" + /// + /// + static const network_cellular_edge = IconData( + 0xe14b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal none__" + /// + /// + static const network_cellular_signal_none = IconData( + 0xe14c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal weak secure__" + /// + /// + static const network_cellular_signal_weak_secure = IconData( + 0xe14d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal ok secure__" + /// + /// + static const network_cellular_signal_ok_secure = IconData( + 0xe14e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular 5g__" + /// + /// + static const network_cellular_5g = IconData( + 0xe14f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal ok__" + /// + /// + static const network_cellular_signal_ok = IconData( + 0xe150, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal good__" + /// + /// + static const network_cellular_signal_good = IconData( + 0xe151, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular signal excellent__" + /// + /// + static const network_cellular_signal_excellent = IconData( + 0xe152, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular 4g__" + /// + /// + static const network_cellular_4g = IconData( + 0xe153, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular 3g__" + /// + /// + static const network_cellular_3g = IconData( + 0xe154, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular gprs__" + /// + /// + static const network_cellular_gprs = IconData( + 0xe155, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular hspa__" + /// + /// + static const network_cellular_hspa = IconData( + 0xe156, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular acquiring__" + /// + /// + static const network_cellular_acquiring = IconData( + 0xe157, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular 2g__" + /// + /// + static const network_cellular_2g = IconData( + 0xe158, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network cellular disabled__" + /// + /// + static const network_cellular_disabled = IconData( + 0xe159, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network transmit__" + /// + /// + static const network_transmit = IconData( + 0xe15a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__network error__" + /// + /// + static const network_error = IconData( + 0xe15b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pin__" + /// + /// + static const pin = IconData( + 0xe15c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__format remove__" + /// + /// + static const format_remove = IconData( + 0xe15d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__kde logo__" + /// + /// + static const kde_logo = IconData( + 0xe15e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote sad filled__" + /// + /// + static const emote_sad_filled = IconData( + 0xe15f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote devilish__" + /// + /// + static const emote_devilish = IconData( + 0xe160, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote smirk__" + /// + /// + static const emote_smirk = IconData( + 0xe161, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote angry filled__" + /// + /// + static const emote_angry_filled = IconData( + 0xe162, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote uncertain__" + /// + /// + static const emote_uncertain = IconData( + 0xe163, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote worried filled__" + /// + /// + static const emote_worried_filled = IconData( + 0xe164, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote raspberry filled__" + /// + /// + static const emote_raspberry_filled = IconData( + 0xe165, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote confused filled__" + /// + /// + static const emote_confused_filled = IconData( + 0xe166, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote yawn filled__" + /// + /// + static const emote_yawn_filled = IconData( + 0xe167, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote confused__" + /// + /// + static const emote_confused = IconData( + 0xe168, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote embarrassed__" + /// + /// + static const emote_embarrassed = IconData( + 0xe169, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote angel__" + /// + /// + static const emote_angel = IconData( + 0xe16a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote sick filled__" + /// + /// + static const emote_sick_filled = IconData( + 0xe16b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote yawn__" + /// + /// + static const emote_yawn = IconData( + 0xe16c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote crying filled__" + /// + /// + static const emote_crying_filled = IconData( + 0xe16d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote devilish filled__" + /// + /// + static const emote_devilish_filled = IconData( + 0xe16e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote laugh__" + /// + /// + static const emote_laugh = IconData( + 0xe16f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote sad__" + /// + /// + static const emote_sad = IconData( + 0xe170, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote shutmouth filled__" + /// + /// + static const emote_shutmouth_filled = IconData( + 0xe171, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote shutmouth__" + /// + /// + static const emote_shutmouth = IconData( + 0xe172, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote smile big__" + /// + /// + static const emote_smile_big = IconData( + 0xe173, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote crying__" + /// + /// + static const emote_crying = IconData( + 0xe174, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote surprise filled__" + /// + /// + static const emote_surprise_filled = IconData( + 0xe175, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote raspberry__" + /// + /// + static const emote_raspberry = IconData( + 0xe176, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote angel filled__" + /// + /// + static const emote_angel_filled = IconData( + 0xe177, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote monkey filled__" + /// + /// + static const emote_monkey_filled = IconData( + 0xe178, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote plain filled__" + /// + /// + static const emote_plain_filled = IconData( + 0xe179, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote glasses__" + /// + /// + static const emote_glasses = IconData( + 0xe17a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote smile__" + /// + /// + static const emote_smile = IconData( + 0xe17b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote cool filled__" + /// + /// + static const emote_cool_filled = IconData( + 0xe17c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote sick__" + /// + /// + static const emote_sick = IconData( + 0xe17d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote smile filled__" + /// + /// + static const emote_smile_filled = IconData( + 0xe17e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote wink filled__" + /// + /// + static const emote_wink_filled = IconData( + 0xe17f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote laugh filled__" + /// + /// + static const emote_laugh_filled = IconData( + 0xe180, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote monkey__" + /// + /// + static const emote_monkey = IconData( + 0xe181, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote worried__" + /// + /// + static const emote_worried = IconData( + 0xe182, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote tired__" + /// + /// + static const emote_tired = IconData( + 0xe183, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote uncertain filled__" + /// + /// + static const emote_uncertain_filled = IconData( + 0xe184, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote smile big filled__" + /// + /// + static const emote_smile_big_filled = IconData( + 0xe185, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote tired filled__" + /// + /// + static const emote_tired_filled = IconData( + 0xe186, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote cool__" + /// + /// + static const emote_cool = IconData( + 0xe187, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote embarrassed filled__" + /// + /// + static const emote_embarrassed_filled = IconData( + 0xe188, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote kiss__" + /// + /// + static const emote_kiss = IconData( + 0xe189, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote wink__" + /// + /// + static const emote_wink = IconData( + 0xe18a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote kiss filled__" + /// + /// + static const emote_kiss_filled = IconData( + 0xe18b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote glasses filled__" + /// + /// + static const emote_glasses_filled = IconData( + 0xe18c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote smirk filled__" + /// + /// + static const emote_smirk_filled = IconData( + 0xe18d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote angry__" + /// + /// + static const emote_angry = IconData( + 0xe18e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote plain__" + /// + /// + static const emote_plain = IconData( + 0xe18f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__emote surprise__" + /// + /// + static const emote_surprise = IconData( + 0xe190, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tape filled__" + /// + /// + static const tape_filled = IconData( + 0xe191, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__few clouds__" + /// + /// + static const few_clouds = IconData( + 0xe192, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__server__" + /// + /// + static const server = IconData( + 0xe193, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__droplets__" + /// + /// + static const droplets = IconData( + 0xe194, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__skip forward__" + /// + /// + static const skip_forward = IconData( + 0xe195, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__ok__" + /// + /// + static const ok = IconData( + 0xe196, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fog__" + /// + /// + static const fog = IconData( + 0xe197, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radio__" + /// + /// + static const radio = IconData( + 0xe198, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__script filled__" + /// + /// + static const script_filled = IconData( + 0xe199, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fog filled__" + /// + /// + static const fog_filled = IconData( + 0xe19a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__book__" + /// + /// + static const book = IconData( + 0xe19b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__find replace filled__" + /// + /// + static const find_replace_filled = IconData( + 0xe19c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__send receive__" + /// + /// + static const send_receive = IconData( + 0xe19d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkbox checked__" + /// + /// + static const checkbox_checked = IconData( + 0xe19e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkbox mixed filled__" + /// + /// + static const checkbox_mixed_filled = IconData( + 0xe19f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkbox__" + /// + /// + static const checkbox = IconData( + 0xe1a0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkbox checked filled__" + /// + /// + static const checkbox_checked_filled = IconData( + 0xe1a1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkbox filled__" + /// + /// + static const checkbox_filled = IconData( + 0xe1a2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__checkbox mixed__" + /// + /// + static const checkbox_mixed = IconData( + 0xe1a3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__lock filled__" + /// + /// + static const lock_filled = IconData( + 0xe1a4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__colors__" + /// + /// + static const colors = IconData( + 0xe1a5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__bell__" + /// + /// + static const bell = IconData( + 0xe1a6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__puzzle piece filled__" + /// + /// + static const puzzle_piece_filled = IconData( + 0xe1a7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__code__" + /// + /// + static const code = IconData( + 0xe1a8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__junk__" + /// + /// + static const junk = IconData( + 0xe1a9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__junk filled__" + /// + /// + static const junk_filled = IconData( + 0xe1aa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__floppy__" + /// + /// + static const floppy = IconData( + 0xe1ab, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__copy filled__" + /// + /// + static const copy_filled = IconData( + 0xe1ac, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__star filled__" + /// + /// + static const star_filled = IconData( + 0xe1ad, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gears__" + /// + /// + static const gears = IconData( + 0xe1ae, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flag__" + /// + /// + static const flag = IconData( + 0xe1af, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__podcast__" + /// + /// + static const podcast = IconData( + 0xe1b0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__star semi filled__" + /// + /// + static const star_semi_filled = IconData( + 0xe1b1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__hourglass filled__" + /// + /// + static const hourglass_filled = IconData( + 0xe1b2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__stop__" + /// + /// + static const stop = IconData( + 0xe1b3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__multimedia player__" + /// + /// + static const multimedia_player = IconData( + 0xe1b4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__desktop remote__" + /// + /// + static const desktop_remote = IconData( + 0xe1b5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__desktop__" + /// + /// + static const desktop = IconData( + 0xe1b6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__desktop appearance filled__" + /// + /// + static const desktop_appearance_filled = IconData( + 0xe1b7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__desktop filled__" + /// + /// + static const desktop_filled = IconData( + 0xe1b8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__desktop appearance__" + /// + /// + static const desktop_appearance = IconData( + 0xe1b9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__desktop remote filled__" + /// + /// + static const desktop_remote_filled = IconData( + 0xe1ba, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__library music__" + /// + /// + static const library_music = IconData( + 0xe1bb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__library artists__" + /// + /// + static const library_artists = IconData( + 0xe1bc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__library music filled__" + /// + /// + static const library_music_filled = IconData( + 0xe1bd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__library artists filled__" + /// + /// + static const library_artists_filled = IconData( + 0xe1be, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__globe filled__" + /// + /// + static const globe_filled = IconData( + 0xe1bf, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__user__" + /// + /// + static const user = IconData( + 0xe1c0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__user new filled__" + /// + /// + static const user_new_filled = IconData( + 0xe1c1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__user filled__" + /// + /// + static const user_filled = IconData( + 0xe1c2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__user new__" + /// + /// + static const user_new = IconData( + 0xe1c3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__cursor__" + /// + /// + static const cursor = IconData( + 0xe1c4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__clock filled__" + /// + /// + static const clock_filled = IconData( + 0xe1c5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__trash__" + /// + /// + static const trash = IconData( + 0xe1c6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__trash full__" + /// + /// + static const trash_full = IconData( + 0xe1c7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__trash filled__" + /// + /// + static const trash_filled = IconData( + 0xe1c8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__trash full filled__" + /// + /// + static const trash_full_filled = IconData( + 0xe1c9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__error filled__" + /// + /// + static const error_filled = IconData( + 0xe1ca, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__compass filled__" + /// + /// + static const compass_filled = IconData( + 0xe1cb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__share filled__" + /// + /// + static const share_filled = IconData( + 0xe1cc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__bold__" + /// + /// + static const bold = IconData( + 0xe1cd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document template filled__" + /// + /// + static const document_template_filled = IconData( + 0xe1ce, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document__" + /// + /// + static const document = IconData( + 0xe1cf, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document open filled__" + /// + /// + static const document_open_filled = IconData( + 0xe1d0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document new filled__" + /// + /// + static const document_new_filled = IconData( + 0xe1d1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document filled__" + /// + /// + static const document_filled = IconData( + 0xe1d2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document template__" + /// + /// + static const document_template = IconData( + 0xe1d3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document open__" + /// + /// + static const document_open = IconData( + 0xe1d4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document new__" + /// + /// + static const document_new = IconData( + 0xe1d5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document history filled__" + /// + /// + static const document_history_filled = IconData( + 0xe1d6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__document history__" + /// + /// + static const document_history = IconData( + 0xe1d7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__character map__" + /// + /// + static const character_map = IconData( + 0xe1d8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__plus__" + /// + /// + static const plus = IconData( + 0xe1d9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__warning__" + /// + /// + static const warning = IconData( + 0xe1da, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__private mask__" + /// + /// + static const private_mask = IconData( + 0xe1db, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__appliance__" + /// + /// + static const appliance = IconData( + 0xe1dc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__bluetooth__" + /// + /// + static const bluetooth = IconData( + 0xe1dd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__home filled__" + /// + /// + static const home_filled = IconData( + 0xe1de, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__headphones__" + /// + /// + static const headphones = IconData( + 0xe1df, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__key filled__" + /// + /// + static const key_filled = IconData( + 0xe1e0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rss__" + /// + /// + static const rss = IconData( + 0xe1e1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__private mask filled__" + /// + /// + static const private_mask_filled = IconData( + 0xe1e2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__multimedia filled__" + /// + /// + static const multimedia_filled = IconData( + 0xe1e3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__dialpad filled__" + /// + /// + static const dialpad_filled = IconData( + 0xe1e4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image__" + /// + /// + static const image = IconData( + 0xe1e5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image missing__" + /// + /// + static const image_missing = IconData( + 0xe1e6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image loading__" + /// + /// + static const image_loading = IconData( + 0xe1e7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image filled__" + /// + /// + static const image_filled = IconData( + 0xe1e8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image missing filled__" + /// + /// + static const image_missing_filled = IconData( + 0xe1e9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image loading filled__" + /// + /// + static const image_loading_filled = IconData( + 0xe1ea, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image history filled__" + /// + /// + static const image_history_filled = IconData( + 0xe1eb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__image history__" + /// + /// + static const image_history = IconData( + 0xe1ec, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gear__" + /// + /// + static const gear = IconData( + 0xe1ed, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flash card__" + /// + /// + static const flash_card = IconData( + 0xe1ee, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__dialpad__" + /// + /// + static const dialpad = IconData( + 0xe1ef, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__storm__" + /// + /// + static const storm = IconData( + 0xe1f0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tab new__" + /// + /// + static const tab_new = IconData( + 0xe1f1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__copy__" + /// + /// + static const copy = IconData( + 0xe1f2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rain__" + /// + /// + static const rain = IconData( + 0xe1f3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__audio card filled__" + /// + /// + static const audio_card_filled = IconData( + 0xe1f4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__multimedia player filled__" + /// + /// + static const multimedia_player_filled = IconData( + 0xe1f5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__refresh__" + /// + /// + static const refresh = IconData( + 0xe1f6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__hide__" + /// + /// + static const hide = IconData( + 0xe1f7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fast backward__" + /// + /// + static const fast_backward = IconData( + 0xe1f8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__weather alert filled__" + /// + /// + static const weather_alert_filled = IconData( + 0xe1f9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__dictionary filled__" + /// + /// + static const dictionary_filled = IconData( + 0xe1fa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__heart filled__" + /// + /// + static const heart_filled = IconData( + 0xe1fb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__power filled__" + /// + /// + static const power_filled = IconData( + 0xe1fc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__placeholder icon__" + /// + /// + static const placeholder_icon = IconData( + 0xe1fd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__appliance filled__" + /// + /// + static const appliance_filled = IconData( + 0xe1fe, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__inbox filled__" + /// + /// + static const inbox_filled = IconData( + 0xe1ff, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__text direction ltr__" + /// + /// + static const text_direction_ltr = IconData( + 0xe200, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fast forward__" + /// + /// + static const fast_forward = IconData( + 0xe201, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__overcast__" + /// + /// + static const overcast = IconData( + 0xe202, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__find replace__" + /// + /// + static const find_replace = IconData( + 0xe203, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__showers__" + /// + /// + static const showers = IconData( + 0xe204, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__touchpad__" + /// + /// + static const touchpad = IconData( + 0xe205, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__call incoming__" + /// + /// + static const call_incoming = IconData( + 0xe206, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__call stop__" + /// + /// + static const call_stop = IconData( + 0xe207, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__call start__" + /// + /// + static const call_start = IconData( + 0xe208, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__call outgoing__" + /// + /// + static const call_outgoing = IconData( + 0xe209, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pda__" + /// + /// + static const pda = IconData( + 0xe20a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__outbox filled__" + /// + /// + static const outbox_filled = IconData( + 0xe20b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__unordered list__" + /// + /// + static const unordered_list = IconData( + 0xe20c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__unordered list new__" + /// + /// + static const unordered_list_new = IconData( + 0xe20d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__unordered list remove__" + /// + /// + static const unordered_list_remove = IconData( + 0xe20e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__overcast filled__" + /// + /// + static const overcast_filled = IconData( + 0xe20f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__send__" + /// + /// + static const send = IconData( + 0xe210, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__download__" + /// + /// + static const download = IconData( + 0xe211, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__download filled__" + /// + /// + static const download_filled = IconData( + 0xe212, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__download history filled__" + /// + /// + static const download_history_filled = IconData( + 0xe213, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__download history__" + /// + /// + static const download_history = IconData( + 0xe214, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__redo__" + /// + /// + static const redo = IconData( + 0xe215, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__disk__" + /// + /// + static const disk = IconData( + 0xe216, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window__" + /// + /// + static const window = IconData( + 0xe217, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window maximize__" + /// + /// + static const window_maximize = IconData( + 0xe218, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window restore filled__" + /// + /// + static const window_restore_filled = IconData( + 0xe219, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window minimize__" + /// + /// + static const window_minimize = IconData( + 0xe21a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window top bar filled__" + /// + /// + static const window_top_bar_filled = IconData( + 0xe21b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window new filled__" + /// + /// + static const window_new_filled = IconData( + 0xe21c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window maximize filled__" + /// + /// + static const window_maximize_filled = IconData( + 0xe21d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window close__" + /// + /// + static const window_close = IconData( + 0xe21e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window top bar__" + /// + /// + static const window_top_bar = IconData( + 0xe21f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window filled__" + /// + /// + static const window_filled = IconData( + 0xe220, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window new__" + /// + /// + static const window_new = IconData( + 0xe221, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__window restore__" + /// + /// + static const window_restore = IconData( + 0xe222, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__display layout__" + /// + /// + static const display_layout = IconData( + 0xe223, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__modem filled__" + /// + /// + static const modem_filled = IconData( + 0xe224, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__graphic tablet filled__" + /// + /// + static const graphic_tablet_filled = IconData( + 0xe225, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flag filled__" + /// + /// + static const flag_filled = IconData( + 0xe226, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__screen__" + /// + /// + static const screen = IconData( + 0xe227, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__screen lock__" + /// + /// + static const screen_lock = IconData( + 0xe228, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__screen lock filled__" + /// + /// + static const screen_lock_filled = IconData( + 0xe229, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__screen filled__" + /// + /// + static const screen_filled = IconData( + 0xe22a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__paste__" + /// + /// + static const paste = IconData( + 0xe22b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__address book__" + /// + /// + static const address_book = IconData( + 0xe22c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__address book filled new__" + /// + /// + static const address_book_filled_new = IconData( + 0xe22d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__address book filled__" + /// + /// + static const address_book_filled = IconData( + 0xe22e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__address book new__" + /// + /// + static const address_book_new = IconData( + 0xe22f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__star__" + /// + /// + static const star = IconData( + 0xe230, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__windows filled__" + /// + /// + static const windows_filled = IconData( + 0xe231, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__view more horizontal__" + /// + /// + static const view_more_horizontal = IconData( + 0xe232, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__view more__" + /// + /// + static const view_more = IconData( + 0xe233, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task warning filled__" + /// + /// + static const task_warning_filled = IconData( + 0xe234, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task list__" + /// + /// + static const task_list = IconData( + 0xe235, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task important__" + /// + /// + static const task_important = IconData( + 0xe236, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task error filled__" + /// + /// + static const task_error_filled = IconData( + 0xe237, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task warning__" + /// + /// + static const task_warning = IconData( + 0xe238, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task list filled__" + /// + /// + static const task_list_filled = IconData( + 0xe239, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task important filled__" + /// + /// + static const task_important_filled = IconData( + 0xe23a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__task error__" + /// + /// + static const task_error = IconData( + 0xe23b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sun__" + /// + /// + static const sun = IconData( + 0xe23c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__wrench__" + /// + /// + static const wrench = IconData( + 0xe23d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__chip filled__" + /// + /// + static const chip_filled = IconData( + 0xe23e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__localization filled__" + /// + /// + static const localization_filled = IconData( + 0xe23f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__app grid__" + /// + /// + static const app_grid = IconData( + 0xe240, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__indent more__" + /// + /// + static const indent_more = IconData( + 0xe241, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__usb stick__" + /// + /// + static const usb_stick = IconData( + 0xe242, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__windows__" + /// + /// + static const windows = IconData( + 0xe243, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gnome logo__" + /// + /// + static const gnome_logo = IconData( + 0xe244, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__skip backward__" + /// + /// + static const skip_backward = IconData( + 0xe245, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__education__" + /// + /// + static const education = IconData( + 0xe246, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__phone old__" + /// + /// + static const phone_old = IconData( + 0xe247, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__phone receiver__" + /// + /// + static const phone_receiver = IconData( + 0xe248, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__phone__" + /// + /// + static const phone = IconData( + 0xe249, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__phone old filled__" + /// + /// + static const phone_old_filled = IconData( + 0xe24a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sun filled__" + /// + /// + static const sun_filled = IconData( + 0xe24b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__storm filled__" + /// + /// + static const storm_filled = IconData( + 0xe24c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__check spelling__" + /// + /// + static const check_spelling = IconData( + 0xe24d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom out__" + /// + /// + static const zoom_out = IconData( + 0xe24e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom original__" + /// + /// + static const zoom_original = IconData( + 0xe24f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom in__" + /// + /// + static const zoom_in = IconData( + 0xe250, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom in filled__" + /// + /// + static const zoom_in_filled = IconData( + 0xe251, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom original filled__" + /// + /// + static const zoom_original_filled = IconData( + 0xe252, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom fit best__" + /// + /// + static const zoom_fit_best = IconData( + 0xe253, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__zoom out filled__" + /// + /// + static const zoom_out_filled = IconData( + 0xe254, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__few clouds filled__" + /// + /// + static const few_clouds_filled = IconData( + 0xe255, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__important filled__" + /// + /// + static const important_filled = IconData( + 0xe256, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__compass__" + /// + /// + static const compass = IconData( + 0xe257, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__disk filled__" + /// + /// + static const disk_filled = IconData( + 0xe258, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__terminal filled__" + /// + /// + static const terminal_filled = IconData( + 0xe259, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gear dots filled__" + /// + /// + static const gear_dots_filled = IconData( + 0xe25a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__send filled__" + /// + /// + static const send_filled = IconData( + 0xe25b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__log out__" + /// + /// + static const log_out = IconData( + 0xe25c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__log in__" + /// + /// + static const log_in = IconData( + 0xe25d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__log in filled__" + /// + /// + static const log_in_filled = IconData( + 0xe25e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__log out filled__" + /// + /// + static const log_out_filled = IconData( + 0xe25f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__external link filled__" + /// + /// + static const external_link_filled = IconData( + 0xe260, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__computer__" + /// + /// + static const computer = IconData( + 0xe261, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__showers night filled__" + /// + /// + static const showers_night_filled = IconData( + 0xe262, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__reply all__" + /// + /// + static const reply_all = IconData( + 0xe263, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flash card filled__" + /// + /// + static const flash_card_filled = IconData( + 0xe264, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__swiss knife filled__" + /// + /// + static const swiss_knife_filled = IconData( + 0xe265, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__clock__" + /// + /// + static const clock = IconData( + 0xe266, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__indent less__" + /// + /// + static const indent_less = IconData( + 0xe267, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__human__" + /// + /// + static const human = IconData( + 0xe268, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__eye__" + /// + /// + static const eye = IconData( + 0xe269, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__text editor filled__" + /// + /// + static const text_editor_filled = IconData( + 0xe26a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__panel look filled__" + /// + /// + static const panel_look_filled = IconData( + 0xe26b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__location__" + /// + /// + static const location = IconData( + 0xe26c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__wrench filled__" + /// + /// + static const wrench_filled = IconData( + 0xe26d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__weather filled__" + /// + /// + static const weather_filled = IconData( + 0xe26e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__external link__" + /// + /// + static const external_link = IconData( + 0xe26f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__application__" + /// + /// + static const application = IconData( + 0xe270, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__application bag filled__" + /// + /// + static const application_bag_filled = IconData( + 0xe271, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__application bag__" + /// + /// + static const application_bag = IconData( + 0xe272, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__question filled__" + /// + /// + static const question_filled = IconData( + 0xe273, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pda filled__" + /// + /// + static const pda_filled = IconData( + 0xe274, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__thunderbolt__" + /// + /// + static const thunderbolt = IconData( + 0xe275, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__share__" + /// + /// + static const share = IconData( + 0xe276, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 5 charging__" + /// + /// + static const battery_5_charging = IconData( + 0xe277, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 2 charging__" + /// + /// + static const battery_2_charging = IconData( + 0xe278, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery empty charging__" + /// + /// + static const battery_empty_charging = IconData( + 0xe279, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 3 charging__" + /// + /// + static const battery_3_charging = IconData( + 0xe27a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 4 charging__" + /// + /// + static const battery_4_charging = IconData( + 0xe27b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery empty__" + /// + /// + static const battery_empty = IconData( + 0xe27c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 9__" + /// + /// + static const battery_9 = IconData( + 0xe27d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery full charging__" + /// + /// + static const battery_full_charging = IconData( + 0xe27e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 8__" + /// + /// + static const battery_8 = IconData( + 0xe27f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 9 charging__" + /// + /// + static const battery_9_charging = IconData( + 0xe280, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 8 charging__" + /// + /// + static const battery_8_charging = IconData( + 0xe281, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery warning__" + /// + /// + static const battery_warning = IconData( + 0xe282, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery full__" + /// + /// + static const battery_full = IconData( + 0xe283, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery missing__" + /// + /// + static const battery_missing = IconData( + 0xe284, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 1__" + /// + /// + static const battery_1 = IconData( + 0xe285, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 3__" + /// + /// + static const battery_3 = IconData( + 0xe286, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 2__" + /// + /// + static const battery_2 = IconData( + 0xe287, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 6__" + /// + /// + static const battery_6 = IconData( + 0xe288, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 7__" + /// + /// + static const battery_7 = IconData( + 0xe289, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 5__" + /// + /// + static const battery_5 = IconData( + 0xe28a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 4__" + /// + /// + static const battery_4 = IconData( + 0xe28b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 6 charging__" + /// + /// + static const battery_6_charging = IconData( + 0xe28c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 1 charging__" + /// + /// + static const battery_1_charging = IconData( + 0xe28d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery 7 charging__" + /// + /// + static const battery_7_charging = IconData( + 0xe28e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__users filled__" + /// + /// + static const users_filled = IconData( + 0xe28f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sync__" + /// + /// + static const sync = IconData( + 0xe290, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__sync error__" + /// + /// + static const sync_error = IconData( + 0xe291, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__undo__" + /// + /// + static const undo = IconData( + 0xe292, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__colors filled__" + /// + /// + static const colors_filled = IconData( + 0xe293, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fingerprint filled__" + /// + /// + static const fingerprint_filled = IconData( + 0xe294, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fullscreen__" + /// + /// + static const fullscreen = IconData( + 0xe295, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fullscreen exit__" + /// + /// + static const fullscreen_exit = IconData( + 0xe296, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__italic__" + /// + /// + static const italic = IconData( + 0xe297, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__notjunk__" + /// + /// + static const notjunk = IconData( + 0xe298, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__notjunk filled__" + /// + /// + static const notjunk_filled = IconData( + 0xe299, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__globe__" + /// + /// + static const globe = IconData( + 0xe29a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__history filled__" + /// + /// + static const history_filled = IconData( + 0xe29b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__health filled__" + /// + /// + static const health_filled = IconData( + 0xe29c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__magnifying glass__" + /// + /// + static const magnifying_glass = IconData( + 0xe29d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__screensaver__" + /// + /// + static const screensaver = IconData( + 0xe29e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__stopwatch filled__" + /// + /// + static const stopwatch_filled = IconData( + 0xe29f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rule and pen filled__" + /// + /// + static const rule_and_pen_filled = IconData( + 0xe2a0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 1 filled__" + /// + /// + static const meter_1_filled = IconData( + 0xe2a1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter three quarter__" + /// + /// + static const meter_three_quarter = IconData( + 0xe2a2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter three quarter filled__" + /// + /// + static const meter_three_quarter_filled = IconData( + 0xe2a3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 4 filled__" + /// + /// + static const meter_4_filled = IconData( + 0xe2a4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 9 filled__" + /// + /// + static const meter_9_filled = IconData( + 0xe2a5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 9__" + /// + /// + static const meter_9 = IconData( + 0xe2a6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 8__" + /// + /// + static const meter_8 = IconData( + 0xe2a7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 3 filled__" + /// + /// + static const meter_3_filled = IconData( + 0xe2a8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 6 filled__" + /// + /// + static const meter_6_filled = IconData( + 0xe2a9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 0__" + /// + /// + static const meter_0 = IconData( + 0xe2aa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 5 filled__" + /// + /// + static const meter_5_filled = IconData( + 0xe2ab, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 1__" + /// + /// + static const meter_1 = IconData( + 0xe2ac, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 3__" + /// + /// + static const meter_3 = IconData( + 0xe2ad, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter middle__" + /// + /// + static const meter_middle = IconData( + 0xe2ae, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter quarter filled__" + /// + /// + static const meter_quarter_filled = IconData( + 0xe2af, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 2__" + /// + /// + static const meter_2 = IconData( + 0xe2b0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 8 filled__" + /// + /// + static const meter_8_filled = IconData( + 0xe2b1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 6__" + /// + /// + static const meter_6 = IconData( + 0xe2b2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 7__" + /// + /// + static const meter_7 = IconData( + 0xe2b3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 5__" + /// + /// + static const meter_5 = IconData( + 0xe2b4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 0 filled__" + /// + /// + static const meter_0_filled = IconData( + 0xe2b5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 4__" + /// + /// + static const meter_4 = IconData( + 0xe2b6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 7 filled__" + /// + /// + static const meter_7_filled = IconData( + 0xe2b7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter middle filled__" + /// + /// + static const meter_middle_filled = IconData( + 0xe2b8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter 2 filled__" + /// + /// + static const meter_2_filled = IconData( + 0xe2b9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__meter quarter__" + /// + /// + static const meter_quarter = IconData( + 0xe2ba, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__debian__" + /// + /// + static const debian = IconData( + 0xe2bb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__html__" + /// + /// + static const html = IconData( + 0xe2bc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk broken__" + /// + /// + static const drive_harddisk_broken = IconData( + 0xe2bd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive solidstatedisk__" + /// + /// + static const drive_solidstatedisk = IconData( + 0xe2be, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk broken filled__" + /// + /// + static const drive_harddisk_broken_filled = IconData( + 0xe2bf, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk disabled__" + /// + /// + static const drive_harddisk_disabled = IconData( + 0xe2c0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk disabled filled__" + /// + /// + static const drive_harddisk_disabled_filled = IconData( + 0xe2c1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive optical__" + /// + /// + static const drive_optical = IconData( + 0xe2c2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive ieee1394__" + /// + /// + static const drive_ieee1394 = IconData( + 0xe2c3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive multidisk filled__" + /// + /// + static const drive_multidisk_filled = IconData( + 0xe2c4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive multidisk__" + /// + /// + static const drive_multidisk = IconData( + 0xe2c5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk warning__" + /// + /// + static const drive_harddisk_warning = IconData( + 0xe2c6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk error filled__" + /// + /// + static const drive_harddisk_error_filled = IconData( + 0xe2c7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk filled__" + /// + /// + static const drive_harddisk_filled = IconData( + 0xe2c8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive removable media filled__" + /// + /// + static const drive_removable_media_filled = IconData( + 0xe2c9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk usb__" + /// + /// + static const drive_harddisk_usb = IconData( + 0xe2ca, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk__" + /// + /// + static const drive_harddisk = IconData( + 0xe2cb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive removable media__" + /// + /// + static const drive_removable_media = IconData( + 0xe2cc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive optical filled__" + /// + /// + static const drive_optical_filled = IconData( + 0xe2cd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk error__" + /// + /// + static const drive_harddisk_error = IconData( + 0xe2ce, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk warning filled__" + /// + /// + static const drive_harddisk_warning_filled = IconData( + 0xe2cf, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive solidstatedisk filled__" + /// + /// + static const drive_solidstatedisk_filled = IconData( + 0xe2d0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive ieee1394 filled__" + /// + /// + static const drive_ieee1394_filled = IconData( + 0xe2d1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drive harddisk usb filled__" + /// + /// + static const drive_harddisk_usb_filled = IconData( + 0xe2d2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__scanner__" + /// + /// + static const scanner = IconData( + 0xe2d3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__save as filled__" + /// + /// + static const save_as_filled = IconData( + 0xe2d4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__save__" + /// + /// + static const save = IconData( + 0xe2d5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__save as__" + /// + /// + static const save_as = IconData( + 0xe2d6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__save filled__" + /// + /// + static const save_filled = IconData( + 0xe2d7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__swiss knife__" + /// + /// + static const swiss_knife = IconData( + 0xe2d8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__cut__" + /// + /// + static const cut = IconData( + 0xe2d9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__cloud__" + /// + /// + static const cloud = IconData( + 0xe2da, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__shuffle__" + /// + /// + static const shuffle = IconData( + 0xe2db, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__error__" + /// + /// + static const error = IconData( + 0xe2dc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__server filled__" + /// + /// + static const server_filled = IconData( + 0xe2dd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__weather alert__" + /// + /// + static const weather_alert = IconData( + 0xe2de, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__forward__" + /// + /// + static const forward = IconData( + 0xe2df, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__bookmark__" + /// + /// + static const bookmark = IconData( + 0xe2e0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__floppy filled__" + /// + /// + static const floppy_filled = IconData( + 0xe2e1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rotate right__" + /// + /// + static const rotate_right = IconData( + 0xe2e2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__clear night filled__" + /// + /// + static const clear_night_filled = IconData( + 0xe2e3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__script__" + /// + /// + static const script = IconData( + 0xe2e4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tablet__" + /// + /// + static const tablet = IconData( + 0xe2e5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__drag handle__" + /// + /// + static const drag_handle = IconData( + 0xe2e6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__gears filled__" + /// + /// + static const gears_filled = IconData( + 0xe2e7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__menu__" + /// + /// + static const menu = IconData( + 0xe2e8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft important__" + /// + /// + static const snapcraft_important = IconData( + 0xe2e9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft__" + /// + /// + static const snapcraft = IconData( + 0xe2ea, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft bag filled__" + /// + /// + static const snapcraft_bag_filled = IconData( + 0xe2eb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft warning__" + /// + /// + static const snapcraft_warning = IconData( + 0xe2ec, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft info__" + /// + /// + static const snapcraft_info = IconData( + 0xe2ed, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft bag__" + /// + /// + static const snapcraft_bag = IconData( + 0xe2ee, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__snapcraft error__" + /// + /// + static const snapcraft_error = IconData( + 0xe2ef, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__rule and pen__" + /// + /// + static const rule_and_pen = IconData( + 0xe2f0, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__tag filled__" + /// + /// + static const tag_filled = IconData( + 0xe2f1, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__calculator__" + /// + /// + static const calculator = IconData( + 0xe2f2, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__mouse__" + /// + /// + static const mouse = IconData( + 0xe2f3, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pan end__" + /// + /// + static const pan_end = IconData( + 0xe2f4, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pan down__" + /// + /// + static const pan_down = IconData( + 0xe2f5, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pan up__" + /// + /// + static const pan_up = IconData( + 0xe2f6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__pan start__" + /// + /// + static const pan_start = IconData( + 0xe2f7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radiobox checked__" + /// + /// + static const radiobox_checked = IconData( + 0xe2f8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radiobox mixed filled__" + /// + /// + static const radiobox_mixed_filled = IconData( + 0xe2f9, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radiobox__" + /// + /// + static const radiobox = IconData( + 0xe2fa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radiobox checked filled__" + /// + /// + static const radiobox_checked_filled = IconData( + 0xe2fb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radiobox filled__" + /// + /// + static const radiobox_filled = IconData( + 0xe2fc, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__radiobox mixed__" + /// + /// + static const radiobox_mixed = IconData( + 0xe2fd, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__keyboard shortcuts__" + /// + /// + static const keyboard_shortcuts = IconData( + 0xe2fe, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__keyboard shortcuts new filled__" + /// + /// + static const keyboard_shortcuts_new_filled = IconData( + 0xe2ff, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__keyboard shortcuts filled__" + /// + /// + static const keyboard_shortcuts_filled = IconData( + 0xe300, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__keyboard shortcuts new__" + /// + /// + static const keyboard_shortcuts_new = IconData( + 0xe301, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package deb__" + /// + /// + static const package_deb = IconData( + 0xe302, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package flatpak filled__" + /// + /// + static const package_flatpak_filled = IconData( + 0xe303, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package__" + /// + /// + static const package = IconData( + 0xe304, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package flatpak__" + /// + /// + static const package_flatpak = IconData( + 0xe305, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package filled__" + /// + /// + static const package_filled = IconData( + 0xe306, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package snap filled__" + /// + /// + static const package_snap_filled = IconData( + 0xe307, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package deb filled__" + /// + /// + static const package_deb_filled = IconData( + 0xe308, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__package snap__" + /// + /// + static const package_snap = IconData( + 0xe309, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__puzzle piece__" + /// + /// + static const puzzle_piece = IconData( + 0xe30a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__history__" + /// + /// + static const history = IconData( + 0xe30b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__few clouds night__" + /// + /// + static const few_clouds_night = IconData( + 0xe30c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__shutdown__" + /// + /// + static const shutdown = IconData( + 0xe30d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__display layout filled__" + /// + /// + static const display_layout_filled = IconData( + 0xe30e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__users__" + /// + /// + static const users = IconData( + 0xe30f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__text editor__" + /// + /// + static const text_editor = IconData( + 0xe310, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__fingerprint__" + /// + /// + static const fingerprint = IconData( + 0xe311, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__color select__" + /// + /// + static const color_select = IconData( + 0xe312, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__monitor__" + /// + /// + static const monitor = IconData( + 0xe313, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__minus__" + /// + /// + static const minus = IconData( + 0xe314, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__target filled__" + /// + /// + static const target_filled = IconData( + 0xe315, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__trowel filled__" + /// + /// + static const trowel_filled = IconData( + 0xe316, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__edit clear all__" + /// + /// + static const edit_clear_all = IconData( + 0xe317, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__audio card__" + /// + /// + static const audio_card = IconData( + 0xe318, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__eye filled__" + /// + /// + static const eye_filled = IconData( + 0xe319, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__localization__" + /// + /// + static const localization = IconData( + 0xe31a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__flip horizontal__" + /// + /// + static const flip_horizontal = IconData( + 0xe31b, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__bookmark filled__" + /// + /// + static const bookmark_filled = IconData( + 0xe31c, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__media stop__" + /// + /// + static const media_stop = IconData( + 0xe31d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__media record__" + /// + /// + static const media_record = IconData( + 0xe31e, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__media play__" + /// + /// + static const media_play = IconData( + 0xe31f, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__media pause__" + /// + /// + static const media_pause = IconData( + 0xe320, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__heart__" + /// + /// + static const heart = IconData( + 0xe321, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__font__" + /// + /// + static const font = IconData( + 0xe322, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__battery__" + /// + /// + static const battery = IconData( + 0xe283, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__extension__" + /// + /// + static const extension = IconData( + 0xe30a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__extension filled__" + /// + /// + static const extension_filled = IconData( + 0xe1a7, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__notification__" + /// + /// + static const notification = IconData( + 0xe1a6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__notification filled__" + /// + /// + static const notification_filled = IconData( + 0xe0f6, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__parental control__" + /// + /// + static const parental_control = IconData( + 0xe0aa, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__search__" + /// + /// + static const search = IconData( + 0xe29d, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__search filled__" + /// + /// + static const search_filled = IconData( + 0xe07a, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__settings__" + /// + /// + static const settings = IconData( + 0xe1ed, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__settings filled__" + /// + /// + static const settings_filled = IconData( + 0xe0bb, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__utilities__" + /// + /// + static const utilities = IconData( + 0xe2d8, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + /// Font icon named "__utilities filled__" + /// + /// + static const utilities_filled = IconData( + 0xe265, + fontFamily: iconFontFamily, + fontPackage: iconFontPackage, + ); + + static const all = { + 'underline': underline, + 'weather': weather, + 'warning_filled': warning_filled, + 'checkmark': checkmark, + 'clear_night': clear_night, + 'scanner_filled': scanner_filled, + 'sidebar': sidebar, + 'sidebar_hide_filled': sidebar_hide_filled, + 'sidebar_hide_right_filled': sidebar_hide_right_filled, + 'sidebar_hide': sidebar_hide, + 'sidebar_right': sidebar_right, + 'sidebar_filled': sidebar_filled, + 'sidebar_right_filled': sidebar_right_filled, + 'sidebar_hide_right': sidebar_hide_right, + 'rain_filled': rain_filled, + 'screensaver_filled': screensaver_filled, + 'tree_fir': tree_fir, + 'tree': tree, + 'tree_filled': tree_filled, + 'tree_fir_filled': tree_fir_filled, + 'touchpad_filled': touchpad_filled, + 'music_queue': music_queue, + 'music_note': music_note, + 'music_artist_filled': music_artist_filled, + 'music_queue_filled': music_queue_filled, + 'music_single': music_single, + 'music_artist': music_artist, + 'music_single_filled': music_single_filled, + 'music_history_filled': music_history_filled, + 'music_history': music_history, + 'radio_filled': radio_filled, + 'shield': shield, + 'shield_warning': shield_warning, + 'shield_filled': shield_filled, + 'wind': wind, + 'computer_legacy': computer_legacy, + 'flip_vertical': flip_vertical, + 'rotate_left': rotate_left, + 'target': target, + 'information': information, + 'usb_stick_filled': usb_stick_filled, + 'repeat': repeat, + 'repeat_filled': repeat_filled, + 'repeat_single': repeat_single, + 'repeat_single_filled': repeat_single_filled, + 'hourglass': hourglass, + 'games_filled': games_filled, + 'reply': reply, + 'edit_clear_filled': edit_clear_filled, + 'snow': snow, + 'revert': revert, + 'video': video, + 'video_filled': video_filled, + 'video_history_filled': video_history_filled, + 'video_history': video_history, + 'hearing': hearing, + 'playlist': playlist, + 'playlist_filled': playlist_filled, + 'playlist_play': playlist_play, + 'podcast_filled': podcast_filled, + 'modem': modem, + 'edit_clear': edit_clear, + 'tape': tape, + 'computer_filled': computer_filled, + 'home': home, + 'game_controller_filled': game_controller_filled, + 'smartphone': smartphone, + 'xfce_logo': xfce_logo, + 'television': television, + 'few_clouds_night_filled': few_clouds_night_filled, + 'panel_look': panel_look, + 'eject': eject, + 'strikethrough': strikethrough, + 'go_down': go_down, + 'go_bottom': go_bottom, + 'go_up': go_up, + 'go_jump': go_jump, + 'go_first': go_first, + 'go_previous': go_previous, + 'go_next': go_next, + 'go_last': go_last, + 'go_top': go_top, + 'calendar_warning_filled': calendar_warning_filled, + 'calendar_month_filled': calendar_month_filled, + 'calendar_important': calendar_important, + 'calendar': calendar, + 'calendar_week_filled': calendar_week_filled, + 'calendar_day': calendar_day, + 'calendar_month': calendar_month, + 'calendar_new_filled': calendar_new_filled, + 'calendar_week': calendar_week, + 'calendar_day_filled': calendar_day_filled, + 'calendar_error_filled': calendar_error_filled, + 'calendar_warning': calendar_warning, + 'calendar_filled': calendar_filled, + 'calendar_important_filled': calendar_important_filled, + 'calendar_new': calendar_new, + 'calendar_error': calendar_error, + 'html_filled': html_filled, + 'microphone_medium': microphone_medium, + 'microphone_high_filled': microphone_high_filled, + 'microphone_muted_filled': microphone_muted_filled, + 'microphone': microphone, + 'microphone_muted': microphone_muted, + 'microphone_high': microphone_high, + 'microphone_filled': microphone_filled, + 'microphone_low': microphone_low, + 'microphone_medium_filled': microphone_medium_filled, + 'microphone_low_filled': microphone_low_filled, + 'computer_legacy_filled': computer_legacy_filled, + 'insert_image_filled': insert_image_filled, + 'insert_object_filled': insert_object_filled, + 'insert_link': insert_link, + 'insert_text': insert_text, + 'insert_image': insert_image, + 'insert_link_filled': insert_link_filled, + 'insert_object': insert_object, + 'chip': chip, + 'important': important, + 'subtitles_filled': subtitles_filled, + 'tag': tag, + 'ok_filled': ok_filled, + 'magnifying_glass_filled': magnifying_glass_filled, + 'tab_new_filled': tab_new_filled, + 'switchbox_checked': switchbox_checked, + 'switchbox': switchbox, + 'switchbox_checked_filled': switchbox_checked_filled, + 'switchbox_filled': switchbox_filled, + 'information_filled': information_filled, + 'book_filled': book_filled, + 'hearing_filled': hearing_filled, + 'headset': headset, + 'inbox': inbox, + 'trowel': trowel, + 'multimedia': multimedia, + 'power': power, + 'update_available_filled': update_available_filled, + 'update': update, + 'update_available': update_available, + 'update_urgent': update_urgent, + 'update_urgent_filled': update_urgent_filled, + 'chat_offline': chat_offline, + 'chat_idle': chat_idle, + 'chat_bubble': chat_bubble, + 'chat_away_filled': chat_away_filled, + 'chat_text_filled': chat_text_filled, + 'chat_away': chat_away, + 'chat_idle_filled': chat_idle_filled, + 'chat_text': chat_text, + 'chat_offline_filled': chat_offline_filled, + 'chat_bubble_filled': chat_bubble_filled, + 'justify_right': justify_right, + 'justify_center': justify_center, + 'justify_left': justify_left, + 'justify_fill': justify_fill, + 'cloud_filled': cloud_filled, + 'sort_ascending': sort_ascending, + 'sort_descending': sort_descending, + 'tornado': tornado, + 'smartphone_filled': smartphone_filled, + 'flatpak': flatpak, + 'office_spreadsheet_filled': office_spreadsheet_filled, + 'office_drawing': office_drawing, + 'office_presentation': office_presentation, + 'office': office, + 'office_spreadsheet': office_spreadsheet, + 'office_filled': office_filled, + 'office_presentation_filled': office_presentation_filled, + 'office_drawing_filled': office_drawing_filled, + 'search_history': search_history, + 'familly': familly, + 'subtitles': subtitles, + 'games': games, + 'placeholder_icon_filled': placeholder_icon_filled, + 'graphic_tablet': graphic_tablet, + 'gear_dots': gear_dots, + 'terminal': terminal, + 'thumb_up_filled': thumb_up_filled, + 'thumb_down_filled': thumb_down_filled, + 'thumb_down': thumb_down, + 'thumb_up': thumb_up, + 'ordered_list': ordered_list, + 'ordered_list_new': ordered_list_new, + 'ordered_list_remove': ordered_list_remove, + 'education_filled': education_filled, + 'text_direction_rtl': text_direction_rtl, + 'mouse_filled': mouse_filled, + 'gear_filled': gear_filled, + 'television_filled': television_filled, + 'search_history_filled': search_history_filled, + 'speaker_medium': speaker_medium, + 'speaker_overamplified': speaker_overamplified, + 'speaker_high_filled': speaker_high_filled, + 'speaker_muted_filled': speaker_muted_filled, + 'speaker': speaker, + 'speaker_muted': speaker_muted, + 'speaker_high': speaker_high, + 'speaker_filled': speaker_filled, + 'speaker_low': speaker_low, + 'speaker_medium_filled': speaker_medium_filled, + 'speaker_overamplified_filled': speaker_overamplified_filled, + 'speaker_low_filled': speaker_low_filled, + 'cursor_filled': cursor_filled, + 'beaker_filled': beaker_filled, + 'keyboard': keyboard, + 'arrow_down': arrow_down, + 'arrow_up': arrow_up, + 'arrow_left_outlined': arrow_left_outlined, + 'arrow_right': arrow_right, + 'arrow_up_outlined': arrow_up_outlined, + 'arrow_right_outlined': arrow_right_outlined, + 'arrow_down_outlined': arrow_down_outlined, + 'arrow_left': arrow_left, + 'ubuntu_logo': ubuntu_logo, + 'ubuntu_logo_large': ubuntu_logo_large, + 'ubuntu_logo_simple': ubuntu_logo_simple, + 'question': question, + 'lock': lock, + 'reboot': reboot, + 'keyboard_filled': keyboard_filled, + 'health': health, + 'mail_unread': mail_unread, + 'mail_unread_filled': mail_unread_filled, + 'mail_forwarded': mail_forwarded, + 'mail_ok_filled': mail_ok_filled, + 'mail': mail, + 'mail_open_filled': mail_open_filled, + 'mail_ok': mail_ok, + 'mail_new_filled': mail_new_filled, + 'mail_signed': mail_signed, + 'mail_replied_filled': mail_replied_filled, + 'mail_replied': mail_replied, + 'mail_signed_filled': mail_signed_filled, + 'mail_filled': mail_filled, + 'mail_forwarded_filled': mail_forwarded_filled, + 'mail_open': mail_open, + 'mail_new': mail_new, + 'pen': pen, + 'showers_filled': showers_filled, + 'camera_video_filed': camera_video_filed, + 'camera_web_filled': camera_web_filled, + 'camera_web': camera_web, + 'camera_video': camera_video, + 'camera_photo_filed': camera_photo_filed, + 'camera_photo': camera_photo, + 'key': key, + 'bell_filled': bell_filled, + 'showers_night': showers_night, + 'hide_filled': hide_filled, + 'snow_filled': snow_filled, + 'beaker': beaker, + 'wallpaper': wallpaper, + 'selection': selection, + 'paste_filled': paste_filled, + 'stopwatch': stopwatch, + 'dictionary': dictionary, + 'wallpaper_filled': wallpaper_filled, + 'printer_warning_filled': printer_warning_filled, + 'printer_printing': printer_printing, + 'printer': printer, + 'printer_printing_filled': printer_printing_filled, + 'printer_network_filled': printer_network_filled, + 'printer_preview': printer_preview, + 'printer_error_filled': printer_error_filled, + 'printer_warning': printer_warning, + 'printer_preview_filled': printer_preview_filled, + 'printer_filled': printer_filled, + 'printer_network': printer_network, + 'printer_error': printer_error, + 'tablet_filled': tablet_filled, + 'no_package_deb': no_package_deb, + 'no_package_flatpak_filled': no_package_flatpak_filled, + 'no_package': no_package, + 'no_package_flatpak': no_package_flatpak, + 'no_package_filled': no_package_filled, + 'no_package_snap_filled': no_package_snap_filled, + 'no_package_deb_filled': no_package_deb_filled, + 'no_package_snap': no_package_snap, + 'monitor_filled': monitor_filled, + 'paper_clip': paper_clip, + 'ok_simple': ok_simple, + 'folder_search': folder_search, + 'folder_remote': folder_remote, + 'folder': folder, + 'folder_search_filled': folder_search_filled, + 'folder_open_filled': folder_open_filled, + 'folder_simple_filled': folder_simple_filled, + 'folder_new_filled': folder_new_filled, + 'folder_drag_accept': folder_drag_accept, + 'folder_filled': folder_filled, + 'folder_open': folder_open, + 'folder_remote_filled': folder_remote_filled, + 'folder_new': folder_new, + 'folder_simple': folder_simple, + 'folder_drag_accept_filled': folder_drag_accept_filled, + 'outbox': outbox, + 'game_controller': game_controller, + 'network_offline': network_offline, + 'network': network, + 'network_idle': network_idle, + 'network_error_filled': network_error_filled, + 'network_receive': network_receive, + 'network_wired_filled': network_wired_filled, + 'network_hotspot': network_hotspot, + 'network_filled': network_filled, + 'network_wired': network_wired, + 'network_wireless_signal_weak': network_wireless_signal_weak, + 'network_wireless_no_route': network_wireless_no_route, + 'network_wireless_signal_none_secure': network_wireless_signal_none_secure, + 'network_wireless_signal_excellent_secure': + network_wireless_signal_excellent_secure, + 'network_wireless': network_wireless, + 'network_wireless_signal_good_secure': network_wireless_signal_good_secure, + 'network_wireless_signal_none': network_wireless_signal_none, + 'network_wireless_signal_weak_secure': network_wireless_signal_weak_secure, + 'network_wireless_signal_ok_secure': network_wireless_signal_ok_secure, + 'network_wireless_signal_ok': network_wireless_signal_ok, + 'network_wireless_signal_good': network_wireless_signal_good, + 'network_wireless_signal_excellent': network_wireless_signal_excellent, + 'network_wireless_acquiring': network_wireless_acquiring, + 'network_wireless_disabled': network_wireless_disabled, + 'network_offline_filled': network_offline_filled, + 'network_transmit_receive': network_transmit_receive, + 'network_cellular_hardware_disabled': network_cellular_hardware_disabled, + 'network_cellular_offline': network_cellular_offline, + 'network_cellular_signal_weak': network_cellular_signal_weak, + 'network_cellular_no_route': network_cellular_no_route, + 'network_cellular_signal_none_secure': network_cellular_signal_none_secure, + 'network_cellular_signal_excellent_secure': + network_cellular_signal_excellent_secure, + 'network_cellular': network_cellular, + 'network_cellular_signal_good_secure': network_cellular_signal_good_secure, + 'network_cellular_connected': network_cellular_connected, + 'network_cellular_edge': network_cellular_edge, + 'network_cellular_signal_none': network_cellular_signal_none, + 'network_cellular_signal_weak_secure': network_cellular_signal_weak_secure, + 'network_cellular_signal_ok_secure': network_cellular_signal_ok_secure, + 'network_cellular_5g': network_cellular_5g, + 'network_cellular_signal_ok': network_cellular_signal_ok, + 'network_cellular_signal_good': network_cellular_signal_good, + 'network_cellular_signal_excellent': network_cellular_signal_excellent, + 'network_cellular_4g': network_cellular_4g, + 'network_cellular_3g': network_cellular_3g, + 'network_cellular_gprs': network_cellular_gprs, + 'network_cellular_hspa': network_cellular_hspa, + 'network_cellular_acquiring': network_cellular_acquiring, + 'network_cellular_2g': network_cellular_2g, + 'network_cellular_disabled': network_cellular_disabled, + 'network_transmit': network_transmit, + 'network_error': network_error, + 'pin': pin, + 'format_remove': format_remove, + 'kde_logo': kde_logo, + 'emote_sad_filled': emote_sad_filled, + 'emote_devilish': emote_devilish, + 'emote_smirk': emote_smirk, + 'emote_angry_filled': emote_angry_filled, + 'emote_uncertain': emote_uncertain, + 'emote_worried_filled': emote_worried_filled, + 'emote_raspberry_filled': emote_raspberry_filled, + 'emote_confused_filled': emote_confused_filled, + 'emote_yawn_filled': emote_yawn_filled, + 'emote_confused': emote_confused, + 'emote_embarrassed': emote_embarrassed, + 'emote_angel': emote_angel, + 'emote_sick_filled': emote_sick_filled, + 'emote_yawn': emote_yawn, + 'emote_crying_filled': emote_crying_filled, + 'emote_devilish_filled': emote_devilish_filled, + 'emote_laugh': emote_laugh, + 'emote_sad': emote_sad, + 'emote_shutmouth_filled': emote_shutmouth_filled, + 'emote_shutmouth': emote_shutmouth, + 'emote_smile_big': emote_smile_big, + 'emote_crying': emote_crying, + 'emote_surprise_filled': emote_surprise_filled, + 'emote_raspberry': emote_raspberry, + 'emote_angel_filled': emote_angel_filled, + 'emote_monkey_filled': emote_monkey_filled, + 'emote_plain_filled': emote_plain_filled, + 'emote_glasses': emote_glasses, + 'emote_smile': emote_smile, + 'emote_cool_filled': emote_cool_filled, + 'emote_sick': emote_sick, + 'emote_smile_filled': emote_smile_filled, + 'emote_wink_filled': emote_wink_filled, + 'emote_laugh_filled': emote_laugh_filled, + 'emote_monkey': emote_monkey, + 'emote_worried': emote_worried, + 'emote_tired': emote_tired, + 'emote_uncertain_filled': emote_uncertain_filled, + 'emote_smile_big_filled': emote_smile_big_filled, + 'emote_tired_filled': emote_tired_filled, + 'emote_cool': emote_cool, + 'emote_embarrassed_filled': emote_embarrassed_filled, + 'emote_kiss': emote_kiss, + 'emote_wink': emote_wink, + 'emote_kiss_filled': emote_kiss_filled, + 'emote_glasses_filled': emote_glasses_filled, + 'emote_smirk_filled': emote_smirk_filled, + 'emote_angry': emote_angry, + 'emote_plain': emote_plain, + 'emote_surprise': emote_surprise, + 'tape_filled': tape_filled, + 'few_clouds': few_clouds, + 'server': server, + 'droplets': droplets, + 'skip_forward': skip_forward, + 'ok': ok, + 'fog': fog, + 'radio': radio, + 'script_filled': script_filled, + 'fog_filled': fog_filled, + 'book': book, + 'find_replace_filled': find_replace_filled, + 'send_receive': send_receive, + 'checkbox_checked': checkbox_checked, + 'checkbox_mixed_filled': checkbox_mixed_filled, + 'checkbox': checkbox, + 'checkbox_checked_filled': checkbox_checked_filled, + 'checkbox_filled': checkbox_filled, + 'checkbox_mixed': checkbox_mixed, + 'lock_filled': lock_filled, + 'colors': colors, + 'bell': bell, + 'puzzle_piece_filled': puzzle_piece_filled, + 'code': code, + 'junk': junk, + 'junk_filled': junk_filled, + 'floppy': floppy, + 'copy_filled': copy_filled, + 'star_filled': star_filled, + 'gears': gears, + 'flag': flag, + 'podcast': podcast, + 'star_semi_filled': star_semi_filled, + 'hourglass_filled': hourglass_filled, + 'stop': stop, + 'multimedia_player': multimedia_player, + 'desktop_remote': desktop_remote, + 'desktop': desktop, + 'desktop_appearance_filled': desktop_appearance_filled, + 'desktop_filled': desktop_filled, + 'desktop_appearance': desktop_appearance, + 'desktop_remote_filled': desktop_remote_filled, + 'library_music': library_music, + 'library_artists': library_artists, + 'library_music_filled': library_music_filled, + 'library_artists_filled': library_artists_filled, + 'globe_filled': globe_filled, + 'user': user, + 'user_new_filled': user_new_filled, + 'user_filled': user_filled, + 'user_new': user_new, + 'cursor': cursor, + 'clock_filled': clock_filled, + 'trash': trash, + 'trash_full': trash_full, + 'trash_filled': trash_filled, + 'trash_full_filled': trash_full_filled, + 'error_filled': error_filled, + 'compass_filled': compass_filled, + 'share_filled': share_filled, + 'bold': bold, + 'document_template_filled': document_template_filled, + 'document': document, + 'document_open_filled': document_open_filled, + 'document_new_filled': document_new_filled, + 'document_filled': document_filled, + 'document_template': document_template, + 'document_open': document_open, + 'document_new': document_new, + 'document_history_filled': document_history_filled, + 'document_history': document_history, + 'character_map': character_map, + 'plus': plus, + 'warning': warning, + 'private_mask': private_mask, + 'appliance': appliance, + 'bluetooth': bluetooth, + 'home_filled': home_filled, + 'headphones': headphones, + 'key_filled': key_filled, + 'rss': rss, + 'private_mask_filled': private_mask_filled, + 'multimedia_filled': multimedia_filled, + 'dialpad_filled': dialpad_filled, + 'image': image, + 'image_missing': image_missing, + 'image_loading': image_loading, + 'image_filled': image_filled, + 'image_missing_filled': image_missing_filled, + 'image_loading_filled': image_loading_filled, + 'image_history_filled': image_history_filled, + 'image_history': image_history, + 'gear': gear, + 'flash_card': flash_card, + 'dialpad': dialpad, + 'storm': storm, + 'tab_new': tab_new, + 'copy': copy, + 'rain': rain, + 'audio_card_filled': audio_card_filled, + 'multimedia_player_filled': multimedia_player_filled, + 'refresh': refresh, + 'hide': hide, + 'fast_backward': fast_backward, + 'weather_alert_filled': weather_alert_filled, + 'dictionary_filled': dictionary_filled, + 'heart_filled': heart_filled, + 'power_filled': power_filled, + 'placeholder_icon': placeholder_icon, + 'appliance_filled': appliance_filled, + 'inbox_filled': inbox_filled, + 'text_direction_ltr': text_direction_ltr, + 'fast_forward': fast_forward, + 'overcast': overcast, + 'find_replace': find_replace, + 'showers': showers, + 'touchpad': touchpad, + 'call_incoming': call_incoming, + 'call_stop': call_stop, + 'call_start': call_start, + 'call_outgoing': call_outgoing, + 'pda': pda, + 'outbox_filled': outbox_filled, + 'unordered_list': unordered_list, + 'unordered_list_new': unordered_list_new, + 'unordered_list_remove': unordered_list_remove, + 'overcast_filled': overcast_filled, + 'send': send, + 'download': download, + 'download_filled': download_filled, + 'download_history_filled': download_history_filled, + 'download_history': download_history, + 'redo': redo, + 'disk': disk, + 'window': window, + 'window_maximize': window_maximize, + 'window_restore_filled': window_restore_filled, + 'window_minimize': window_minimize, + 'window_top_bar_filled': window_top_bar_filled, + 'window_new_filled': window_new_filled, + 'window_maximize_filled': window_maximize_filled, + 'window_close': window_close, + 'window_top_bar': window_top_bar, + 'window_filled': window_filled, + 'window_new': window_new, + 'window_restore': window_restore, + 'display_layout': display_layout, + 'modem_filled': modem_filled, + 'graphic_tablet_filled': graphic_tablet_filled, + 'flag_filled': flag_filled, + 'screen': screen, + 'screen_lock': screen_lock, + 'screen_lock_filled': screen_lock_filled, + 'screen_filled': screen_filled, + 'paste': paste, + 'address_book': address_book, + 'address_book_filled_new': address_book_filled_new, + 'address_book_filled': address_book_filled, + 'address_book_new': address_book_new, + 'star': star, + 'windows_filled': windows_filled, + 'view_more_horizontal': view_more_horizontal, + 'view_more': view_more, + 'task_warning_filled': task_warning_filled, + 'task_list': task_list, + 'task_important': task_important, + 'task_error_filled': task_error_filled, + 'task_warning': task_warning, + 'task_list_filled': task_list_filled, + 'task_important_filled': task_important_filled, + 'task_error': task_error, + 'sun': sun, + 'wrench': wrench, + 'chip_filled': chip_filled, + 'localization_filled': localization_filled, + 'app_grid': app_grid, + 'indent_more': indent_more, + 'usb_stick': usb_stick, + 'windows': windows, + 'gnome_logo': gnome_logo, + 'skip_backward': skip_backward, + 'education': education, + 'phone_old': phone_old, + 'phone_receiver': phone_receiver, + 'phone': phone, + 'phone_old_filled': phone_old_filled, + 'sun_filled': sun_filled, + 'storm_filled': storm_filled, + 'check_spelling': check_spelling, + 'zoom_out': zoom_out, + 'zoom_original': zoom_original, + 'zoom_in': zoom_in, + 'zoom_in_filled': zoom_in_filled, + 'zoom_original_filled': zoom_original_filled, + 'zoom_fit_best': zoom_fit_best, + 'zoom_out_filled': zoom_out_filled, + 'few_clouds_filled': few_clouds_filled, + 'important_filled': important_filled, + 'compass': compass, + 'disk_filled': disk_filled, + 'terminal_filled': terminal_filled, + 'gear_dots_filled': gear_dots_filled, + 'send_filled': send_filled, + 'log_out': log_out, + 'log_in': log_in, + 'log_in_filled': log_in_filled, + 'log_out_filled': log_out_filled, + 'external_link_filled': external_link_filled, + 'computer': computer, + 'showers_night_filled': showers_night_filled, + 'reply_all': reply_all, + 'flash_card_filled': flash_card_filled, + 'swiss_knife_filled': swiss_knife_filled, + 'clock': clock, + 'indent_less': indent_less, + 'human': human, + 'eye': eye, + 'text_editor_filled': text_editor_filled, + 'panel_look_filled': panel_look_filled, + 'location': location, + 'wrench_filled': wrench_filled, + 'weather_filled': weather_filled, + 'external_link': external_link, + 'application': application, + 'application_bag_filled': application_bag_filled, + 'application_bag': application_bag, + 'question_filled': question_filled, + 'pda_filled': pda_filled, + 'thunderbolt': thunderbolt, + 'share': share, + 'battery_5_charging': battery_5_charging, + 'battery_2_charging': battery_2_charging, + 'battery_empty_charging': battery_empty_charging, + 'battery_3_charging': battery_3_charging, + 'battery_4_charging': battery_4_charging, + 'battery_empty': battery_empty, + 'battery_9': battery_9, + 'battery_full_charging': battery_full_charging, + 'battery_8': battery_8, + 'battery_9_charging': battery_9_charging, + 'battery_8_charging': battery_8_charging, + 'battery_warning': battery_warning, + 'battery_full': battery_full, + 'battery_missing': battery_missing, + 'battery_1': battery_1, + 'battery_3': battery_3, + 'battery_2': battery_2, + 'battery_6': battery_6, + 'battery_7': battery_7, + 'battery_5': battery_5, + 'battery_4': battery_4, + 'battery_6_charging': battery_6_charging, + 'battery_1_charging': battery_1_charging, + 'battery_7_charging': battery_7_charging, + 'users_filled': users_filled, + 'sync': sync, + 'sync_error': sync_error, + 'undo': undo, + 'colors_filled': colors_filled, + 'fingerprint_filled': fingerprint_filled, + 'fullscreen': fullscreen, + 'fullscreen_exit': fullscreen_exit, + 'italic': italic, + 'notjunk': notjunk, + 'notjunk_filled': notjunk_filled, + 'globe': globe, + 'history_filled': history_filled, + 'health_filled': health_filled, + 'magnifying_glass': magnifying_glass, + 'screensaver': screensaver, + 'stopwatch_filled': stopwatch_filled, + 'rule_and_pen_filled': rule_and_pen_filled, + 'meter_1_filled': meter_1_filled, + 'meter_three_quarter': meter_three_quarter, + 'meter_three_quarter_filled': meter_three_quarter_filled, + 'meter_4_filled': meter_4_filled, + 'meter_9_filled': meter_9_filled, + 'meter_9': meter_9, + 'meter_8': meter_8, + 'meter_3_filled': meter_3_filled, + 'meter_6_filled': meter_6_filled, + 'meter_0': meter_0, + 'meter_5_filled': meter_5_filled, + 'meter_1': meter_1, + 'meter_3': meter_3, + 'meter_middle': meter_middle, + 'meter_quarter_filled': meter_quarter_filled, + 'meter_2': meter_2, + 'meter_8_filled': meter_8_filled, + 'meter_6': meter_6, + 'meter_7': meter_7, + 'meter_5': meter_5, + 'meter_0_filled': meter_0_filled, + 'meter_4': meter_4, + 'meter_7_filled': meter_7_filled, + 'meter_middle_filled': meter_middle_filled, + 'meter_2_filled': meter_2_filled, + 'meter_quarter': meter_quarter, + 'debian': debian, + 'html': html, + 'drive_harddisk_broken': drive_harddisk_broken, + 'drive_solidstatedisk': drive_solidstatedisk, + 'drive_harddisk_broken_filled': drive_harddisk_broken_filled, + 'drive_harddisk_disabled': drive_harddisk_disabled, + 'drive_harddisk_disabled_filled': drive_harddisk_disabled_filled, + 'drive_optical': drive_optical, + 'drive_ieee1394': drive_ieee1394, + 'drive_multidisk_filled': drive_multidisk_filled, + 'drive_multidisk': drive_multidisk, + 'drive_harddisk_warning': drive_harddisk_warning, + 'drive_harddisk_error_filled': drive_harddisk_error_filled, + 'drive_harddisk_filled': drive_harddisk_filled, + 'drive_removable_media_filled': drive_removable_media_filled, + 'drive_harddisk_usb': drive_harddisk_usb, + 'drive_harddisk': drive_harddisk, + 'drive_removable_media': drive_removable_media, + 'drive_optical_filled': drive_optical_filled, + 'drive_harddisk_error': drive_harddisk_error, + 'drive_harddisk_warning_filled': drive_harddisk_warning_filled, + 'drive_solidstatedisk_filled': drive_solidstatedisk_filled, + 'drive_ieee1394_filled': drive_ieee1394_filled, + 'drive_harddisk_usb_filled': drive_harddisk_usb_filled, + 'scanner': scanner, + 'save_as_filled': save_as_filled, + 'save': save, + 'save_as': save_as, + 'save_filled': save_filled, + 'swiss_knife': swiss_knife, + 'cut': cut, + 'cloud': cloud, + 'shuffle': shuffle, + 'error': error, + 'server_filled': server_filled, + 'weather_alert': weather_alert, + 'forward': forward, + 'bookmark': bookmark, + 'floppy_filled': floppy_filled, + 'rotate_right': rotate_right, + 'clear_night_filled': clear_night_filled, + 'script': script, + 'tablet': tablet, + 'drag_handle': drag_handle, + 'gears_filled': gears_filled, + 'menu': menu, + 'snapcraft_important': snapcraft_important, + 'snapcraft': snapcraft, + 'snapcraft_bag_filled': snapcraft_bag_filled, + 'snapcraft_warning': snapcraft_warning, + 'snapcraft_info': snapcraft_info, + 'snapcraft_bag': snapcraft_bag, + 'snapcraft_error': snapcraft_error, + 'rule_and_pen': rule_and_pen, + 'tag_filled': tag_filled, + 'calculator': calculator, + 'mouse': mouse, + 'pan_end': pan_end, + 'pan_down': pan_down, + 'pan_up': pan_up, + 'pan_start': pan_start, + 'radiobox_checked': radiobox_checked, + 'radiobox_mixed_filled': radiobox_mixed_filled, + 'radiobox': radiobox, + 'radiobox_checked_filled': radiobox_checked_filled, + 'radiobox_filled': radiobox_filled, + 'radiobox_mixed': radiobox_mixed, + 'keyboard_shortcuts': keyboard_shortcuts, + 'keyboard_shortcuts_new_filled': keyboard_shortcuts_new_filled, + 'keyboard_shortcuts_filled': keyboard_shortcuts_filled, + 'keyboard_shortcuts_new': keyboard_shortcuts_new, + 'package_deb': package_deb, + 'package_flatpak_filled': package_flatpak_filled, + 'package': package, + 'package_flatpak': package_flatpak, + 'package_filled': package_filled, + 'package_snap_filled': package_snap_filled, + 'package_deb_filled': package_deb_filled, + 'package_snap': package_snap, + 'puzzle_piece': puzzle_piece, + 'history': history, + 'few_clouds_night': few_clouds_night, + 'shutdown': shutdown, + 'display_layout_filled': display_layout_filled, + 'users': users, + 'text_editor': text_editor, + 'fingerprint': fingerprint, + 'color_select': color_select, + 'monitor': monitor, + 'minus': minus, + 'target_filled': target_filled, + 'trowel_filled': trowel_filled, + 'edit_clear_all': edit_clear_all, + 'audio_card': audio_card, + 'eye_filled': eye_filled, + 'localization': localization, + 'flip_horizontal': flip_horizontal, + 'bookmark_filled': bookmark_filled, + 'media_stop': media_stop, + 'media_record': media_record, + 'media_play': media_play, + 'media_pause': media_pause, + 'heart': heart, + 'font': font, + 'battery': battery, + 'extension': extension, + 'extension_filled': extension_filled, + 'notification': notification, + 'notification_filled': notification_filled, + 'parental_control': parental_control, + 'search': search, + 'search_filled': search_filled, + 'settings': settings, + 'settings_filled': settings_filled, + 'utilities': utilities, + 'utilities_filled': utilities_filled, + }; +} diff --git a/lib/theme.dart b/lib/theme.dart new file mode 100644 index 000000000..7d724b46f --- /dev/null +++ b/lib/theme.dart @@ -0,0 +1,16 @@ +export 'src/colors.dart'; +export 'src/theme_widgets/inherited_theme.dart'; +export 'src/themes/common_themes.dart'; +export 'src/themes/extensions.dart'; +export 'src/themes/high_contrast.dart'; +export 'src/themes/kubuntu.dart'; +export 'src/themes/lubuntu.dart'; +export 'src/themes/page_transitions.dart'; +export 'src/themes/ubuntu_budgie.dart'; +export 'src/themes/ubuntu_cinnamon.dart'; +export 'src/themes/ubuntu_mate.dart'; +export 'src/themes/ubuntu_studio.dart'; +export 'src/themes/ubuntu_unity.dart'; +export 'src/themes/variant.dart'; +export 'src/themes/xubuntu.dart'; +export 'src/themes/yaru.dart'; diff --git a/lib/yaru_widgets.dart b/lib/yaru_widgets.dart index 42331e1c1..ec1e5511b 100644 --- a/lib/yaru_widgets.dart +++ b/lib/yaru_widgets.dart @@ -2,4 +2,6 @@ library yaru_widgets; export 'constants.dart'; export 'foundation.dart'; +export 'icons.dart'; +export 'theme.dart'; export 'widgets.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 1b6f018bb..98a026fb5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,14 +9,16 @@ environment: flutter: ">=3.16.0" dependencies: + animated_vector: ^0.2.0 + animated_vector_annotations: ^0.2.0 + collection: ^1.17.0 flutter: sdk: flutter - yaru: ^1.2.1 - yaru_icons: ">=1.0.0 <3.0.0" + gtk: ^2.1.0 + platform: ^3.1.0 yaru_window: ^0.2.0 dev_dependencies: - collection: ^1.16.0 flutter_lints: ^3.0.1 flutter_test: sdk: flutter @@ -25,3 +27,49 @@ dev_dependencies: plugin_platform_interface: ^2.1.3 test: ^1.21.4 yaru_window_platform_interface: ^0.1.0 + +flutter: + fonts: + - family: Ubuntu + fonts: + - asset: assets/fonts/Ubuntu-L.ttf + weight: 300 + - asset: assets/fonts/Ubuntu-LI.ttf + weight: 300 + style: italic + - asset: assets/fonts/Ubuntu-R.ttf + weight: 400 + - asset: assets/fonts/Ubuntu-RI.ttf + weight: 400 + style: italic + - asset: assets/fonts/Ubuntu-M.ttf + weight: 500 + - asset: assets/fonts/Ubuntu-MI.ttf + weight: 500 + style: italic + - asset: assets/fonts/Ubuntu-B.ttf + weight: 700 + - asset: assets/fonts/Ubuntu-BI.ttf + weight: 700 + style: italic + - family: YaruIcons + fonts: + - asset: assets/yaru_icons.otf + +icon_font: + input_svg_dir: "assets/icons/" + output_font_file: "assets/yaru_icons.otf" + + output_class_file: "lib/src/yaru_icons.dart" + symlink_map_file: "assets/symlinks.json" + class_name: "YaruIcons" + package: yaru_widgets + format: false + naming_strategy: "snake" + + font_name: "YaruIcons" + normalize: false + ignore_shapes: false + + recursive: true + verbose: true diff --git a/test/widgets/goldens/yaru_back_button-hovered-dark.png b/test/widgets/goldens/yaru_back_button-hovered-dark.png index 1cfb029bd..54b5a166c 100644 Binary files a/test/widgets/goldens/yaru_back_button-hovered-dark.png and b/test/widgets/goldens/yaru_back_button-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_back_button-hovered-light.png b/test/widgets/goldens/yaru_back_button-hovered-light.png index e427e5f39..d74133d89 100644 Binary files a/test/widgets/goldens/yaru_back_button-hovered-light.png and b/test/widgets/goldens/yaru_back_button-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_back_button-normal-dark.png b/test/widgets/goldens/yaru_back_button-normal-dark.png index 773c51ecc..42a992710 100644 Binary files a/test/widgets/goldens/yaru_back_button-normal-dark.png and b/test/widgets/goldens/yaru_back_button-normal-dark.png differ diff --git a/test/widgets/goldens/yaru_back_button-normal-light.png b/test/widgets/goldens/yaru_back_button-normal-light.png index 7bfb12852..36d51bf4e 100644 Binary files a/test/widgets/goldens/yaru_back_button-normal-light.png and b/test/widgets/goldens/yaru_back_button-normal-light.png differ diff --git a/test/widgets/goldens/yaru_back_button-pressed-dark.png b/test/widgets/goldens/yaru_back_button-pressed-dark.png index c6467c8ac..e63393803 100644 Binary files a/test/widgets/goldens/yaru_back_button-pressed-dark.png and b/test/widgets/goldens/yaru_back_button-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_back_button-pressed-light.png b/test/widgets/goldens/yaru_back_button-pressed-light.png index 9b8e893cc..b2b698d53 100644 Binary files a/test/widgets/goldens/yaru_back_button-pressed-light.png and b/test/widgets/goldens/yaru_back_button-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-clip-dark.png b/test/widgets/goldens/yaru_border_container-clip-dark.png index a7f46013f..a296b10eb 100644 Binary files a/test/widgets/goldens/yaru_border_container-clip-dark.png and b/test/widgets/goldens/yaru_border_container-clip-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-clip-light.png b/test/widgets/goldens/yaru_border_container-clip-light.png index 57aaa0bc2..867ffd30a 100644 Binary files a/test/widgets/goldens/yaru_border_container-clip-light.png and b/test/widgets/goldens/yaru_border_container-clip-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-custom-dark.png b/test/widgets/goldens/yaru_border_container-custom-dark.png index 8e634cdc7..2932134e6 100644 Binary files a/test/widgets/goldens/yaru_border_container-custom-dark.png and b/test/widgets/goldens/yaru_border_container-custom-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-custom-light.png b/test/widgets/goldens/yaru_border_container-custom-light.png index 2e40c72ac..c10583712 100644 Binary files a/test/widgets/goldens/yaru_border_container-custom-light.png and b/test/widgets/goldens/yaru_border_container-custom-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-default-dark.png b/test/widgets/goldens/yaru_border_container-default-dark.png index 0de5d1398..5b4de284f 100644 Binary files a/test/widgets/goldens/yaru_border_container-default-dark.png and b/test/widgets/goldens/yaru_border_container-default-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-default-light.png b/test/widgets/goldens/yaru_border_container-default-light.png index d3b199b91..c0ef6c081 100644 Binary files a/test/widgets/goldens/yaru_border_container-default-light.png and b/test/widgets/goldens/yaru_border_container-default-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-margin-clip-dark.png b/test/widgets/goldens/yaru_border_container-margin-clip-dark.png index 3b7c7d38b..5f513a88c 100644 Binary files a/test/widgets/goldens/yaru_border_container-margin-clip-dark.png and b/test/widgets/goldens/yaru_border_container-margin-clip-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-margin-clip-light.png b/test/widgets/goldens/yaru_border_container-margin-clip-light.png index 39c297701..820202b66 100644 Binary files a/test/widgets/goldens/yaru_border_container-margin-clip-light.png and b/test/widgets/goldens/yaru_border_container-margin-clip-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-margin-dark.png b/test/widgets/goldens/yaru_border_container-margin-dark.png index 33c18f778..d8df5c08b 100644 Binary files a/test/widgets/goldens/yaru_border_container-margin-dark.png and b/test/widgets/goldens/yaru_border_container-margin-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-margin-light.png b/test/widgets/goldens/yaru_border_container-margin-light.png index 531e234a2..8e48f6cfc 100644 Binary files a/test/widgets/goldens/yaru_border_container-margin-light.png and b/test/widgets/goldens/yaru_border_container-margin-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-clip-dark.png b/test/widgets/goldens/yaru_border_container-padding-clip-dark.png index 46994fb1a..9a8e4300c 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-clip-dark.png and b/test/widgets/goldens/yaru_border_container-padding-clip-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-clip-light.png b/test/widgets/goldens/yaru_border_container-padding-clip-light.png index c264a5125..8a9165116 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-clip-light.png and b/test/widgets/goldens/yaru_border_container-padding-clip-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-dark.png b/test/widgets/goldens/yaru_border_container-padding-dark.png index 46994fb1a..9a8e4300c 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-dark.png and b/test/widgets/goldens/yaru_border_container-padding-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-light.png b/test/widgets/goldens/yaru_border_container-padding-light.png index c264a5125..8a9165116 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-light.png and b/test/widgets/goldens/yaru_border_container-padding-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-margin-clip-dark.png b/test/widgets/goldens/yaru_border_container-padding-margin-clip-dark.png index 4e84fdd5d..576021068 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-margin-clip-dark.png and b/test/widgets/goldens/yaru_border_container-padding-margin-clip-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-margin-clip-light.png b/test/widgets/goldens/yaru_border_container-padding-margin-clip-light.png index 71ac3a59c..b366adcb5 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-margin-clip-light.png and b/test/widgets/goldens/yaru_border_container-padding-margin-clip-light.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-margin-dark.png b/test/widgets/goldens/yaru_border_container-padding-margin-dark.png index 4e84fdd5d..576021068 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-margin-dark.png and b/test/widgets/goldens/yaru_border_container-padding-margin-dark.png differ diff --git a/test/widgets/goldens/yaru_border_container-padding-margin-light.png b/test/widgets/goldens/yaru_border_container-padding-margin-light.png index 71ac3a59c..b366adcb5 100644 Binary files a/test/widgets/goldens/yaru_border_container-padding-margin-light.png and b/test/widgets/goldens/yaru_border_container-padding-margin-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-dark.png b/test/widgets/goldens/yaru_check_button-checked-dark.png index c841959ee..609935036 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-dark.png and b/test/widgets/goldens/yaru_check_button-checked-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-disabled-dark.png b/test/widgets/goldens/yaru_check_button-checked-disabled-dark.png index 3a9ca9ea4..61b385a26 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-disabled-dark.png and b/test/widgets/goldens/yaru_check_button-checked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-disabled-light.png b/test/widgets/goldens/yaru_check_button-checked-disabled-light.png index f1b6f0139..9bf563027 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-disabled-light.png and b/test/widgets/goldens/yaru_check_button-checked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-focused-dark.png b/test/widgets/goldens/yaru_check_button-checked-focused-dark.png index 096a384bb..af28ed420 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-focused-dark.png and b/test/widgets/goldens/yaru_check_button-checked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-focused-light.png b/test/widgets/goldens/yaru_check_button-checked-focused-light.png index b6d37e39f..ec5924aa2 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-focused-light.png and b/test/widgets/goldens/yaru_check_button-checked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-hovered-dark.png b/test/widgets/goldens/yaru_check_button-checked-hovered-dark.png index 3bb3abc6e..dcb47ef4f 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-hovered-dark.png and b/test/widgets/goldens/yaru_check_button-checked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-hovered-light.png b/test/widgets/goldens/yaru_check_button-checked-hovered-light.png index 623214df9..b01ef4948 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-hovered-light.png and b/test/widgets/goldens/yaru_check_button-checked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-light.png b/test/widgets/goldens/yaru_check_button-checked-light.png index 95bfe2b14..f124b9864 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-light.png and b/test/widgets/goldens/yaru_check_button-checked-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-pressed-dark.png b/test/widgets/goldens/yaru_check_button-checked-pressed-dark.png index 0b3c0c60b..861396350 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-pressed-dark.png and b/test/widgets/goldens/yaru_check_button-checked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-checked-pressed-light.png b/test/widgets/goldens/yaru_check_button-checked-pressed-light.png index 14d1cb5f9..ff190bd29 100644 Binary files a/test/widgets/goldens/yaru_check_button-checked-pressed-light.png and b/test/widgets/goldens/yaru_check_button-checked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-dark.png b/test/widgets/goldens/yaru_check_button-tristate-dark.png index 18566ac6a..78de0966a 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-dark.png and b/test/widgets/goldens/yaru_check_button-tristate-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-disabled-dark.png b/test/widgets/goldens/yaru_check_button-tristate-disabled-dark.png index 42773ad20..8ac75fac2 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-disabled-dark.png and b/test/widgets/goldens/yaru_check_button-tristate-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-disabled-light.png b/test/widgets/goldens/yaru_check_button-tristate-disabled-light.png index 124059b2d..ef0decae0 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-disabled-light.png and b/test/widgets/goldens/yaru_check_button-tristate-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-focused-dark.png b/test/widgets/goldens/yaru_check_button-tristate-focused-dark.png index 6543410cd..bd8312c89 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-focused-dark.png and b/test/widgets/goldens/yaru_check_button-tristate-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-focused-light.png b/test/widgets/goldens/yaru_check_button-tristate-focused-light.png index 474961279..9d410181f 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-focused-light.png and b/test/widgets/goldens/yaru_check_button-tristate-focused-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-hovered-dark.png b/test/widgets/goldens/yaru_check_button-tristate-hovered-dark.png index 71bcde523..5f5665526 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-hovered-dark.png and b/test/widgets/goldens/yaru_check_button-tristate-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-hovered-light.png b/test/widgets/goldens/yaru_check_button-tristate-hovered-light.png index f4c7e6413..d2a7dc747 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-hovered-light.png and b/test/widgets/goldens/yaru_check_button-tristate-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-light.png b/test/widgets/goldens/yaru_check_button-tristate-light.png index 2dd4493e5..c6301dbf6 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-light.png and b/test/widgets/goldens/yaru_check_button-tristate-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-pressed-dark.png b/test/widgets/goldens/yaru_check_button-tristate-pressed-dark.png index 118c26a43..4f1b4d0e9 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-pressed-dark.png and b/test/widgets/goldens/yaru_check_button-tristate-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-tristate-pressed-light.png b/test/widgets/goldens/yaru_check_button-tristate-pressed-light.png index 918fac3d4..01d0c8441 100644 Binary files a/test/widgets/goldens/yaru_check_button-tristate-pressed-light.png and b/test/widgets/goldens/yaru_check_button-tristate-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-unchecked-dark.png b/test/widgets/goldens/yaru_check_button-unchecked-dark.png index 7122b8cbf..929bf904a 100644 Binary files a/test/widgets/goldens/yaru_check_button-unchecked-dark.png and b/test/widgets/goldens/yaru_check_button-unchecked-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-unchecked-light.png b/test/widgets/goldens/yaru_check_button-unchecked-light.png index 023cb0bc2..508704f6a 100644 Binary files a/test/widgets/goldens/yaru_check_button-unchecked-light.png and b/test/widgets/goldens/yaru_check_button-unchecked-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-disabled-dark.png b/test/widgets/goldens/yaru_check_button-unckecked-disabled-dark.png index beffa4139..ad1b3dd5a 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-disabled-dark.png and b/test/widgets/goldens/yaru_check_button-unckecked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-disabled-light.png b/test/widgets/goldens/yaru_check_button-unckecked-disabled-light.png index 2b3daaddc..229d165d0 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-disabled-light.png and b/test/widgets/goldens/yaru_check_button-unckecked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-focused-dark.png b/test/widgets/goldens/yaru_check_button-unckecked-focused-dark.png index 499efa723..20ad5ae7f 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-focused-dark.png and b/test/widgets/goldens/yaru_check_button-unckecked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-focused-light.png b/test/widgets/goldens/yaru_check_button-unckecked-focused-light.png index 41257ee16..22a671402 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-focused-light.png and b/test/widgets/goldens/yaru_check_button-unckecked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-hovered-dark.png b/test/widgets/goldens/yaru_check_button-unckecked-hovered-dark.png index 5bd3a85bb..f7eb0bcee 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-hovered-dark.png and b/test/widgets/goldens/yaru_check_button-unckecked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-hovered-light.png b/test/widgets/goldens/yaru_check_button-unckecked-hovered-light.png index 9cc41a3f7..4f4fc8733 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-hovered-light.png and b/test/widgets/goldens/yaru_check_button-unckecked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-pressed-dark.png b/test/widgets/goldens/yaru_check_button-unckecked-pressed-dark.png index 8033c61df..ed349838f 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-pressed-dark.png and b/test/widgets/goldens/yaru_check_button-unckecked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_check_button-unckecked-pressed-light.png b/test/widgets/goldens/yaru_check_button-unckecked-pressed-light.png index dd7da144c..2a60980f4 100644 Binary files a/test/widgets/goldens/yaru_check_button-unckecked-pressed-light.png and b/test/widgets/goldens/yaru_check_button-unckecked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-dark.png index b0ed60564..4642e9b86 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-dark.png index 52387b0f0..06ca0dccd 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-light.png index 7ef415d4c..e74ba27d5 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-dark.png index 8910b4c77..5b4b1a328 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-light.png index 8cef18423..5797aa75f 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-dark.png index 18d7c8ae7..88c46b1dd 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-light.png index 63ac9b5c5..132a41ca9 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-light.png index 5848eff20..2af82e9af 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-dark.png index 6470a58e4..1b70dcf23 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-light.png index ae02999d5..8758fda7a 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-checked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-dark.png index d723c4b6a..4d736a7c3 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-dark.png index ae95f9a59..0a2787fa1 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-light.png index c5f59f2f5..dcbd88478 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-dark.png index 3df06fcda..114c9c0c8 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-light.png index b4a0b4b2a..b2fd1b861 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-focused-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-dark.png index 01c37d468..284073903 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-light.png index 36e6c7bf5..ae7721b8f 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-light.png index 0d43a2a44..6620848b2 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-dark.png index a0265eb35..33f443c18 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-light.png index 5909ed40d..f8c22b76c 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-tristate-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-dark.png index e11b84131..8a5d13f7e 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-light.png index aab762481..9720d52fe 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unchecked-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-dark.png index 7078ec855..fa60b3edd 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-light.png index 77e41f0ed..7648f4a8a 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-dark.png index 16073358b..af1902bbd 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-light.png index a57860444..7bc688241 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-dark.png index 271e1da03..b69e789da 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-light.png index 039514e6a..7c28a99bc 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-dark.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-dark.png index 0b2fedc20..3f4597515 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-dark.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-light.png b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-light.png index cbcd17425..baf95246c 100644 Binary files a/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-light.png and b/test/widgets/goldens/yaru_checkbox_list_tile-unckecked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_close_button-hovered-dark.png b/test/widgets/goldens/yaru_close_button-hovered-dark.png index ffd5464ad..2b682a0be 100644 Binary files a/test/widgets/goldens/yaru_close_button-hovered-dark.png and b/test/widgets/goldens/yaru_close_button-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_close_button-hovered-light.png b/test/widgets/goldens/yaru_close_button-hovered-light.png index a6479ce80..2ddbc29b6 100644 Binary files a/test/widgets/goldens/yaru_close_button-hovered-light.png and b/test/widgets/goldens/yaru_close_button-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_close_button-normal-dark.png b/test/widgets/goldens/yaru_close_button-normal-dark.png index 407a44508..42a992710 100644 Binary files a/test/widgets/goldens/yaru_close_button-normal-dark.png and b/test/widgets/goldens/yaru_close_button-normal-dark.png differ diff --git a/test/widgets/goldens/yaru_close_button-normal-light.png b/test/widgets/goldens/yaru_close_button-normal-light.png index 908f4f9a1..36d51bf4e 100644 Binary files a/test/widgets/goldens/yaru_close_button-normal-light.png and b/test/widgets/goldens/yaru_close_button-normal-light.png differ diff --git a/test/widgets/goldens/yaru_close_button-pressed-dark.png b/test/widgets/goldens/yaru_close_button-pressed-dark.png index bce758ba8..25dc41575 100644 Binary files a/test/widgets/goldens/yaru_close_button-pressed-dark.png and b/test/widgets/goldens/yaru_close_button-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_close_button-pressed-light.png b/test/widgets/goldens/yaru_close_button-pressed-light.png index ee1ca5966..6c5021292 100644 Binary files a/test/widgets/goldens/yaru_close_button-pressed-light.png and b/test/widgets/goldens/yaru_close_button-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-disabled-dark.png b/test/widgets/goldens/yaru_icon_button-disabled-dark.png index cb9c30ac2..e02733761 100644 Binary files a/test/widgets/goldens/yaru_icon_button-disabled-dark.png and b/test/widgets/goldens/yaru_icon_button-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-disabled-light.png b/test/widgets/goldens/yaru_icon_button-disabled-light.png index 812e725f2..b3e9db5f5 100644 Binary files a/test/widgets/goldens/yaru_icon_button-disabled-light.png and b/test/widgets/goldens/yaru_icon_button-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-focused-dark.png b/test/widgets/goldens/yaru_icon_button-focused-dark.png index 1e180b315..2b682a0be 100644 Binary files a/test/widgets/goldens/yaru_icon_button-focused-dark.png and b/test/widgets/goldens/yaru_icon_button-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-focused-light.png b/test/widgets/goldens/yaru_icon_button-focused-light.png index 13a642d33..2ddbc29b6 100644 Binary files a/test/widgets/goldens/yaru_icon_button-focused-light.png and b/test/widgets/goldens/yaru_icon_button-focused-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-hovered-dark.png b/test/widgets/goldens/yaru_icon_button-hovered-dark.png index 1e180b315..2b682a0be 100644 Binary files a/test/widgets/goldens/yaru_icon_button-hovered-dark.png and b/test/widgets/goldens/yaru_icon_button-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-hovered-light.png b/test/widgets/goldens/yaru_icon_button-hovered-light.png index 13a642d33..2ddbc29b6 100644 Binary files a/test/widgets/goldens/yaru_icon_button-hovered-light.png and b/test/widgets/goldens/yaru_icon_button-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-normal-dark.png b/test/widgets/goldens/yaru_icon_button-normal-dark.png index 1b673881c..42a992710 100644 Binary files a/test/widgets/goldens/yaru_icon_button-normal-dark.png and b/test/widgets/goldens/yaru_icon_button-normal-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-normal-light.png b/test/widgets/goldens/yaru_icon_button-normal-light.png index db5408630..36d51bf4e 100644 Binary files a/test/widgets/goldens/yaru_icon_button-normal-light.png and b/test/widgets/goldens/yaru_icon_button-normal-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-pressed-dark.png b/test/widgets/goldens/yaru_icon_button-pressed-dark.png index 1d50126a3..25dc41575 100644 Binary files a/test/widgets/goldens/yaru_icon_button-pressed-dark.png and b/test/widgets/goldens/yaru_icon_button-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-pressed-light.png b/test/widgets/goldens/yaru_icon_button-pressed-light.png index 6283e3759..6c5021292 100644 Binary files a/test/widgets/goldens/yaru_icon_button-pressed-light.png and b/test/widgets/goldens/yaru_icon_button-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-dark.png b/test/widgets/goldens/yaru_icon_button-selected-dark.png index 23441f46b..a9b8bb09b 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-dark.png and b/test/widgets/goldens/yaru_icon_button-selected-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-disabled-dark.png b/test/widgets/goldens/yaru_icon_button-selected-disabled-dark.png index fe3635a74..65c514e3d 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-disabled-dark.png and b/test/widgets/goldens/yaru_icon_button-selected-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-disabled-light.png b/test/widgets/goldens/yaru_icon_button-selected-disabled-light.png index 3a6265014..5ca65b5c1 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-disabled-light.png and b/test/widgets/goldens/yaru_icon_button-selected-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-focused-dark.png b/test/widgets/goldens/yaru_icon_button-selected-focused-dark.png index 75192666b..6fcfd0225 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-focused-dark.png and b/test/widgets/goldens/yaru_icon_button-selected-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-focused-light.png b/test/widgets/goldens/yaru_icon_button-selected-focused-light.png index d98a005e1..4f41f2d0f 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-focused-light.png and b/test/widgets/goldens/yaru_icon_button-selected-focused-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-hovered-dark.png b/test/widgets/goldens/yaru_icon_button-selected-hovered-dark.png index 9f00150f1..e9fece402 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-hovered-dark.png and b/test/widgets/goldens/yaru_icon_button-selected-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-hovered-light.png b/test/widgets/goldens/yaru_icon_button-selected-hovered-light.png index 39a33e058..cfbcdd507 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-hovered-light.png and b/test/widgets/goldens/yaru_icon_button-selected-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-light.png b/test/widgets/goldens/yaru_icon_button-selected-light.png index dc9914e42..740dc7572 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-light.png and b/test/widgets/goldens/yaru_icon_button-selected-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-pressed-dark.png b/test/widgets/goldens/yaru_icon_button-selected-pressed-dark.png index 79e019073..50489f091 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-pressed-dark.png and b/test/widgets/goldens/yaru_icon_button-selected-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-selected-pressed-light.png b/test/widgets/goldens/yaru_icon_button-selected-pressed-light.png index 8159cb585..efb025679 100644 Binary files a/test/widgets/goldens/yaru_icon_button-selected-pressed-light.png and b/test/widgets/goldens/yaru_icon_button-selected-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-dark.png b/test/widgets/goldens/yaru_icon_button-unselected-dark.png index 1b673881c..42a992710 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-dark.png and b/test/widgets/goldens/yaru_icon_button-unselected-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-disabled-dark.png b/test/widgets/goldens/yaru_icon_button-unselected-disabled-dark.png index cb9c30ac2..e02733761 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-disabled-dark.png and b/test/widgets/goldens/yaru_icon_button-unselected-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-disabled-light.png b/test/widgets/goldens/yaru_icon_button-unselected-disabled-light.png index 812e725f2..b3e9db5f5 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-disabled-light.png and b/test/widgets/goldens/yaru_icon_button-unselected-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-focused-dark.png b/test/widgets/goldens/yaru_icon_button-unselected-focused-dark.png index 1e180b315..2b682a0be 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-focused-dark.png and b/test/widgets/goldens/yaru_icon_button-unselected-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-focused-light.png b/test/widgets/goldens/yaru_icon_button-unselected-focused-light.png index 13a642d33..2ddbc29b6 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-focused-light.png and b/test/widgets/goldens/yaru_icon_button-unselected-focused-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-hovered-dark.png b/test/widgets/goldens/yaru_icon_button-unselected-hovered-dark.png index 1e180b315..2b682a0be 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-hovered-dark.png and b/test/widgets/goldens/yaru_icon_button-unselected-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-hovered-light.png b/test/widgets/goldens/yaru_icon_button-unselected-hovered-light.png index 13a642d33..2ddbc29b6 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-hovered-light.png and b/test/widgets/goldens/yaru_icon_button-unselected-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-light.png b/test/widgets/goldens/yaru_icon_button-unselected-light.png index db5408630..36d51bf4e 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-light.png and b/test/widgets/goldens/yaru_icon_button-unselected-light.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-pressed-dark.png b/test/widgets/goldens/yaru_icon_button-unselected-pressed-dark.png index 1d50126a3..25dc41575 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-pressed-dark.png and b/test/widgets/goldens/yaru_icon_button-unselected-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_icon_button-unselected-pressed-light.png b/test/widgets/goldens/yaru_icon_button-unselected-pressed-light.png index 6283e3759..6c5021292 100644 Binary files a/test/widgets/goldens/yaru_icon_button-unselected-pressed-light.png and b/test/widgets/goldens/yaru_icon_button-unselected-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-landscape-dark.png b/test/widgets/goldens/yaru_master_detail-page-landscape-dark.png index cea4a773e..b07b6565f 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-landscape-dark.png and b/test/widgets/goldens/yaru_master_detail-page-landscape-dark.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-landscape-light.png b/test/widgets/goldens/yaru_master_detail-page-landscape-light.png index 2761f2684..ec8eb6a35 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-landscape-light.png and b/test/widgets/goldens/yaru_master_detail-page-landscape-light.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-dark.png b/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-dark.png index c80452bdf..e9affea9c 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-dark.png and b/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-dark.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-light.png b/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-light.png index 274055f52..8dfad08bf 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-light.png and b/test/widgets/goldens/yaru_master_detail-page-landscape-spacer-light.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-dark.png b/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-dark.png index 32a043f50..69259d0a5 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-dark.png and b/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-dark.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-light.png b/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-light.png index 7bf0290ec..b0b4b02c3 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-light.png and b/test/widgets/goldens/yaru_master_detail-page-landscape-subtitle-light.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-portrait-dark.png b/test/widgets/goldens/yaru_master_detail-page-portrait-dark.png index 732e8ee07..4fc060804 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-portrait-dark.png and b/test/widgets/goldens/yaru_master_detail-page-portrait-dark.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-portrait-light.png b/test/widgets/goldens/yaru_master_detail-page-portrait-light.png index f20908b4d..d928bd8cf 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-portrait-light.png and b/test/widgets/goldens/yaru_master_detail-page-portrait-light.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-dark.png b/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-dark.png index 252b51a17..de3ce7e20 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-dark.png and b/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-dark.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-light.png b/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-light.png index 8dcfcddbf..e9bbfea3c 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-light.png and b/test/widgets/goldens/yaru_master_detail-page-portrait-spacer-light.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-dark.png b/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-dark.png index c9dce7ef1..bd92ede35 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-dark.png and b/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-dark.png differ diff --git a/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-light.png b/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-light.png index fa6549e29..d539ece68 100644 Binary files a/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-light.png and b/test/widgets/goldens/yaru_master_detail-page-portrait-subtitle-light.png differ diff --git a/test/widgets/goldens/yaru_navigation_page-compact-dark.png b/test/widgets/goldens/yaru_navigation_page-compact-dark.png index d9303f67f..094e483b8 100644 Binary files a/test/widgets/goldens/yaru_navigation_page-compact-dark.png and b/test/widgets/goldens/yaru_navigation_page-compact-dark.png differ diff --git a/test/widgets/goldens/yaru_navigation_page-compact-light.png b/test/widgets/goldens/yaru_navigation_page-compact-light.png index 6a860c1c1..c950daa44 100644 Binary files a/test/widgets/goldens/yaru_navigation_page-compact-light.png and b/test/widgets/goldens/yaru_navigation_page-compact-light.png differ diff --git a/test/widgets/goldens/yaru_navigation_page-labelled-dark.png b/test/widgets/goldens/yaru_navigation_page-labelled-dark.png index 7213625f4..f9ff6aa38 100644 Binary files a/test/widgets/goldens/yaru_navigation_page-labelled-dark.png and b/test/widgets/goldens/yaru_navigation_page-labelled-dark.png differ diff --git a/test/widgets/goldens/yaru_navigation_page-labelled-extended-dark.png b/test/widgets/goldens/yaru_navigation_page-labelled-extended-dark.png index a67eb0f89..1cb9f0bd1 100644 Binary files a/test/widgets/goldens/yaru_navigation_page-labelled-extended-dark.png and b/test/widgets/goldens/yaru_navigation_page-labelled-extended-dark.png differ diff --git a/test/widgets/goldens/yaru_navigation_page-labelled-extended-light.png b/test/widgets/goldens/yaru_navigation_page-labelled-extended-light.png index e5e9c89ca..a2326ef62 100644 Binary files a/test/widgets/goldens/yaru_navigation_page-labelled-extended-light.png and b/test/widgets/goldens/yaru_navigation_page-labelled-extended-light.png differ diff --git a/test/widgets/goldens/yaru_navigation_page-labelled-light.png b/test/widgets/goldens/yaru_navigation_page-labelled-light.png index d3084a96a..c1adeb373 100644 Binary files a/test/widgets/goldens/yaru_navigation_page-labelled-light.png and b/test/widgets/goldens/yaru_navigation_page-labelled-light.png differ diff --git a/test/widgets/goldens/yaru_option_button-disabled-dark.png b/test/widgets/goldens/yaru_option_button-disabled-dark.png index fc750d78e..30f7b7a3d 100644 Binary files a/test/widgets/goldens/yaru_option_button-disabled-dark.png and b/test/widgets/goldens/yaru_option_button-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_option_button-disabled-light.png b/test/widgets/goldens/yaru_option_button-disabled-light.png index 628de5d80..74aeed51c 100644 Binary files a/test/widgets/goldens/yaru_option_button-disabled-light.png and b/test/widgets/goldens/yaru_option_button-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_option_button-focused-dark.png b/test/widgets/goldens/yaru_option_button-focused-dark.png index 4194bb52b..2a439e7cf 100644 Binary files a/test/widgets/goldens/yaru_option_button-focused-dark.png and b/test/widgets/goldens/yaru_option_button-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_option_button-focused-light.png b/test/widgets/goldens/yaru_option_button-focused-light.png index c3afec1a0..3321e994c 100644 Binary files a/test/widgets/goldens/yaru_option_button-focused-light.png and b/test/widgets/goldens/yaru_option_button-focused-light.png differ diff --git a/test/widgets/goldens/yaru_option_button-hovered-dark.png b/test/widgets/goldens/yaru_option_button-hovered-dark.png index e3ff6adf0..45da97137 100644 Binary files a/test/widgets/goldens/yaru_option_button-hovered-dark.png and b/test/widgets/goldens/yaru_option_button-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_option_button-hovered-light.png b/test/widgets/goldens/yaru_option_button-hovered-light.png index a86642779..7e152fd16 100644 Binary files a/test/widgets/goldens/yaru_option_button-hovered-light.png and b/test/widgets/goldens/yaru_option_button-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_option_button-normal-dark.png b/test/widgets/goldens/yaru_option_button-normal-dark.png index ee8ccaf7e..788a0fcd3 100644 Binary files a/test/widgets/goldens/yaru_option_button-normal-dark.png and b/test/widgets/goldens/yaru_option_button-normal-dark.png differ diff --git a/test/widgets/goldens/yaru_option_button-normal-light.png b/test/widgets/goldens/yaru_option_button-normal-light.png index 5ded3e1ce..c05d90c62 100644 Binary files a/test/widgets/goldens/yaru_option_button-normal-light.png and b/test/widgets/goldens/yaru_option_button-normal-light.png differ diff --git a/test/widgets/goldens/yaru_option_button-pressed-dark.png b/test/widgets/goldens/yaru_option_button-pressed-dark.png index d1c8e35a4..e68745c9c 100644 Binary files a/test/widgets/goldens/yaru_option_button-pressed-dark.png and b/test/widgets/goldens/yaru_option_button-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_option_button-pressed-light.png b/test/widgets/goldens/yaru_option_button-pressed-light.png index 020337eb2..ced653114 100644 Binary files a/test/widgets/goldens/yaru_option_button-pressed-light.png and b/test/widgets/goldens/yaru_option_button-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_button-disabled-dark.png b/test/widgets/goldens/yaru_popup_menu_button-disabled-dark.png index 0b885713a..15685d785 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_button-disabled-dark.png and b/test/widgets/goldens/yaru_popup_menu_button-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_button-disabled-light.png b/test/widgets/goldens/yaru_popup_menu_button-disabled-light.png index c386130ed..d4fc66847 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_button-disabled-light.png and b/test/widgets/goldens/yaru_popup_menu_button-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_button-hovered-dark.png b/test/widgets/goldens/yaru_popup_menu_button-hovered-dark.png index f4ad3fbe9..3a58c4509 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_button-hovered-dark.png and b/test/widgets/goldens/yaru_popup_menu_button-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_button-hovered-light.png b/test/widgets/goldens/yaru_popup_menu_button-hovered-light.png index b673f1c9f..7878c088b 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_button-hovered-light.png and b/test/widgets/goldens/yaru_popup_menu_button-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_button-normal-dark.png b/test/widgets/goldens/yaru_popup_menu_button-normal-dark.png index 19eef696b..591905ad1 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_button-normal-dark.png and b/test/widgets/goldens/yaru_popup_menu_button-normal-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_button-normal-light.png b/test/widgets/goldens/yaru_popup_menu_button-normal-light.png index e5c6de030..0595d57c1 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_button-normal-light.png and b/test/widgets/goldens/yaru_popup_menu_button-normal-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-dark.png b/test/widgets/goldens/yaru_popup_menu_item-checked-dark.png index 196796bfa..5d96066ab 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-dark.png b/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-dark.png index dcd6e0c9d..207df055f 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-light.png b/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-light.png index b7c5b631f..3a0932fe4 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-light.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-dark.png b/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-dark.png index 6cb73ab26..8098006c5 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-light.png b/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-light.png index fd0b5f704..59edcfaf2 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-light.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-light.png b/test/widgets/goldens/yaru_popup_menu_item-checked-light.png index cec9b5588..882011e9b 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-light.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-dark.png b/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-dark.png index f5dc58858..3db7826ac 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-light.png b/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-light.png index 76ea2495f..94966bd3c 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-light.png and b/test/widgets/goldens/yaru_popup_menu_item-checked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-dark.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-dark.png index 66c13e01c..6a2f79913 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-dark.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-dark.png index cdb088cdd..6766d3dbc 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-light.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-light.png index f3e880a7f..1521e1061 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-light.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-dark.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-dark.png index 73ccef77f..009801cbe 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-light.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-light.png index 935f8822c..14d4f63d8 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-light.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-light.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-light.png index 3ac1e59b2..e2e5b5952 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-light.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-light.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-dark.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-dark.png index 1c96ab1c1..bba11efc4 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-dark.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-light.png b/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-light.png index 7baf3e04c..192115a59 100644 Binary files a/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-light.png and b/test/widgets/goldens/yaru_popup_menu_item-unchecked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-dark.png b/test/widgets/goldens/yaru_radio_button-checked-dark.png index c165412a6..ba50f4b25 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-dark.png and b/test/widgets/goldens/yaru_radio_button-checked-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-disabled-dark.png b/test/widgets/goldens/yaru_radio_button-checked-disabled-dark.png index d3b3638fd..86fc992c2 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-disabled-dark.png and b/test/widgets/goldens/yaru_radio_button-checked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-disabled-light.png b/test/widgets/goldens/yaru_radio_button-checked-disabled-light.png index bf5360fa0..0c7a094ac 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-disabled-light.png and b/test/widgets/goldens/yaru_radio_button-checked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-focused-dark.png b/test/widgets/goldens/yaru_radio_button-checked-focused-dark.png index 77c0ec8f8..ae218ab07 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-focused-dark.png and b/test/widgets/goldens/yaru_radio_button-checked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-focused-light.png b/test/widgets/goldens/yaru_radio_button-checked-focused-light.png index 7a80bef38..e5253c883 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-focused-light.png and b/test/widgets/goldens/yaru_radio_button-checked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-hovered-dark.png b/test/widgets/goldens/yaru_radio_button-checked-hovered-dark.png index 6d3b82d32..bad7fb305 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-hovered-dark.png and b/test/widgets/goldens/yaru_radio_button-checked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-hovered-light.png b/test/widgets/goldens/yaru_radio_button-checked-hovered-light.png index 57f6a9f5a..5a08918c2 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-hovered-light.png and b/test/widgets/goldens/yaru_radio_button-checked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-light.png b/test/widgets/goldens/yaru_radio_button-checked-light.png index 3c3d4e936..3a2412c57 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-light.png and b/test/widgets/goldens/yaru_radio_button-checked-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-pressed-dark.png b/test/widgets/goldens/yaru_radio_button-checked-pressed-dark.png index 89048e652..ebd018a0f 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-pressed-dark.png and b/test/widgets/goldens/yaru_radio_button-checked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-checked-pressed-light.png b/test/widgets/goldens/yaru_radio_button-checked-pressed-light.png index 86ae03a39..267dbc7da 100644 Binary files a/test/widgets/goldens/yaru_radio_button-checked-pressed-light.png and b/test/widgets/goldens/yaru_radio_button-checked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unchecked-dark.png b/test/widgets/goldens/yaru_radio_button-unchecked-dark.png index 54bd2c7f3..c00819ad5 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unchecked-dark.png and b/test/widgets/goldens/yaru_radio_button-unchecked-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unchecked-light.png b/test/widgets/goldens/yaru_radio_button-unchecked-light.png index 6b2fd4c9a..502027e14 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unchecked-light.png and b/test/widgets/goldens/yaru_radio_button-unchecked-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-disabled-dark.png b/test/widgets/goldens/yaru_radio_button-unckecked-disabled-dark.png index 35640aca8..7770b90cc 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-disabled-dark.png and b/test/widgets/goldens/yaru_radio_button-unckecked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-disabled-light.png b/test/widgets/goldens/yaru_radio_button-unckecked-disabled-light.png index 164245f25..77d0e7bbf 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-disabled-light.png and b/test/widgets/goldens/yaru_radio_button-unckecked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-focused-dark.png b/test/widgets/goldens/yaru_radio_button-unckecked-focused-dark.png index 42d073025..6ebed020c 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-focused-dark.png and b/test/widgets/goldens/yaru_radio_button-unckecked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-focused-light.png b/test/widgets/goldens/yaru_radio_button-unckecked-focused-light.png index c6d1a7504..bbe94b18c 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-focused-light.png and b/test/widgets/goldens/yaru_radio_button-unckecked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-hovered-dark.png b/test/widgets/goldens/yaru_radio_button-unckecked-hovered-dark.png index 41fc5d088..53e5ec981 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-hovered-dark.png and b/test/widgets/goldens/yaru_radio_button-unckecked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-hovered-light.png b/test/widgets/goldens/yaru_radio_button-unckecked-hovered-light.png index 02bb02841..d39589eed 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-hovered-light.png and b/test/widgets/goldens/yaru_radio_button-unckecked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-pressed-dark.png b/test/widgets/goldens/yaru_radio_button-unckecked-pressed-dark.png index 7d3243f17..add4f212c 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-pressed-dark.png and b/test/widgets/goldens/yaru_radio_button-unckecked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_button-unckecked-pressed-light.png b/test/widgets/goldens/yaru_radio_button-unckecked-pressed-light.png index cd92a8f4b..f8fb7b13e 100644 Binary files a/test/widgets/goldens/yaru_radio_button-unckecked-pressed-light.png and b/test/widgets/goldens/yaru_radio_button-unckecked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-dark.png b/test/widgets/goldens/yaru_radio_list_tile-checked-dark.png index 80ec9147c..1589a6bf7 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-dark.png b/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-dark.png index d0fcc772c..086219e6e 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-light.png b/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-light.png index 89f9de820..fd5963cfb 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-light.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-focused-dark.png b/test/widgets/goldens/yaru_radio_list_tile-checked-focused-dark.png index fc48909c9..a6fecab0f 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-focused-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-focused-light.png b/test/widgets/goldens/yaru_radio_list_tile-checked-focused-light.png index c191efcce..89ee39d18 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-focused-light.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-dark.png b/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-dark.png index 30452e4be..50d641a2f 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-light.png b/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-light.png index 25f7426cb..340c7caa1 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-light.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-light.png b/test/widgets/goldens/yaru_radio_list_tile-checked-light.png index d2856c527..2cbd6a340 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-light.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-dark.png b/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-dark.png index 9625499d5..be8af6f9b 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-light.png b/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-light.png index 7f11f76bd..78c774993 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-light.png and b/test/widgets/goldens/yaru_radio_list_tile-checked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unchecked-dark.png b/test/widgets/goldens/yaru_radio_list_tile-unchecked-dark.png index 377d0a0ae..a55fe4b41 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unchecked-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-unchecked-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unchecked-light.png b/test/widgets/goldens/yaru_radio_list_tile-unchecked-light.png index 0c4f1076c..a4fe9487c 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unchecked-light.png and b/test/widgets/goldens/yaru_radio_list_tile-unchecked-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-dark.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-dark.png index f08f714d4..1cc58bb5d 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-light.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-light.png index 503012e0c..e2600c0ab 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-light.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-dark.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-dark.png index 4d17fd6bd..a1c05dc80 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-light.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-light.png index 3fd51ed34..1b7ee0c65 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-light.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-focused-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-dark.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-dark.png index 0e04a3173..9ef33cc69 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-light.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-light.png index c3c2cfa19..2cd85b02c 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-light.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-dark.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-dark.png index 833d7aaee..280588322 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-dark.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-light.png b/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-light.png index d566cf2fc..fd2ccf302 100644 Binary files a/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-light.png and b/test/widgets/goldens/yaru_radio_list_tile-unckecked-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-dark.png b/test/widgets/goldens/yaru_switch_button-off-dark.png index 50a24d2ed..566883a8b 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-dark.png and b/test/widgets/goldens/yaru_switch_button-off-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-disabled-dark.png b/test/widgets/goldens/yaru_switch_button-off-disabled-dark.png index 31a43dbb3..4b054485c 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-disabled-dark.png and b/test/widgets/goldens/yaru_switch_button-off-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-disabled-light.png b/test/widgets/goldens/yaru_switch_button-off-disabled-light.png index 669c154c0..136f6ac88 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-disabled-light.png and b/test/widgets/goldens/yaru_switch_button-off-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-focused-dark.png b/test/widgets/goldens/yaru_switch_button-off-focused-dark.png index 477727a90..dcef2ec85 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-focused-dark.png and b/test/widgets/goldens/yaru_switch_button-off-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-focused-light.png b/test/widgets/goldens/yaru_switch_button-off-focused-light.png index aa33fd35d..e95d920be 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-focused-light.png and b/test/widgets/goldens/yaru_switch_button-off-focused-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-hovered-dark.png b/test/widgets/goldens/yaru_switch_button-off-hovered-dark.png index c074342e8..d689cbf48 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-hovered-dark.png and b/test/widgets/goldens/yaru_switch_button-off-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-hovered-light.png b/test/widgets/goldens/yaru_switch_button-off-hovered-light.png index 96b701c9f..1fca544e9 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-hovered-light.png and b/test/widgets/goldens/yaru_switch_button-off-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-light.png b/test/widgets/goldens/yaru_switch_button-off-light.png index b12692269..c895979ea 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-light.png and b/test/widgets/goldens/yaru_switch_button-off-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-pressed-dark.png b/test/widgets/goldens/yaru_switch_button-off-pressed-dark.png index 0b72bf7ea..161db9d90 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-pressed-dark.png and b/test/widgets/goldens/yaru_switch_button-off-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-off-pressed-light.png b/test/widgets/goldens/yaru_switch_button-off-pressed-light.png index 194668718..6a753aa5b 100644 Binary files a/test/widgets/goldens/yaru_switch_button-off-pressed-light.png and b/test/widgets/goldens/yaru_switch_button-off-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-dark.png b/test/widgets/goldens/yaru_switch_button-on-dark.png index 17b46faf9..20fe0c56c 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-dark.png and b/test/widgets/goldens/yaru_switch_button-on-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-disabled-dark.png b/test/widgets/goldens/yaru_switch_button-on-disabled-dark.png index ba85ff2a9..61d7b34bb 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-disabled-dark.png and b/test/widgets/goldens/yaru_switch_button-on-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-disabled-light.png b/test/widgets/goldens/yaru_switch_button-on-disabled-light.png index 32d7695e1..227a8d549 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-disabled-light.png and b/test/widgets/goldens/yaru_switch_button-on-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-focused-dark.png b/test/widgets/goldens/yaru_switch_button-on-focused-dark.png index d095e9bd8..6d4d97ab6 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-focused-dark.png and b/test/widgets/goldens/yaru_switch_button-on-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-focused-light.png b/test/widgets/goldens/yaru_switch_button-on-focused-light.png index 03a19be64..605b8af65 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-focused-light.png and b/test/widgets/goldens/yaru_switch_button-on-focused-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-hovered-dark.png b/test/widgets/goldens/yaru_switch_button-on-hovered-dark.png index b666173c5..3760e6fe8 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-hovered-dark.png and b/test/widgets/goldens/yaru_switch_button-on-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-hovered-light.png b/test/widgets/goldens/yaru_switch_button-on-hovered-light.png index 1300e4624..0ccfad868 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-hovered-light.png and b/test/widgets/goldens/yaru_switch_button-on-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-light.png b/test/widgets/goldens/yaru_switch_button-on-light.png index 63bef3395..fa9d8c235 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-light.png and b/test/widgets/goldens/yaru_switch_button-on-light.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-pressed-dark.png b/test/widgets/goldens/yaru_switch_button-on-pressed-dark.png index 04aded1cf..247de63ef 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-pressed-dark.png and b/test/widgets/goldens/yaru_switch_button-on-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_button-on-pressed-light.png b/test/widgets/goldens/yaru_switch_button-on-pressed-light.png index 667a91cae..aa011883c 100644 Binary files a/test/widgets/goldens/yaru_switch_button-on-pressed-light.png and b/test/widgets/goldens/yaru_switch_button-on-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-dark.png b/test/widgets/goldens/yaru_switch_list_tile-off-dark.png index 63b250f65..de306db6f 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-off-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-disabled-dark.png b/test/widgets/goldens/yaru_switch_list_tile-off-disabled-dark.png index bab7909c0..784972d2f 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-disabled-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-off-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-disabled-light.png b/test/widgets/goldens/yaru_switch_list_tile-off-disabled-light.png index fd345169f..d13dc7bb9 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-disabled-light.png and b/test/widgets/goldens/yaru_switch_list_tile-off-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-focused-dark.png b/test/widgets/goldens/yaru_switch_list_tile-off-focused-dark.png index 8c119bc25..d4858f3db 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-focused-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-off-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-focused-light.png b/test/widgets/goldens/yaru_switch_list_tile-off-focused-light.png index e9a26ffde..c931fd67b 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-focused-light.png and b/test/widgets/goldens/yaru_switch_list_tile-off-focused-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-hovered-dark.png b/test/widgets/goldens/yaru_switch_list_tile-off-hovered-dark.png index 375bd2ff2..bdaaa97b5 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-hovered-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-off-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-hovered-light.png b/test/widgets/goldens/yaru_switch_list_tile-off-hovered-light.png index 20cfed468..c79962570 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-hovered-light.png and b/test/widgets/goldens/yaru_switch_list_tile-off-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-light.png b/test/widgets/goldens/yaru_switch_list_tile-off-light.png index 5aa9f5cdb..0aba41ead 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-light.png and b/test/widgets/goldens/yaru_switch_list_tile-off-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-pressed-dark.png b/test/widgets/goldens/yaru_switch_list_tile-off-pressed-dark.png index 2668e9689..e12efa969 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-pressed-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-off-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-off-pressed-light.png b/test/widgets/goldens/yaru_switch_list_tile-off-pressed-light.png index 2c2a3b6cb..da679ad12 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-off-pressed-light.png and b/test/widgets/goldens/yaru_switch_list_tile-off-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-dark.png b/test/widgets/goldens/yaru_switch_list_tile-on-dark.png index 8b9dfdd39..f6f096d2b 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-on-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-disabled-dark.png b/test/widgets/goldens/yaru_switch_list_tile-on-disabled-dark.png index 7fb53696d..9408fdcb7 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-disabled-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-on-disabled-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-disabled-light.png b/test/widgets/goldens/yaru_switch_list_tile-on-disabled-light.png index 690a3d73f..7aec43845 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-disabled-light.png and b/test/widgets/goldens/yaru_switch_list_tile-on-disabled-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-focused-dark.png b/test/widgets/goldens/yaru_switch_list_tile-on-focused-dark.png index f84c8ae77..048a1e2a5 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-focused-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-on-focused-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-focused-light.png b/test/widgets/goldens/yaru_switch_list_tile-on-focused-light.png index 73ef1fc04..99bc0b249 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-focused-light.png and b/test/widgets/goldens/yaru_switch_list_tile-on-focused-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-hovered-dark.png b/test/widgets/goldens/yaru_switch_list_tile-on-hovered-dark.png index 170db1d0e..f08117778 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-hovered-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-on-hovered-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-hovered-light.png b/test/widgets/goldens/yaru_switch_list_tile-on-hovered-light.png index 1877e507c..ac0ea2d23 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-hovered-light.png and b/test/widgets/goldens/yaru_switch_list_tile-on-hovered-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-light.png b/test/widgets/goldens/yaru_switch_list_tile-on-light.png index e2cbac0fd..5ca381ddb 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-light.png and b/test/widgets/goldens/yaru_switch_list_tile-on-light.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-pressed-dark.png b/test/widgets/goldens/yaru_switch_list_tile-on-pressed-dark.png index 6d97e143c..5a2f55776 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-pressed-dark.png and b/test/widgets/goldens/yaru_switch_list_tile-on-pressed-dark.png differ diff --git a/test/widgets/goldens/yaru_switch_list_tile-on-pressed-light.png b/test/widgets/goldens/yaru_switch_list_tile-on-pressed-light.png index b0749a0cb..a45b1c7fd 100644 Binary files a/test/widgets/goldens/yaru_switch_list_tile-on-pressed-light.png and b/test/widgets/goldens/yaru_switch_list_tile-on-pressed-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-closable-dark.png b/test/widgets/goldens/yaru_title_bar-closable-dark.png index 84c9378cd..5dd791a6f 100644 Binary files a/test/widgets/goldens/yaru_title_bar-closable-dark.png and b/test/widgets/goldens/yaru_title_bar-closable-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-closable-light.png b/test/widgets/goldens/yaru_title_bar-closable-light.png index d2d923344..6e7dae98c 100644 Binary files a/test/widgets/goldens/yaru_title_bar-closable-light.png and b/test/widgets/goldens/yaru_title_bar-closable-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-dialog-dark.png b/test/widgets/goldens/yaru_title_bar-dialog-dark.png index 9f66cc736..f7484801e 100644 Binary files a/test/widgets/goldens/yaru_title_bar-dialog-dark.png and b/test/widgets/goldens/yaru_title_bar-dialog-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-dialog-light.png b/test/widgets/goldens/yaru_title_bar-dialog-light.png index 0de1bf6b4..cfc164000 100644 Binary files a/test/widgets/goldens/yaru_title_bar-dialog-light.png and b/test/widgets/goldens/yaru_title_bar-dialog-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-dialog-red-dark.png b/test/widgets/goldens/yaru_title_bar-dialog-red-dark.png index 477ad96a6..18a2561b0 100644 Binary files a/test/widgets/goldens/yaru_title_bar-dialog-red-dark.png and b/test/widgets/goldens/yaru_title_bar-dialog-red-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-dialog-red-light.png b/test/widgets/goldens/yaru_title_bar-dialog-red-light.png index 2ddfa0bc0..e2b9d70ea 100644 Binary files a/test/widgets/goldens/yaru_title_bar-dialog-red-light.png and b/test/widgets/goldens/yaru_title_bar-dialog-red-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-empty-dark.png b/test/widgets/goldens/yaru_title_bar-empty-dark.png index 77ef59dc2..8cc356390 100644 Binary files a/test/widgets/goldens/yaru_title_bar-empty-dark.png and b/test/widgets/goldens/yaru_title_bar-empty-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-empty-light.png b/test/widgets/goldens/yaru_title_bar-empty-light.png index aea59a7ad..bf8bc4616 100644 Binary files a/test/widgets/goldens/yaru_title_bar-empty-light.png and b/test/widgets/goldens/yaru_title_bar-empty-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-inactive-dark.png b/test/widgets/goldens/yaru_title_bar-inactive-dark.png index ee5ff8077..00ec7207d 100644 Binary files a/test/widgets/goldens/yaru_title_bar-inactive-dark.png and b/test/widgets/goldens/yaru_title_bar-inactive-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-inactive-light.png b/test/widgets/goldens/yaru_title_bar-inactive-light.png index 49a71dc1a..e0b6a1e7d 100644 Binary files a/test/widgets/goldens/yaru_title_bar-inactive-light.png and b/test/widgets/goldens/yaru_title_bar-inactive-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-maximizable-dark.png b/test/widgets/goldens/yaru_title_bar-maximizable-dark.png index 06ac84326..6e3da9da4 100644 Binary files a/test/widgets/goldens/yaru_title_bar-maximizable-dark.png and b/test/widgets/goldens/yaru_title_bar-maximizable-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-maximizable-light.png b/test/widgets/goldens/yaru_title_bar-maximizable-light.png index 81a4061b1..7ed972175 100644 Binary files a/test/widgets/goldens/yaru_title_bar-maximizable-light.png and b/test/widgets/goldens/yaru_title_bar-maximizable-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-restorable-dark.png b/test/widgets/goldens/yaru_title_bar-restorable-dark.png index ee3291faf..9da384a6d 100644 Binary files a/test/widgets/goldens/yaru_title_bar-restorable-dark.png and b/test/widgets/goldens/yaru_title_bar-restorable-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-restorable-light.png b/test/widgets/goldens/yaru_title_bar-restorable-light.png index f1b0bd85d..cddac5c05 100644 Binary files a/test/widgets/goldens/yaru_title_bar-restorable-light.png and b/test/widgets/goldens/yaru_title_bar-restorable-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-closable-dark.png b/test/widgets/goldens/yaru_title_bar-windows-closable-dark.png index 211a8a287..46e1863f5 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-closable-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-closable-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-closable-light.png b/test/widgets/goldens/yaru_title_bar-windows-closable-light.png index a1ba83828..2a9edeba3 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-closable-light.png and b/test/widgets/goldens/yaru_title_bar-windows-closable-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-dialog-dark.png b/test/widgets/goldens/yaru_title_bar-windows-dialog-dark.png index 37194f387..4adce1c67 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-dialog-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-dialog-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-dialog-light.png b/test/widgets/goldens/yaru_title_bar-windows-dialog-light.png index 4988a8a26..6742c3b21 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-dialog-light.png and b/test/widgets/goldens/yaru_title_bar-windows-dialog-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-dialog-red-dark.png b/test/widgets/goldens/yaru_title_bar-windows-dialog-red-dark.png index 9aba68033..d38983a1c 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-dialog-red-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-dialog-red-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-dialog-red-light.png b/test/widgets/goldens/yaru_title_bar-windows-dialog-red-light.png index 782709604..6fd02572d 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-dialog-red-light.png and b/test/widgets/goldens/yaru_title_bar-windows-dialog-red-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-empty-dark.png b/test/widgets/goldens/yaru_title_bar-windows-empty-dark.png index 77ef59dc2..8cc356390 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-empty-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-empty-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-empty-light.png b/test/widgets/goldens/yaru_title_bar-windows-empty-light.png index aea59a7ad..bf8bc4616 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-empty-light.png and b/test/widgets/goldens/yaru_title_bar-windows-empty-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-inactive-dark.png b/test/widgets/goldens/yaru_title_bar-windows-inactive-dark.png index e8b42c8bf..6950ed9c4 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-inactive-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-inactive-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-inactive-light.png b/test/widgets/goldens/yaru_title_bar-windows-inactive-light.png index 4b6650dcc..f201f3a15 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-inactive-light.png and b/test/widgets/goldens/yaru_title_bar-windows-inactive-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-maximizable-dark.png b/test/widgets/goldens/yaru_title_bar-windows-maximizable-dark.png index d33be57ad..c18e8c373 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-maximizable-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-maximizable-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-maximizable-light.png b/test/widgets/goldens/yaru_title_bar-windows-maximizable-light.png index 4153c5062..0f2db2355 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-maximizable-light.png and b/test/widgets/goldens/yaru_title_bar-windows-maximizable-light.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-restorable-dark.png b/test/widgets/goldens/yaru_title_bar-windows-restorable-dark.png index d94e6a39a..f21bc1f1a 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-restorable-dark.png and b/test/widgets/goldens/yaru_title_bar-windows-restorable-dark.png differ diff --git a/test/widgets/goldens/yaru_title_bar-windows-restorable-light.png b/test/widgets/goldens/yaru_title_bar-windows-restorable-light.png index 41f97efda..35cb88ff6 100644 Binary files a/test/widgets/goldens/yaru_title_bar-windows-restorable-light.png and b/test/widgets/goldens/yaru_title_bar-windows-restorable-light.png differ diff --git a/test/widgets/yaru_border_container_test.dart b/test/widgets/yaru_border_container_test.dart index 4a1a202aa..f19a0c72c 100644 --- a/test/widgets/yaru_border_container_test.dart +++ b/test/widgets/yaru_border_container_test.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import '../yaru_golden_tester.dart'; diff --git a/test/widgets/yaru_icon_button_test.dart b/test/widgets/yaru_icon_button_test.dart index 2d9b1e0bc..03740972f 100644 --- a/test/widgets/yaru_icon_button_test.dart +++ b/test/widgets/yaru_icon_button_test.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import '../yaru_golden_tester.dart'; diff --git a/test/widgets/yaru_master_detail_page_test.dart b/test/widgets/yaru_master_detail_page_test.dart index 2bad3aad6..c38c1f6dd 100644 --- a/test/widgets/yaru_master_detail_page_test.dart +++ b/test/widgets/yaru_master_detail_page_test.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import '../yaru_golden_tester.dart'; diff --git a/test/widgets/yaru_navigation_page_test.dart b/test/widgets/yaru_navigation_page_test.dart index 7a508e286..59755ef68 100644 --- a/test/widgets/yaru_navigation_page_test.dart +++ b/test/widgets/yaru_navigation_page_test.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import '../yaru_golden_tester.dart'; diff --git a/test/widgets/yaru_option_button_test.dart b/test/widgets/yaru_option_button_test.dart index ba742f5fb..5d102ae06 100644 --- a/test/widgets/yaru_option_button_test.dart +++ b/test/widgets/yaru_option_button_test.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; import '../yaru_golden_tester.dart'; diff --git a/test/yaru_golden_tester.dart b/test/yaru_golden_tester.dart index d52293d28..18dc743ba 100644 --- a/test/yaru_golden_tester.dart +++ b/test/yaru_golden_tester.dart @@ -2,7 +2,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:yaru/yaru.dart'; +import 'package:yaru_widgets/theme.dart'; extension YaruGoldenTester on WidgetTester { Future pumpScaffold(