├── .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 | logo 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 | [![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](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) [![NPM version](https://img.shields.io/npm/v/@ant-design/icons-svg.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-svg) [![NPM downloads](http://img.shields.io/npm/dm/@ant-design/icons-svg.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-svg) 21 | - React: [@ant-design/icons](./packages/icons-react) [![NPM version](https://img.shields.io/npm/v/@ant-design/icons.svg?style=flat)](https://npmjs.org/package/@ant-design/icons) [![NPM downloads](http://img.shields.io/npm/dm/@ant-design/icons.svg?style=flat)](https://npmjs.org/package/@ant-design/icons) 22 | - React Native: [@ant-design/icons-react-native](./packages/icons-react-native) [![NPM version](https://img.shields.io/npm/v/@ant-design/icons-react-native.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-react-native) [![NPM downloads](http://img.shields.io/npm/dm/@ant-design/icons-react-native.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-react-native) 23 | - Angular: [@ant-design/icons-angular](./packages/icons-angular) [![NPM version](https://img.shields.io/npm/v/@ant-design/icons-angular.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-angular) [![NPM downloads](http://img.shields.io/npm/dm/@ant-design/icons-angular.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-angular) 24 | - Vue: [@ant-design/icons-vue](./packages/icons-vue) [![NPM version](https://img.shields.io/npm/v/@ant-design/icons-vue.svg?style=flat)](https://npmjs.org/package/@ant-design/icons-vue) [![NPM downloads](http://img.shields.io/npm/dm/@ant-design/icons-vue.svg?style=flat)](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 | Iconoir 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 | Version 16 | 17 | 18 | Project Stars 19 | 20 | 21 | License 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 |