├── .gitattributes
├── .gitignore
├── Credits.md
├── LICENSE
├── README.md
├── css
├── aos.css
├── editor.css
├── style.bundle.css
└── vvvebjs-editor-helpers.css
├── demo
├── album
│ └── index.html
├── blog
│ ├── blog.css
│ └── index.html
├── carousel
│ ├── carousel.css
│ └── index.html
├── landing
│ └── index.html
├── narrow-jumbotron
│ ├── index.html
│ └── narrow-jumbotron.css
├── offcanvas
│ ├── index.html
│ ├── offcanvas.css
│ └── offcanvas.js
├── pricing
│ ├── index.html
│ └── pricing.css
└── product
│ ├── index.html
│ └── product.css
├── editor.html
├── editor.php
├── favicon.ico
├── fonts
└── line-awesome
│ ├── la-brands-400.eot
│ ├── la-brands-400.svg
│ ├── la-brands-400.ttf
│ ├── la-brands-400.woff
│ ├── la-brands-400.woff2
│ ├── la-regular-400.eot
│ ├── la-regular-400.svg
│ ├── la-regular-400.ttf
│ ├── la-regular-400.woff
│ ├── la-regular-400.woff2
│ ├── la-solid-900.eot
│ ├── la-solid-900.svg
│ ├── la-solid-900.ttf
│ ├── la-solid-900.woff
│ └── la-solid-900.woff2
├── gulpfile.js
├── img
├── bag.svg
├── day67-dog.svg
├── day68-happy-cat.svg
├── demo
│ └── hero-3.jpg
├── illustrations.co
│ ├── 104-dumbbell.svg
│ ├── 107-healthy.svg
│ └── 126-namaste-no-hand-shake.svg
├── logo-white.png
├── logo.png
├── sections
│ └── team
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ └── 4.jpg
├── video-1.jpg
└── video-2.jpg
├── js
├── aos.js
├── bootstrap.min.js
├── jquery.hotkeys.js
├── jquery.min.js
├── popper.min.js
└── theme.js
├── libs
├── aos
│ ├── aos.css
│ └── aos.js
├── autocomplete
│ ├── autocomplete.gif
│ └── jquery.autocomplete.js
├── bootstrap-colorpicker
│ ├── css
│ │ ├── bootstrap-colorpicker.min.css
│ │ └── bootstrap-colorpicker.min.css.map
│ └── js
│ │ ├── bootstrap-colorpicker.min.js
│ │ └── bootstrap-colorpicker.min.js.map
├── builder
│ ├── blocks-bootstrap4.js
│ ├── builder.js
│ ├── components-bootstrap4.js
│ ├── components-bootstrap5.js
│ ├── components-common.js
│ ├── components-elements.js
│ ├── components-html.js
│ ├── components-server.js
│ ├── components-widgets.js
│ ├── icons
│ │ ├── alert.svg
│ │ ├── arrow-down.svg
│ │ ├── arrow-right.svg
│ │ ├── audio.svg
│ │ ├── badge.svg
│ │ ├── blockquote.svg
│ │ ├── breadcrumbs.svg
│ │ ├── button.svg
│ │ ├── button_group.svg
│ │ ├── button_toolbar.svg
│ │ ├── cart.svg
│ │ ├── categories.svg
│ │ ├── chart.svg
│ │ ├── checkbox.svg
│ │ ├── checkout.svg
│ │ ├── chevron-down.svg
│ │ ├── chevron-right.svg
│ │ ├── components
│ │ │ ├── cart.svg
│ │ │ ├── checkbox.svg
│ │ │ ├── contact-form.svg
│ │ │ └── map.svg
│ │ ├── container.svg
│ │ ├── facebook.svg
│ │ ├── file-manager-layout.svg
│ │ ├── file.svg
│ │ ├── filters.svg
│ │ ├── folder.svg
│ │ ├── form.svg
│ │ ├── grid_row.svg
│ │ ├── heading.svg
│ │ ├── hr.svg
│ │ ├── image.svg
│ │ ├── images.svg
│ │ ├── instagram.svg
│ │ ├── jumbotron.svg
│ │ ├── label.svg
│ │ ├── left-column-layout.svg
│ │ ├── link.svg
│ │ ├── list.svg
│ │ ├── list_group.svg
│ │ ├── map.svg
│ │ ├── maps.png
│ │ ├── minus_round.svg
│ │ ├── navbar.svg
│ │ ├── pagination.svg
│ │ ├── panel.svg
│ │ ├── paragraph.svg
│ │ ├── paypal.svg
│ │ ├── play-button.svg
│ │ ├── plus_round.svg
│ │ ├── product.svg
│ │ ├── product_gallery.svg
│ │ ├── products.svg
│ │ ├── progressbar.svg
│ │ ├── radio.svg
│ │ ├── right-column-layout.svg
│ │ ├── search.svg
│ │ ├── select_input.svg
│ │ ├── slider.svg
│ │ ├── star.svg
│ │ ├── stream-solid.svg
│ │ ├── table.svg
│ │ ├── text_area.svg
│ │ ├── text_input.svg
│ │ ├── twitter.svg
│ │ ├── user.svg
│ │ ├── video.svg
│ │ ├── well.svg
│ │ └── youtube.svg
│ ├── inputs.js
│ ├── plugin-aos.js
│ ├── plugin-bootstrap-colorpicker.js
│ ├── plugin-ckeditor.js
│ ├── plugin-codemirror.js
│ ├── plugin-google-fonts.js
│ ├── plugin-jszip.js
│ ├── plugin-media.js
│ ├── plugin-tinymce.js
│ ├── sections-bootstrap4.js
│ └── undo.js
├── codemirror
│ ├── lib
│ │ ├── codemirror.css
│ │ ├── codemirror.js
│ │ ├── formatting.js
│ │ └── xml.js
│ └── theme
│ │ └── material.css
├── jszip
│ ├── filesaver.js
│ ├── filesaver.min.js
│ ├── jszip.js
│ └── jszip.min.js
└── media
│ ├── media.css
│ ├── media.js
│ └── openverse.js
├── media
├── 15.jpg
├── 2.jpg
├── 4.jpg
├── 5.jpg
├── 6.jpg
├── 7.jpg
├── Sky Clouds Royalty Free HD Video Footage [CC0] [fmngCpy1O2E].webp
├── hero-3.jpg
└── mountains
│ ├── 1.jpg
│ ├── 12.jpg
│ └── 3.jpg
├── new-page-blank-template.html
├── package-lock.json
├── package.json
├── resources
├── google-fonts.json
└── svg
│ └── icons
│ ├── 150-outlined-icons
│ ├── index.html
│ └── readme.txt
│ ├── 77_essential_icons
│ ├── index.html
│ └── readme.txt
│ ├── ant-design-icons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── boxicons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── clarity-icons
│ ├── LICENSE
│ ├── NOTICE.txt
│ ├── README.md
│ └── index.html
│ ├── coreui-icons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── css.gg
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── dripicons
│ ├── LICENSE
│ ├── index.html
│ └── readme.txt
│ ├── elegant-font
│ ├── gpl_license.txt
│ ├── index.html
│ └── mit_license.txt
│ ├── eva-icons
│ ├── LICENSE.txt
│ ├── README.md
│ └── index.html
│ ├── feather
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── font-awesome
│ ├── LICENSE.txt
│ └── index.html
│ ├── heroicons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── iconoir
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── iconsax
│ ├── index.html
│ └── license.txt
│ ├── ikonate
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── ionicons
│ ├── LICENSE
│ ├── index.html
│ └── readme.md
│ ├── jam-icons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── linea
│ ├── index.html
│ ├── read_me.txt
│ └── style.css
│ ├── lineawesome
│ ├── LICENSE.txt
│ └── index.html
│ ├── material-design
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── octicons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
│ ├── olicons
│ ├── README.md
│ └── index.html
│ ├── open-iconic
│ ├── ICON-LICENSE
│ ├── README.md
│ └── index.html
│ ├── pe-icon-7-stroke
│ ├── index.html
│ └── read-me.txt
│ ├── remix-icon
│ ├── README.md
│ └── index.html
│ ├── system-uicons
│ ├── LICENSE
│ └── index.html
│ ├── tabler-icons
│ ├── LICENSE
│ ├── LICENSE.txt
│ ├── README.md
│ └── index.html
│ ├── themify
│ ├── index.html
│ └── readme.txt
│ └── unicons
│ ├── LICENSE
│ ├── README.md
│ └── index.html
├── save.php
├── scan.php
├── scss
├── _bootstrap-css-vars.scss
├── _builder.scss
├── _csstree.scss
├── bootstrap
│ ├── _accordion.scss
│ ├── _alert.scss
│ ├── _badge.scss
│ ├── _breadcrumb.scss
│ ├── _button-group.scss
│ ├── _buttons.scss
│ ├── _card.scss
│ ├── _carousel.scss
│ ├── _close.scss
│ ├── _containers.scss
│ ├── _dropdown.scss
│ ├── _forms.scss
│ ├── _functions.scss
│ ├── _grid.scss
│ ├── _helpers.scss
│ ├── _images.scss
│ ├── _list-group.scss
│ ├── _maps.scss
│ ├── _mixins.scss
│ ├── _modal.scss
│ ├── _nav.scss
│ ├── _navbar.scss
│ ├── _offcanvas.scss
│ ├── _pagination.scss
│ ├── _placeholders.scss
│ ├── _popover.scss
│ ├── _progress.scss
│ ├── _reboot.scss
│ ├── _root.scss
│ ├── _spinners.scss
│ ├── _tables.scss
│ ├── _toasts.scss
│ ├── _tooltip.scss
│ ├── _transitions.scss
│ ├── _type.scss
│ ├── _utilities.scss
│ ├── _variables-dark.scss
│ ├── _variables.scss
│ ├── bootstrap-grid.scss
│ ├── bootstrap-reboot.scss
│ ├── bootstrap-utilities.scss
│ ├── bootstrap.scss
│ ├── forms
│ │ ├── _floating-labels.scss
│ │ ├── _form-check.scss
│ │ ├── _form-control.scss
│ │ ├── _form-range.scss
│ │ ├── _form-select.scss
│ │ ├── _form-text.scss
│ │ ├── _input-group.scss
│ │ ├── _labels.scss
│ │ └── _validation.scss
│ ├── helpers
│ │ ├── _clearfix.scss
│ │ ├── _color-bg.scss
│ │ ├── _colored-links.scss
│ │ ├── _focus-ring.scss
│ │ ├── _icon-link.scss
│ │ ├── _position.scss
│ │ ├── _ratio.scss
│ │ ├── _stacks.scss
│ │ ├── _stretched-link.scss
│ │ ├── _text-truncation.scss
│ │ ├── _visually-hidden.scss
│ │ └── _vr.scss
│ ├── mixins
│ │ ├── _alert.scss
│ │ ├── _backdrop.scss
│ │ ├── _banner.scss
│ │ ├── _border-radius.scss
│ │ ├── _box-shadow.scss
│ │ ├── _breakpoints.scss
│ │ ├── _buttons.scss
│ │ ├── _caret.scss
│ │ ├── _clearfix.scss
│ │ ├── _color-mode.scss
│ │ ├── _color-scheme.scss
│ │ ├── _container.scss
│ │ ├── _deprecate.scss
│ │ ├── _forms.scss
│ │ ├── _gradients.scss
│ │ ├── _grid.scss
│ │ ├── _image.scss
│ │ ├── _list-group.scss
│ │ ├── _lists.scss
│ │ ├── _pagination.scss
│ │ ├── _reset-text.scss
│ │ ├── _resize.scss
│ │ ├── _table-variants.scss
│ │ ├── _text-truncate.scss
│ │ ├── _transition.scss
│ │ ├── _utilities.scss
│ │ └── _visually-hidden.scss
│ ├── tests
│ │ ├── jasmine.js
│ │ ├── mixins
│ │ │ ├── _color-modes.test.scss
│ │ │ ├── _media-query-color-mode-full.test.scss
│ │ │ └── _utilities.test.scss
│ │ ├── sass-true
│ │ │ ├── register.js
│ │ │ └── runner.js
│ │ └── utilities
│ │ │ └── _api.test.scss
│ ├── utilities
│ │ └── _api.scss
│ └── vendor
│ │ └── _rfs.scss
├── components
│ └── gallery.scss
├── editor.scss
├── line-awesome
│ ├── _bordered_pulled.scss
│ ├── _core.scss
│ ├── _fixed-width.scss
│ ├── _icons.scss
│ ├── _larger.scss
│ ├── _list.scss
│ ├── _mixins.scss
│ ├── _path.scss
│ ├── _rotated-flipped.scss
│ ├── _screen-reader.scss
│ ├── _stacked.scss
│ ├── _variables.scss
│ ├── dist
│ │ └── line-awesome
│ │ │ ├── css
│ │ │ ├── line-awesome.css
│ │ │ └── line-awesome.min.css
│ │ │ └── fonts
│ │ │ ├── la-brands-400.eot
│ │ │ ├── la-brands-400.svg
│ │ │ ├── la-brands-400.ttf
│ │ │ ├── la-brands-400.woff
│ │ │ ├── la-brands-400.woff2
│ │ │ ├── la-regular-400.eot
│ │ │ ├── la-regular-400.svg
│ │ │ ├── la-regular-400.ttf
│ │ │ ├── la-regular-400.woff
│ │ │ ├── la-regular-400.woff2
│ │ │ ├── la-solid-900.eot
│ │ │ ├── la-solid-900.svg
│ │ │ ├── la-solid-900.ttf
│ │ │ ├── la-solid-900.woff
│ │ │ └── la-solid-900.woff2
│ └── line-awesome.scss
└── vvvebjs-editor-helpers.scss
└── upload.php
/.gitattributes:
--------------------------------------------------------------------------------
1 | * linguist-vendored
2 | *.js linguist-vendored=false
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | *.css.map
3 | *.js.map
4 |
--------------------------------------------------------------------------------
/Credits.md:
--------------------------------------------------------------------------------
1 | # Credits
2 | ## SVG icons
3 | * Eva Icons - MIT License - https://github.com/akveo/eva-icons
4 | * IonIcons - MIT license - https://ionic.io/ionicons
5 | * Freebiesbug - CC BY - https://freebiesbug.com/psd-freebies/150-free-outlined-icons-psd-ai-svg-webfont/
6 | * Line Awesome - MIT license - https://icons8.com/line-awesome
7 | * 77 Essential Icons - CC BY 4.0 - https://dribbble.com/shots/1934932-77-Essential-Icons-Free-Download
8 | * Dripicons - CC BY 4.0 - https://github.com/amitjakhu/dripicons
9 | * Themify Icons - MIT License - https://themify.me/themify-icons
10 | * Feather - MIT License - https://github.com/feathericons/feather
11 | * Boxicons - MIT License - https://boxicons.com/
12 | * Linea - CC BY 4.0 - https://www.linea.is/
13 | * Core UI - CC BY 4.0 - https://github.com/coreui/coreui-icons
14 | * Open Iconic - MIT License - https://useiconic.com/open/
15 | * Font Awesome - CC BY 4.0 https://github.com/FortAwesome/Font-Awesome
16 | * Elegant Icon Font - MIT License - https://www.elegantthemes.com/blog/resources/elegant-icon-font
17 | * Material Design - Apache 2.0 - https://github.com/Templarian/MaterialDesign
18 | * RemixIcon - Apache 2.0 License -https://github.com/Iconscout/unicons
19 | * Unicons - Apache 2.0 License -https://github.com/Remix-Design/remixicon
20 | * clarity-icons - MIT License - https://clarity.design/foundation/icons/
21 | * Jam icons - MIT License - https://v2.jam-icons.com/
22 | * Ant Design SVG icons - MIT License - https://github.com/ant-design/ant-design-icons
23 | * Olicons - CC BY - https://github.com/owlling/olicons
24 | * Css.gg - MIT License -https://github.com/astrit/css.gg
25 | * Tabler icons - MIT License - https://github.com/tabler/tabler-icons
26 | * Ikonate - MIT License - https://github.com/mikolajdobrucki/ikonate
27 | * iconoir - MIT License - https://github.com/lucaburgio/iconoir
28 | * octicons - MIT License - https://github.com/primer/octicons
29 | * heroicons - MIT License - https://github.com/tailwindlabs/heroicons
30 | * Health Icons - MIT License - https://github.com/resolvetosavelives/healthicons
31 | * iconsax - Custom Free License - https://github.com/lusaxweb/iconsax
32 | * System-uicons - Unilicense - https://github.com/CoreyGinnivan/system-uicons
33 |
34 |
--------------------------------------------------------------------------------
/css/vvvebjs-editor-helpers.css:
--------------------------------------------------------------------------------
1 | body {
2 | scrollbar-color: rgba(0, 0, 0, 0.1) #fff;
3 | scrollbar-width: thin; }
4 | body::-webkit-scrollbar {
5 | width: 0.5rem;
6 | background-color: rgba(255, 255, 255, 0.1);
7 | -webkit-box-shadow: none; }
8 | body::-webkit-scrollbar-track {
9 | -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.05); }
10 | body::-webkit-scrollbar-thumb {
11 | background-color: rgba(0, 0, 0, 0.15);
12 | outline: 1px solid slategrey; }
13 |
14 | [data-vvveb-disabled] {
15 | pointer-events: none;
16 | position: relative; }
17 | [data-vvveb-disabled]::after {
18 | content: "Non-editable area";
19 | position: absolute;
20 | left: 0px;
21 | top: 0px;
22 | width: 100%;
23 | height: 100%;
24 | padding-top: 5px;
25 | font-weight: 600;
26 | font-size: 12px;
27 | text-align: center;
28 | background: rgba(252, 252, 252, 0.85);
29 | border: 1px dashed #999;
30 | overflow: hidden;
31 | display: flex;
32 | align-items: center;
33 | justify-content: center; }
34 |
35 | [data-vvveb-disabled-area] *:not([data-vvveb-edit-exception]) {
36 | pointer-events: none;
37 | position: relative; }
38 | [data-vvveb-disabled-area] *:not([data-vvveb-edit-exception])::after {
39 | content: "Non-editable area";
40 | position: absolute;
41 | left: 0px;
42 | top: 0px;
43 | width: 100%;
44 | height: 100%;
45 | padding-top: 5px;
46 | font-weight: 600;
47 | font-size: 12px;
48 | text-align: center;
49 | background: rgba(252, 252, 252, 0.85);
50 | border: 1px dashed #999;
51 | overflow: hidden;
52 | display: flex;
53 | align-items: center;
54 | justify-content: center; }
55 |
56 | /*
57 | Prevents iframe mouse events that prevents clicking on the component
58 | */
59 | [data-component-video] > iframe,
60 | [data-component-maps] > iframe,
61 | [data-component-twitter] > iframe,
62 | [data-component-openstreetmap] > iframe {
63 | pointer-events: none; }
64 |
65 | [contenteditable="true"] {
66 | outline: none; }
67 | [contenteditable="true"]:focus-visible {
68 | outline: none; }
69 |
70 | .vvveb-hidden {
71 | display: none !important; }
72 |
--------------------------------------------------------------------------------
/demo/blog/blog.css:
--------------------------------------------------------------------------------
1 | /* stylelint-disable selector-list-comma-newline-after */
2 |
3 | .blog-header {
4 | line-height: 1;
5 | border-bottom: 1px solid #e5e5e5;
6 | }
7 |
8 | .blog-header-logo {
9 | font-family: "Playfair Display", Georgia, "Times New Roman", serif/*rtl:Amiri, Georgia, "Times New Roman", serif*/;
10 | font-size: 2.25rem;
11 | }
12 |
13 | .blog-header-logo:hover {
14 | text-decoration: none;
15 | }
16 |
17 | h1, h2, h3, h4, h5, h6 {
18 | font-family: "Playfair Display", Georgia, "Times New Roman", serif/*rtl:Amiri, Georgia, "Times New Roman", serif*/;
19 | }
20 |
21 | .display-4 {
22 | font-size: 2.5rem;
23 | }
24 | @media (min-width: 768px) {
25 | .display-4 {
26 | font-size: 3rem;
27 | }
28 | }
29 |
30 | .nav-scroller {
31 | position: relative;
32 | z-index: 2;
33 | height: 2.75rem;
34 | overflow-y: hidden;
35 | }
36 |
37 | .nav-scroller .nav {
38 | display: flex;
39 | flex-wrap: nowrap;
40 | padding-bottom: 1rem;
41 | margin-top: -1px;
42 | overflow-x: auto;
43 | text-align: center;
44 | white-space: nowrap;
45 | -webkit-overflow-scrolling: touch;
46 | }
47 |
48 | .nav-scroller .nav-link {
49 | padding-top: .75rem;
50 | padding-bottom: .75rem;
51 | font-size: .875rem;
52 | }
53 |
54 | .card-img-right {
55 | height: 100%;
56 | border-radius: 0 3px 3px 0;
57 | }
58 |
59 | .flex-auto {
60 | flex: 0 0 auto;
61 | }
62 |
63 | .h-250 { height: 250px; }
64 | @media (min-width: 768px) {
65 | .h-md-250 { height: 250px; }
66 | }
67 |
68 | /* Pagination */
69 | .blog-pagination {
70 | margin-bottom: 4rem;
71 | }
72 | .blog-pagination > .btn {
73 | border-radius: 2rem;
74 | }
75 |
76 | /*
77 | * Blog posts
78 | */
79 | .blog-post {
80 | margin-bottom: 4rem;
81 | }
82 | .blog-post-title {
83 | margin-bottom: .25rem;
84 | font-size: 2.5rem;
85 | }
86 | .blog-post-meta {
87 | margin-bottom: 1.25rem;
88 | color: #727272;
89 | }
90 |
91 | /*
92 | * Footer
93 | */
94 | .blog-footer {
95 | padding: 2.5rem 0;
96 | color: #727272;
97 | text-align: center;
98 | background-color: #f9f9f9;
99 | border-top: .05rem solid #e5e5e5;
100 | }
101 | .blog-footer p:last-child {
102 | margin-bottom: 0;
103 | }
104 |
--------------------------------------------------------------------------------
/demo/carousel/carousel.css:
--------------------------------------------------------------------------------
1 | /* GLOBAL STYLES
2 | -------------------------------------------------- */
3 | /* Padding below the footer and lighter body text */
4 |
5 | body {
6 | padding-top: 3rem;
7 | padding-bottom: 3rem;
8 | color: #5a5a5a;
9 | }
10 |
11 |
12 | /* CUSTOMIZE THE CAROUSEL
13 | -------------------------------------------------- */
14 |
15 | /* Carousel base class */
16 | .carousel {
17 | margin-bottom: 4rem;
18 | }
19 | /* Since positioning the image, we need to help out the caption */
20 | .carousel-caption {
21 | bottom: 3rem;
22 | z-index: 10;
23 | }
24 |
25 | /* Declare heights because of positioning of img element */
26 | .carousel-item {
27 | height: 32rem;
28 | }
29 | .carousel-item > img {
30 | position: absolute;
31 | top: 0;
32 | left: 0;
33 | min-width: 100%;
34 | height: 32rem;
35 | }
36 |
37 |
38 | /* MARKETING CONTENT
39 | -------------------------------------------------- */
40 |
41 | /* Center align the text within the three columns below the carousel */
42 | .marketing .col-lg-4 {
43 | margin-bottom: 1.5rem;
44 | text-align: center;
45 | }
46 | .marketing h2 {
47 | font-weight: 400;
48 | }
49 | /* rtl:begin:ignore */
50 | .marketing .col-lg-4 p {
51 | margin-right: .75rem;
52 | margin-left: .75rem;
53 | }
54 | /* rtl:end:ignore */
55 |
56 |
57 | /* Featurettes
58 | ------------------------- */
59 |
60 | .featurette-divider {
61 | margin: 5rem 0; /* Space out the Bootstrap
more */
62 | }
63 |
64 | /* Thin out the marketing headings */
65 | .featurette-heading {
66 | font-weight: 300;
67 | line-height: 1;
68 | /* rtl:remove */
69 | letter-spacing: -.05rem;
70 | }
71 |
72 |
73 | /* RESPONSIVE CSS
74 | -------------------------------------------------- */
75 |
76 | @media (min-width: 40em) {
77 | /* Bump up size of carousel content */
78 | .carousel-caption p {
79 | margin-bottom: 1.25rem;
80 | font-size: 1.25rem;
81 | line-height: 1.4;
82 | }
83 |
84 | .featurette-heading {
85 | font-size: 50px;
86 | }
87 | }
88 |
89 | @media (min-width: 62em) {
90 | .featurette-heading {
91 | margin-top: 7rem;
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/demo/narrow-jumbotron/narrow-jumbotron.css:
--------------------------------------------------------------------------------
1 | /* Space out content a bit */
2 | body {
3 | padding-top: 1.5rem;
4 | padding-bottom: 1.5rem;
5 | background-color:#fff;
6 | }
7 |
8 | /* Everything but the jumbotron gets side spacing for mobile first views */
9 | .header,
10 | .marketing,
11 | .footer {
12 | padding-right: 1rem;
13 | padding-left: 1rem;
14 | }
15 |
16 | /* Custom page header */
17 | .header {
18 | padding-bottom: 1rem;
19 | border-bottom: .05rem solid #e5e5e5;
20 | }
21 | /* Make the masthead heading the same height as the navigation */
22 | .header h3 {
23 | margin-top: 0;
24 | margin-bottom: 0;
25 | line-height: 3rem;
26 | }
27 |
28 | /* Custom page footer */
29 | .footer {
30 | padding-top: 1.5rem;
31 | color: #777;
32 | border-top: .05rem solid #e5e5e5;
33 | }
34 |
35 | /* Customize container */
36 | @media (min-width: 48em) {
37 | .container {
38 | max-width: 46rem;
39 | }
40 | }
41 | .container-narrow > hr {
42 | margin: 2rem 0;
43 | }
44 |
45 | /* Main marketing message and sign up button */
46 | .jumbotron {
47 | text-align: center;
48 | border-bottom: .05rem solid #e5e5e5;
49 | }
50 |
51 | /* Supporting marketing content */
52 | .marketing {
53 | margin: 3rem 0;
54 | }
55 | .marketing p + h4 {
56 | margin-top: 1.5rem;
57 | }
58 |
59 | /* Responsive: Portrait tablets and up */
60 | @media screen and (min-width: 48em) {
61 | /* Remove the padding we set earlier */
62 | .header,
63 | .marketing,
64 | .footer {
65 | padding-right: 0;
66 | padding-left: 0;
67 | }
68 | /* Space out the masthead */
69 | .header {
70 | margin-bottom: 2rem;
71 | }
72 | /* Remove the bottom border on the jumbotron for visual effect */
73 | .jumbotron {
74 | border-bottom: 0;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/demo/offcanvas/offcanvas.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | overflow-x: hidden; /* Prevent scroll on narrow devices */
4 | }
5 |
6 | body {
7 | padding-top: 56px;
8 | }
9 |
10 | @media (max-width: 991.98px) {
11 | .offcanvas-collapse {
12 | position: fixed;
13 | top: 56px; /* Height of navbar */
14 | bottom: 0;
15 | left: 100%;
16 | width: 100%;
17 | padding-right: 1rem;
18 | padding-left: 1rem;
19 | overflow-y: auto;
20 | visibility: hidden;
21 | background-color: #343a40;
22 | transition: transform .3s ease-in-out, visibility .3s ease-in-out;
23 | }
24 | .offcanvas-collapse.open {
25 | visibility: visible;
26 | transform: translateX(-100%);
27 | }
28 | }
29 |
30 | .nav-scroller {
31 | position: relative;
32 | z-index: 2;
33 | height: 2.75rem;
34 | overflow-y: hidden;
35 | }
36 |
37 | .nav-scroller .nav {
38 | display: flex;
39 | flex-wrap: nowrap;
40 | padding-bottom: 1rem;
41 | margin-top: -1px;
42 | overflow-x: auto;
43 | color: rgba(255, 255, 255, .75);
44 | text-align: center;
45 | white-space: nowrap;
46 | -webkit-overflow-scrolling: touch;
47 | }
48 |
49 | .nav-underline .nav-link {
50 | padding-top: .75rem;
51 | padding-bottom: .75rem;
52 | font-size: .875rem;
53 | color: #6c757d;
54 | }
55 |
56 | .nav-underline .nav-link:hover {
57 | color: #007bff;
58 | }
59 |
60 | .nav-underline .active {
61 | font-weight: 500;
62 | color: #343a40;
63 | }
64 |
65 | .text-white-50 { color: rgba(255, 255, 255, .5); }
66 |
67 | .bg-purple { background-color: #6f42c1; }
68 |
--------------------------------------------------------------------------------
/demo/offcanvas/offcanvas.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | 'use strict'
3 |
4 | document.querySelector('[data-bs-toggle="offcanvas"]').addEventListener('click', function () {
5 | document.querySelector('.offcanvas-collapse').classList.toggle('open')
6 | })
7 | })()
8 |
--------------------------------------------------------------------------------
/demo/pricing/pricing.css:
--------------------------------------------------------------------------------
1 | .container {
2 | max-width: 960px;
3 | }
4 |
5 | .pricing-header {
6 | max-width: 700px;
7 | }
8 |
--------------------------------------------------------------------------------
/demo/product/product.css:
--------------------------------------------------------------------------------
1 | .container {
2 | max-width: 960px;
3 | }
4 |
5 | /*
6 | * Custom translucent site header
7 | */
8 |
9 | .site-header {
10 | background-color: rgba(0, 0, 0, .85);
11 | -webkit-backdrop-filter: saturate(180%) blur(20px);
12 | backdrop-filter: saturate(180%) blur(20px);
13 | }
14 | .site-header a {
15 | color: #8e8e8e;
16 | transition: color .15s ease-in-out;
17 | }
18 | .site-header a:hover {
19 | color: #fff;
20 | text-decoration: none;
21 | }
22 |
23 | /*
24 | * Dummy devices (replace them with your own or something else entirely!)
25 | */
26 |
27 | .product-device {
28 | position: absolute;
29 | right: 10%;
30 | bottom: -30%;
31 | width: 300px;
32 | height: 540px;
33 | background-color: #333;
34 | border-radius: 21px;
35 | transform: rotate(30deg);
36 | }
37 |
38 | .product-device::before {
39 | position: absolute;
40 | top: 10%;
41 | right: 10px;
42 | bottom: 10%;
43 | left: 10px;
44 | content: "";
45 | background-color: rgba(255, 255, 255, .1);
46 | border-radius: 5px;
47 | }
48 |
49 | .product-device-2 {
50 | top: -25%;
51 | right: auto;
52 | bottom: 0;
53 | left: 5%;
54 | background-color: #e5e5e5;
55 | }
56 |
57 |
58 | /*
59 | * Extra utilities
60 | */
61 |
62 | .flex-equal > * {
63 | flex: 1;
64 | }
65 | @media (min-width: 768px) {
66 | .flex-md-equal > * {
67 | flex: 1;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/editor.php:
--------------------------------------------------------------------------------
1 | through2.obj( function( file, enc, cb ) {
28 | if ( file.stat ) {
29 | file.stat.atime = file.stat.mtime = file.stat.ctime = new Date();
30 | }
31 | cb( null, file );
32 | });
33 |
34 | gulp.task('fileinclude', function() {
35 | //gulp.src(['./html/**/*.html', '!**/_*/**'])
36 | return gulp.src(['./html/*.html', './html/**/*.html', '!**/_*/**'])
37 | .pipe(fileinclude({
38 | prefix: '@@',
39 | basepath: '@file'
40 | }))
41 | .pipe(formatHtml())
42 | //.pipe( touch() )
43 | .pipe(gulp.dest('./'));
44 | });
45 |
46 | gulp.task('sass', function() {
47 | //gulp.src(['./html/**/*.html', '!**/_*/**'])
48 | return gulp.src(['./scss/*.scss'])
49 | .pipe(sass())
50 | .pipe(gulp.dest('./css'));
51 | });
52 |
53 |
54 | gulp.task('watch', function () {
55 | gulp.watch(['./html/*.html', './html/**/*.html'], gulp.series('fileinclude'));
56 | gulp.watch(['./scss/*.scss'], gulp.series('sass'));
57 | });
58 |
59 | // Default Task
60 | gulp.task('default', gulp.series('fileinclude', 'sass'));
61 |
--------------------------------------------------------------------------------
/img/bag.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
12 |
13 |
--------------------------------------------------------------------------------
/img/demo/hero-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/demo/hero-3.jpg
--------------------------------------------------------------------------------
/img/logo-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/logo-white.png
--------------------------------------------------------------------------------
/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/logo.png
--------------------------------------------------------------------------------
/img/sections/team/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/sections/team/1.jpg
--------------------------------------------------------------------------------
/img/sections/team/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/sections/team/2.jpg
--------------------------------------------------------------------------------
/img/sections/team/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/sections/team/3.jpg
--------------------------------------------------------------------------------
/img/sections/team/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/sections/team/4.jpg
--------------------------------------------------------------------------------
/img/video-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/video-1.jpg
--------------------------------------------------------------------------------
/img/video-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/img/video-2.jpg
--------------------------------------------------------------------------------
/js/theme.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Sticky navbar
3 | *
4 | */
5 |
6 | // When the user scrolls the page, execute navbarSticky
7 | window.onscroll = function() {navbarSticky()};
8 |
9 | // Get the navbar
10 | var navbar = document.getElementsByClassName("navbar")[0];
11 |
12 | // Get the offset position of the navbar
13 | var sticky = navbar.offsetTop ? navbar.offsetTop : navbar.offsetHeight;
14 |
15 | function toggleNavbarTheme () {
16 | if (navbar.classList.contains("navbar-dark")) {
17 | navbar.classList.add("navbar-light");
18 | navbar.classList.remove("navbar-dark");
19 | } else if (navbar.classList.contains("navbar-light")) {
20 | navbar.classList.add("navbar-dark");
21 | navbar.classList.remove("navbar-light");
22 | }
23 | }
24 |
25 |
26 | // Add the sticky class to the navbar when you reach its scroll position. Remove "sticky" when you leave the scroll position
27 | function navbarSticky() {
28 | let isSticky = (window.pageYOffset >= sticky);
29 |
30 | if (isSticky) {
31 | if (!navbar.classList.contains("sticky")) {
32 | navbar.classList.add("sticky");
33 | toggleNavbarTheme();
34 | }
35 | } else {
36 | if (navbar.classList.contains("sticky")) {
37 | navbar.classList.remove("sticky");
38 | toggleNavbarTheme();
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/libs/autocomplete/autocomplete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/libs/autocomplete/autocomplete.gif
--------------------------------------------------------------------------------
/libs/builder/icons/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
18 |
20 |
21 |
23 | image/svg+xml
24 |
26 |
27 |
28 |
29 |
30 |
32 |
52 |
58 |
62 |
63 |
--------------------------------------------------------------------------------
/libs/builder/icons/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
18 |
20 |
21 |
23 | image/svg+xml
24 |
26 |
27 |
28 |
29 |
30 |
32 |
52 |
58 |
62 |
63 |
--------------------------------------------------------------------------------
/libs/builder/icons/audio.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/libs/builder/icons/blockquote.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libs/builder/icons/chart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
21 |
43 |
45 |
46 |
48 | image/svg+xml
49 |
51 |
52 |
53 |
54 |
55 |
60 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/libs/builder/icons/chevron-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
21 |
43 |
45 |
46 |
48 | image/svg+xml
49 |
51 |
52 |
53 |
54 |
55 |
60 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/libs/builder/icons/components/cart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
16 |
17 |
--------------------------------------------------------------------------------
/libs/builder/icons/components/checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/components/contact-form.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
13 |
14 |
--------------------------------------------------------------------------------
/libs/builder/icons/components/map.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/libs/builder/icons/facebook.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/file-manager-layout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/file.svg:
--------------------------------------------------------------------------------
1 |
2 | image/svg+xml
--------------------------------------------------------------------------------
/libs/builder/icons/heading.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
21 |
43 |
45 |
46 |
48 | image/svg+xml
49 |
51 |
52 |
53 |
54 |
55 |
60 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/libs/builder/icons/hr.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
21 |
43 |
45 |
46 |
48 | image/svg+xml
49 |
51 |
52 |
53 |
54 |
55 |
60 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/libs/builder/icons/image.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libs/builder/icons/images.svg:
--------------------------------------------------------------------------------
1 |
2 |
15 |
17 |
18 |
20 | image/svg+xml
21 |
23 |
24 |
25 |
26 |
28 |
48 |
52 |
53 |
--------------------------------------------------------------------------------
/libs/builder/icons/label.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
21 |
43 |
45 |
46 |
48 | image/svg+xml
49 |
51 |
52 |
53 |
54 |
55 |
60 | LABEL
72 |
73 |
74 |
--------------------------------------------------------------------------------
/libs/builder/icons/left-column-layout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/link.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/libs/builder/icons/list.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/libs/builder/icons/maps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/libs/builder/icons/maps.png
--------------------------------------------------------------------------------
/libs/builder/icons/minus_round.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/paypal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/play-button.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/libs/builder/icons/plus_round.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/right-column-layout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/libs/builder/icons/search.svg:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
22 | image/svg+xml
23 |
25 |
26 |
27 |
28 |
29 |
49 |
51 |
53 |
59 |
63 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/libs/builder/icons/star.svg:
--------------------------------------------------------------------------------
1 |
2 |
15 |
17 |
18 |
20 | image/svg+xml
21 |
23 |
24 |
25 |
26 |
28 |
48 |
52 |
53 |
--------------------------------------------------------------------------------
/libs/builder/icons/stream-solid.svg:
--------------------------------------------------------------------------------
1 |
2 |
15 |
17 |
18 |
20 | image/svg+xml
21 |
23 |
24 |
25 |
26 |
28 |
48 |
52 |
53 |
--------------------------------------------------------------------------------
/libs/builder/icons/table.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/libs/builder/icons/twitter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/libs/builder/icons/video.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/libs/builder/icons/youtube.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libs/builder/plugin-bootstrap-colorpicker.js:
--------------------------------------------------------------------------------
1 | var ColorInput = $.extend({}, ColorInput, {
2 |
3 | events: [
4 | ["change", "onChange", "input"],
5 | ],
6 |
7 | setValue: function(value) {
8 | var color = this.rgb2hex(value);
9 | $('input', this.element).val();
10 | $('i', this.element).css('background-color', value);
11 | },
12 |
13 | init: function(data) {
14 | var colorinput = this.render("bootstrap-color-picker-input", data);
15 | var colorpicker = $('.input-group', colorinput).colorpicker();
16 | return colorinput;
17 | },
18 | }
19 | );
20 |
21 |
--------------------------------------------------------------------------------
/libs/builder/plugin-ckeditor.js:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2017 Ziadin Givan
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 |
16 | https://github.com/givanz/VvvebJs
17 | */
18 |
19 | var ckeditorOptions = {
20 | extraPlugins:"sharedspace",
21 | sharedSpaces:{
22 | top: "#wysiwyg-editor",
23 | }
24 | };
25 |
26 | Vvveb.WysiwygEditor = {
27 |
28 | isActive: false,
29 | oldValue: '',
30 | doc:false,
31 | editor:false,
32 | toolbar:false,
33 |
34 | init: function(doc) {
35 | this.doc = doc;
36 | //use default editor toolbar for ckeditor
37 | this.toolbar = $('#wysiwyg-editor');
38 | this.toolbar.removeClass("default-editor").addClass("ckeditor");
39 | this.toolbar.html('');
40 | },
41 |
42 | edit: function(element) {
43 | this.element = element;
44 | this.isActive = true;
45 | this.oldValue = element.html();
46 | Vvveb.Builder.selectPadding = 10;
47 | //Vvveb.Builder.highlightEnabled = false;
48 | element.attr({'contenteditable':true, 'spellcheckker':false});
49 |
50 | CKEDITOR.disableAutoInline = true;
51 | ckeditorOptions.sharedSpaces.top = this.toolbar.get(0);
52 | this.editor = CKEDITOR.inline( element.get(0), ckeditorOptions );
53 |
54 | this.toolbar.show();
55 | },
56 |
57 | destroy: function(element) {
58 | //this.editor.destroy();
59 | element.removeAttr('contenteditable spellcheckker');
60 | //Vvveb.Builder.highlightEnabled = true;
61 | this.toolbar.hide();
62 |
63 | node = this.element.get(0);
64 | Vvveb.Undo.addMutation({type:'characterData',
65 | target: node,
66 | oldValue: this.oldValue,
67 | newValue: node.innerHTML});
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/libs/builder/plugin-codemirror.js:
--------------------------------------------------------------------------------
1 | Vvveb.CodeEditor = {
2 |
3 | isActive: false,
4 | oldValue: '',
5 | doc:false,
6 | codemirror:false,
7 |
8 | init: function(doc) {
9 |
10 | if (this.codemirror == false)
11 | {
12 | this.codemirror = CodeMirror.fromTextArea(document.querySelector("#vvveb-code-editor textarea"), {
13 | mode: 'text/html',
14 | lineNumbers: true,
15 | autofocus: true,
16 | lineWrapping: true,
17 | //viewportMargin:Infinity,
18 | theme: 'material'
19 | });
20 |
21 | this.isActive = true;
22 | this.codemirror.getDoc().on("change", function (e, v) {
23 | if (v.origin != "setValue")
24 | delay(() => Vvveb.Builder.setHtml(e.getValue()), 1000);
25 | });
26 | }
27 |
28 |
29 | //load code on document changes
30 | Vvveb.Builder.frameBody.on("vvveb.undo.add vvveb.undo.restore", function (e) { Vvveb.CodeEditor.setValue(e);});
31 | //load code when a new url is loaded
32 | Vvveb.Builder.documentFrame.on("load", function (e) { Vvveb.CodeEditor.setValue();});
33 |
34 | this.isActive = true;
35 | this.setValue();
36 |
37 | return this.codemirror;
38 | },
39 |
40 | setValue: function(value) {
41 | if (this.isActive == true)
42 | {
43 | var scrollInfo = this.codemirror.getScrollInfo();
44 | this.codemirror.setValue(Vvveb.Builder.getHtml());
45 | this.codemirror.scrollTo(scrollInfo.left, scrollInfo.top);
46 | }
47 | },
48 |
49 | destroy: function(element) {
50 | /*
51 | //save memory by destroying but lose scroll on editor toggle
52 | this.codemirror.toTextArea();
53 | this.codemirror = false;
54 | */
55 | this.isActive = false;
56 | },
57 |
58 | toggle: function() {
59 | if (this.isActive != true)
60 | {
61 | this.isActive = true;
62 | return this.init();
63 | }
64 | this.isActive = false;
65 | this.destroy();
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/libs/builder/plugin-google-fonts.js:
--------------------------------------------------------------------------------
1 | GoogleFontsManager = {
2 | url: "https://fonts.googleapis.com/css2?display=swap&family=",
3 | activeFonts: [],
4 |
5 | updateFontList: function () {
6 | let googleFontsLink = $("#google-fonts-link", Vvveb.Builder.frameHead);
7 |
8 | if (this.activeFonts.length == 0) {
9 | googleFontsLink.remove();
10 | return;
11 | }
12 |
13 | if (googleFontsLink.length < 1) {
14 | googleFontsLink = $(` `);
15 | Vvveb.Builder.frameHead.append(googleFontsLink);
16 | }
17 |
18 | googleFontsLink.attr("href", this.url + this.activeFonts.join("&family="));
19 | },
20 |
21 | removeFont: function (fontName) {
22 | let index = this.activeFonts.indexOf(fontName);
23 | this.activeFonts.splice(index, 1);
24 | this.updateFontList();
25 | },
26 |
27 | addFont: function (fontName) {
28 | this.activeFonts.push(fontName);
29 | this.updateFontList();
30 | }
31 | }
32 |
33 |
34 | Vvveb.FontsManager.addProvider("google", GoogleFontsManager);
35 |
36 | let googleFonts = {};
37 | let googlefontNames = [];
38 | //load google fonts list and update wyswyg font selector and style tab font-family list
39 | $.ajax({
40 | url: Vvveb.baseUrl + "../../resources/google-fonts.json",
41 | cache: true,
42 | dataType: "json",
43 | success: function(data) {
44 | //let json = JSON.parse(data);
45 | googleFonts = data ;
46 | //let fontSelect = $("#font-familly");
47 |
48 | let fontSelect = $(" ");
49 | for (font in googleFonts) {
50 | googlefontNames.push({"text":font, "value":font, "data-provider": "google"});
51 | let option = new Option(font, font);
52 | option.dataset.provider = "google";
53 | //option.style.setProperty("font-family", font);
54 | fontSelect.append(option);
55 | }
56 | $("#font-family").append(fontSelect);
57 |
58 | let list = Vvveb.Components.getProperty("_base", "font-family");
59 | if (list) {
60 | list.onChange = function (node,value, input, component) {
61 | let option = input.options[input.selectedIndex];
62 | Vvveb.FontsManager.addFont(option.dataset.provider, value, node);
63 | return node;
64 | };
65 |
66 | list.data.options.push({optgroup:"Google Fonts"});
67 | list.data.options = list.data.options.concat(googlefontNames);
68 |
69 | Vvveb.Components.updateProperty("_base", "font-family", {data:list.data});
70 |
71 | //update default font list
72 | fontList = list.data.options;
73 | }
74 | }
75 | });
76 |
--------------------------------------------------------------------------------
/libs/builder/plugin-media.js:
--------------------------------------------------------------------------------
1 | var ImageInput = $.extend({}, ImageInput, {
2 |
3 | events: [
4 | ["change", "onChange", "input[type=text]"],
5 | ["click", "onClick", "button"],
6 | ["click", "onClick", "img"],
7 | ],
8 |
9 | setValue: function(value) {
10 | if (value && value.indexOf("data:image") == -1 && value != "none") {
11 | $('input[type="text"]', this.element).val(value);
12 | $('img', this.element).attr("src",(value.indexOf("//") > -1 || value.indexOf("media/") > -1? '' : Vvveb.themeBaseUrl) + value);
13 | } else {
14 | $('img', this.element).attr("src", Vvveb.baseUrl + 'icons/image.svg');
15 | }
16 | },
17 |
18 | onChange: function(e, node) {
19 | //set initial relative path
20 | let src = this.value;
21 |
22 | delay(() => {
23 | //get full image path
24 | let img = $("img", e.data.element).get(0);
25 |
26 | if (img.src) {
27 | src = img.src;
28 | }
29 |
30 | if (src) {
31 | e.data.element.trigger('propertyChange', [src, this]);
32 | }
33 | }, 500);
34 |
35 | //e.data.element.trigger('propertyChange', [src, this]);
36 |
37 | //reselect image after loading to adjust highlight box size
38 | Vvveb.Builder.selectedEl.get(0).onload = function () {
39 | if (Vvveb.Builder.selectedEl) {
40 | Vvveb.Builder.selectedEl.click();
41 | }
42 | };
43 | },
44 |
45 |
46 | onClick: function(e, element) {
47 | if (!Vvveb.MediaModal) {
48 | Vvveb.MediaModal = new MediaModal(true);
49 | Vvveb.MediaModal.mediaPath = window.mediaPath;
50 | }
51 |
52 | Vvveb.MediaModal.open(this);
53 | },
54 |
55 | init: function(data) {
56 | return this.render("imageinput-gallery", data);
57 | },
58 | }
59 | );
60 |
--------------------------------------------------------------------------------
/libs/codemirror/theme/material.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: material
4 | Author: Michael Kaminsky (http://github.com/mkaminsky11)
5 |
6 | Original material color scheme by Mattia Astorino (https://github.com/equinusocio/material-theme)
7 |
8 | */
9 |
10 | .cm-s-material.CodeMirror {
11 | background-color: #263238;
12 | color: rgba(233, 237, 237, 1);
13 | }
14 | .cm-s-material .CodeMirror-gutters {
15 | background: #263238;
16 | color: rgb(83,127,126);
17 | border: none;
18 | }
19 | .cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { color: rgb(83,127,126); }
20 | .cm-s-material .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }
21 | .cm-s-material div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); }
22 | .cm-s-material.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
23 | .cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line > span::selection, .cm-s-material .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
24 | .cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
25 |
26 | .cm-s-material .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0); }
27 | .cm-s-material .cm-keyword { color: rgba(199, 146, 234, 1); }
28 | .cm-s-material .cm-operator { color: rgba(233, 237, 237, 1); }
29 | .cm-s-material .cm-variable-2 { color: #80CBC4; }
30 | .cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #82B1FF; }
31 | .cm-s-material .cm-builtin { color: #DECB6B; }
32 | .cm-s-material .cm-atom { color: #F77669; }
33 | .cm-s-material .cm-number { color: #F77669; }
34 | .cm-s-material .cm-def { color: rgba(233, 237, 237, 1); }
35 | .cm-s-material .cm-string { color: #C3E88D; }
36 | .cm-s-material .cm-string-2 { color: #80CBC4; }
37 | .cm-s-material .cm-comment { color: #546E7A; }
38 | .cm-s-material .cm-variable { color: #82B1FF; }
39 | .cm-s-material .cm-tag { color: #80CBC4; }
40 | .cm-s-material .cm-meta { color: #80CBC4; }
41 | .cm-s-material .cm-attribute { color: #FFCB6B; }
42 | .cm-s-material .cm-property { color: #80CBAE; }
43 | .cm-s-material .cm-qualifier { color: #DECB6B; }
44 | .cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #DECB6B; }
45 | .cm-s-material .cm-tag { color: rgba(255, 83, 112, 1); }
46 | .cm-s-material .cm-error {
47 | color: rgba(255, 255, 255, 1.0);
48 | background-color: #EC5F67;
49 | }
50 | .cm-s-material .CodeMirror-matchingbracket {
51 | text-decoration: underline;
52 | color: white !important;
53 | }
54 |
--------------------------------------------------------------------------------
/libs/jszip/filesaver.min.js:
--------------------------------------------------------------------------------
1 | (function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)});
2 |
3 | //# sourceMappingURL=FileSaver.min.js.map
--------------------------------------------------------------------------------
/media/15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/15.jpg
--------------------------------------------------------------------------------
/media/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/2.jpg
--------------------------------------------------------------------------------
/media/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/4.jpg
--------------------------------------------------------------------------------
/media/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/5.jpg
--------------------------------------------------------------------------------
/media/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/6.jpg
--------------------------------------------------------------------------------
/media/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/7.jpg
--------------------------------------------------------------------------------
/media/Sky Clouds Royalty Free HD Video Footage [CC0] [fmngCpy1O2E].webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/Sky Clouds Royalty Free HD Video Footage [CC0] [fmngCpy1O2E].webp
--------------------------------------------------------------------------------
/media/hero-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/hero-3.jpg
--------------------------------------------------------------------------------
/media/mountains/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/mountains/1.jpg
--------------------------------------------------------------------------------
/media/mountains/12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/mountains/12.jpg
--------------------------------------------------------------------------------
/media/mountains/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/media/mountains/3.jpg
--------------------------------------------------------------------------------
/new-page-blank-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | My page
9 |
10 |
11 |
12 |
13 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Bootstrap 5 start page
27 |
Start by dragging components to page or double click to edit text
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vvvebjs",
3 | "description": "Drag and drop website builder javascript library",
4 | "version": "0.0.1",
5 | "author": "Ziadin Givan",
6 | "license": "Apache-2.0",
7 | "homepage": "https://www.vvveb.com/vvvebjs/editor.html",
8 | "main": "libs/builder/builder.js",
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/marsofjkic/VvvebJs.git"
12 | },
13 | "dependencies": {
14 | "jquery": "^3.0"
15 | },
16 | "keywords": [
17 | "vvvebjs",
18 | "drag-drop",
19 | "drag&drop",
20 | "drag",
21 | "drop",
22 | "wysiwyg",
23 | "web",
24 | "template",
25 | "editor",
26 | "site",
27 | "builder"
28 | ],
29 | "scripts": {
30 | "gulp": "gulp",
31 | "test": "echo \"Error: no test specified\" && exit 1"
32 | },
33 | "devDependencies": {
34 | "gulp": "^4.0.2",
35 | "gulp-file-include": "^2.3.0",
36 | "gulp-format-html": "^1.2.5",
37 | "sass": "^1.60.0",
38 | "node-sass": "^8.0.0",
39 | "gulp-sass": "^5.1.0"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/resources/svg/icons/150-outlined-icons/readme.txt:
--------------------------------------------------------------------------------
1 | https://freebiesbug.com/psd-freebies/150-free-outlined-icons-psd-ai-svg-webfont/
2 |
--------------------------------------------------------------------------------
/resources/svg/icons/77_essential_icons/readme.txt:
--------------------------------------------------------------------------------
1 | 77 Essential Icons, a free icon set designed by Bryn Taylor. Distributed under Creative Commons Attribution license.
2 | https://dribbble.com/shots/1934932-77-Essential-Icons-Free-Download
3 |
--------------------------------------------------------------------------------
/resources/svg/icons/ant-design-icons/LICENSE:
--------------------------------------------------------------------------------
1 | MIT LICENSE
2 |
3 | Copyright (c) 2018-present Ant UED, https://xtech.antfin.com/
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | "Software"), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/resources/svg/icons/ant-design-icons/README.md:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 | ⭐ The abstract trees of the Ant Design SVG icons.
8 |
9 |
10 |
11 |
12 | [![CircleCI status][circleci-image]][circleci-url]
13 | [](https://lernajs.io/)
14 |
15 | [circleci-image]: https://img.shields.io/circleci/build/github/ant-design/ant-design-icons/master?style=flat-square
16 | [circleci-url]: https://circleci.com/gh/ant-design/ant-design-icons
17 |
18 |
19 | ## Packages
20 | - Vanilla: [@ant-design/icons-svg](./packages/icons-svg) [](https://npmjs.org/package/@ant-design/icons-svg) [](https://npmjs.org/package/@ant-design/icons-svg)
21 | - React: [@ant-design/icons](./packages/icons-react) [](https://npmjs.org/package/@ant-design/icons) [](https://npmjs.org/package/@ant-design/icons)
22 | - React Native: [@ant-design/icons-react-native](./packages/icons-react-native) [](https://npmjs.org/package/@ant-design/icons-react-native) [](https://npmjs.org/package/@ant-design/icons-react-native)
23 | - Angular: [@ant-design/icons-angular](./packages/icons-angular) [](https://npmjs.org/package/@ant-design/icons-angular) [](https://npmjs.org/package/@ant-design/icons-angular)
24 | - Vue: [@ant-design/icons-vue](./packages/icons-vue) [](https://npmjs.org/package/@ant-design/icons-vue) [](https://npmjs.org/package/@ant-design/icons-vue)
25 |
26 | ## Contribution Guides 贡献指南
27 |
28 | - @ant-design/icons-svg: [English](./packages/icons-svg/docs/ContributionGuide.md) | [中文](./packages/icons-svg/docs/ContributionGuide.zh-CN.md)
29 |
30 |
31 | ## License
32 |
33 | [MIT License](./LICENSE)
34 |
--------------------------------------------------------------------------------
/resources/svg/icons/boxicons/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015-2021 Aniket Suvarna
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/clarity-icons/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2018 VMware, Inc.
2 |
3 | The MIT license (the "License") set forth below applies to all parts of the clarity-assets project. You may not use this file except in compliance with the License.
4 |
5 | MIT License
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
8 | so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
11 |
12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 |
--------------------------------------------------------------------------------
/resources/svg/icons/clarity-icons/NOTICE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2018 VMware, Inc.
2 |
3 | This product is licensed to you under the MIT license (the "License"). You may not use this product except in compliance with the MIT License.
4 |
5 | This product may include a number of subcomponents with separate copyright notices and license terms. Your use of these subcomponents is subject to the terms and conditions of the subcomponent's license, as noted in the LICENSE file.
--------------------------------------------------------------------------------
/resources/svg/icons/clarity-icons/README.md:
--------------------------------------------------------------------------------
1 | # Clarity Assets
2 |
3 | This repository is part of the [Clarity](https://github.com/vmware/clarity) project, and its purpose is to store the static assets that we provide for consumers of Clarity.
4 |
5 | You are welcome to download the files from here, or you can find them listed our website https://clarity.design as well.
6 |
7 | ### Contents
8 |
9 | **icons** contains the sets of icons from Clarity Icons
10 | **sketch** contains the sketch files for designers crafting interfaces with Clarity
--------------------------------------------------------------------------------
/resources/svg/icons/css.gg/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 css.gg
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/dripicons/readme.txt:
--------------------------------------------------------------------------------
1 |
2 | Dripicons V2 has been created by Amit Jakhu from www.amitjakhu.com
3 |
4 | Terms of Use:
5 |
6 | Dripicons V2 is available for free for use in both personal and commercial projects. Dripicons 2.0 are licensed under Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by-sa/4.0/) and the font under SIL Open Font License (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL).
7 |
8 | You may freely use this icon set without restriction, in software programs, web templates and other materials intended for sale or distribution. No attribution or backlinks are required, but any form of spreading the word is always appreciated!
9 |
--------------------------------------------------------------------------------
/resources/svg/icons/elegant-font/mit_license.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) <2013>
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/resources/svg/icons/eva-icons/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2018 Akveo.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/resources/svg/icons/feather/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2013-2017 Cole Bemis
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/resources/svg/icons/font-awesome/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Font Awesome Free License
2 | -------------------------
3 |
4 | Font Awesome Free is free, open source, and GPL friendly. You can use it for
5 | commercial projects, open source projects, or really almost whatever you want.
6 | Full Font Awesome Free license: https://fontawesome.com/license/free.
7 |
8 | # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
9 | In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
10 | packaged as SVG and JS file types.
11 |
12 | # Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
13 | In the Font Awesome Free download, the SIL OFL license applies to all icons
14 | packaged as web and desktop font files.
15 |
16 | # Code: MIT License (https://opensource.org/licenses/MIT)
17 | In the Font Awesome Free download, the MIT license applies to all non-font and
18 | non-icon files.
19 |
20 | # Attribution
21 | Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
22 | Awesome Free files already contain embedded comments with sufficient
23 | attribution, so you shouldn't need to do anything additional when using these
24 | files normally.
25 |
26 | We've kept attribution comments terse, so we ask that you do not actively work
27 | to remove them from files, especially code. They're a great way for folks to
28 | learn about Font Awesome.
29 |
30 | # Brand Icons
31 | All brand icons are trademarks of their respective owners. The use of these
32 | trademarks does not indicate endorsement of the trademark holder by Font
33 | Awesome, nor vice versa. **Please do not use brand logos for any purpose except
34 | to represent the company, product, or service to which they refer.**
35 |
--------------------------------------------------------------------------------
/resources/svg/icons/heroicons/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Refactoring UI Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/iconoir/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Luca Burgio
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/iconoir/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Iconoir is an open source library with 1000+ SVG Icons, designed on a 24x24 pixels grid. No premium icons, no email sign-up, no newsletters.
7 |
8 |
9 |
10 | Browse at iconoir.com →
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | ## Basic Usage
26 |
27 | You can download any icon of the pack directly from https://iconoir.com or get them from this repository.
28 |
29 | Additionally, the icons are available via the `iconoir` NPM package:
30 | ```bash
31 | yarn add iconoir
32 | # or
33 | npm i iconoir
34 | ```
35 |
36 | Example usage:
37 | ```js
38 | import Iconoir from 'iconoir/icons/iconoir.svg'
39 | ```
40 |
41 | ## React
42 |
43 | A React library is available to install under the name `iconoir-react`. For more details, see the package [README](./packages/iconoir-react).
44 |
45 | ## React Native
46 |
47 | A React Native library is available to install under the name `iconoir-react-native`. For more details, see the package [README](./packages/iconoir-react-native).
48 |
49 | ## Framer
50 |
51 | Iconoir is happily part of [Framer](https://framer.com) now. To start using the icons: On the top menu, `Insert` > `Graphics` > `Iconoir`.
52 | You can switch between icons from the right sidebar in the editor.
53 |
54 | ## CSS
55 |
56 | Import the CSS File:
57 |
58 | ```html
59 |
60 | ```
61 |
62 | Here is an example in HTML:
63 |
64 | ```html
65 |
66 | ```
67 | The class must always be "iconoir-" and then the name of the icon. You can find the names of the icons [here](https://iconoir.com).
68 |
69 | ## Figma
70 |
71 | The library is available in the Figma community [here](https://www.figma.com/community/file/983248991460488027/Iconoir-Pack).
72 |
73 | ## License
74 |
75 | MIT License
76 |
--------------------------------------------------------------------------------
/resources/svg/icons/iconsax/license.txt:
--------------------------------------------------------------------------------
1 | https://github.com/lusaxweb/iconsax
2 |
3 | Iconsax are the official icons of the Vuesax framework, these icons can be used for personal and commercial use for free, but they cannot be sold and distributed under another name, they cannot be used to create templates or ui kits without permission, if desired to use the iconsax icon pack for these purposes, you should contact: https://lusaxweb.net/contact
4 |
--------------------------------------------------------------------------------
/resources/svg/icons/ikonate/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2013-2017 Cole Bemis
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/ionicons/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015-present Ionic (http://ionic.io/)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/jam-icons/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017-Present Michael Amprimo
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/jam-icons/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Jam icons is a set of SVG icons designed for web projects, illustrations, print projects, etc. Licensed under MIT.
6 | Icons: [https://jam-icons.com](https://jam-icons.com)
7 |
8 | ## What's new?
9 |
10 | Support for font and JS has been dropped to focus on SVG only (v3). The idea is to simplify the current package, believing that SVG / inline SVG is the principal way to go when it comes to web icons.
11 |
12 | ## Usage
13 |
14 | #### Full list
15 |
16 | The complete icons list is available on [https://jam-icons.com](https://jam-icons.com).
17 | You'll be able to either download the SVG file or copy the markup when hovering an icon.
18 |
19 | #### Download Set
20 |
21 | Hit the **download** button to download the full set.
22 |
23 | ## Support
24 |
25 | If you have some icons ideas, please open a new **issue**. Thanks for your support!
26 |
27 | ## Compatibility
28 |
29 | #### Version 2.0.0
30 |
31 | The V2 is still available at [https://v2.jam-icons.com/](https://v2.jam-icons.com/)
32 |
33 | ## Changelog
34 |
35 | Jam icons is following the [Semantic Versioning](http://semver.org/) with the MAJOR.MINOR.PATCH format.
36 |
37 | - V3.1.0 - 44 new icons
38 | - V3.0.0 - Set update
39 | - V2.0.0 - New release with 896 icons
40 | - V1.0.72 - Optimizing SVGs
41 | - V1.0.0 - First release with 422 icons
42 |
43 | ## License
44 |
45 | This project is licensed under [MIT](https://opensource.org/licenses/MIT)
46 |
--------------------------------------------------------------------------------
/resources/svg/icons/linea/style.css:
--------------------------------------------------------------------------------
1 | ul.svg-list li svg{
2 | max-width:100%;
3 | max-height:100%;
4 | fill:#fff;
5 | color:#000;
6 | }
7 |
8 | ul.svg-list li:hover svg {
9 | fill:#fff;
10 | }
11 |
--------------------------------------------------------------------------------
/resources/svg/icons/lineawesome/LICENSE.txt:
--------------------------------------------------------------------------------
1 | If you use the icons publicly, please link to https://icons8.com/line-awesome somewhere on your page or artwork, so that more creators could know about it and use it for free.
--------------------------------------------------------------------------------
/resources/svg/icons/material-design/LICENSE:
--------------------------------------------------------------------------------
1 | Pictogrammers Free License
2 | --------------------------
3 |
4 | This icon collection is released as free, open source, and GPL friendly by
5 | the [Pictogrammers](http://pictogrammers.com/) icon group. You may use it
6 | for commercial projects, open source projects, or anything really.
7 |
8 | # Icons: Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
9 | Some of the icons are redistributed under the Apache 2.0 license. All other
10 | icons are either redistributed under their respective licenses or are
11 | distributed under the Apache 2.0 license.
12 |
13 | # Fonts: Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
14 | All web and desktop fonts are distributed under the Apache 2.0 license. Web
15 | and desktop fonts contain some icons that are redistributed under the Apache
16 | 2.0 license. All other icons are either redistributed under their respective
17 | licenses or are distributed under the Apache 2.0 license.
18 |
19 | # Code: MIT (https://opensource.org/licenses/MIT)
20 | The MIT license applies to all non-font and non-icon files.
21 |
--------------------------------------------------------------------------------
/resources/svg/icons/octicons/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 GitHub Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/open-iconic/ICON-LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Waybury
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/resources/svg/icons/pe-icon-7-stroke/read-me.txt:
--------------------------------------------------------------------------------
1 | ---------------------------------------------
2 | PIXEDEN // Font ICON DETAILS
3 | ---------------------------------------------
4 |
5 | Open *reference.html* to see a list of all the glyphs in the icon font.
6 |
7 | Open *documentation.html* for details on how to use the icon font.
8 |
9 | FEEDBACK:
10 | We want our icon fonts to be as good as they can be.
11 | If you have issues, recommendations, ideas for new icons please let us know here:
12 | info@pixeden.com
13 |
14 |
15 | ---------------------------------------------
16 | PIXEDEN // Resource license terms
17 | ---------------------------------------------
18 | All our resources are royalty free for use in both personal and commercial projects.
19 |
20 | You can modify any resources to your liking to fit into your project, we are however not legally liable for any misuse of our resources.
21 |
22 | We do not ask for you to include any attribution or link back to Pixeden.com, we do however appreciate if you do credit our resources or/and help spread the word about us.
23 |
24 | You cannot however redistribute, resell, lease, license, sub-license or offer our resources to any third party. This includes uploading our resources to another website, marketplace or media-sharing tool, and offering our resources as a separate attachment from any of your work. If you do plan to include one of our resource on an item or template that will be sold on a website or marketplace, we ask of you to contact us to determine the proper use of our resource before doing so.
25 |
26 | Premium files downloaded with a premium account can be used in a item or website template sold through a marketplace or directly on a website with no attribution required. You cannot however resell or redistribute those premium files as is. Please contact us before using those files in this way to ensure that you abide by our license. IMPORTANT you cannot use any resources from the psd web templates category to create a website theme or template to be sold. They can only be used for personal and commercial projects.
27 |
28 | If you would like to share one of our resource you can do so making a link to the specific resource page on Pixeden.com or/and use our preview images. No HOTLINKING is allowed i.e. you cannot make a direct link to the download or/and the images hosted on Pixeden.com.
29 |
30 | ---------------------------------------------
31 | Find more great resources @ Pixeden.com
32 | Sincerely,
33 | The Pixeden Team.
34 | ---------------------------------------------
35 | http://www.pixeden.com
36 | PS. Those terms might change as we update our license on our website, please be sure to check the latest license terms on our website to avoid any misuse of our resources.
37 | Thank you.
--------------------------------------------------------------------------------
/resources/svg/icons/system-uicons/LICENSE:
--------------------------------------------------------------------------------
1 | https://github.com/CoreyGinnivan/system-uicons
2 |
3 | This is free and unencumbered software released into the public domain.
4 |
5 | Anyone is free to copy, modify, publish, use, compile, sell, or
6 | distribute this software, either in source code form or as a compiled
7 | binary, for any purpose, commercial or non-commercial, and by any
8 | means.
9 |
10 | In jurisdictions that recognize copyright laws, the author or authors
11 | of this software dedicate any and all copyright interest in the
12 | software to the public domain. We make this dedication for the benefit
13 | of the public at large and to the detriment of our heirs and
14 | successors. We intend this dedication to be an overt act of
15 | relinquishment in perpetuity of all present and future rights to this
16 | software under copyright law.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24 | OTHER DEALINGS IN THE SOFTWARE.
25 |
26 | For more information, please refer to
27 |
--------------------------------------------------------------------------------
/resources/svg/icons/tabler-icons/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Paweł Kuna
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/tabler-icons/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Paweł Kuna
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/resources/svg/icons/themify/readme.txt:
--------------------------------------------------------------------------------
1 | =====================================
2 | HOW TO USE IT:
3 |
4 | 1) Upload the ‘themify-icons.css’ file and ‘fonts’ folder to your server
5 |
6 | 2) Add the CSS file into the section of your site:
7 |
8 |
9 | 3) Add the icon markup in your page:
10 |
11 |
12 | All icons can be viewed at: http://themify.me/themify-icons
13 |
14 |
15 | =====================================
16 | LICENSE
17 |
18 | - Themify Icons font licensed under: http://scripts.sil.org/OFL
19 | - Code licensed under: http://opensource.org/licenses/mit-license.html
20 | - All brand icons are copyright/trademarks of their respective owners.
21 |
22 |
23 | =====================================
24 | VERSIONS
25 |
26 | Version 1.0.1 (May 27, 2014)
27 | - Added SVG format
28 | - Fixed some icon naming issues
29 | - Added rss icon
30 |
31 | Version 1.0.0 (May 16, 2014)
32 | - Initial release
--------------------------------------------------------------------------------
/scan.php:
--------------------------------------------------------------------------------
1 | $f,
49 | 'type' => 'folder',
50 | 'path' => str_replace($scandir, '', $dir) . '/' . $f,
51 | 'items' => $scan($dir . '/' . $f), // Recursively get the contents of the folder
52 | ];
53 | } else {
54 | // It is a file
55 |
56 | $files[] = [
57 | 'name' => $f,
58 | 'type' => 'file',
59 | 'path' => str_replace($scandir, '', $dir) . '/' . $f,
60 | 'size' => filesize($dir . '/' . $f), // Gets the size of this file
61 | ];
62 | }
63 | }
64 | }
65 |
66 | return $files;
67 | };
68 |
69 | $response = $scan($scandir);
70 |
71 | // Output the directory listing as JSON
72 |
73 | header('Content-type: application/json');
74 |
75 | echo json_encode([
76 | 'name' => '',
77 | 'type' => 'folder',
78 | 'path' => '',
79 | 'items' => $response,
80 | ]);
81 |
--------------------------------------------------------------------------------
/scss/bootstrap/_alert.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Base styles
3 | //
4 |
5 | .alert {
6 | // scss-docs-start alert-css-vars
7 | --#{$prefix}alert-bg: transparent;
8 | --#{$prefix}alert-padding-x: #{$alert-padding-x};
9 | --#{$prefix}alert-padding-y: #{$alert-padding-y};
10 | --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
11 | --#{$prefix}alert-color: inherit;
12 | --#{$prefix}alert-border-color: transparent;
13 | --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
14 | --#{$prefix}alert-border-radius: #{$alert-border-radius};
15 | --#{$prefix}alert-link-color: inherit;
16 | // scss-docs-end alert-css-vars
17 |
18 | position: relative;
19 | padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
20 | margin-bottom: var(--#{$prefix}alert-margin-bottom);
21 | color: var(--#{$prefix}alert-color);
22 | background-color: var(--#{$prefix}alert-bg);
23 | border: var(--#{$prefix}alert-border);
24 | @include border-radius(var(--#{$prefix}alert-border-radius));
25 | }
26 |
27 | // Headings for larger alerts
28 | .alert-heading {
29 | // Specified to prevent conflicts of changing $headings-color
30 | color: inherit;
31 | }
32 |
33 | // Provide class for links that match alerts
34 | .alert-link {
35 | font-weight: $alert-link-font-weight;
36 | color: var(--#{$prefix}alert-link-color);
37 | }
38 |
39 |
40 | // Dismissible alerts
41 | //
42 | // Expand the right padding and account for the close button's positioning.
43 |
44 | .alert-dismissible {
45 | padding-right: $alert-dismissible-padding-r;
46 |
47 | // Adjust close link position
48 | .btn-close {
49 | position: absolute;
50 | top: 0;
51 | right: 0;
52 | z-index: $stretched-link-z-index + 1;
53 | padding: $alert-padding-y * 1.25 $alert-padding-x;
54 | }
55 | }
56 |
57 |
58 | // scss-docs-start alert-modifiers
59 | // Generate contextual modifier classes for colorizing the alert
60 | @each $state in map-keys($theme-colors) {
61 | .alert-#{$state} {
62 | --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
63 | --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
64 | --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
65 | --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
66 | }
67 | }
68 | // scss-docs-end alert-modifiers
69 |
--------------------------------------------------------------------------------
/scss/bootstrap/_badge.scss:
--------------------------------------------------------------------------------
1 | // Base class
2 | //
3 | // Requires one of the contextual, color modifier classes for `color` and
4 | // `background-color`.
5 |
6 | .badge {
7 | // scss-docs-start badge-css-vars
8 | --#{$prefix}badge-padding-x: #{$badge-padding-x};
9 | --#{$prefix}badge-padding-y: #{$badge-padding-y};
10 | @include rfs($badge-font-size, --#{$prefix}badge-font-size);
11 | --#{$prefix}badge-font-weight: #{$badge-font-weight};
12 | --#{$prefix}badge-color: #{$badge-color};
13 | --#{$prefix}badge-border-radius: #{$badge-border-radius};
14 | // scss-docs-end badge-css-vars
15 |
16 | display: inline-block;
17 | padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
18 | @include font-size(var(--#{$prefix}badge-font-size));
19 | font-weight: var(--#{$prefix}badge-font-weight);
20 | line-height: 1;
21 | color: var(--#{$prefix}badge-color);
22 | text-align: center;
23 | white-space: nowrap;
24 | vertical-align: baseline;
25 | @include border-radius(var(--#{$prefix}badge-border-radius));
26 | @include gradient-bg();
27 |
28 | // Empty badges collapse automatically
29 | &:empty {
30 | display: none;
31 | }
32 | }
33 |
34 | // Quick fix for badges in buttons
35 | .btn .badge {
36 | position: relative;
37 | top: -1px;
38 | }
39 |
--------------------------------------------------------------------------------
/scss/bootstrap/_breadcrumb.scss:
--------------------------------------------------------------------------------
1 | .breadcrumb {
2 | // scss-docs-start breadcrumb-css-vars
3 | --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
4 | --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
5 | --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
6 | @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
7 | --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
8 | --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
9 | --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
10 | --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
11 | --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
12 | // scss-docs-end breadcrumb-css-vars
13 |
14 | display: flex;
15 | flex-wrap: wrap;
16 | padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x);
17 | margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom);
18 | @include font-size(var(--#{$prefix}breadcrumb-font-size));
19 | list-style: none;
20 | background-color: var(--#{$prefix}breadcrumb-bg);
21 | @include border-radius(var(--#{$prefix}breadcrumb-border-radius));
22 | }
23 |
24 | .breadcrumb-item {
25 | // The separator between breadcrumbs (by default, a forward-slash: "/")
26 | + .breadcrumb-item {
27 | padding-left: var(--#{$prefix}breadcrumb-item-padding-x);
28 |
29 | &::before {
30 | float: left; // Suppress inline spacings and underlining of the separator
31 | padding-right: var(--#{$prefix}breadcrumb-item-padding-x);
32 | color: var(--#{$prefix}breadcrumb-divider-color);
33 | content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"};
34 | }
35 | }
36 |
37 | &.active {
38 | color: var(--#{$prefix}breadcrumb-item-active-color);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/scss/bootstrap/_close.scss:
--------------------------------------------------------------------------------
1 | // Transparent background and border properties included for button version.
2 | // iOS requires the button element instead of an anchor tag.
3 | // If you want the anchor version, it requires `href="#"`.
4 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
5 |
6 | .btn-close {
7 | // scss-docs-start close-css-vars
8 | --#{$prefix}btn-close-color: #{$btn-close-color};
9 | --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
10 | --#{$prefix}btn-close-opacity: #{$btn-close-opacity};
11 | --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
12 | --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
13 | --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
14 | --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
15 | --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
16 | // scss-docs-end close-css-vars
17 |
18 | box-sizing: content-box;
19 | width: $btn-close-width;
20 | height: $btn-close-height;
21 | padding: $btn-close-padding-y $btn-close-padding-x;
22 | color: var(--#{$prefix}btn-close-color);
23 | background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
24 | border: 0; // for button elements
25 | @include border-radius();
26 | opacity: var(--#{$prefix}btn-close-opacity);
27 |
28 | // Override 's hover style
29 | &:hover {
30 | color: var(--#{$prefix}btn-close-color);
31 | text-decoration: none;
32 | opacity: var(--#{$prefix}btn-close-hover-opacity);
33 | }
34 |
35 | &:focus {
36 | outline: 0;
37 | box-shadow: var(--#{$prefix}btn-close-focus-shadow);
38 | opacity: var(--#{$prefix}btn-close-focus-opacity);
39 | }
40 |
41 | &:disabled,
42 | &.disabled {
43 | pointer-events: none;
44 | user-select: none;
45 | opacity: var(--#{$prefix}btn-close-disabled-opacity);
46 | }
47 | }
48 |
49 | @mixin btn-close-white() {
50 | filter: var(--#{$prefix}btn-close-white-filter);
51 | }
52 |
53 | .btn-close-white {
54 | @include btn-close-white();
55 | }
56 |
57 | @if $enable-dark-mode {
58 | @include color-mode(dark) {
59 | .btn-close {
60 | @include btn-close-white();
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/scss/bootstrap/_containers.scss:
--------------------------------------------------------------------------------
1 | // Container widths
2 | //
3 | // Set the container width, and override it for fixed navbars in media queries.
4 |
5 | @if $enable-container-classes {
6 | // Single container class with breakpoint max-widths
7 | .container,
8 | // 100% wide container at all breakpoints
9 | .container-fluid {
10 | @include make-container();
11 | }
12 |
13 | // Responsive containers that are 100% wide until a breakpoint
14 | @each $breakpoint, $container-max-width in $container-max-widths {
15 | .container-#{$breakpoint} {
16 | @extend .container-fluid;
17 | }
18 |
19 | @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
20 | %responsive-container-#{$breakpoint} {
21 | max-width: $container-max-width;
22 | }
23 |
24 | // Extend each breakpoint which is smaller or equal to the current breakpoint
25 | $extend-breakpoint: true;
26 |
27 | @each $name, $width in $grid-breakpoints {
28 | @if ($extend-breakpoint) {
29 | .container#{breakpoint-infix($name, $grid-breakpoints)} {
30 | @extend %responsive-container-#{$breakpoint};
31 | }
32 |
33 | // Once the current breakpoint is reached, stop extending
34 | @if ($breakpoint == $name) {
35 | $extend-breakpoint: false;
36 | }
37 | }
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/scss/bootstrap/_forms.scss:
--------------------------------------------------------------------------------
1 | @import "forms/labels";
2 | @import "forms/form-text";
3 | @import "forms/form-control";
4 | @import "forms/form-select";
5 | @import "forms/form-check";
6 | @import "forms/form-range";
7 | @import "forms/floating-labels";
8 | @import "forms/input-group";
9 | @import "forms/validation";
10 |
--------------------------------------------------------------------------------
/scss/bootstrap/_grid.scss:
--------------------------------------------------------------------------------
1 | // Row
2 | //
3 | // Rows contain your columns.
4 |
5 | :root {
6 | @each $name, $value in $grid-breakpoints {
7 | --#{$prefix}breakpoint-#{$name}: #{$value};
8 | }
9 | }
10 |
11 | @if $enable-grid-classes {
12 | .row {
13 | @include make-row();
14 |
15 | > * {
16 | @include make-col-ready();
17 | }
18 | }
19 | }
20 |
21 | @if $enable-cssgrid {
22 | .grid {
23 | display: grid;
24 | grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);
25 | grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);
26 | gap: var(--#{$prefix}gap, #{$grid-gutter-width});
27 |
28 | @include make-cssgrid();
29 | }
30 | }
31 |
32 |
33 | // Columns
34 | //
35 | // Common styles for small and large grid columns
36 |
37 | @if $enable-grid-classes {
38 | @include make-grid-columns();
39 | }
40 |
--------------------------------------------------------------------------------
/scss/bootstrap/_helpers.scss:
--------------------------------------------------------------------------------
1 | @import "helpers/clearfix";
2 | @import "helpers/color-bg";
3 | @import "helpers/colored-links";
4 | @import "helpers/focus-ring";
5 | @import "helpers/icon-link";
6 | @import "helpers/ratio";
7 | @import "helpers/position";
8 | @import "helpers/stacks";
9 | @import "helpers/visually-hidden";
10 | @import "helpers/stretched-link";
11 | @import "helpers/text-truncation";
12 | @import "helpers/vr";
13 |
--------------------------------------------------------------------------------
/scss/bootstrap/_images.scss:
--------------------------------------------------------------------------------
1 | // Responsive images (ensure images don't scale beyond their parents)
2 | //
3 | // This is purposefully opt-in via an explicit class rather than being the default for all ` `s.
4 | // We previously tried the "images are responsive by default" approach in Bootstrap v2,
5 | // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
6 | // which weren't expecting the images within themselves to be involuntarily resized.
7 | // See also https://github.com/twbs/bootstrap/issues/18178
8 | .img-fluid {
9 | @include img-fluid();
10 | }
11 |
12 |
13 | // Image thumbnails
14 | .img-thumbnail {
15 | padding: $thumbnail-padding;
16 | background-color: $thumbnail-bg;
17 | border: $thumbnail-border-width solid $thumbnail-border-color;
18 | @include border-radius($thumbnail-border-radius);
19 | @include box-shadow($thumbnail-box-shadow);
20 |
21 | // Keep them at most 100% wide
22 | @include img-fluid();
23 | }
24 |
25 | //
26 | // Figures
27 | //
28 |
29 | .figure {
30 | // Ensures the caption's text aligns with the image.
31 | display: inline-block;
32 | }
33 |
34 | .figure-img {
35 | margin-bottom: $spacer * .5;
36 | line-height: 1;
37 | }
38 |
39 | .figure-caption {
40 | @include font-size($figure-caption-font-size);
41 | color: $figure-caption-color;
42 | }
43 |
--------------------------------------------------------------------------------
/scss/bootstrap/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Toggles
2 | //
3 | // Used in conjunction with global variables to enable certain theme features.
4 |
5 | // Vendor
6 | @import "vendor/rfs";
7 |
8 | // Deprecate
9 | @import "mixins/deprecate";
10 |
11 | // Helpers
12 | @import "mixins/breakpoints";
13 | @import "mixins/color-mode";
14 | @import "mixins/color-scheme";
15 | @import "mixins/image";
16 | @import "mixins/resize";
17 | @import "mixins/visually-hidden";
18 | @import "mixins/reset-text";
19 | @import "mixins/text-truncate";
20 |
21 | // Utilities
22 | @import "mixins/utilities";
23 |
24 | // Components
25 | @import "mixins/backdrop";
26 | @import "mixins/buttons";
27 | @import "mixins/caret";
28 | @import "mixins/pagination";
29 | @import "mixins/lists";
30 | @import "mixins/forms";
31 | @import "mixins/table-variants";
32 |
33 | // Skins
34 | @import "mixins/border-radius";
35 | @import "mixins/box-shadow";
36 | @import "mixins/gradients";
37 | @import "mixins/transition";
38 |
39 | // Layout
40 | @import "mixins/clearfix";
41 | @import "mixins/container";
42 | @import "mixins/grid";
43 |
--------------------------------------------------------------------------------
/scss/bootstrap/_placeholders.scss:
--------------------------------------------------------------------------------
1 | .placeholder {
2 | display: inline-block;
3 | min-height: 1em;
4 | vertical-align: middle;
5 | cursor: wait;
6 | background-color: currentcolor;
7 | opacity: $placeholder-opacity-max;
8 |
9 | &.btn::before {
10 | display: inline-block;
11 | content: "";
12 | }
13 | }
14 |
15 | // Sizing
16 | .placeholder-xs {
17 | min-height: .6em;
18 | }
19 |
20 | .placeholder-sm {
21 | min-height: .8em;
22 | }
23 |
24 | .placeholder-lg {
25 | min-height: 1.2em;
26 | }
27 |
28 | // Animation
29 | .placeholder-glow {
30 | .placeholder {
31 | animation: placeholder-glow 2s ease-in-out infinite;
32 | }
33 | }
34 |
35 | @keyframes placeholder-glow {
36 | 50% {
37 | opacity: $placeholder-opacity-min;
38 | }
39 | }
40 |
41 | .placeholder-wave {
42 | mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);
43 | mask-size: 200% 100%;
44 | animation: placeholder-wave 2s linear infinite;
45 | }
46 |
47 | @keyframes placeholder-wave {
48 | 100% {
49 | mask-position: -200% 0%;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/scss/bootstrap/_progress.scss:
--------------------------------------------------------------------------------
1 | // Disable animation if transitions are disabled
2 |
3 | // scss-docs-start progress-keyframes
4 | @if $enable-transitions {
5 | @keyframes progress-bar-stripes {
6 | 0% { background-position-x: $progress-height; }
7 | }
8 | }
9 | // scss-docs-end progress-keyframes
10 |
11 | .progress,
12 | .progress-stacked {
13 | // scss-docs-start progress-css-vars
14 | --#{$prefix}progress-height: #{$progress-height};
15 | @include rfs($progress-font-size, --#{$prefix}progress-font-size);
16 | --#{$prefix}progress-bg: #{$progress-bg};
17 | --#{$prefix}progress-border-radius: #{$progress-border-radius};
18 | --#{$prefix}progress-box-shadow: #{$progress-box-shadow};
19 | --#{$prefix}progress-bar-color: #{$progress-bar-color};
20 | --#{$prefix}progress-bar-bg: #{$progress-bar-bg};
21 | --#{$prefix}progress-bar-transition: #{$progress-bar-transition};
22 | // scss-docs-end progress-css-vars
23 |
24 | display: flex;
25 | height: var(--#{$prefix}progress-height);
26 | overflow: hidden; // force rounded corners by cropping it
27 | @include font-size(var(--#{$prefix}progress-font-size));
28 | background-color: var(--#{$prefix}progress-bg);
29 | @include border-radius(var(--#{$prefix}progress-border-radius));
30 | @include box-shadow(var(--#{$prefix}progress-box-shadow));
31 | }
32 |
33 | .progress-bar {
34 | display: flex;
35 | flex-direction: column;
36 | justify-content: center;
37 | overflow: hidden;
38 | color: var(--#{$prefix}progress-bar-color);
39 | text-align: center;
40 | white-space: nowrap;
41 | background-color: var(--#{$prefix}progress-bar-bg);
42 | @include transition(var(--#{$prefix}progress-bar-transition));
43 | }
44 |
45 | .progress-bar-striped {
46 | @include gradient-striped();
47 | background-size: var(--#{$prefix}progress-height) var(--#{$prefix}progress-height);
48 | }
49 |
50 | .progress-stacked > .progress {
51 | overflow: visible;
52 | }
53 |
54 | .progress-stacked > .progress > .progress-bar {
55 | width: 100%;
56 | }
57 |
58 | @if $enable-transitions {
59 | .progress-bar-animated {
60 | animation: $progress-bar-animation-timing progress-bar-stripes;
61 |
62 | @if $enable-reduced-motion {
63 | @media (prefers-reduced-motion: reduce) {
64 | animation: none;
65 | }
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/scss/bootstrap/_toasts.scss:
--------------------------------------------------------------------------------
1 | .toast {
2 | // scss-docs-start toast-css-vars
3 | --#{$prefix}toast-zindex: #{$zindex-toast};
4 | --#{$prefix}toast-padding-x: #{$toast-padding-x};
5 | --#{$prefix}toast-padding-y: #{$toast-padding-y};
6 | --#{$prefix}toast-spacing: #{$toast-spacing};
7 | --#{$prefix}toast-max-width: #{$toast-max-width};
8 | @include rfs($toast-font-size, --#{$prefix}toast-font-size);
9 | --#{$prefix}toast-color: #{$toast-color};
10 | --#{$prefix}toast-bg: #{$toast-background-color};
11 | --#{$prefix}toast-border-width: #{$toast-border-width};
12 | --#{$prefix}toast-border-color: #{$toast-border-color};
13 | --#{$prefix}toast-border-radius: #{$toast-border-radius};
14 | --#{$prefix}toast-box-shadow: #{$toast-box-shadow};
15 | --#{$prefix}toast-header-color: #{$toast-header-color};
16 | --#{$prefix}toast-header-bg: #{$toast-header-background-color};
17 | --#{$prefix}toast-header-border-color: #{$toast-header-border-color};
18 | // scss-docs-end toast-css-vars
19 |
20 | width: var(--#{$prefix}toast-max-width);
21 | max-width: 100%;
22 | @include font-size(var(--#{$prefix}toast-font-size));
23 | color: var(--#{$prefix}toast-color);
24 | pointer-events: auto;
25 | background-color: var(--#{$prefix}toast-bg);
26 | background-clip: padding-box;
27 | border: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-border-color);
28 | box-shadow: var(--#{$prefix}toast-box-shadow);
29 | @include border-radius(var(--#{$prefix}toast-border-radius));
30 |
31 | &.showing {
32 | opacity: 0;
33 | }
34 |
35 | &:not(.show) {
36 | display: none;
37 | }
38 | }
39 |
40 | .toast-container {
41 | --#{$prefix}toast-zindex: #{$zindex-toast};
42 |
43 | position: absolute;
44 | z-index: var(--#{$prefix}toast-zindex);
45 | width: max-content;
46 | max-width: 100%;
47 | pointer-events: none;
48 |
49 | > :not(:last-child) {
50 | margin-bottom: var(--#{$prefix}toast-spacing);
51 | }
52 | }
53 |
54 | .toast-header {
55 | display: flex;
56 | align-items: center;
57 | padding: var(--#{$prefix}toast-padding-y) var(--#{$prefix}toast-padding-x);
58 | color: var(--#{$prefix}toast-header-color);
59 | background-color: var(--#{$prefix}toast-header-bg);
60 | background-clip: padding-box;
61 | border-bottom: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-header-border-color);
62 | @include border-top-radius(calc(var(--#{$prefix}toast-border-radius) - var(--#{$prefix}toast-border-width)));
63 |
64 | .btn-close {
65 | margin-right: calc(-.5 * var(--#{$prefix}toast-padding-x)); // stylelint-disable-line function-disallowed-list
66 | margin-left: var(--#{$prefix}toast-padding-x);
67 | }
68 | }
69 |
70 | .toast-body {
71 | padding: var(--#{$prefix}toast-padding-x);
72 | word-wrap: break-word;
73 | }
74 |
--------------------------------------------------------------------------------
/scss/bootstrap/_transitions.scss:
--------------------------------------------------------------------------------
1 | .fade {
2 | @include transition($transition-fade);
3 |
4 | &:not(.show) {
5 | opacity: 0;
6 | }
7 | }
8 |
9 | // scss-docs-start collapse-classes
10 | .collapse {
11 | &:not(.show) {
12 | display: none;
13 | }
14 | }
15 |
16 | .collapsing {
17 | height: 0;
18 | overflow: hidden;
19 | @include transition($transition-collapse);
20 |
21 | &.collapse-horizontal {
22 | width: 0;
23 | height: auto;
24 | @include transition($transition-collapse-width);
25 | }
26 | }
27 | // scss-docs-end collapse-classes
28 |
--------------------------------------------------------------------------------
/scss/bootstrap/_type.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Headings
3 | //
4 | .h1 {
5 | @extend h1;
6 | }
7 |
8 | .h2 {
9 | @extend h2;
10 | }
11 |
12 | .h3 {
13 | @extend h3;
14 | }
15 |
16 | .h4 {
17 | @extend h4;
18 | }
19 |
20 | .h5 {
21 | @extend h5;
22 | }
23 |
24 | .h6 {
25 | @extend h6;
26 | }
27 |
28 |
29 | .lead {
30 | @include font-size($lead-font-size);
31 | font-weight: $lead-font-weight;
32 | }
33 |
34 | // Type display classes
35 | @each $display, $font-size in $display-font-sizes {
36 | .display-#{$display} {
37 | @include font-size($font-size);
38 | font-family: $display-font-family;
39 | font-style: $display-font-style;
40 | font-weight: $display-font-weight;
41 | line-height: $display-line-height;
42 | }
43 | }
44 |
45 | //
46 | // Emphasis
47 | //
48 | .small {
49 | @extend small;
50 | }
51 |
52 | .mark {
53 | @extend mark;
54 | }
55 |
56 | //
57 | // Lists
58 | //
59 |
60 | .list-unstyled {
61 | @include list-unstyled();
62 | }
63 |
64 | // Inline turns list items into inline-block
65 | .list-inline {
66 | @include list-unstyled();
67 | }
68 | .list-inline-item {
69 | display: inline-block;
70 |
71 | &:not(:last-child) {
72 | margin-right: $list-inline-padding;
73 | }
74 | }
75 |
76 |
77 | //
78 | // Misc
79 | //
80 |
81 | // Builds on `abbr`
82 | .initialism {
83 | @include font-size($initialism-font-size);
84 | text-transform: uppercase;
85 | }
86 |
87 | // Blockquotes
88 | .blockquote {
89 | margin-bottom: $blockquote-margin-y;
90 | @include font-size($blockquote-font-size);
91 |
92 | > :last-child {
93 | margin-bottom: 0;
94 | }
95 | }
96 |
97 | .blockquote-footer {
98 | margin-top: -$blockquote-margin-y;
99 | margin-bottom: $blockquote-margin-y;
100 | @include font-size($blockquote-footer-font-size);
101 | color: $blockquote-footer-color;
102 |
103 | &::before {
104 | content: "\2014\00A0"; // em dash, nbsp
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/scss/bootstrap/bootstrap-grid.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/banner";
2 | @include bsBanner(Grid);
3 |
4 | $include-column-box-sizing: true !default;
5 |
6 | @import "functions";
7 | @import "variables";
8 | @import "variables-dark";
9 | @import "maps";
10 |
11 | @import "mixins/breakpoints";
12 | @import "mixins/container";
13 | @import "mixins/grid";
14 | @import "mixins/utilities";
15 |
16 | @import "vendor/rfs";
17 |
18 | @import "containers";
19 | @import "grid";
20 |
21 | @import "utilities";
22 | // Only use the utilities we need
23 | // stylelint-disable-next-line scss/dollar-variable-default
24 | $utilities: map-get-multiple(
25 | $utilities,
26 | (
27 | "display",
28 | "order",
29 | "flex",
30 | "flex-direction",
31 | "flex-grow",
32 | "flex-shrink",
33 | "flex-wrap",
34 | "justify-content",
35 | "align-items",
36 | "align-content",
37 | "align-self",
38 | "margin",
39 | "margin-x",
40 | "margin-y",
41 | "margin-top",
42 | "margin-end",
43 | "margin-bottom",
44 | "margin-start",
45 | "negative-margin",
46 | "negative-margin-x",
47 | "negative-margin-y",
48 | "negative-margin-top",
49 | "negative-margin-end",
50 | "negative-margin-bottom",
51 | "negative-margin-start",
52 | "padding",
53 | "padding-x",
54 | "padding-y",
55 | "padding-top",
56 | "padding-end",
57 | "padding-bottom",
58 | "padding-start",
59 | )
60 | );
61 |
62 | @import "utilities/api";
63 |
--------------------------------------------------------------------------------
/scss/bootstrap/bootstrap-reboot.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/banner";
2 | @include bsBanner(Reboot);
3 |
4 | @import "functions";
5 | @import "variables";
6 | @import "variables-dark";
7 | @import "maps";
8 | @import "mixins";
9 | @import "root";
10 | @import "reboot";
11 |
--------------------------------------------------------------------------------
/scss/bootstrap/bootstrap-utilities.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/banner";
2 | @include bsBanner(Utilities);
3 |
4 | // Configuration
5 | @import "functions";
6 | @import "variables";
7 | @import "variables-dark";
8 | @import "maps";
9 | @import "mixins";
10 | @import "utilities";
11 |
12 | // Layout & components
13 | @import "root";
14 |
15 | // Helpers
16 | @import "helpers";
17 |
18 | // Utilities
19 | @import "utilities/api";
20 |
--------------------------------------------------------------------------------
/scss/bootstrap/bootstrap.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/banner";
2 | @include bsBanner("");
3 |
4 |
5 | // scss-docs-start import-stack
6 | // Configuration
7 | @import "functions";
8 | @import "variables";
9 | @import "variables-dark";
10 | @import "maps";
11 | @import "mixins";
12 | @import "utilities";
13 |
14 | // Layout & components
15 | @import "root";
16 | @import "reboot";
17 | @import "type";
18 | @import "images";
19 | @import "containers";
20 | @import "grid";
21 | @import "tables";
22 | @import "forms";
23 | @import "buttons";
24 | @import "transitions";
25 | @import "dropdown";
26 | @import "button-group";
27 | @import "nav";
28 | @import "navbar";
29 | @import "card";
30 | @import "accordion";
31 | @import "breadcrumb";
32 | @import "pagination";
33 | @import "badge";
34 | @import "alert";
35 | @import "progress";
36 | @import "list-group";
37 | @import "close";
38 | @import "toasts";
39 | @import "modal";
40 | @import "tooltip";
41 | @import "popover";
42 | @import "carousel";
43 | @import "spinners";
44 | @import "offcanvas";
45 | @import "placeholders";
46 |
47 | // Helpers
48 | @import "helpers";
49 |
50 | // Utilities
51 | @import "utilities/api";
52 | // scss-docs-end import-stack
53 |
--------------------------------------------------------------------------------
/scss/bootstrap/forms/_form-text.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Form text
3 | //
4 |
5 | .form-text {
6 | margin-top: $form-text-margin-top;
7 | @include font-size($form-text-font-size);
8 | font-style: $form-text-font-style;
9 | font-weight: $form-text-font-weight;
10 | color: $form-text-color;
11 | }
12 |
--------------------------------------------------------------------------------
/scss/bootstrap/forms/_labels.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Labels
3 | //
4 |
5 | .form-label {
6 | margin-bottom: $form-label-margin-bottom;
7 | @include font-size($form-label-font-size);
8 | font-style: $form-label-font-style;
9 | font-weight: $form-label-font-weight;
10 | color: $form-label-color;
11 | }
12 |
13 | // For use with horizontal and inline forms, when you need the label (or legend)
14 | // text to align with the form controls.
15 | .col-form-label {
16 | padding-top: add($input-padding-y, $input-border-width);
17 | padding-bottom: add($input-padding-y, $input-border-width);
18 | margin-bottom: 0; // Override the `` default
19 | @include font-size(inherit); // Override the `` default
20 | font-style: $form-label-font-style;
21 | font-weight: $form-label-font-weight;
22 | line-height: $input-line-height;
23 | color: $form-label-color;
24 | }
25 |
26 | .col-form-label-lg {
27 | padding-top: add($input-padding-y-lg, $input-border-width);
28 | padding-bottom: add($input-padding-y-lg, $input-border-width);
29 | @include font-size($input-font-size-lg);
30 | }
31 |
32 | .col-form-label-sm {
33 | padding-top: add($input-padding-y-sm, $input-border-width);
34 | padding-bottom: add($input-padding-y-sm, $input-border-width);
35 | @include font-size($input-font-size-sm);
36 | }
37 |
--------------------------------------------------------------------------------
/scss/bootstrap/forms/_validation.scss:
--------------------------------------------------------------------------------
1 | // Form validation
2 | //
3 | // Provide feedback to users when form field values are valid or invalid. Works
4 | // primarily for client-side validation via scoped `:invalid` and `:valid`
5 | // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
6 | // server-side validation.
7 |
8 | // scss-docs-start form-validation-states-loop
9 | @each $state, $data in $form-validation-states {
10 | @include form-validation-state($state, $data...);
11 | }
12 | // scss-docs-end form-validation-states-loop
13 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_clearfix.scss:
--------------------------------------------------------------------------------
1 | .clearfix {
2 | @include clearfix();
3 | }
4 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_color-bg.scss:
--------------------------------------------------------------------------------
1 | // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
2 | @each $color, $value in $theme-colors {
3 | $color-rgb: to-rgb($value);
4 | .text-bg-#{$color} {
5 | color: color-contrast($value) if($enable-important-utilities, !important, null);
6 | background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_colored-links.scss:
--------------------------------------------------------------------------------
1 | // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
2 | @each $color, $value in $theme-colors {
3 | .link-#{$color} {
4 | color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
5 | text-decoration-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
6 |
7 | @if $link-shade-percentage != 0 {
8 | &:hover,
9 | &:focus {
10 | $hover-color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));
11 | color: RGBA(#{to-rgb($hover-color)}, var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
12 | text-decoration-color: RGBA(to-rgb($hover-color), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
13 | }
14 | }
15 | }
16 | }
17 |
18 | // One-off special link helper as a bridge until v6
19 | .link-body-emphasis {
20 | color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
21 | text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
22 |
23 | @if $link-shade-percentage != 0 {
24 | &:hover,
25 | &:focus {
26 | color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, .75)) if($enable-important-utilities, !important, null);
27 | text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, .75)) if($enable-important-utilities, !important, null);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_focus-ring.scss:
--------------------------------------------------------------------------------
1 | .focus-ring:focus {
2 | outline: 0;
3 | // By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
4 | box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
5 | }
6 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_icon-link.scss:
--------------------------------------------------------------------------------
1 | .icon-link {
2 | display: inline-flex;
3 | gap: $icon-link-gap;
4 | align-items: center;
5 | text-decoration-color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, .5));
6 | text-underline-offset: $icon-link-underline-offset;
7 | backface-visibility: hidden;
8 |
9 | > .bi {
10 | flex-shrink: 0;
11 | width: $icon-link-icon-size;
12 | height: $icon-link-icon-size;
13 | fill: currentcolor;
14 | @include transition($icon-link-icon-transition);
15 | }
16 | }
17 |
18 | .icon-link-hover {
19 | &:hover,
20 | &:focus-visible {
21 | > .bi {
22 | transform: var(--#{$prefix}icon-link-transform, $icon-link-icon-transform);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_position.scss:
--------------------------------------------------------------------------------
1 | // Shorthand
2 |
3 | .fixed-top {
4 | position: fixed;
5 | top: 0;
6 | right: 0;
7 | left: 0;
8 | z-index: $zindex-fixed;
9 | }
10 |
11 | .fixed-bottom {
12 | position: fixed;
13 | right: 0;
14 | bottom: 0;
15 | left: 0;
16 | z-index: $zindex-fixed;
17 | }
18 |
19 | // Responsive sticky top and bottom
20 | @each $breakpoint in map-keys($grid-breakpoints) {
21 | @include media-breakpoint-up($breakpoint) {
22 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
23 |
24 | .sticky#{$infix}-top {
25 | position: sticky;
26 | top: 0;
27 | z-index: $zindex-sticky;
28 | }
29 |
30 | .sticky#{$infix}-bottom {
31 | position: sticky;
32 | bottom: 0;
33 | z-index: $zindex-sticky;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_ratio.scss:
--------------------------------------------------------------------------------
1 | // Credit: Nicolas Gallagher and SUIT CSS.
2 |
3 | .ratio {
4 | position: relative;
5 | width: 100%;
6 |
7 | &::before {
8 | display: block;
9 | padding-top: var(--#{$prefix}aspect-ratio);
10 | content: "";
11 | }
12 |
13 | > * {
14 | position: absolute;
15 | top: 0;
16 | left: 0;
17 | width: 100%;
18 | height: 100%;
19 | }
20 | }
21 |
22 | @each $key, $ratio in $aspect-ratios {
23 | .ratio-#{$key} {
24 | --#{$prefix}aspect-ratio: #{$ratio};
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_stacks.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start stacks
2 | .hstack {
3 | display: flex;
4 | flex-direction: row;
5 | align-items: center;
6 | align-self: stretch;
7 | }
8 |
9 | .vstack {
10 | display: flex;
11 | flex: 1 1 auto;
12 | flex-direction: column;
13 | align-self: stretch;
14 | }
15 | // scss-docs-end stacks
16 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_stretched-link.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Stretched link
3 | //
4 |
5 | .stretched-link {
6 | &::#{$stretched-link-pseudo-element} {
7 | position: absolute;
8 | top: 0;
9 | right: 0;
10 | bottom: 0;
11 | left: 0;
12 | z-index: $stretched-link-z-index;
13 | content: "";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_text-truncation.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Text truncation
3 | //
4 |
5 | .text-truncate {
6 | @include text-truncate();
7 | }
8 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_visually-hidden.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Visually hidden
3 | //
4 |
5 | .visually-hidden,
6 | .visually-hidden-focusable:not(:focus):not(:focus-within) {
7 | @include visually-hidden();
8 | }
9 |
--------------------------------------------------------------------------------
/scss/bootstrap/helpers/_vr.scss:
--------------------------------------------------------------------------------
1 | .vr {
2 | display: inline-block;
3 | align-self: stretch;
4 | width: 1px;
5 | min-height: 1em;
6 | background-color: currentcolor;
7 | opacity: $hr-opacity;
8 | }
9 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_alert.scss:
--------------------------------------------------------------------------------
1 | @include deprecate("`alert-variant()`", "v5.3.0", "v6.0.0");
2 |
3 | // scss-docs-start alert-variant-mixin
4 | @mixin alert-variant($background, $border, $color) {
5 | --#{$prefix}alert-color: #{$color};
6 | --#{$prefix}alert-bg: #{$background};
7 | --#{$prefix}alert-border-color: #{$border};
8 | --#{$prefix}alert-link-color: #{shade-color($color, 20%)};
9 |
10 | @if $enable-gradients {
11 | background-image: var(--#{$prefix}gradient);
12 | }
13 |
14 | .alert-link {
15 | color: var(--#{$prefix}alert-link-color);
16 | }
17 | }
18 | // scss-docs-end alert-variant-mixin
19 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_backdrop.scss:
--------------------------------------------------------------------------------
1 | // Shared between modals and offcanvases
2 | @mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {
3 | position: fixed;
4 | top: 0;
5 | left: 0;
6 | z-index: $zindex;
7 | width: 100vw;
8 | height: 100vh;
9 | background-color: $backdrop-bg;
10 |
11 | // Fade for backdrop
12 | &.fade { opacity: 0; }
13 | &.show { opacity: $backdrop-opacity; }
14 | }
15 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_banner.scss:
--------------------------------------------------------------------------------
1 | @mixin bsBanner($file) {
2 | /*!
3 | * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)
4 | * Copyright 2011-2023 The Bootstrap Authors
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6 | */
7 | }
8 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_border-radius.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable property-disallowed-list
2 | // Single side border-radius
3 |
4 | // Helper function to replace negative values with 0
5 | @function valid-radius($radius) {
6 | $return: ();
7 | @each $value in $radius {
8 | @if type-of($value) == number {
9 | $return: append($return, max($value, 0));
10 | } @else {
11 | $return: append($return, $value);
12 | }
13 | }
14 | @return $return;
15 | }
16 |
17 | // scss-docs-start border-radius-mixins
18 | @mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
19 | @if $enable-rounded {
20 | border-radius: valid-radius($radius);
21 | }
22 | @else if $fallback-border-radius != false {
23 | border-radius: $fallback-border-radius;
24 | }
25 | }
26 |
27 | @mixin border-top-radius($radius: $border-radius) {
28 | @if $enable-rounded {
29 | border-top-left-radius: valid-radius($radius);
30 | border-top-right-radius: valid-radius($radius);
31 | }
32 | }
33 |
34 | @mixin border-end-radius($radius: $border-radius) {
35 | @if $enable-rounded {
36 | border-top-right-radius: valid-radius($radius);
37 | border-bottom-right-radius: valid-radius($radius);
38 | }
39 | }
40 |
41 | @mixin border-bottom-radius($radius: $border-radius) {
42 | @if $enable-rounded {
43 | border-bottom-right-radius: valid-radius($radius);
44 | border-bottom-left-radius: valid-radius($radius);
45 | }
46 | }
47 |
48 | @mixin border-start-radius($radius: $border-radius) {
49 | @if $enable-rounded {
50 | border-top-left-radius: valid-radius($radius);
51 | border-bottom-left-radius: valid-radius($radius);
52 | }
53 | }
54 |
55 | @mixin border-top-start-radius($radius: $border-radius) {
56 | @if $enable-rounded {
57 | border-top-left-radius: valid-radius($radius);
58 | }
59 | }
60 |
61 | @mixin border-top-end-radius($radius: $border-radius) {
62 | @if $enable-rounded {
63 | border-top-right-radius: valid-radius($radius);
64 | }
65 | }
66 |
67 | @mixin border-bottom-end-radius($radius: $border-radius) {
68 | @if $enable-rounded {
69 | border-bottom-right-radius: valid-radius($radius);
70 | }
71 | }
72 |
73 | @mixin border-bottom-start-radius($radius: $border-radius) {
74 | @if $enable-rounded {
75 | border-bottom-left-radius: valid-radius($radius);
76 | }
77 | }
78 | // scss-docs-end border-radius-mixins
79 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_box-shadow.scss:
--------------------------------------------------------------------------------
1 | @mixin box-shadow($shadow...) {
2 | @if $enable-shadows {
3 | $result: ();
4 |
5 | @each $value in $shadow {
6 | @if $value != null {
7 | $result: append($result, $value, "comma");
8 | }
9 | @if $value == none and length($shadow) > 1 {
10 | @warn "The keyword 'none' must be used as a single argument.";
11 | }
12 | }
13 |
14 | @if (length($result) > 0) {
15 | box-shadow: $result;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_caret.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start caret-mixins
2 | @mixin caret-down($width: $caret-width) {
3 | border-top: $width solid;
4 | border-right: $width solid transparent;
5 | border-bottom: 0;
6 | border-left: $width solid transparent;
7 | }
8 |
9 | @mixin caret-up($width: $caret-width) {
10 | border-top: 0;
11 | border-right: $width solid transparent;
12 | border-bottom: $width solid;
13 | border-left: $width solid transparent;
14 | }
15 |
16 | @mixin caret-end($width: $caret-width) {
17 | border-top: $width solid transparent;
18 | border-right: 0;
19 | border-bottom: $width solid transparent;
20 | border-left: $width solid;
21 | }
22 |
23 | @mixin caret-start($width: $caret-width) {
24 | border-top: $width solid transparent;
25 | border-right: $width solid;
26 | border-bottom: $width solid transparent;
27 | }
28 |
29 | @mixin caret(
30 | $direction: down,
31 | $width: $caret-width,
32 | $spacing: $caret-spacing,
33 | $vertical-align: $caret-vertical-align
34 | ) {
35 | @if $enable-caret {
36 | &::after {
37 | display: inline-block;
38 | margin-left: $spacing;
39 | vertical-align: $vertical-align;
40 | content: "";
41 | @if $direction == down {
42 | @include caret-down($width);
43 | } @else if $direction == up {
44 | @include caret-up($width);
45 | } @else if $direction == end {
46 | @include caret-end($width);
47 | }
48 | }
49 |
50 | @if $direction == start {
51 | &::after {
52 | display: none;
53 | }
54 |
55 | &::before {
56 | display: inline-block;
57 | margin-right: $spacing;
58 | vertical-align: $vertical-align;
59 | content: "";
60 | @include caret-start($width);
61 | }
62 | }
63 |
64 | &:empty::after {
65 | margin-left: 0;
66 | }
67 | }
68 | }
69 | // scss-docs-end caret-mixins
70 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_clearfix.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start clearfix
2 | @mixin clearfix() {
3 | &::after {
4 | display: block;
5 | clear: both;
6 | content: "";
7 | }
8 | }
9 | // scss-docs-end clearfix
10 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_color-mode.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start color-mode-mixin
2 | @mixin color-mode($mode: light, $root: false) {
3 | @if $color-mode-type == "media-query" {
4 | @if $root == true {
5 | @media (prefers-color-scheme: $mode) {
6 | :root {
7 | @content;
8 | }
9 | }
10 | } @else {
11 | @media (prefers-color-scheme: $mode) {
12 | @content;
13 | }
14 | }
15 | } @else {
16 | [data-bs-theme="#{$mode}"] {
17 | @content;
18 | }
19 | }
20 | }
21 | // scss-docs-end color-mode-mixin
22 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_color-scheme.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start mixin-color-scheme
2 | @mixin color-scheme($name) {
3 | @media (prefers-color-scheme: #{$name}) {
4 | @content;
5 | }
6 | }
7 | // scss-docs-end mixin-color-scheme
8 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_container.scss:
--------------------------------------------------------------------------------
1 | // Container mixins
2 |
3 | @mixin make-container($gutter: $container-padding-x) {
4 | --#{$prefix}gutter-x: #{$gutter};
5 | --#{$prefix}gutter-y: 0;
6 | width: 100%;
7 | padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
8 | padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
9 | margin-right: auto;
10 | margin-left: auto;
11 | }
12 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_deprecate.scss:
--------------------------------------------------------------------------------
1 | // Deprecate mixin
2 | //
3 | // This mixin can be used to deprecate mixins or functions.
4 | // `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
5 | // some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
6 | @mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
7 | @if ($enable-deprecation-messages != false and $ignore-warning != true) {
8 | @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_gradients.scss:
--------------------------------------------------------------------------------
1 | // Gradients
2 |
3 | // scss-docs-start gradient-bg-mixin
4 | @mixin gradient-bg($color: null) {
5 | background-color: $color;
6 |
7 | @if $enable-gradients {
8 | background-image: var(--#{$prefix}gradient);
9 | }
10 | }
11 | // scss-docs-end gradient-bg-mixin
12 |
13 | // scss-docs-start gradient-mixins
14 | // Horizontal gradient, from left to right
15 | //
16 | // Creates two color stops, start and end, by specifying a color and position for each color stop.
17 | @mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
18 | background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
19 | }
20 |
21 | // Vertical gradient, from top to bottom
22 | //
23 | // Creates two color stops, start and end, by specifying a color and position for each color stop.
24 | @mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
25 | background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
26 | }
27 |
28 | @mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
29 | background-image: linear-gradient($deg, $start-color, $end-color);
30 | }
31 |
32 | @mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
33 | background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
34 | }
35 |
36 | @mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
37 | background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
38 | }
39 |
40 | @mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
41 | background-image: radial-gradient(circle, $inner-color, $outer-color);
42 | }
43 |
44 | @mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
45 | background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
46 | }
47 | // scss-docs-end gradient-mixins
48 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_image.scss:
--------------------------------------------------------------------------------
1 | // Image Mixins
2 | // - Responsive image
3 | // - Retina image
4 |
5 |
6 | // Responsive image
7 | //
8 | // Keep images from scaling beyond the width of their parents.
9 |
10 | @mixin img-fluid {
11 | // Part 1: Set a maximum relative to the parent
12 | max-width: 100%;
13 | // Part 2: Override the height to auto, otherwise images will be stretched
14 | // when setting a width and height attribute on the img element.
15 | height: auto;
16 | }
17 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_list-group.scss:
--------------------------------------------------------------------------------
1 | @include deprecate("`list-group-item-variant()`", "v5.3.0", "v6.0.0");
2 |
3 | // List Groups
4 |
5 | // scss-docs-start list-group-mixin
6 | @mixin list-group-item-variant($state, $background, $color) {
7 | .list-group-item-#{$state} {
8 | color: $color;
9 | background-color: $background;
10 |
11 | &.list-group-item-action {
12 | &:hover,
13 | &:focus {
14 | color: $color;
15 | background-color: shade-color($background, 10%);
16 | }
17 |
18 | &.active {
19 | color: $white;
20 | background-color: $color;
21 | border-color: $color;
22 | }
23 | }
24 | }
25 | }
26 | // scss-docs-end list-group-mixin
27 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_lists.scss:
--------------------------------------------------------------------------------
1 | // Lists
2 |
3 | // Unstyled keeps list items block level, just removes default browser padding and list-style
4 | @mixin list-unstyled {
5 | padding-left: 0;
6 | list-style: none;
7 | }
8 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_pagination.scss:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | // scss-docs-start pagination-mixin
4 | @mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
5 | --#{$prefix}pagination-padding-x: #{$padding-x};
6 | --#{$prefix}pagination-padding-y: #{$padding-y};
7 | @include rfs($font-size, --#{$prefix}pagination-font-size);
8 | --#{$prefix}pagination-border-radius: #{$border-radius};
9 | }
10 | // scss-docs-end pagination-mixin
11 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_reset-text.scss:
--------------------------------------------------------------------------------
1 | @mixin reset-text {
2 | font-family: $font-family-base;
3 | // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.
4 | font-style: normal;
5 | font-weight: $font-weight-normal;
6 | line-height: $line-height-base;
7 | text-align: left; // Fallback for where `start` is not supported
8 | text-align: start;
9 | text-decoration: none;
10 | text-shadow: none;
11 | text-transform: none;
12 | letter-spacing: normal;
13 | word-break: normal;
14 | white-space: normal;
15 | word-spacing: normal;
16 | line-break: auto;
17 | }
18 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_resize.scss:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | @mixin resizable($direction) {
4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
5 | resize: $direction; // Options: horizontal, vertical, both
6 | }
7 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_table-variants.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start table-variant
2 | @mixin table-variant($state, $background) {
3 | .table-#{$state} {
4 | $color: color-contrast(opaque($body-bg, $background));
5 | $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
6 | $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
7 | $active-bg: mix($color, $background, percentage($table-active-bg-factor));
8 | $table-border-color: mix($color, $background, percentage($table-border-factor));
9 |
10 | --#{$prefix}table-color: #{$color};
11 | --#{$prefix}table-bg: #{$background};
12 | --#{$prefix}table-border-color: #{$table-border-color};
13 | --#{$prefix}table-striped-bg: #{$striped-bg};
14 | --#{$prefix}table-striped-color: #{color-contrast($striped-bg)};
15 | --#{$prefix}table-active-bg: #{$active-bg};
16 | --#{$prefix}table-active-color: #{color-contrast($active-bg)};
17 | --#{$prefix}table-hover-bg: #{$hover-bg};
18 | --#{$prefix}table-hover-color: #{color-contrast($hover-bg)};
19 |
20 | color: var(--#{$prefix}table-color);
21 | border-color: var(--#{$prefix}table-border-color);
22 | }
23 | }
24 | // scss-docs-end table-variant
25 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_text-truncate.scss:
--------------------------------------------------------------------------------
1 | // Text truncate
2 | // Requires inline-block or block for proper styling
3 |
4 | @mixin text-truncate() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_transition.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable property-disallowed-list
2 | @mixin transition($transition...) {
3 | @if length($transition) == 0 {
4 | $transition: $transition-base;
5 | }
6 |
7 | @if length($transition) > 1 {
8 | @each $value in $transition {
9 | @if $value == null or $value == none {
10 | @warn "The keyword 'none' or 'null' must be used as a single argument.";
11 | }
12 | }
13 | }
14 |
15 | @if $enable-transitions {
16 | @if nth($transition, 1) != null {
17 | transition: $transition;
18 | }
19 |
20 | @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {
21 | @media (prefers-reduced-motion: reduce) {
22 | transition: none;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/scss/bootstrap/mixins/_visually-hidden.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Hide content visually while keeping it accessible to assistive technologies
4 | //
5 | // See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
6 | // See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
7 |
8 | @mixin visually-hidden() {
9 | width: 1px !important;
10 | height: 1px !important;
11 | padding: 0 !important;
12 | margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686
13 | overflow: hidden !important;
14 | clip: rect(0, 0, 0, 0) !important;
15 | white-space: nowrap !important;
16 | border: 0 !important;
17 |
18 | // Fix for positioned table caption that could become anonymous cells
19 | &:not(caption) {
20 | position: absolute !important;
21 | }
22 | }
23 |
24 | // Use to only display content when it's focused, or one of its child elements is focused
25 | // (i.e. when focus is within the element/container that the class was applied to)
26 | //
27 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
28 |
29 | @mixin visually-hidden-focusable() {
30 | &:not(:focus):not(:focus-within) {
31 | @include visually-hidden();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/scss/bootstrap/tests/jasmine.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable camelcase */
2 |
3 | 'use strict'
4 |
5 | const path = require('node:path')
6 |
7 | module.exports = {
8 | spec_dir: 'scss',
9 | // Make Jasmine look for `.test.scss` files
10 | spec_files: ['**/*.{test,spec}.scss'],
11 | // Compile them into JS scripts running `sass-true`
12 | requires: [path.join(__dirname, 'sass-true/register')],
13 | // Ensure we use `require` so that the require.extensions works
14 | // as `import` completely bypasses it
15 | jsLoader: 'require'
16 | }
17 |
--------------------------------------------------------------------------------
/scss/bootstrap/tests/mixins/_color-modes.test.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable selector-attribute-quotes
2 |
3 | @import "../../functions";
4 | @import "../../variables";
5 | @import "../../variables-dark";
6 | @import "../../maps";
7 | @import "../../mixins";
8 |
9 | @include describe("global $color-mode-type: data") {
10 | @include it("generates data attribute selectors for dark mode") {
11 | @include assert() {
12 | @include output() {
13 | @include color-mode(dark) {
14 | .element {
15 | color: var(--bs-primary-text-emphasis);
16 | background-color: var(--bs-primary-bg-subtle);
17 | }
18 | }
19 | @include color-mode(dark, true) {
20 | --custom-color: #{mix($indigo, $blue, 50%)};
21 | }
22 | }
23 | @include expect() {
24 | [data-bs-theme=dark] .element {
25 | color: var(--bs-primary-text-emphasis);
26 | background-color: var(--bs-primary-bg-subtle);
27 | }
28 | [data-bs-theme=dark] {
29 | --custom-color: #3a3ff8;
30 | }
31 | }
32 | }
33 | }
34 | }
35 |
36 | @include describe("global $color-mode-type: media-query") {
37 | @include it("generates media queries for dark mode") {
38 | $color-mode-type: media-query !global;
39 |
40 | @include assert() {
41 | @include output() {
42 | @include color-mode(dark) {
43 | .element {
44 | color: var(--bs-primary-text-emphasis);
45 | background-color: var(--bs-primary-bg-subtle);
46 | }
47 | }
48 | @include color-mode(dark, true) {
49 | --custom-color: #{mix($indigo, $blue, 50%)};
50 | }
51 | }
52 | @include expect() {
53 | @media (prefers-color-scheme: dark) {
54 | .element {
55 | color: var(--bs-primary-text-emphasis);
56 | background-color: var(--bs-primary-bg-subtle);
57 | }
58 | }
59 | @media (prefers-color-scheme: dark) {
60 | :root {
61 | --custom-color: #3a3ff8;
62 | }
63 | }
64 | }
65 | }
66 |
67 | $color-mode-type: data !global;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/scss/bootstrap/tests/mixins/_media-query-color-mode-full.test.scss:
--------------------------------------------------------------------------------
1 | $color-mode-type: media-query;
2 |
3 | @import "../../bootstrap";
4 |
5 | @include describe("global $color-mode-type: media-query") {
6 | @include it("compiles entirely Bootstrap CSS with media-query color mode") { // stylelint-disable-line block-no-empty
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/scss/bootstrap/tests/sass-true/register.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const path = require('node:path')
4 |
5 | const runnerPath = path.join(__dirname, 'runner').replace(/\\/g, '/')
6 |
7 | require.extensions['.scss'] = (module, filename) => {
8 | const normalizedFilename = filename.replace(/\\/g, '/')
9 |
10 | return module._compile(`
11 | const runner = require('${runnerPath}')
12 | runner('${normalizedFilename}', { describe, it })
13 | `, filename)
14 | }
15 |
--------------------------------------------------------------------------------
/scss/bootstrap/tests/sass-true/runner.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const fs = require('node:fs')
4 | const path = require('node:path')
5 | const { runSass } = require('sass-true')
6 |
7 | module.exports = (filename, { describe, it }) => {
8 | const data = fs.readFileSync(filename, 'utf8')
9 | const TRUE_SETUP = '$true-terminal-output: false; @import "true";'
10 | const sassString = TRUE_SETUP + data
11 |
12 | runSass(
13 | { describe, it, sourceType: 'string' },
14 | sassString,
15 | { loadPaths: [path.dirname(filename)] }
16 | )
17 | }
18 |
--------------------------------------------------------------------------------
/scss/bootstrap/tests/utilities/_api.test.scss:
--------------------------------------------------------------------------------
1 | @import "../../functions";
2 | @import "../../variables";
3 | @import "../../variables-dark";
4 | @import "../../maps";
5 | @import "../../mixins";
6 |
7 | $utilities: ();
8 |
9 | @include describe("utilities/api") {
10 | @include it("generates utilities for each breakpoints") {
11 | $utilities: (
12 | margin: (
13 | property: margin,
14 | values: auto
15 | ),
16 | padding: (
17 | property: padding,
18 | responsive: true,
19 | values: 1rem
20 | ),
21 | font-size: (
22 | property: font-size,
23 | values: (large: 1.25rem),
24 | print: true
25 | )
26 | ) !global;
27 |
28 | $grid-breakpoints: (
29 | xs: 0,
30 | sm: 333px,
31 | md: 666px
32 | ) !global;
33 |
34 | @include assert() {
35 | @include output() {
36 | @import "../../utilities/api";
37 | }
38 |
39 | @include expect() {
40 | // margin is not set to responsive
41 | .margin-auto {
42 | margin: auto !important;
43 | }
44 |
45 | // padding is, though
46 | .padding-1rem {
47 | padding: 1rem !important;
48 | }
49 |
50 | .font-size-large {
51 | font-size: 1.25rem !important;
52 | }
53 |
54 | @media (min-width: 333px) {
55 | .padding-sm-1rem {
56 | padding: 1rem !important;
57 | }
58 | }
59 |
60 | @media (min-width: 666px) {
61 | .padding-md-1rem {
62 | padding: 1rem !important;
63 | }
64 | }
65 |
66 | @media print {
67 | .font-size-print-large {
68 | font-size: 1.25rem !important;
69 | }
70 | }
71 | }
72 |
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/scss/bootstrap/utilities/_api.scss:
--------------------------------------------------------------------------------
1 | // Loop over each breakpoint
2 | @each $breakpoint in map-keys($grid-breakpoints) {
3 |
4 | // Generate media query if needed
5 | @include media-breakpoint-up($breakpoint) {
6 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
7 |
8 | // Loop over each utility property
9 | @each $key, $utility in $utilities {
10 | // The utility can be disabled with `false`, thus check if the utility is a map first
11 | // Only proceed if responsive media queries are enabled or if it's the base media query
12 | @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") {
13 | @include generate-utility($utility, $infix);
14 | }
15 | }
16 | }
17 | }
18 |
19 | // RFS rescaling
20 | @media (min-width: $rfs-mq-value) {
21 | @each $breakpoint in map-keys($grid-breakpoints) {
22 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
23 |
24 | @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {
25 | // Loop over each utility property
26 | @each $key, $utility in $utilities {
27 | // The utility can be disabled with `false`, thus check if the utility is a map first
28 | // Only proceed if responsive media queries are enabled or if it's the base media query
29 | @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") {
30 | @include generate-utility($utility, $infix, true);
31 | }
32 | }
33 | }
34 | }
35 | }
36 |
37 |
38 | // Print utilities
39 | @media print {
40 | @each $key, $utility in $utilities {
41 | // The utility can be disabled with `false`, thus check if the utility is a map first
42 | // Then check if the utility needs print styles
43 | @if type-of($utility) == "map" and map-get($utility, print) == true {
44 | @include generate-utility($utility, "-print");
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/scss/components/gallery.scss:
--------------------------------------------------------------------------------
1 | .gallery {
2 |
3 | column-count: 4;
4 | column-gap: 20px;
5 |
6 | &.flex {
7 | display:flex;
8 | flex-wrap:wrap;
9 | .item {
10 | flex:1 0 21%;
11 | }
12 | }
13 |
14 | &.has-shadow {
15 | .item img {
16 | box-shadow: 2px 2px 4px 0 #ccc;
17 | }
18 | }
19 |
20 | &.masonry {
21 | margin: 0px;
22 | padding: 0;
23 | }
24 |
25 | .item {
26 | margin-bottom: 20px;
27 | width: 100%;
28 | transition:1s ease all;
29 | box-sizing: border-box;
30 | }
31 | .item a {display:block;}
32 | .item img{max-width:100%;}
33 |
34 | @media only screen and (max-width: 320px) {
35 | .masonry {
36 | column-count: 1;
37 | }
38 | }
39 |
40 | @media only screen and (min-width: 321px) and (max-width: 768px){
41 | .masonry {
42 | column-count: 2;
43 | }
44 | }
45 | @media only screen and (min-width: 769px) and (max-width: 1200px){
46 | .masonry {
47 | column-count: 3;
48 | }
49 | }
50 | @media only screen and (min-width: 1201px) {
51 | .masonry {
52 | column-count: 4;
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/scss/line-awesome/_bordered_pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$la-css-prefix}-border {
5 | border: solid 0.08em #eee;
6 | border-radius: .1em;
7 | padding: .2em .25em .15em;
8 | }
9 |
10 | .#{$la-css-prefix}-pull-left { float: left; }
11 | .#{$la-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$la-css-prefix} {
14 | &.#{$la-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$la-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | .#{$la-css-prefix} {
19 | &.pull-left { margin-right: .3em; }
20 | &.pull-right { margin-left: .3em; }
21 | }
22 |
--------------------------------------------------------------------------------
/scss/line-awesome/_core.scss:
--------------------------------------------------------------------------------
1 | .la,
2 | .lar,
3 | .las,
4 | .lab {
5 | -moz-osx-font-smoothing: grayscale;
6 | -webkit-font-smoothing: antialiased;
7 | display: inline-block;
8 | font-style: normal;
9 | font-variant: normal;
10 | text-rendering: auto;
11 | }
12 |
--------------------------------------------------------------------------------
/scss/line-awesome/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | .#{$la-css-prefix}-fw {
2 | width: 1.25em;
3 | text-align: center;
4 | }
5 |
--------------------------------------------------------------------------------
/scss/line-awesome/_larger.scss:
--------------------------------------------------------------------------------
1 | .#{$la-css-prefix}.#{$la-css-prefix}-lg {
2 | font-size: 1.33333em;
3 | line-height: 0.75em;
4 | vertical-align: -.0667em;
5 | }
6 |
7 | .#{$la-css-prefix}-xs { font-size: 0.75em; }
8 | .#{$la-css-prefix}-2x { font-size: 1em; }
9 | .#{$la-css-prefix}-2x { font-size: 2em; }
10 | .#{$la-css-prefix}-3x { font-size: 3em; }
11 | .#{$la-css-prefix}-4x { font-size: 4em; }
12 | .#{$la-css-prefix}-5x { font-size: 5em; }
13 | .#{$la-css-prefix}-6x { font-size: 6em; }
14 | .#{$la-css-prefix}-7x { font-size: 7em; }
15 | .#{$la-css-prefix}-8x { font-size: 8em; }
16 | .#{$la-css-prefix}-9x { font-size: 9em; }
17 | .#{$la-css-prefix}-10x { font-size: 10em; }
18 |
19 | .#{$la-css-prefix}-fw {
20 | text-align: center;
21 | width: 1.25em;
22 | }
23 |
--------------------------------------------------------------------------------
/scss/line-awesome/_list.scss:
--------------------------------------------------------------------------------
1 | .#{$la-css-prefix}-ul {
2 | padding-left: 0;
3 | margin-left: $la-li-width;
4 | list-style-type: none;
5 | > li {
6 | position: relative;
7 | }
8 | }
9 |
10 | .#{$la-css-prefix}-li {
11 | position: absolute;
12 | left: -2em;
13 | text-align: center;
14 | width: $la-li-width;
15 | line-height: inherit;
16 | &.#{$la-css-prefix}-lg {
17 | left: -$la-li-width + calc(4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/scss/line-awesome/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Only display content to screen readers. A la Bootstrap 4.
2 | //
3 | // See: http://a11yproject.com/posts/how-to-hide-content/
4 |
5 | @mixin sr-only {
6 | border: 0;
7 | clip: rect(0, 0, 0, 0);
8 | height: 1px;
9 | margin: -1px;
10 | overflow: hidden;
11 | padding: 0;
12 | position: absolute;
13 | width: 1px;
14 | }
15 |
16 | // Use in conjunction with .sr-only to only display content when it's focused.
17 | //
18 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
19 | //
20 | // Credit: HTML5 Boilerplate
21 |
22 | @mixin sr-only-focusable {
23 | &:active,
24 | &:focus {
25 | clip: auto;
26 | height: auto;
27 | margin: 0;
28 | overflow: visible;
29 | position: static;
30 | width: auto;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/scss/line-awesome/_path.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: $la-font-name-lab;
3 | font-style: normal;
4 | font-weight: normal;
5 | font-display: auto;
6 | src: url('#{$la-font-path}/la-brands-400.eot');
7 | src: url("#{$la-font-path}/la-brands-400.eot?#iefix") format("embedded-opentype"),
8 | url("#{$la-font-path}/la-brands-400.woff2") format("woff2"),
9 | url("#{$la-font-path}/la-brands-400.woff") format("woff"),
10 | url("#{$la-font-path}/la-brands-400.ttf") format("truetype"),
11 | url("#{$la-font-path}/la-brands-400.svg#lineawesome") format("svg");
12 | }
13 |
14 | .#{$la-css-prefix-lab} {
15 | font-family: $la-font-name-lab;
16 | font-weight: 400;
17 | }
18 |
19 | @font-face {
20 | font-family: $la-font-name-lar;
21 | font-style: normal;
22 | font-weight: 400;
23 | font-display: auto;
24 | src: url('#{$la-font-path}/la-regular-400.eot');
25 | src: url("#{$la-font-path}/la-regular-400.eot?#iefix") format("embedded-opentype"),
26 | url("#{$la-font-path}/la-regular-400.woff2") format("woff2"),
27 | url("#{$la-font-path}/la-regular-400.woff") format("woff"),
28 | url("#{$la-font-path}/la-regular-400.ttf") format("truetype"),
29 | url("#{$la-font-path}/la-regular-400.svg#lineawesome") format("svg");
30 | }
31 |
32 | .#{$la-css-prefix-lar} {
33 | font-family: $la-font-name-lar;
34 | font-weight: 400;
35 | }
36 |
37 | @font-face {
38 | font-family: $la-font-name-las;
39 | font-style: normal;
40 | font-weight: 900;
41 | font-display: auto;
42 | src: url('#{$la-font-path}/la-solid-900.eot');
43 | src: url("#{$la-font-path}/la-solid-900.eot?#iefix") format("embedded-opentype"),
44 | url("#{$la-font-path}/la-solid-900.woff2") format("woff2"),
45 | url("#{$la-font-path}/la-solid-900.woff") format("woff"),
46 | url("#{$la-font-path}/la-solid-900.ttf") format("truetype"),
47 | url("#{$la-font-path}/la-solid-900.svg#lineawesome") format("svg");
48 | }
49 |
50 | .#{$la-css-prefix-las} {
51 | font-family: $la-font-name-las;
52 | font-weight: 900;
53 | }
54 |
--------------------------------------------------------------------------------
/scss/line-awesome/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | .la-pull-left {
2 | float: left;
3 | }
4 |
5 | .la-pull-right {
6 | float: right;
7 | }
8 |
9 | .la.la-pull-left,
10 | .las.la-pull-left,
11 | .lar.la-pull-left,
12 | .lal.la-pull-left,
13 | .lab.la-pull-left {
14 | margin-right: .3em;
15 | }
16 |
17 | .la.la-pull-right,
18 | .las.la-pull-right,
19 | .lar.la-pull-right,
20 | .lal.la-pull-right,
21 | .lab.la-pull-right {
22 | margin-left: .3em;
23 | }
24 |
25 | .la-spin {
26 | -webkit-animation: la-spin 2s infinite linear;
27 | animation: la-spin 2s infinite linear;
28 | }
29 |
30 | .la-pulse {
31 | -webkit-animation: la-spin 1s infinite steps(8);
32 | animation: la-spin 1s infinite steps(8);
33 | }
34 |
35 | @-webkit-keyframes la-spin {
36 | 0% {
37 | -webkit-transform: rotate(0deg);
38 | transform: rotate(0deg);
39 | }
40 | 100% {
41 | -webkit-transform: rotate(360deg);
42 | transform: rotate(360deg);
43 | }
44 | }
45 |
46 | @keyframes la-spin {
47 | 0% {
48 | -webkit-transform: rotate(0deg);
49 | transform: rotate(0deg);
50 | }
51 | 100% {
52 | -webkit-transform: rotate(360deg);
53 | transform: rotate(360deg);
54 | }
55 | }
56 |
57 | .la-rotate-90 {
58 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
59 | -webkit-transform: rotate(90deg);
60 | transform: rotate(90deg);
61 | }
62 |
63 | .la-rotate-180 {
64 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
65 | -webkit-transform: rotate(180deg);
66 | transform: rotate(180deg);
67 | }
68 |
69 | .la-rotate-270 {
70 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
71 | -webkit-transform: rotate(270deg);
72 | transform: rotate(270deg);
73 | }
74 |
75 | .la-flip-horizontal {
76 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
77 | -webkit-transform: scale(-1, 1);
78 | transform: scale(-1, 1);
79 | }
80 |
81 | .la-flip-vertical {
82 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
83 | -webkit-transform: scale(1, -1);
84 | transform: scale(1, -1);
85 | }
86 |
87 | .la-flip-both, .la-flip-horizontal.la-flip-vertical {
88 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
89 | -webkit-transform: scale(-1, -1);
90 | transform: scale(-1, -1);
91 | }
92 |
93 | :root .la-rotate-90,
94 | :root .la-rotate-180,
95 | :root .la-rotate-270,
96 | :root .la-flip-horizontal,
97 | :root .la-flip-vertical,
98 | :root .la-flip-both {
99 | -webkit-filter: none;
100 | filter: none;
101 | }
102 |
--------------------------------------------------------------------------------
/scss/line-awesome/_screen-reader.scss:
--------------------------------------------------------------------------------
1 | .sr-only { @include sr-only(); }
2 | .sr-only-focusable { @include sr-only-focusable(); }
3 |
--------------------------------------------------------------------------------
/scss/line-awesome/_stacked.scss:
--------------------------------------------------------------------------------
1 | .#{$la-css-prefix}-stack {
2 | display: inline-block;
3 | height: 2em;
4 | line-height: 2em;
5 | position: relative;
6 | vertical-align: middle;
7 | width: 2.5em;
8 | }
9 |
10 | .#{$la-css-prefix}-stack-1x,
11 | .#{$la-css-prefix}-stack-2x {
12 | left: 0;
13 | position: absolute;
14 | text-align: center;
15 | width: 100%;
16 | }
17 |
18 | .#{$la-css-prefix}-stack-1x {
19 | line-height: inherit;
20 | }
21 |
22 | .#{$la-css-prefix}-stack-2x {
23 | font-size: 2em;
24 | }
25 |
26 | .#{$la-css-prefix}-inverse {
27 | color: $la-inverse;
28 | }
29 |
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.eot
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.ttf
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.woff
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-brands-400.woff2
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.eot
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.ttf
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.woff
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-regular-400.woff2
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.eot
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.ttf
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.woff
--------------------------------------------------------------------------------
/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mars9541/website-editor/356bd1dd5bbc2452578cea7aec71bb4c8b70dfd6/scss/line-awesome/dist/line-awesome/fonts/la-solid-900.woff2
--------------------------------------------------------------------------------
/scss/line-awesome/line-awesome.scss:
--------------------------------------------------------------------------------
1 | @import "mixins";
2 | @import "core";
3 | @import "variables";
4 | @import "path";
5 | @import "larger";
6 | @import "fixed-width";
7 | @import "list";
8 | @import "bordered_pulled";
9 | @import "rotated-flipped";
10 | @import "stacked";
11 | @import "icons";
12 | @import "screen-reader";
13 |
--------------------------------------------------------------------------------
/scss/vvvebjs-editor-helpers.scss:
--------------------------------------------------------------------------------
1 | @mixin webkit-scrollbar()
2 | {
3 | &::-webkit-scrollbar {
4 | width: 0.5rem;
5 | background-color: rgba(255,255,255, 0.1);
6 | -webkit-box-shadow:none;
7 | }
8 |
9 | &::-webkit-scrollbar-track {
10 | -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0.05);
11 | }
12 |
13 | &::-webkit-scrollbar-thumb {
14 | background-color: rgba(0,0,0, 0.15);
15 | outline: 1px solid slategrey;
16 | }
17 | }
18 |
19 | @mixin disabled-element() {
20 | pointer-events:none;
21 | position:relative;
22 |
23 | &::after {
24 | content:"Non-editable area";
25 | position:absolute;
26 | left:0px;
27 | top:0px;
28 | width:100%;
29 | height:100%;
30 | padding-top:5px;
31 | font-weight:600;
32 | font-size:12px;
33 | text-align:center;
34 | background:rgba(252, 252, 252, 0.85);
35 | border:1px dashed #999;
36 | overflow:hidden;
37 | display: flex;
38 | align-items: center;
39 | justify-content: center;
40 | }
41 | }
42 |
43 | body
44 | {
45 | scrollbar-color: rgba(0,0,0, 0.1) #fff;
46 | scrollbar-width: thin;
47 | @include webkit-scrollbar();
48 | }
49 |
50 |
51 | [data-vvveb-disabled] {
52 | @include disabled-element();
53 | }
54 |
55 | //disable edit on all content except on edit-exception
56 | [data-vvveb-disabled-area] {
57 |
58 | & *:not([data-vvveb-edit-exception]) {
59 | @include disabled-element();
60 | }
61 | }
62 |
63 | /*
64 | Prevents iframe mouse events that prevents clicking on the component
65 | */
66 | [data-component-video] > iframe,
67 | [data-component-maps] > iframe,
68 | [data-component-twitter] > iframe,
69 | [data-component-openstreetmap] > iframe {
70 | pointer-events:none;
71 | }
72 |
73 | [contenteditable="true"] {
74 | outline:none;
75 |
76 | &:focus-visible {
77 | outline:none;
78 | }
79 | }
80 |
81 | .vvveb-hidden {
82 | display:none !important;;
83 | }
84 |
--------------------------------------------------------------------------------
/upload.php:
--------------------------------------------------------------------------------
1 |