commit dc551012e0bb58d7bda27db45e4dbd3aa770b5d4 Author: Victor Westerlund Date: Thu Aug 7 09:36:48 2025 +0200 initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..354f1e0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4e19d5c --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +![license](https://licensebuttons.net/p/zero/1.0/88x31.png) + +# Reflect Branding +This repository contains branding resources for the [Reflect web framework](https://reflect.vlw.se). + +Generated resources in this repository are optimized for hotlinking on live webpages. You can permalink directly to any version of a file in this repository. + +A mirror of all latest resources are also available on `blob.vlw.se/branding/reflect`. +For example: +``` +https://blob.vlw.se/branding/reflect/icons/svg/128x128.svg +``` + +# Scaffold +All generated resources must follow specific rules. Refer to the `README.md` in each directory requirements. diff --git a/icons/README.md b/icons/README.md new file mode 100644 index 0000000..017f386 --- /dev/null +++ b/icons/README.md @@ -0,0 +1,60 @@ +# `/icons` +The `original.svg` file contains the original Inkscape file which all generated icons derive from. It should not be used directly. + +## Sizes +All icons must be generated in the following sizes: +Width|Height|File path +--|--|-- +48px|48px|/icons/[[*Extension*]](#extensions)/48x48.[[*Extension*]](#extensions) +57px|57px|/icons/[[*Extension*]](#extensions)/57x57.[[*Extension*]](#extensions) +60px|60px|/icons/[[*Extension*]](#extensions)/60x60.[[*Extension*]](#extensions) +72px|72px|/icons/[[*Extension*]](#extensions)/72x72.[[*Extension*]](#extensions) +76px|76px|/icons/[[*Extension*]](#extensions)/76x76.[[*Extension*]](#extensions) +96px|96px|/icons/[[*Extension*]](#extensions)/96x96.[[*Extension*]](#extensions) +120px|120px|/icons/[[*Extension*]](#extensions)/120x120.[[*Extension*]](#extensions) +144px|144px|/icons/[[*Extension*]](#extensions)/144x144.[[*Extension*]](#extensions) +152px|152px|/icons/[[*Extension*]](#extensions)/152x152.[[*Extension*]](#extensions) +180px|180px|/icons/[[*Extension*]](#extensions)/180x180.[[*Extension*]](#extensions) +192px|192px|/icons/[[*Extension*]](#extensions)/192x192.[[*Extension*]](#extensions) +256px|256px|/icons/[[*Extension*]](#extensions)/256x256.[[*Extension*]](#extensions) +384px|384px|/icons/[[*Extension*]](#extensions)/384x384.[[*Extension*]](#extensions) +512px|512px|/icons/[[*Extension*]](#extensions)/512x512.[[*Extension*]](#extensions) + +## Bitmaps +A lossless-quality `512x512px` bitmap should be generated from `original.svg` which will be used as the base for generating bitmap in the required [sizes](#sizes). + +Use the lossless bitmap with [Squoosh.app](https://squoosh.app) to generate the required sizes. The following Squoosh preset overrides should be used when generating: + +### AVIF +- Encoder: `OxiPNG` +- Reduce palette: `On` +- - Colors: `18` +- Quality: `40` +- Effort: `10` + +### PNG +- Encoder: `OxiPNG` +- Reduce palette: `On` +- - Colors: `18` +- Effort: `6` + +#### Downscale: +- Method: "Browser medium quality" + +### WebP +- Encoder: `WebP` +- Reduce palette: `On` +- - Colors: `18` +- Effort: `6` +- Quality: `41` + +#### Downscale: +- Method: "Browser medium quality" + +## Vectors +Use the `original.svg` file to generate SVG files of the required [sizes](#sizes). + +All generated SVG:s should be imported to [SVGOMG](https://optimize.svgomg.net/) and exported with the default settings except: + +- Number precision: `2` +- Transform precision: `4` diff --git a/icons/avif/120x120.avif b/icons/avif/120x120.avif new file mode 100644 index 0000000..49a380d Binary files /dev/null and b/icons/avif/120x120.avif differ diff --git a/icons/avif/144x144.avif b/icons/avif/144x144.avif new file mode 100644 index 0000000..10102de Binary files /dev/null and b/icons/avif/144x144.avif differ diff --git a/icons/avif/152x152.avif b/icons/avif/152x152.avif new file mode 100644 index 0000000..a48d930 Binary files /dev/null and b/icons/avif/152x152.avif differ diff --git a/icons/avif/180x180.avif b/icons/avif/180x180.avif new file mode 100644 index 0000000..2c96ccb Binary files /dev/null and b/icons/avif/180x180.avif differ diff --git a/icons/avif/192x192.avif b/icons/avif/192x192.avif new file mode 100644 index 0000000..3345116 Binary files /dev/null and b/icons/avif/192x192.avif differ diff --git a/icons/avif/256x256.avif b/icons/avif/256x256.avif new file mode 100644 index 0000000..bdf1c6d Binary files /dev/null and b/icons/avif/256x256.avif differ diff --git a/icons/avif/384x384.avif b/icons/avif/384x384.avif new file mode 100644 index 0000000..9bc3d38 Binary files /dev/null and b/icons/avif/384x384.avif differ diff --git a/icons/avif/48x48.avif b/icons/avif/48x48.avif new file mode 100644 index 0000000..e1cbe3f Binary files /dev/null and b/icons/avif/48x48.avif differ diff --git a/icons/avif/512x512.avif b/icons/avif/512x512.avif new file mode 100644 index 0000000..03f4c77 Binary files /dev/null and b/icons/avif/512x512.avif differ diff --git a/icons/avif/57x57.avif b/icons/avif/57x57.avif new file mode 100644 index 0000000..5c01491 Binary files /dev/null and b/icons/avif/57x57.avif differ diff --git a/icons/avif/60x60.avif b/icons/avif/60x60.avif new file mode 100644 index 0000000..f624d91 Binary files /dev/null and b/icons/avif/60x60.avif differ diff --git a/icons/avif/72x72.avif b/icons/avif/72x72.avif new file mode 100644 index 0000000..4753314 Binary files /dev/null and b/icons/avif/72x72.avif differ diff --git a/icons/avif/76x76.avif b/icons/avif/76x76.avif new file mode 100644 index 0000000..ee3a325 Binary files /dev/null and b/icons/avif/76x76.avif differ diff --git a/icons/avif/96x96.avif b/icons/avif/96x96.avif new file mode 100644 index 0000000..72759bf Binary files /dev/null and b/icons/avif/96x96.avif differ diff --git a/icons/original.svg b/icons/original.svg new file mode 100644 index 0000000..5555da9 --- /dev/null +++ b/icons/original.svg @@ -0,0 +1,72 @@ + + + + diff --git a/icons/png/120x120.png b/icons/png/120x120.png new file mode 100644 index 0000000..4d8f8c3 Binary files /dev/null and b/icons/png/120x120.png differ diff --git a/icons/png/144x144.png b/icons/png/144x144.png new file mode 100644 index 0000000..4e64619 Binary files /dev/null and b/icons/png/144x144.png differ diff --git a/icons/png/152x152.png b/icons/png/152x152.png new file mode 100644 index 0000000..a35be3b Binary files /dev/null and b/icons/png/152x152.png differ diff --git a/icons/png/180x180.png b/icons/png/180x180.png new file mode 100644 index 0000000..c777fb0 Binary files /dev/null and b/icons/png/180x180.png differ diff --git a/icons/png/192x192.png b/icons/png/192x192.png new file mode 100644 index 0000000..187bd27 Binary files /dev/null and b/icons/png/192x192.png differ diff --git a/icons/png/256x256.png b/icons/png/256x256.png new file mode 100644 index 0000000..217b48c Binary files /dev/null and b/icons/png/256x256.png differ diff --git a/icons/png/384x384.png b/icons/png/384x384.png new file mode 100644 index 0000000..7439a6f Binary files /dev/null and b/icons/png/384x384.png differ diff --git a/icons/png/48x48.png b/icons/png/48x48.png new file mode 100644 index 0000000..bb9dbfd Binary files /dev/null and b/icons/png/48x48.png differ diff --git a/icons/png/512x512.png b/icons/png/512x512.png new file mode 100644 index 0000000..a74c125 Binary files /dev/null and b/icons/png/512x512.png differ diff --git a/icons/png/57x57.png b/icons/png/57x57.png new file mode 100644 index 0000000..bea5598 Binary files /dev/null and b/icons/png/57x57.png differ diff --git a/icons/png/60x60.png b/icons/png/60x60.png new file mode 100644 index 0000000..6890b25 Binary files /dev/null and b/icons/png/60x60.png differ diff --git a/icons/png/72x72.png b/icons/png/72x72.png new file mode 100644 index 0000000..521d477 Binary files /dev/null and b/icons/png/72x72.png differ diff --git a/icons/png/76x76.png b/icons/png/76x76.png new file mode 100644 index 0000000..7fa1193 Binary files /dev/null and b/icons/png/76x76.png differ diff --git a/icons/png/96x96.png b/icons/png/96x96.png new file mode 100644 index 0000000..7ef20a7 Binary files /dev/null and b/icons/png/96x96.png differ diff --git a/icons/svg/120x120.svg b/icons/svg/120x120.svg new file mode 100644 index 0000000..739bdfc --- /dev/null +++ b/icons/svg/120x120.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/144x144.svg b/icons/svg/144x144.svg new file mode 100644 index 0000000..e1e0994 --- /dev/null +++ b/icons/svg/144x144.svg @@ -0,0 +1,75 @@ + + + + diff --git a/icons/svg/152x152.svg b/icons/svg/152x152.svg new file mode 100644 index 0000000..11afd0d --- /dev/null +++ b/icons/svg/152x152.svg @@ -0,0 +1,75 @@ + + + + diff --git a/icons/svg/180x180.svg b/icons/svg/180x180.svg new file mode 100644 index 0000000..4bb2712 --- /dev/null +++ b/icons/svg/180x180.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/192x192.svg b/icons/svg/192x192.svg new file mode 100644 index 0000000..c9c32fe --- /dev/null +++ b/icons/svg/192x192.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/256x256.svg b/icons/svg/256x256.svg new file mode 100644 index 0000000..ee5f321 --- /dev/null +++ b/icons/svg/256x256.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/384x384.svg b/icons/svg/384x384.svg new file mode 100644 index 0000000..9102d81 --- /dev/null +++ b/icons/svg/384x384.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/48x48.svg b/icons/svg/48x48.svg new file mode 100644 index 0000000..e0d39d1 --- /dev/null +++ b/icons/svg/48x48.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/512x512.svg b/icons/svg/512x512.svg new file mode 100644 index 0000000..393b174 --- /dev/null +++ b/icons/svg/512x512.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/57x57.svg b/icons/svg/57x57.svg new file mode 100644 index 0000000..06978e0 --- /dev/null +++ b/icons/svg/57x57.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/60x60.svg b/icons/svg/60x60.svg new file mode 100644 index 0000000..79c38f6 --- /dev/null +++ b/icons/svg/60x60.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/72x72.svg b/icons/svg/72x72.svg new file mode 100644 index 0000000..ea4900f --- /dev/null +++ b/icons/svg/72x72.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/76x76.svg b/icons/svg/76x76.svg new file mode 100644 index 0000000..0bce136 --- /dev/null +++ b/icons/svg/76x76.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/svg/96x96.svg b/icons/svg/96x96.svg new file mode 100644 index 0000000..1c46afb --- /dev/null +++ b/icons/svg/96x96.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/webp/120x120.webp b/icons/webp/120x120.webp new file mode 100644 index 0000000..6866f50 Binary files /dev/null and b/icons/webp/120x120.webp differ diff --git a/icons/webp/144x144.webp b/icons/webp/144x144.webp new file mode 100644 index 0000000..2389d33 Binary files /dev/null and b/icons/webp/144x144.webp differ diff --git a/icons/webp/152x152.webp b/icons/webp/152x152.webp new file mode 100644 index 0000000..c105d72 Binary files /dev/null and b/icons/webp/152x152.webp differ diff --git a/icons/webp/180x180.webp b/icons/webp/180x180.webp new file mode 100644 index 0000000..dcf47b8 Binary files /dev/null and b/icons/webp/180x180.webp differ diff --git a/icons/webp/192x192.webp b/icons/webp/192x192.webp new file mode 100644 index 0000000..bec0cb0 Binary files /dev/null and b/icons/webp/192x192.webp differ diff --git a/icons/webp/256x256.webp b/icons/webp/256x256.webp new file mode 100644 index 0000000..3428879 Binary files /dev/null and b/icons/webp/256x256.webp differ diff --git a/icons/webp/384x384.webp b/icons/webp/384x384.webp new file mode 100644 index 0000000..0d32367 Binary files /dev/null and b/icons/webp/384x384.webp differ diff --git a/icons/webp/48x48.webp b/icons/webp/48x48.webp new file mode 100644 index 0000000..dbced34 Binary files /dev/null and b/icons/webp/48x48.webp differ diff --git a/icons/webp/512x512.webp b/icons/webp/512x512.webp new file mode 100644 index 0000000..c66668b Binary files /dev/null and b/icons/webp/512x512.webp differ diff --git a/icons/webp/57x57.webp b/icons/webp/57x57.webp new file mode 100644 index 0000000..c9406cd Binary files /dev/null and b/icons/webp/57x57.webp differ diff --git a/icons/webp/60x60.webp b/icons/webp/60x60.webp new file mode 100644 index 0000000..8efb496 Binary files /dev/null and b/icons/webp/60x60.webp differ diff --git a/icons/webp/72x72.webp b/icons/webp/72x72.webp new file mode 100644 index 0000000..71570cb Binary files /dev/null and b/icons/webp/72x72.webp differ diff --git a/icons/webp/76x76.webp b/icons/webp/76x76.webp new file mode 100644 index 0000000..b645299 Binary files /dev/null and b/icons/webp/76x76.webp differ diff --git a/icons/webp/96x96.webp b/icons/webp/96x96.webp new file mode 100644 index 0000000..e92fca9 Binary files /dev/null and b/icons/webp/96x96.webp differ