From 0343eed4befc046234d2449be9acf0bd81a8c9b8 Mon Sep 17 00:00:00 2001 From: cirroskais Date: Sat, 20 Apr 2024 21:34:38 -0400 Subject: [PATCH] make sure images are fully loaded before showing them --- LICENSE | 674 ++++++++++++++++++++++ bun.lockb | Bin 88227 -> 102427 bytes package.json | 5 +- src/lib/components/Blog/ListedPost.svelte | 6 +- src/lib/components/Footer.svelte | 80 +-- src/lib/components/Icons/Eye.svelte | 11 + src/lib/components/Image.svelte | 32 + src/lib/components/ImgButton.svelte | 5 +- src/routes/+layout.svelte | 4 +- src/routes/+page.svelte | 15 +- vite.config.js | 3 +- 11 files changed, 788 insertions(+), 47 deletions(-) create mode 100644 LICENSE create mode 100644 src/lib/components/Icons/Eye.svelte create mode 100644 src/lib/components/Image.svelte diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..81bda20 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + 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), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 2024 cirroskais + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) 2024 cirroskais + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/bun.lockb b/bun.lockb index fafdc5ad3e2263cbc36c4eeada20ca45582e427c..2c8ca85d14f8962e42d0aed3f63d0c31fab2514f 100755 GIT binary patch delta 25234 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 delta 16405 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 vfnj1}e$Ew
- Blog post cover +

{post.title}

By {post.author}

diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte index 057aeee..9c9543a 100644 --- a/src/lib/components/Footer.svelte +++ b/src/lib/components/Footer.svelte @@ -1,45 +1,57 @@
-
-
-

Built with

- -
- +
+
+

cirroskais.xyz ― cirro's website

+
+
+
-

SvelteKit

-
+

This page has been viewed 100 times.

+
-
-

Designed with

- -
- -
-

Tailwind CSS

-
-
-
-

Hosted with

- -
- -
-

Coolify

-
+
+
+

Built with

+ +
+ +
+

SvelteKit

+
+
+
+

Designed with

+ +
+ +
+

Tailwind CSS

+
+
+
+

Hosted with

+ +
+ +
+

Coolify

+
+
diff --git a/src/lib/components/Icons/Eye.svelte b/src/lib/components/Icons/Eye.svelte new file mode 100644 index 0000000..e7da442 --- /dev/null +++ b/src/lib/components/Icons/Eye.svelte @@ -0,0 +1,11 @@ + diff --git a/src/lib/components/Image.svelte b/src/lib/components/Image.svelte new file mode 100644 index 0000000..905c07b --- /dev/null +++ b/src/lib/components/Image.svelte @@ -0,0 +1,32 @@ + + +{#if loaded} + +{:else} +
+{/if} diff --git a/src/lib/components/ImgButton.svelte b/src/lib/components/ImgButton.svelte index 22bb4e3..27293f3 100644 --- a/src/lib/components/ImgButton.svelte +++ b/src/lib/components/ImgButton.svelte @@ -20,12 +20,15 @@ 'scale(105%)' + ` rotate3d(${yP.toFixed(2)}, ${xP.toFixed(2)},0,20deg)` + ` translate(${3 * xP}px,${-5 * yP}px)`; + + e.style.boxShadow = 'gray 0px 0px 10px'; }; e.addEventListener('mouseover', startEffect); e.addEventListener('mousemove', startEffect); e.addEventListener('mouseleave', () => { e.style.transform = ''; + e.style.boxShadow = ''; }); }); @@ -38,6 +41,6 @@ .imgbutton { transition-property: transform; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 85ms; + transition-duration: 70ms; } diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 716df16..16ba838 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -23,12 +23,12 @@ -
+
{#key $page.url} -
+
{/key} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 7a520ed..adc4746 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -3,6 +3,7 @@ import config from '$lib/config'; import ImgButton from '$lib/components/ImgButton.svelte'; + import Image from '$lib/components/Image.svelte'; import Discord from '$lib/components/Icons/Discord.svelte'; import Lastfm from '$lib/components/Icons/LastFM.svelte'; @@ -20,8 +21,8 @@
- {$page.data.discord?.username}'s profile picture
- _.size == 'extralarge' )?.['#text']} alt="Album art for {$page.data.lastfm?.recenttracks?.track[0]?.name}" /> -
-

+

+

{$page.data.lastfm?.recenttracks?.track[0]?.name}

diff --git a/vite.config.js b/vite.config.js index bbf8c7d..ec63baa 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,6 +1,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; +import { enhancedImages } from '@sveltejs/enhanced-img'; import { defineConfig } from 'vite'; export default defineConfig({ - plugins: [sveltekit()] + plugins: [enhancedImages(), sveltekit()] });