first step
|
@ -0,0 +1,24 @@
|
|||
# Nuxt dev/build outputs
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.fleet
|
||||
.idea
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
|
@ -0,0 +1,16 @@
|
|||
FROM ci.svs-tech.pro/library/node:22-bookworm-slim
|
||||
|
||||
RUN apt update
|
||||
RUN apt -y install nodejs npm
|
||||
RUN apt -y install libpng-dev libimagequant-dev
|
||||
RUN mkdir -p /src
|
||||
|
||||
COPY package.json src/package.json
|
||||
|
||||
WORKDIR /src
|
||||
RUN npm install --omit=dev
|
||||
|
||||
COPY . /src
|
||||
RUN npm run build
|
||||
# CMD npm run preview -- --host
|
||||
CMD export $(cat .env | egrep -v '#|^$' | xargs) && node .output/server/index.mjs
|
|
@ -0,0 +1,19 @@
|
|||
# Kupizabor
|
||||
|
||||
## Стек
|
||||
|
||||
* vue3
|
||||
* nextjs
|
||||
* threejs
|
||||
* tresjs
|
||||
|
||||
## Запуск
|
||||
|
||||
* npm run dev
|
||||
|
||||
## Env
|
||||
|
||||
* `NUXT_PUBLIC_API_BASE='https://mns.kustarshina.ru/kp'`
|
||||
* `NUXT_PUBLIC_IMG_BASE='https://mns.kustarshina.ru'`
|
||||
* `NUXT_PUBLIC_BASE_URL='https://kupizabor.kustarshina.ru'`
|
||||
* `NUXT_PUBLIC_YANDEX_METRIKA_ID=12345678`
|
|
@ -0,0 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import '@/assets/main.scss'
|
||||
</script>
|
||||
<template>
|
||||
<div>
|
||||
<Header />
|
||||
<NuxtPage />
|
||||
<Footer />
|
||||
</div>
|
||||
</template>
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,93 @@
|
|||
Copyright 2021 The Overpass Project Authors (https://github.com/RedHatOfficial/Overpass)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"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.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. 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.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license 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.
|
|
@ -0,0 +1,81 @@
|
|||
Overpass Variable Font
|
||||
======================
|
||||
|
||||
This download contains Overpass as both variable fonts and static fonts.
|
||||
|
||||
Overpass is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Overpass/Overpass-VariableFont_wght.ttf
|
||||
Overpass/Overpass-Italic-VariableFont_wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Overpass:
|
||||
Overpass/static/Overpass-Thin.ttf
|
||||
Overpass/static/Overpass-ExtraLight.ttf
|
||||
Overpass/static/Overpass-Light.ttf
|
||||
Overpass/static/Overpass-Regular.ttf
|
||||
Overpass/static/Overpass-Medium.ttf
|
||||
Overpass/static/Overpass-SemiBold.ttf
|
||||
Overpass/static/Overpass-Bold.ttf
|
||||
Overpass/static/Overpass-ExtraBold.ttf
|
||||
Overpass/static/Overpass-Black.ttf
|
||||
Overpass/static/Overpass-ThinItalic.ttf
|
||||
Overpass/static/Overpass-ExtraLightItalic.ttf
|
||||
Overpass/static/Overpass-LightItalic.ttf
|
||||
Overpass/static/Overpass-Italic.ttf
|
||||
Overpass/static/Overpass-MediumItalic.ttf
|
||||
Overpass/static/Overpass-SemiBoldItalic.ttf
|
||||
Overpass/static/Overpass-BoldItalic.ttf
|
||||
Overpass/static/Overpass-ExtraBoldItalic.ttf
|
||||
Overpass/static/Overpass-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,78 @@
|
|||
@mixin font-face($family, $file, $weight: normal, $style: normal) {
|
||||
@font-face {
|
||||
font-family: $family;
|
||||
src: url($file);
|
||||
font-weight: $weight;
|
||||
font-style: $style;
|
||||
font-display: swap;
|
||||
}
|
||||
}
|
||||
|
||||
// assets/Overpass/static/Overpass-ExtraLight.ttf
|
||||
// assets/Overpass/static/Overpass-ExtraLightItalic.ttf
|
||||
// assets/Overpass/static/Overpass-Light.ttf
|
||||
// assets/Overpass/static/Overpass-LightItalic.ttf
|
||||
// assets/Overpass/static/Overpass-Medium.ttf
|
||||
// assets/Overpass/static/Overpass-MediumItalic.ttf
|
||||
// assets/Overpass/static/Overpass-Italic.ttf
|
||||
// assets/Overpass/static/Overpass-Regular.ttf
|
||||
// assets/Overpass/static/Overpass-SemiBold.ttf
|
||||
// assets/Overpass/static/Overpass-SemiBoldItalic.ttf
|
||||
// assets/Overpass/static/Overpass-Thin.ttf
|
||||
// assets/Overpass/static/Overpass-ThinItalic.ttf
|
||||
// assets/Overpass/static/Overpass-Black.ttf
|
||||
// assets/Overpass/static/Overpass-BlackItalic.ttf
|
||||
// assets/Overpass/static/Overpass-Bold.ttf
|
||||
// assets/Overpass/static/Overpass-BoldItalic.ttf
|
||||
// assets/Overpass/static/Overpass-ExtraBold.ttf
|
||||
// assets/Overpass/static/Overpass-ExtraBoldItalic.ttf
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Thin.ttf', 100);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-ThinItalic.ttf', 100, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-ExtraLight.ttf', 200);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-ExtraLightItalic.ttf', 200, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Light.ttf', 300);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-LightItalic.ttf', 300, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Regular.ttf', 400);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Italic.ttf', 400, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Medium.ttf', 500);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-MediumItalic.ttf', 500, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-SemiBold.ttf', 600);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-SemiBoldItalic.ttf', 600, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Bold.ttf', 700);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-BoldItalic.ttf', 700, italic);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-Black.ttf', 800);
|
||||
@include font-face("Overpass", '~/assets/Overpass/static/Overpass-BlackItalic.ttf', 800, italic);
|
||||
|
||||
// assets/Roboto/Roboto-Black.ttf
|
||||
// assets/Roboto/Roboto-BlackItalic.ttf
|
||||
// assets/Roboto/Roboto-Bold.ttf
|
||||
// assets/Roboto/Roboto-BoldItalic.ttf
|
||||
// assets/Roboto/Roboto-Light.ttf
|
||||
// assets/Roboto/Roboto-LightItalic.ttf
|
||||
// assets/Roboto/Roboto-Medium.ttf
|
||||
// assets/Roboto/Roboto-MediumItalic.ttf
|
||||
// assets/Roboto/Roboto-Regular.ttf
|
||||
// assets/Roboto/Roboto-Italic.ttf
|
||||
// assets/Roboto/Roboto-Thin.ttf
|
||||
// assets/Roboto/Roboto-ThinItalic.ttf
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Black.ttf', 800);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-BlackItalic.ttf', 800, italic);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Bold.ttf', 700);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-BoldItalic.ttf', 700, italic);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Light.ttf', 300);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-LightItalic.ttf', 300, italic);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Medium.ttf', 500);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-MediumItalic.ttf', 500, italic);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Regular.ttf', 400);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Italic.ttf', 400, italic);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-Thin.ttf', 100);
|
||||
@include font-face("Roboto", '~/assets/Roboto/Roboto-ThinItalic.ttf', 100, italic);
|
||||
|
||||
// 100 – Thin.
|
||||
// 200 – Extra Light (Ultra Light)
|
||||
// 300 – Light.
|
||||
// 400 – Normal.
|
||||
// 500 – Medium.
|
||||
// 600 – Semi Bold (Demi Bold)
|
||||
// 700 – Bold.
|
||||
// 800 – Extra Bold (Ultra Bold)
|
|
@ -0,0 +1,167 @@
|
|||
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="1656.000000pt" height="1773.000000pt" viewBox="0 0 1656.000000 1773.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,1773.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M8965 17604 c-11 -3 -56 -12 -100 -20 -181 -35 -356 -107 -525 -219
|
||||
-169 -112 -223 -170 -707 -760 -72 -88 -267 -324 -433 -525 -336 -406 -779
|
||||
-943 -970 -1175 -69 -84 -186 -225 -260 -315 -74 -89 -148 -179 -165 -200 -16
|
||||
-21 -78 -96 -137 -166 -134 -163 -377 -457 -568 -689 -81 -99 -260 -315 -397
|
||||
-481 -136 -165 -300 -363 -363 -440 -134 -163 -287 -349 -495 -600 -83 -99
|
||||
-188 -227 -235 -284 -47 -57 -145 -176 -218 -264 -73 -89 -159 -192 -191 -231
|
||||
-126 -153 -451 -547 -552 -670 -59 -71 -165 -200 -236 -285 -70 -86 -189 -229
|
||||
-263 -320 -74 -90 -204 -247 -288 -349 -85 -102 -202 -244 -261 -316 -186
|
||||
-226 -491 -595 -611 -740 -63 -77 -156 -189 -205 -249 -222 -269 -260 -315
|
||||
-314 -381 -177 -217 -276 -427 -325 -694 -24 -127 -22 -395 5 -524 62 -304
|
||||
186 -536 403 -753 192 -192 425 -326 666 -382 25 -6 70 -17 100 -24 87 -21
|
||||
444 -17 545 5 192 43 386 125 536 228 169 116 212 163 739 804 69 84 186 225
|
||||
260 315 74 90 191 231 260 315 170 207 446 542 631 765 84 102 203 245 263
|
||||
319 61 74 169 204 240 290 71 86 206 251 301 366 95 116 235 284 310 375 233
|
||||
282 549 664 844 1024 107 130 200 236 206 236 8 0 14 -47 18 -157 4 -87 11
|
||||
-241 17 -343 5 -102 17 -309 25 -460 15 -267 25 -444 45 -830 5 -102 14 -268
|
||||
20 -370 5 -102 14 -273 20 -380 5 -107 17 -316 25 -465 16 -281 28 -515 46
|
||||
-920 25 -562 26 -579 44 -630 40 -113 118 -202 221 -249 139 -65 169 -83 209
|
||||
-128 76 -85 115 -192 130 -363 4 -46 1 -96 -9 -147 -28 -145 -73 -212 -185
|
||||
-277 -195 -115 -281 -214 -362 -421 -16 -43 -17 -179 -1 -285 7 -44 23 -165
|
||||
37 -270 14 -104 30 -221 35 -260 5 -38 14 -108 20 -155 6 -47 15 -116 20 -155
|
||||
10 -72 52 -387 70 -530 30 -231 73 -378 176 -603 13 -29 24 -54 24 -56 0 -2
|
||||
21 -48 46 -102 25 -55 52 -112 59 -129 7 -16 34 -73 58 -125 24 -52 53 -115
|
||||
65 -140 134 -294 573 -1170 586 -1169 6 0 37 53 68 117 169 345 365 756 441
|
||||
922 14 30 44 96 67 145 173 372 328 739 356 844 22 85 41 186 54 291 6 52 15
|
||||
129 20 170 6 41 21 170 35 285 24 198 33 276 55 455 5 41 14 116 20 165 6 50
|
||||
22 178 35 285 22 178 23 201 11 261 -40 186 -167 350 -353 454 -99 56 -139 93
|
||||
-172 159 -51 104 -64 239 -36 396 18 106 64 200 125 260 46 45 55 51 185 111
|
||||
89 41 161 113 204 202 36 75 43 127 61 422 6 99 15 252 21 340 42 687 47 778
|
||||
84 1510 9 176 20 329 24 339 7 19 82 40 346 97 88 19 128 28 210 48 104 25
|
||||
480 111 525 121 19 4 107 24 195 45 159 37 184 43 280 64 28 6 97 22 155 36
|
||||
58 14 125 30 150 35 25 5 124 28 220 50 281 66 482 112 520 120 19 4 107 24
|
||||
195 45 164 38 194 45 280 64 28 6 118 26 200 46 83 19 229 53 325 75 96 22
|
||||
243 56 325 75 83 20 173 40 200 46 96 21 121 27 235 54 63 15 135 32 160 37
|
||||
25 6 61 13 80 18 56 12 437 100 525 121 44 11 98 23 120 28 22 5 112 25 200
|
||||
46 88 21 180 42 205 47 92 20 119 26 275 63 88 21 176 41 195 45 123 28 285
|
||||
85 368 132 17 10 49 27 69 39 249 141 491 442 587 729 54 165 66 246 66 465 0
|
||||
159 -4 217 -19 285 -80 358 -282 653 -586 855 -118 78 -185 111 -330 164 -224
|
||||
81 -526 92 -797 27 -78 -19 -222 -52 -308 -72 -36 -8 -83 -19 -105 -24 -22 -5
|
||||
-83 -19 -135 -31 -52 -12 -160 -37 -240 -55 -174 -41 -200 -48 -310 -73 -47
|
||||
-10 -137 -31 -200 -45 -63 -15 -133 -31 -155 -36 -22 -5 -78 -18 -125 -29
|
||||
-174 -41 -267 -63 -330 -77 -91 -21 -149 -34 -195 -45 -181 -42 -454 -105
|
||||
-565 -130 -74 -17 -182 -42 -240 -56 -368 -85 -715 -166 -750 -173 -68 -15
|
||||
-221 -50 -480 -111 -47 -11 -103 -24 -125 -29 -22 -5 -80 -19 -130 -30 -87
|
||||
-20 -177 -41 -260 -60 -22 -5 -78 -18 -125 -29 -317 -74 -449 -105 -480 -111
|
||||
-19 -4 -107 -24 -195 -45 -88 -21 -176 -41 -195 -45 -19 -4 -165 -38 -325 -75
|
||||
-159 -37 -306 -71 -325 -75 -49 -11 -204 -46 -345 -79 -66 -16 -183 -43 -260
|
||||
-61 -77 -18 -187 -43 -245 -56 -128 -30 -166 -39 -250 -58 -63 -14 -156 -36
|
||||
-330 -77 -47 -11 -103 -24 -125 -29 -22 -5 -64 -15 -92 -21 -29 -7 -55 -10
|
||||
-59 -7 -3 4 6 19 19 35 24 27 139 166 327 394 47 57 130 158 185 224 55 67
|
||||
181 220 280 340 99 120 245 298 325 394 80 97 196 237 257 311 61 74 180 219
|
||||
265 321 84 102 214 260 288 350 74 90 191 231 260 314 69 83 195 236 280 340
|
||||
85 104 193 235 240 291 47 55 132 159 190 229 98 120 175 213 470 570 200 242
|
||||
252 308 296 375 353 548 301 1254 -130 1750 -199 228 -482 394 -796 465 -73
|
||||
17 -435 31 -485 19z m470 -506 c187 -68 325 -156 440 -280 77 -83 128 -165
|
||||
186 -298 49 -115 69 -219 69 -365 -1 -137 -18 -239 -59 -336 -62 -149 -118
|
||||
-232 -321 -474 -32 -39 -285 -345 -478 -579 -226 -275 -299 -363 -442 -535
|
||||
-85 -102 -164 -198 -175 -212 -11 -15 -47 -59 -80 -99 -33 -39 -76 -91 -95
|
||||
-115 -19 -23 -118 -142 -220 -265 -102 -122 -198 -240 -215 -261 -16 -21 -100
|
||||
-122 -185 -225 -85 -103 -190 -230 -233 -283 -43 -53 -105 -127 -138 -166 -73
|
||||
-87 -283 -342 -454 -550 -71 -87 -166 -201 -210 -254 -44 -53 -92 -110 -105
|
||||
-127 -14 -18 -97 -118 -184 -224 -208 -251 -286 -357 -286 -386 0 -18 -18 -37
|
||||
-72 -78 -40 -29 -94 -80 -119 -112 -26 -32 -97 -120 -158 -194 -62 -74 -157
|
||||
-189 -211 -255 -54 -66 -159 -192 -232 -281 -73 -88 -169 -205 -213 -259 -44
|
||||
-54 -98 -119 -120 -145 -22 -26 -65 -77 -95 -114 -30 -38 -104 -127 -164 -200
|
||||
-60 -72 -133 -160 -162 -196 -30 -36 -93 -113 -141 -171 -208 -251 -364 -440
|
||||
-440 -534 -46 -55 -107 -129 -137 -165 -30 -36 -99 -119 -153 -185 -55 -66
|
||||
-144 -174 -198 -240 -55 -65 -111 -134 -125 -151 -14 -17 -52 -64 -85 -104
|
||||
-33 -39 -76 -91 -95 -115 -19 -23 -116 -140 -215 -260 -99 -120 -196 -237
|
||||
-215 -261 -19 -23 -62 -75 -95 -114 -33 -40 -73 -90 -90 -110 -185 -231 -401
|
||||
-483 -477 -556 -102 -96 -218 -165 -368 -217 -145 -51 -433 -53 -575 -5 -81
|
||||
27 -260 122 -315 166 -63 51 -143 133 -189 195 -50 67 -123 211 -155 309 -24
|
||||
71 -26 89 -26 266 0 217 8 257 87 419 54 112 98 173 273 384 234 281 324 391
|
||||
355 430 33 42 239 291 405 490 58 70 130 157 160 194 30 37 114 138 185 224
|
||||
72 87 189 229 260 316 72 87 168 204 215 260 47 56 110 133 141 171 32 38 106
|
||||
128 165 200 60 73 134 162 164 199 30 38 73 89 95 115 22 26 87 104 145 175
|
||||
58 71 154 187 213 259 59 72 153 185 207 251 54 66 148 179 207 251 59 72 155
|
||||
188 213 259 58 71 123 149 145 175 22 26 103 123 179 216 208 252 278 337 479
|
||||
580 100 121 241 292 312 379 72 86 189 228 260 315 72 86 189 228 260 315 72
|
||||
87 168 204 215 260 47 56 144 173 215 260 191 233 289 351 353 429 31 38 73
|
||||
88 92 111 19 23 60 73 91 111 32 38 107 130 168 204 62 74 157 189 211 255 54
|
||||
66 159 192 232 281 73 88 169 205 213 259 44 54 100 122 125 151 25 28 68 80
|
||||
95 114 47 59 274 334 450 545 44 53 93 113 108 133 57 75 208 231 269 277 65
|
||||
49 160 100 251 136 113 45 143 49 347 46 181 -3 200 -5 265 -29z m5801 -4819
|
||||
c63 -12 143 -42 239 -91 181 -92 313 -230 403 -418 71 -147 72 -153 72 -379 0
|
||||
-194 -1 -207 -26 -275 -14 -39 -49 -116 -77 -170 -44 -84 -68 -116 -152 -200
|
||||
-108 -109 -169 -149 -327 -212 -83 -33 -213 -70 -333 -96 -76 -15 -110 -23
|
||||
-235 -53 -133 -31 -473 -109 -675 -154 -77 -18 -178 -41 -225 -52 -47 -11
|
||||
-103 -24 -125 -29 -22 -5 -80 -19 -130 -30 -98 -23 -162 -38 -300 -69 -49 -12
|
||||
-178 -41 -285 -66 -107 -25 -256 -59 -330 -76 -74 -17 -182 -42 -240 -55 -58
|
||||
-14 -123 -29 -145 -34 -80 -18 -173 -40 -285 -66 -63 -15 -131 -30 -150 -34
|
||||
-100 -22 -420 -95 -525 -120 -66 -15 -183 -43 -260 -60 -121 -28 -235 -54
|
||||
-390 -90 -22 -5 -80 -19 -130 -30 -49 -11 -157 -36 -240 -55 -82 -20 -170 -40
|
||||
-195 -46 -40 -8 -102 -23 -370 -85 -85 -20 -146 -33 -195 -44 -43 -10 -119
|
||||
-27 -260 -60 -49 -11 -110 -25 -135 -31 -25 -6 -61 -14 -80 -19 -19 -5 -55
|
||||
-14 -80 -20 -113 -28 -254 -177 -279 -295 -7 -33 -17 -73 -23 -90 -10 -32 -19
|
||||
-166 -43 -625 -23 -461 -35 -663 -45 -825 -5 -82 -14 -229 -20 -325 -6 -96
|
||||
-15 -240 -20 -320 -5 -80 -12 -195 -16 -256 l-6 -111 -52 -23 c-56 -25 -170
|
||||
-104 -230 -159 -48 -45 -151 -182 -182 -242 -12 -25 -35 -93 -49 -150 -14 -57
|
||||
-30 -120 -35 -139 -34 -138 -37 -295 -7 -410 8 -30 22 -91 32 -135 27 -119 89
|
||||
-234 184 -339 34 -37 153 -125 216 -160 62 -35 100 -70 118 -110 13 -27 12
|
||||
-52 -8 -211 -13 -99 -28 -223 -34 -275 -7 -52 -16 -129 -21 -170 -5 -41 -14
|
||||
-115 -20 -165 -6 -49 -15 -124 -20 -165 -6 -41 -21 -167 -35 -280 -13 -113
|
||||
-30 -248 -36 -300 -6 -52 -18 -115 -26 -139 -14 -44 -86 -224 -122 -305 -10
|
||||
-22 -35 -79 -56 -126 -21 -47 -46 -104 -56 -127 -11 -23 -19 -44 -19 -46 0 -3
|
||||
-24 -56 -54 -118 -30 -63 -79 -168 -110 -234 -30 -66 -61 -121 -68 -123 -7 -1
|
||||
-26 25 -42 60 -16 35 -58 124 -94 198 -168 352 -351 768 -371 845 -6 22 -22
|
||||
130 -36 240 -14 110 -30 229 -35 265 -5 36 -14 103 -20 150 -6 47 -15 117 -20
|
||||
155 -5 39 -14 108 -20 155 -6 47 -15 114 -20 150 -5 36 -16 119 -25 185 -8 66
|
||||
-19 149 -25 185 -24 166 -23 172 8 216 17 23 51 53 78 69 134 78 217 149 286
|
||||
242 85 115 100 147 138 306 46 198 52 245 39 350 -14 126 -83 399 -114 456
|
||||
-62 112 -153 219 -240 283 -90 65 -148 100 -196 117 -25 9 -29 15 -29 50 0 22
|
||||
-4 118 -10 213 -5 95 -14 288 -20 428 -6 140 -15 329 -20 420 -11 185 -26 465
|
||||
-40 735 -11 205 -24 456 -60 1120 -5 105 -16 312 -25 460 -27 494 -38 699 -39
|
||||
769 l-1 70 155 37 c85 21 178 43 205 49 79 17 122 27 255 59 69 16 159 37 200
|
||||
46 41 9 111 25 155 35 44 10 109 26 145 34 96 22 239 56 285 66 22 5 81 19
|
||||
130 30 50 11 158 36 240 55 83 20 170 40 195 46 40 8 102 23 370 85 36 8 85
|
||||
19 110 25 25 6 61 14 80 19 19 4 107 25 195 45 88 20 198 45 245 56 47 11 103
|
||||
24 125 29 22 5 110 26 195 46 85 20 193 45 240 55 130 30 237 55 385 89 50 11
|
||||
110 25 135 31 67 15 109 25 275 64 83 19 191 44 240 56 248 56 459 105 560
|
||||
129 44 10 123 28 175 40 52 12 142 33 200 46 58 14 124 29 148 34 23 6 61 14
|
||||
85 20 44 10 292 67 437 101 47 11 103 24 125 29 48 11 139 32 260 60 50 11
|
||||
108 25 130 30 22 5 78 18 125 29 206 48 395 92 525 121 77 18 203 47 280 65
|
||||
160 37 229 52 300 64 73 13 302 13 371 0z"/>
|
||||
<path d="M11238 2796 c-42 -15 -48 -20 -430 -339 -329 -275 -333 -279 -333
|
||||
-402 0 -76 2 -83 35 -130 49 -68 113 -100 200 -100 43 1 77 7 100 19 31 17
|
||||
346 275 603 494 117 100 141 139 141 232 0 47 -6 77 -22 106 -55 107 -184 159
|
||||
-294 120z"/>
|
||||
<path d="M4330 2746 c-112 -57 -160 -196 -106 -312 24 -51 50 -76 221 -214 38
|
||||
-30 85 -69 104 -86 140 -120 383 -310 416 -325 165 -76 364 85 326 263 -7 28
|
||||
-21 67 -32 85 -26 41 -667 568 -724 594 -58 27 -148 25 -205 -5z"/>
|
||||
<path d="M9833 1752 c-17 -9 -188 -147 -379 -307 -191 -159 -390 -326 -444
|
||||
-370 -399 -329 -405 -336 -405 -455 0 -80 20 -125 80 -178 80 -70 211 -76 295
|
||||
-14 19 15 172 141 340 281 168 140 400 333 515 430 116 96 229 193 253 215 81
|
||||
76 106 157 77 249 -35 112 -113 167 -232 167 -44 -1 -79 -7 -100 -18z"/>
|
||||
<path d="M12755 1754 c-52 -13 -674 -270 -702 -290 -94 -70 -107 -206 -27
|
||||
-294 35 -39 103 -70 153 -70 21 0 277 98 456 174 17 7 71 30 120 51 146 61
|
||||
149 62 176 92 88 93 75 237 -26 304 -40 27 -111 42 -150 33z"/>
|
||||
<path d="M5585 1729 c-154 -77 -183 -272 -57 -391 20 -19 233 -195 472 -390
|
||||
239 -195 470 -383 513 -419 43 -35 105 -83 138 -107 59 -41 62 -42 143 -42 74
|
||||
0 87 3 129 29 115 74 146 222 68 333 -29 42 -1145 959 -1203 989 -51 26 -149
|
||||
25 -203 -2z"/>
|
||||
<path d="M2936 1696 c-106 -39 -160 -135 -134 -240 22 -87 55 -110 303 -210
|
||||
121 -48 229 -91 240 -96 186 -76 228 -90 272 -90 68 0 130 34 168 90 56 85 33
|
||||
212 -48 267 -18 12 -147 67 -287 123 -140 56 -264 105 -275 110 -11 4 -43 17
|
||||
-71 29 -71 29 -122 34 -168 17z"/>
|
||||
<path d="M11370 1271 c-22 -7 -524 -211 -605 -246 -16 -7 -82 -34 -145 -60
|
||||
-63 -26 -133 -55 -155 -65 -22 -9 -89 -36 -148 -60 -128 -52 -169 -86 -193
|
||||
-164 -15 -46 -15 -61 -5 -99 25 -87 112 -157 194 -157 35 0 140 37 277 97 75
|
||||
33 106 46 455 188 572 233 540 215 571 322 14 48 14 58 0 107 -31 105 -144
|
||||
168 -246 137z"/>
|
||||
<path d="M4304 1233 c-32 -6 -105 -72 -120 -110 -34 -79 -7 -187 58 -237 18
|
||||
-13 137 -65 263 -115 127 -50 241 -96 255 -102 34 -16 28 -13 369 -148 380
|
||||
-151 411 -155 504 -52 81 89 53 245 -53 301 -19 10 -138 60 -265 110 -126 50
|
||||
-239 95 -250 100 -11 5 -162 65 -335 134 -319 127 -346 135 -426 119z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 11 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 64C0 28.672 28.672 0 64 0C99.328 0 128 28.672 128 64C128 99.328 99.328 128 64 128C28.672 128 0 99.328 0 64ZM91.545 90.2986C94.0432 76.9254 98.964 47.9124 100.1 35.9747C100.139 35.4178 100.116 34.777 100.097 34.2289C100.079 33.7361 100.064 33.3183 100.1 33.1036C100.024 32.4992 99.7968 31.6681 99.0397 31.0636C98.1313 30.3081 96.6929 30.157 96.0872 30.157C93.2105 30.157 88.8953 31.6681 67.8494 40.4324C60.5061 43.4546 45.8194 49.8012 23.7136 59.3967C20.1555 60.8322 18.2629 62.1922 18.1115 63.5522C17.84 65.9231 20.7938 66.8364 24.845 68.089C25.3123 68.2335 25.7943 68.3826 26.2876 68.5388C30.1485 69.8233 35.2964 71.2588 38.0218 71.3344C40.4443 71.4099 43.1697 70.3522 46.1979 68.3122C66.8653 54.4101 77.4639 47.3835 78.1452 47.2324C78.2046 47.2239 78.2649 47.2145 78.3258 47.205C78.8089 47.1296 79.3317 47.048 79.735 47.3835C79.9043 47.5623 80.0272 47.7797 80.0932 48.0167C80.1591 48.2537 80.1661 48.5032 80.1136 48.7435C79.8129 50.0036 67.5273 61.3664 61.9141 66.5581C60.4594 67.9035 59.4528 68.8345 59.2191 69.0677C58.6372 69.6586 58.0457 70.2193 57.4762 70.7592C53.8217 74.2233 51.0694 76.8321 57.5536 81.0809C60.7527 83.1844 63.297 84.9144 65.8654 86.6609C68.4632 88.4273 71.0858 90.2106 74.4357 92.4142C75.2864 92.9751 76.1005 93.5543 76.8939 94.1188C80.0546 96.3675 82.8872 98.3828 86.397 98.0808C88.3654 97.8541 90.4851 95.9653 91.545 90.2986Z" fill="#333333"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 64C0 28.672 28.672 0 64 0C99.328 0 128 28.672 128 64C128 99.328 99.328 128 64 128C28.672 128 0 99.328 0 64ZM94.2421 90.8735H103.893L103.88 90.8694C106.61 90.8694 108.014 89.4619 107.062 86.7591C106.215 84.0355 103.037 80.0995 98.9033 75.408C97.7647 74.0829 96.3361 72.68 95.0685 71.4352C93.834 70.2229 92.7521 69.1605 92.2397 68.4661C90.8314 66.5853 91.2219 65.8504 92.2397 64.1648C92.2397 64.1648 104.075 47.4702 105.289 41.8487C105.937 39.7727 105.289 38.2822 102.389 38.2822H92.7175C90.2706 38.2822 89.1447 39.5984 88.4967 41.0058C88.4967 41.0058 83.5197 53.0088 76.5737 60.7935C74.3262 63.0438 73.2876 63.7787 72.0745 63.7787C71.5137 63.7787 70.5831 63.0438 70.5831 60.9679V41.7449C70.5831 39.3243 69.827 38.1992 67.7706 38.1992H52.5616C51.0702 38.1992 50.1396 39.3243 50.1396 40.4495C50.1396 41.3407 50.6445 41.974 51.2892 42.7825C52.3323 44.0907 53.7414 45.8579 53.9699 49.9198V64.1689C53.9699 67.2621 53.4091 67.8225 52.196 67.8225C48.9099 67.8225 40.946 55.7365 36.1644 41.94C35.213 39.3243 34.2825 38.1992 31.8356 38.1992H22.1642C19.4598 38.1992 18.8989 39.5153 18.8989 40.9228C18.8989 43.5385 22.185 56.1891 34.1952 73.0788C42.1591 84.6043 53.5171 90.7905 63.7534 90.7905C69.9433 90.7905 70.6787 89.3872 70.6787 87.0497V78.335C70.6787 75.6072 71.2437 75.0467 73.2336 75.0467C74.6419 75.0467 77.1719 75.7816 82.8841 81.316C84.776 83.2318 86.2168 84.8363 87.3965 86.1501C90.3176 89.4031 91.638 90.8735 94.2421 90.8735Z" fill="#333333"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 64C0 28.672 28.672 0 64 0C99.328 0 128 28.672 128 64C128 99.328 99.328 128 64 128C28.672 128 0 99.328 0 64ZM46.2495 91.7311L96.8031 68.0998C101.228 66.0253 101.228 62.643 96.8031 60.5685L46.2495 36.9373C41.8246 34.8854 38.1992 37.1966 38.1992 42.0784V86.5899C38.1992 91.483 41.8246 93.783 46.2495 91.7311Z" fill="#333333"/>
|
||||
</svg>
|
After Width: | Height: | Size: 483 B |
|
@ -0,0 +1,484 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@layer components {}
|
||||
|
||||
@import 'fonts.scss';
|
||||
|
||||
html {
|
||||
// @apply text-[15px]
|
||||
}
|
||||
|
||||
body {
|
||||
@apply select-none min-w-80 font-sans;
|
||||
|
||||
&.modal-opened {
|
||||
@apply overflow-hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
@apply max-w-7xl mx-auto px-4 grid grid-cols-12 items-center;
|
||||
|
||||
&.min-w-full {
|
||||
@apply px-0;
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
@apply p-2 bg-slate-200;
|
||||
|
||||
.container {
|
||||
@apply items-center;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
@apply w-full py-4 col-span-8 xl:col-span-2;
|
||||
|
||||
a {
|
||||
@apply flex items-center gap-2;
|
||||
}
|
||||
|
||||
&_text {
|
||||
@apply leading-6 text-3xl font-normal;
|
||||
}
|
||||
|
||||
svg {
|
||||
@apply text-ioprim inline-block m-0 w-10 h-10 min-w-10;
|
||||
}
|
||||
}
|
||||
|
||||
.menu {
|
||||
@apply hidden xl:flex col-span-10 justify-end;
|
||||
|
||||
a {
|
||||
@apply text-zinc-800 hover:text-ioprim-900 transition-colors;
|
||||
|
||||
&:before {
|
||||
content: '';
|
||||
@apply inline-block w-[2px] h-5 mx-4 align-middle bg-gradient-to-t from-transparent via-zinc-800 via-50% to-transparent;
|
||||
}
|
||||
|
||||
&:first-child::before {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
|
||||
a[href^=http] {
|
||||
@apply relative;
|
||||
|
||||
&:after {
|
||||
content: '↷';
|
||||
@apply ml-2;
|
||||
}
|
||||
}
|
||||
|
||||
&.toggle_visible {
|
||||
@apply max-xl:flex max-xl:flex-col max-xl:text-left;
|
||||
|
||||
a {
|
||||
@apply max-xl:mb-2;
|
||||
}
|
||||
|
||||
a:before {
|
||||
@media screen and (max-width: 1280px) {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-toggle {
|
||||
@apply flex xl:hidden col-span-4 justify-end;
|
||||
|
||||
>span {
|
||||
@apply cursor-pointer text-zinc-600 hover:text-ioprim-900 transition-colors;
|
||||
|
||||
svg {
|
||||
@apply text-3xl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a[href^="#"] {
|
||||
@apply underline decoration-dotted underline-offset-4 decoration-neutral-500;
|
||||
}
|
||||
|
||||
.footer {
|
||||
@apply px-2 py-4 bg-slate-200 text-zinc-800 pt-12;
|
||||
|
||||
.container {
|
||||
@apply gap-4
|
||||
}
|
||||
|
||||
.k-logo {
|
||||
@apply col-span-12 xl:col-span-2 row-span-3 text-9xl text-ioprim;
|
||||
|
||||
svg {
|
||||
@apply my-0 mx-auto;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
@apply block lg:hidden mr-auto ml-auto mt-5 h-[2px] max-w-44 mx-4 align-middle bg-gradient-to-r from-transparent via-zinc-800 via-50% to-transparent;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
&-text {
|
||||
@apply col-span-12 xl:col-span-5 text-sm mb-2;
|
||||
|
||||
&-small {
|
||||
@apply col-span-12 xl:col-span-10 text-xs min-w-full;
|
||||
}
|
||||
|
||||
&-social {
|
||||
@apply col-span-12 xl:col-span-10 flex gap-4 flex-wrap justify-center;
|
||||
}
|
||||
}
|
||||
|
||||
&-icon {
|
||||
@apply order-2 flex justify-center items-center gap-2;
|
||||
|
||||
&:hover {
|
||||
.footer-icon-text {
|
||||
@apply no-underline;
|
||||
}
|
||||
}
|
||||
|
||||
svg {
|
||||
@apply mb-0;
|
||||
}
|
||||
|
||||
&-big {
|
||||
@apply text-3xl order-1 w-full text-center;
|
||||
|
||||
.footer-icon-text {
|
||||
@apply no-underline;
|
||||
}
|
||||
}
|
||||
|
||||
&-text {
|
||||
@apply underline;
|
||||
}
|
||||
}
|
||||
|
||||
&_two {
|
||||
@apply xl:bg-slate-200 py-16 lg:py-8 text-sm text-zinc-500;
|
||||
}
|
||||
}
|
||||
|
||||
.siteblock {
|
||||
@apply py-10;
|
||||
|
||||
&_imgbg {
|
||||
@apply py-0 bg-no-repeat bg-cover bg-bottom h-[50vh] min-h-[600px];
|
||||
}
|
||||
|
||||
&_calc {
|
||||
// @apply;
|
||||
|
||||
.container {
|
||||
@apply gap-4 items-stretch;
|
||||
|
||||
>* {
|
||||
@apply relative;
|
||||
}
|
||||
|
||||
>div:first-child {
|
||||
@apply min-h-[600px];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&_content {
|
||||
>.container {
|
||||
@apply items-start;
|
||||
}
|
||||
|
||||
a[href^="tel://"] {
|
||||
@apply whitespace-nowrap
|
||||
}
|
||||
}
|
||||
|
||||
&-content {
|
||||
@apply col-span-full xl:col-span-8 h-full flex flex-col justify-between min-w-full prose;
|
||||
}
|
||||
|
||||
&-text {
|
||||
// @apply
|
||||
}
|
||||
|
||||
&-title {
|
||||
@apply col-span-full text-4xl xl:text-6xl font-black font-h1 xl:leading-[0.85] tracking-tight mb-[3.15rem]
|
||||
}
|
||||
|
||||
&-image {
|
||||
@apply col-span-full xl:col-span-4 flex justify-center items-center;
|
||||
}
|
||||
}
|
||||
|
||||
.review {
|
||||
@apply col-span-12 md:col-span-6 xl:col-span-4 grid grid-cols-4 items-center px-4;
|
||||
|
||||
&-image {
|
||||
@apply max-w-full max-h-full aspect-square overflow-hidden col-span-1 pr-4;
|
||||
|
||||
img {
|
||||
@apply rounded-full bg-slate-300
|
||||
}
|
||||
}
|
||||
|
||||
&-content {
|
||||
@apply col-span-3 text-end italic text-sm lg:text-base;
|
||||
}
|
||||
|
||||
&-title {
|
||||
@apply col-span-4 font-bold text-lg text-end xl:mt-4 mb-4 xl:mb-0;
|
||||
}
|
||||
}
|
||||
|
||||
.modal {
|
||||
@apply relative bg-white p-5 lg:p-10 border rounded shadow prose;
|
||||
|
||||
&-backdrop {
|
||||
@apply fixed top-0 left-0 right-0 bottom-0 bg-white bg-opacity-70 flex items-center justify-center z-30;
|
||||
}
|
||||
|
||||
&-close {
|
||||
@apply absolute right-3 top-3 text-4xl opacity-50 cursor-pointer;
|
||||
}
|
||||
|
||||
&-status {
|
||||
@apply text-center;
|
||||
|
||||
&-icon {
|
||||
@apply text-8xl;
|
||||
}
|
||||
|
||||
&-text {
|
||||
@apply text-3xl;
|
||||
}
|
||||
}
|
||||
|
||||
&-content {
|
||||
@apply max-h-[66vh] overflow-auto;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply px-6 text-2xl text-center;
|
||||
}
|
||||
|
||||
form {
|
||||
@apply flex flex-col gap-4 items-center;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
@apply inline-block text-sm font-medium text-gray-900 min-w-36;
|
||||
}
|
||||
|
||||
input {
|
||||
@apply bg-white border border-gray-300 text-gray-900 text-lg p-2.5 rounded focus:ring-blue-500 focus:border-blue-500 focus-visible:border-blue-500 disabled:cursor-not-allowed disabled:text-black
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
@apply w-4 h-4;
|
||||
}
|
||||
|
||||
input[type=range] {
|
||||
@apply w-full bg-transparent border-transparent cursor-pointer appearance-none disabled:opacity-50 disabled:pointer-events-none focus:outline-none [&::-webkit-slider-thumb]:w-2.5 [&::-webkit-slider-thumb]:h-2.5 [&::-webkit-slider-thumb]:-mt-0.5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:shadow-[0_0_0_4px_#111] [&::-webkit-slider-thumb]:shadow-slate-500 [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:transition-all [&::-webkit-slider-thumb]:duration-150 [&::-webkit-slider-thumb]:ease-in-out [&::-webkit-slider-thumb]:dark:bg-neutral-700 [&::-moz-range-thumb]:w-2.5 [&::-moz-range-thumb]:h-2.5 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:bg-white [&::-moz-range-thumb]:border-4 [&::-moz-range-thumb]:border-blue-600 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:duration-150 [&::-moz-range-thumb]:ease-in-out [&::-webkit-slider-runnable-track]:w-full [&::-webkit-slider-runnable-track]:h-2 [&::-webkit-slider-runnable-track]:bg-gray-100 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:dark:bg-neutral-700 [&::-moz-range-track]:w-full [&::-moz-range-track]:h-2 [&::-moz-range-track]:bg-gray-100 [&::-moz-range-track]:rounded-full;
|
||||
}
|
||||
|
||||
textarea {
|
||||
@apply block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 max-w-full min-h-10 max-h-40;
|
||||
}
|
||||
|
||||
button {
|
||||
@apply rounded bg-primary hover:bg-primary-300 transition-colors p-4 inline-block text-2xl font-bold cursor-pointer disabled:opacity-50 disabled:hover:bg-primary leading-5 lg:leading-4;
|
||||
|
||||
&.neutral,
|
||||
&[type="reset"] {
|
||||
@apply bg-neutral-200 hover:bg-neutral-400
|
||||
}
|
||||
}
|
||||
|
||||
.form {
|
||||
@apply col-span-full h-full flex flex-col gap-4 justify-between;
|
||||
|
||||
&-group {
|
||||
@apply rounded flex flex-col gap-4 p-4 shadow shadow-slate-400;
|
||||
}
|
||||
|
||||
&-row {
|
||||
@apply flex flex-row flex-wrap gap-2;
|
||||
|
||||
&_picker {
|
||||
@apply grid grid-cols-2 justify-center items-center;
|
||||
}
|
||||
}
|
||||
|
||||
&-item {
|
||||
@apply flex flex-row items-center justify-start flex-wrap;
|
||||
|
||||
label {
|
||||
@apply w-full;
|
||||
}
|
||||
|
||||
.icon {
|
||||
@apply hover:text-primary cursor-pointer transition-colors text-xl;
|
||||
|
||||
&.disabled {
|
||||
@apply text-neutral pointer-events-none cursor-not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
&_total {
|
||||
@apply w-full flex-nowrap;
|
||||
|
||||
input {
|
||||
@apply w-20 bg-slate-100;
|
||||
}
|
||||
}
|
||||
|
||||
&_checkbox {
|
||||
@apply w-full xl:w-auto flex-row xl:flex-initial flex-nowrap gap-2 items-center;
|
||||
|
||||
label {
|
||||
@apply leading-none;
|
||||
}
|
||||
|
||||
svg {
|
||||
@apply text-slate-500;
|
||||
}
|
||||
}
|
||||
|
||||
&_range {
|
||||
@apply w-full;
|
||||
|
||||
>div {
|
||||
@apply flex flex-nowrap w-full gap-2 items-center;
|
||||
|
||||
input {
|
||||
@apply flex-grow;
|
||||
}
|
||||
|
||||
span {
|
||||
@apply min-w-16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&_picker {
|
||||
@apply w-full;
|
||||
|
||||
svg {
|
||||
@apply text-slate-500;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.picker {
|
||||
@apply leading-none w-full row-start-2;
|
||||
|
||||
&_open {
|
||||
@apply flex-wrap;
|
||||
}
|
||||
|
||||
&_disabled {
|
||||
@apply pointer-events-none opacity-50;
|
||||
}
|
||||
|
||||
&-input {
|
||||
@apply flex items-center justify-between;
|
||||
|
||||
>div {
|
||||
@apply min-h-12 overflow-hidden rounded border-gray-300 shadow flex leading-none grow justify-center items-center p-2;
|
||||
|
||||
span {
|
||||
@apply grow text-left max-w-[80%] break-words line-clamp-2;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&-button {
|
||||
@apply min-w-6 shrink-0 h-full;
|
||||
}
|
||||
|
||||
&-selected {
|
||||
@apply h-10 overflow-hidden rounded border-gray-300 shadow inline-block leading-none grow;
|
||||
}
|
||||
|
||||
&-changer {
|
||||
@apply gap-3 mt-4 max-h-36 overflow-auto order-10 hidden;
|
||||
|
||||
&_open {
|
||||
@apply flex flex-wrap col-span-2;
|
||||
}
|
||||
}
|
||||
|
||||
&-list {
|
||||
@apply flex gap-4 w-full;
|
||||
}
|
||||
|
||||
&-item {
|
||||
@apply size-10;
|
||||
|
||||
&--empty {
|
||||
@apply block bg-slate-300;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.feature {
|
||||
@apply col-span-full flex gap-10 mt-4 justify-center xl:justify-between flex-wrap items-center;
|
||||
|
||||
&-item {
|
||||
@apply rounded bg-neutral-200 p-4 min-w-36 flex justify-center flex-wrap flex-col;
|
||||
}
|
||||
|
||||
&-name {
|
||||
@apply text-ioprim font-bold w-20 text-xl leading-4 col-span-2;
|
||||
}
|
||||
}
|
||||
|
||||
.fallback {
|
||||
@apply absolute bg-neutral-600 top-0 left-0 w-full h-full z-20 flex justify-center items-center text-black font-mono
|
||||
}
|
||||
|
||||
.canvas-icons {
|
||||
@apply absolute text-3xl top-0 left-0 flex flex-col;
|
||||
|
||||
a {
|
||||
@apply cursor-pointer;
|
||||
|
||||
&.disabled {
|
||||
@apply cursor-not-allowed opacity-50 pointer-events-none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.calc {
|
||||
@apply max-h-[800px] relative h-full;
|
||||
}
|
||||
|
||||
.calc_table {
|
||||
@apply flex flex-col gap-2 self-end;
|
||||
|
||||
>.grid {
|
||||
@apply gap-2 items-end;
|
||||
|
||||
>[class*=col] {
|
||||
@apply p-1 border-solid border-b;
|
||||
}
|
||||
|
||||
>.col-span-4:not(.calc_table-maincell) {
|
||||
@apply pl-4;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
<script setup lang="ts">
|
||||
import k_logo from '@/assets/LOGO.svg'
|
||||
const { fetchData } = useApiFetch()
|
||||
|
||||
import tg from '@/assets/icons/telegram.svg'
|
||||
import vk from '@/assets/icons/vk.svg'
|
||||
import yt from '@/assets/icons/youtube.svg'
|
||||
const icons = {
|
||||
'simple-icons:vk': vk,
|
||||
'simple-icons:telegram': tg,
|
||||
'simple-icons:youtube': yt,
|
||||
}
|
||||
|
||||
const { data: footerData } = await fetchData<Footer[]>(`footer/?ordering=small_text`, true)
|
||||
const { data: socialNetworkData } = await fetchData<SocialNetwork[]>(`social_network/`, true)
|
||||
</script>
|
||||
<template>
|
||||
<div>
|
||||
<div class="footer" id="contacts">
|
||||
<div class="container">
|
||||
<div class="col-span-12 lg:col-span-6 xl:col-span-3 mb-12 lg:mb-0">
|
||||
<div class="k-logo">
|
||||
<k_logo />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-span-12 lg:col-span-6 xl:col-span-6 mb-12 lg:mb-0">
|
||||
<template v-for="item in footerData">
|
||||
<div class="footer-text" v-if="!item.small_text">
|
||||
<template v-for="p in item.text.replace(/\r\n/g, '\n').split('\n')">
|
||||
<p v-if="p.trim().length">{{ p }}</p>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="col-span-12 xl:col-span-3">
|
||||
<div class="footer-text footer-text-social" v-if="socialNetworkData">
|
||||
<template v-for="item in socialNetworkData">
|
||||
<a :class="['footer-icon', { 'footer-icon-big': !item.icon }]" :href="item.link"
|
||||
target="_blank">
|
||||
<template v-if="item.icon">
|
||||
<component :is="icons[(item.icon.trim() as keyof typeof icons)]"
|
||||
v-if="icons.hasOwnProperty(item.icon.trim())" />
|
||||
<Icon :name="item.icon" v-else />
|
||||
</template>
|
||||
<span class="footer-icon-text">{{ item.name }}</span>
|
||||
</a>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer_two">
|
||||
<div class="container">
|
||||
<div class="col-span-10 col-start-2">
|
||||
<template v-for="item in footerData">
|
||||
<div class="footer-text" v-if="item.small_text">
|
||||
{{ item.text }}
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,43 @@
|
|||
<script setup lang="ts">
|
||||
import k_logo from '@/assets/LOGO.svg'
|
||||
|
||||
const { fetchData } = useApiFetch()
|
||||
const route = useRoute()
|
||||
|
||||
const { data, status, error } = await fetchData<Menu>(`menu/`)
|
||||
const menu = computed(()=>{
|
||||
return (data.value?.pages || []).sort((a, b) => a.order - b.order)
|
||||
})
|
||||
|
||||
const menu_visible = ref(false)
|
||||
const toggle_menu = () => {
|
||||
if (window.innerWidth < 1280) {
|
||||
menu_visible.value = !menu_visible.value
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div class="header">
|
||||
<div class="container">
|
||||
<div class="logo">
|
||||
<NuxtLink to="/">
|
||||
<k_logo />
|
||||
<span class="logo_text">Купи Скамейку!</span>
|
||||
</NuxtLink>
|
||||
</div>
|
||||
<div class="menu-toggle">
|
||||
<span @click="toggle_menu">
|
||||
<Icon name="mdi:menu" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="menu" :class="[{ 'toggle_visible': menu_visible }]">
|
||||
<template v-for="item in menu">
|
||||
<NuxtLink :to="item.external_link || ((route.name == 'index' ? '' : '/') + `#${item.slug}`)"
|
||||
:target="item.external_link ? '_blank' : '_self'" @click="toggle_menu">
|
||||
{{ item.menu_title }}
|
||||
</NuxtLink>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,30 @@
|
|||
import { useRuntimeConfig, useFetch, createError } from '#imports'
|
||||
|
||||
export function useApiFetch() {
|
||||
const config = useRuntimeConfig()
|
||||
const apiBase = config.public.apiBase
|
||||
const prefix = config.public.apiPrefix
|
||||
|
||||
const fetchData = <T>(path: string, global = false) => {
|
||||
const headers = new Headers()
|
||||
headers.set('Referer', config.public.baseUrl)
|
||||
|
||||
return useFetch<T>(`${apiBase}/${global ? 'gb' : prefix}/${path}`, {
|
||||
baseURL: config.public.baseUrl,
|
||||
headers,
|
||||
onResponseError({ response }) {
|
||||
console.log(response.status)
|
||||
console.log(response.url)
|
||||
window.location.pathname = '/404'
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
fatal: true
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
fetchData
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
services:
|
||||
front:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
container_name: mns_mini_skamja_${BRANCH:-dev}
|
||||
restart: always
|
||||
ports:
|
||||
- "${DOCKER_PORT:-80}:3000"
|
||||
volumes:
|
||||
- ./.env:/src/.env
|
||||
image: ci.svs-tech.pro/mns-mini-skamja:${BRANCH:-dev}
|
|
@ -0,0 +1,54 @@
|
|||
<script setup lang="ts">
|
||||
import '@/assets/main.scss'
|
||||
const config = useRuntimeConfig()
|
||||
const { fetchData } = useApiFetch()
|
||||
|
||||
import type { NuxtError } from '#app'
|
||||
import og_img from '/og_img.png'
|
||||
|
||||
const { data: seoData } = await fetchData<ApiKpType>(`kp/2/`)
|
||||
|
||||
useSeoMeta({
|
||||
title: seoData.value?.title,
|
||||
ogTitle: seoData.value?.title,
|
||||
description: seoData.value?.content,
|
||||
ogDescription: seoData.value?.content,
|
||||
ogImage: config.public.baseUrl + og_img,
|
||||
// twitterCard: 'summary_large_image',
|
||||
})
|
||||
|
||||
const props = defineProps({
|
||||
error: Object as () => NuxtError
|
||||
})
|
||||
const route = useRoute()
|
||||
if(route.path !== '/404') {
|
||||
// navigateTo('/404')
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div>
|
||||
<Header />
|
||||
<div class="siteblock bg-white">
|
||||
<div class="container prose">
|
||||
<div class="col-span-full">
|
||||
<h1>Вы ищете страницу, которой не существует. Вернитесь на главную страницу сайта</h1>
|
||||
<p>Извините, но мы не можем найти запрашиваемую страницу. К сожалению, мы не можем помочь вам с
|
||||
покупкой забора здесь.</p>
|
||||
<p>
|
||||
<code>
|
||||
{{ error?.message }}
|
||||
</code>
|
||||
</p>
|
||||
<button @click="navigateTo('/')" class="not-prose">Вернуться на главную</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="siteblock siteblock_calc bg-white">
|
||||
<Suspense>
|
||||
<CalcModels />
|
||||
</Suspense>
|
||||
</div>
|
||||
<Footer />
|
||||
<Modal />
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,72 @@
|
|||
declare module '*.glb' {
|
||||
const src: string
|
||||
export default src
|
||||
}
|
||||
|
||||
type ApiKpType = {
|
||||
id: number
|
||||
title: string
|
||||
content: string
|
||||
url: string
|
||||
meta_title: any
|
||||
meta_description: string
|
||||
keywords: any
|
||||
is_indexed: boolean
|
||||
}
|
||||
|
||||
type Menu = {
|
||||
id: number
|
||||
type: string
|
||||
pages: MenuPage[]
|
||||
}
|
||||
|
||||
type MenuPage = {
|
||||
id: number
|
||||
order: number
|
||||
title: string
|
||||
menu_title: string
|
||||
slug: string
|
||||
external_link: string
|
||||
content: string
|
||||
image: string
|
||||
}
|
||||
|
||||
type ApiReviewsType = {
|
||||
id: number
|
||||
image: string
|
||||
text: string
|
||||
comment: string
|
||||
}
|
||||
|
||||
type Footer = {
|
||||
id: number
|
||||
text: string
|
||||
small_text: boolean
|
||||
}
|
||||
|
||||
type SocialNetwork = {
|
||||
id: number
|
||||
name: string
|
||||
link: string
|
||||
icon: string
|
||||
}
|
||||
|
||||
type ApiAdvantageType = {
|
||||
id: number
|
||||
title: string
|
||||
content: string
|
||||
}
|
||||
type DiscountType = {
|
||||
id: number
|
||||
min_quantity: number
|
||||
max_quantitt?: number
|
||||
percent: number
|
||||
}
|
||||
type ApiCalcType = {
|
||||
id: number
|
||||
title: string
|
||||
pillar: string
|
||||
pillar_base: string
|
||||
lamelles_block: string
|
||||
discount: DiscountType[]
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
|
||||
export default defineNuxtConfig({
|
||||
devtools: { enabled: false },
|
||||
hooks: {},
|
||||
|
||||
app: {
|
||||
pageTransition: { name: 'page', mode: 'out-in' },
|
||||
head: {
|
||||
viewport: 'width=device-width, initial-scale=1',
|
||||
htmlAttrs: {
|
||||
lang: 'ru',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
ssr: true,
|
||||
|
||||
modules: [
|
||||
'@nuxtjs/tailwindcss',
|
||||
"@nuxt/image",
|
||||
"nuxt-icon",
|
||||
"nuxt-svgo",
|
||||
'@tresjs/nuxt',
|
||||
'@nuxtjs/robots',
|
||||
'@artmizu/yandex-metrika-nuxt',
|
||||
],
|
||||
|
||||
runtimeConfig: {
|
||||
public: {
|
||||
apiPrefix: 'sk',
|
||||
apiBase: process.env.mode == 'DEVELOPMENT' ? "http://mns.dev.kustarshina.ru/kp" : "https://mns.kustarshina.ru/kp",
|
||||
imgBase: 'https://mns.kustarshina.ru',
|
||||
baseUrl: '',
|
||||
yandexMetrika: {
|
||||
id: 0
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
routeRules: {
|
||||
'/index.html': { redirect: '/' },
|
||||
'/index.php': { redirect: '/' },
|
||||
},
|
||||
|
||||
nitro: {
|
||||
prerender: {
|
||||
crawlLinks: false
|
||||
},
|
||||
},
|
||||
|
||||
vite: {
|
||||
assetsInclude: ['**/*.glb', '**/*.gltf'],
|
||||
build: {
|
||||
target: 'esnext'
|
||||
},
|
||||
},
|
||||
|
||||
site: { indexable: false },
|
||||
|
||||
robots: {
|
||||
UserAgent: "*",
|
||||
Disallow: "",
|
||||
},
|
||||
|
||||
compatibilityDate: '2025-03-12'
|
||||
})
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"name": "nuxt-app",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "nuxt build",
|
||||
"dev": "nuxt dev",
|
||||
"generate": "nuxt generate",
|
||||
"preview": "nuxt preview",
|
||||
"postinstall": "nuxt prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@artmizu/yandex-metrika-nuxt": "^1.0.4",
|
||||
"@monogrid/gainmap-js": "^3.0.5",
|
||||
"@nodetoy/three-nodetoy": "^0.1.36",
|
||||
"@nuxt/image": "^1.7.0",
|
||||
"@nuxtjs/robots": "^4.0.0",
|
||||
"@nuxtjs/sitemap": "^5.3.5",
|
||||
"@nuxtjs/tailwindcss": "^6.12.0",
|
||||
"@tailwindcss/typography": "^0.5.13",
|
||||
"@tresjs/cientos": "^3.9.0",
|
||||
"@tresjs/core": "^4.0.2",
|
||||
"@tresjs/nuxt": "^3.0.8",
|
||||
"@tresjs/post-processing": "^0.7.1",
|
||||
"consola": "^3.2.3",
|
||||
"marked": "^12.0.2",
|
||||
"nuxt": "^3.11.2",
|
||||
"nuxt-icon": "^0.6.10",
|
||||
"nuxt-svgo": "^4.0.1",
|
||||
"sass": "^1.77.4",
|
||||
"sharp": "^0.33.5",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"three": "^0.165.0",
|
||||
"vue": "^3.4.27",
|
||||
"vue-router": "^4.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/imagemin": "^9.0.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<script setup lang="ts">
|
||||
const config = useRuntimeConfig()
|
||||
const imgBase = config.public.imgBase
|
||||
|
||||
import { marked } from 'marked';
|
||||
|
||||
import og_img from '/og_img.png'
|
||||
|
||||
// const { data: seoData } = await apiFetch<ApiKpType>(`kp/1/`)
|
||||
// useSeoMeta({
|
||||
// title: seoData.value?.title,
|
||||
// ogTitle: seoData.value?.title,
|
||||
// description: seoData.value?.content,
|
||||
// ogDescription: seoData.value?.content,
|
||||
// ogImage: config.public.baseUrl + og_img,
|
||||
// // twitterCard: 'summary_large_image',
|
||||
// })
|
||||
</script>
|
||||
<template>
|
||||
1234
|
||||
</template>
|
After Width: | Height: | Size: 401 KiB |
After Width: | Height: | Size: 317 KiB |
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"extends": "../.nuxt/tsconfig.server.json"
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
import type { Config } from 'tailwindcss'
|
||||
import colors from 'tailwindcss/colors'
|
||||
import { fontFamily, fontSize } from 'tailwindcss/defaultTheme'
|
||||
import tailwindTypography from '@tailwindcss/typography'
|
||||
const ioprim = {
|
||||
'50': '#fff6ed',
|
||||
'100': '#ffead4',
|
||||
'200': '#ffd1a8',
|
||||
'300': '#ffb070',
|
||||
'400': '#ff8337',
|
||||
'500': '#ff5a06',
|
||||
'600': '#f04506',
|
||||
'700': '#c73107',
|
||||
'800': '#9e280e',
|
||||
'900': '#7f240f',
|
||||
'950': '#450e05',
|
||||
}
|
||||
const sail = {
|
||||
'50': '#f0f9ff',
|
||||
'100': '#dff1ff',
|
||||
'200': '#bfe7ff',
|
||||
'300': '#79d0ff',
|
||||
'400': '#32b9fe',
|
||||
'500': '#07a0f0',
|
||||
'600': '#007fcd',
|
||||
'700': '#0065a6',
|
||||
'800': '#035689',
|
||||
'900': '#094871',
|
||||
'950': '#062d4b',
|
||||
}
|
||||
|
||||
export default <Partial<Config>>{
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: {
|
||||
...sail,
|
||||
DEFAULT: sail[200]
|
||||
},
|
||||
ioprim: {
|
||||
...ioprim,
|
||||
DEFAULT: ioprim[500],
|
||||
},
|
||||
neutral: {
|
||||
...colors.gray,
|
||||
DEFAULT: colors.gray[300]
|
||||
}
|
||||
},
|
||||
fontFamily: {
|
||||
...fontFamily,
|
||||
serif: 'Overpass',
|
||||
sans: 'Roboto',
|
||||
'h1': ['Overpass']
|
||||
},
|
||||
fontSize: {
|
||||
...fontSize,
|
||||
'6xl': ['3.5rem', { lineHeight: '1' }],
|
||||
},
|
||||
typography: ({ theme }) => ({
|
||||
DEFAULT: {
|
||||
css: {
|
||||
'p': {
|
||||
marginBottom: theme('spacing.7'),
|
||||
marginTop: theme('spacing.0'),
|
||||
},
|
||||
'h2': {
|
||||
textTransform: 'uppercase',
|
||||
fontWeight: theme('fontWeight.normal'),
|
||||
fontSize: theme('fontSize.3xl[2]'),
|
||||
marginTop: theme('spacing.0'),
|
||||
marginBottom: theme('spacing.7'),
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
plugins: [tailwindTypography]
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
// https://nuxt.com/docs/guide/concepts/typescript
|
||||
"extends": "./.nuxt/tsconfig.json"
|
||||
}
|