├── README.md ├── docker-compose.yml └── pages ├── billing ├── index.html ├── script.js └── style.css ├── docs ├── .gitignore ├── config.toml ├── content │ ├── _index.md │ ├── authors │ │ ├── _index.md │ │ └── team-loco.md │ ├── blog │ │ ├── _index.md │ │ ├── document.md │ │ └── why.md │ ├── docs │ │ ├── _index.md │ │ ├── api │ │ │ ├── _index.md │ │ │ └── api.md │ │ ├── contact │ │ │ ├── _index.md │ │ │ └── contact.md │ │ ├── features │ │ │ ├── _index.md │ │ │ └── keys.md │ │ ├── getting-started │ │ │ ├── _index.md │ │ │ ├── changelog.md │ │ │ ├── config.md │ │ │ ├── guide.md │ │ │ └── tour │ │ │ │ ├── index.md │ │ │ │ └── tour.png │ │ ├── help │ │ │ ├── _index.md │ │ │ └── faq.md │ │ ├── system │ │ │ ├── _index.md │ │ │ └── system.md │ │ └── xai │ │ │ ├── _index.md │ │ │ └── api.md │ ├── privacy-policy │ │ └── _index.md │ └── tos │ │ └── _index.md ├── static │ └── images │ │ ├── apple-touch-icon.png │ │ ├── favicon.ico │ │ ├── icon.svg │ │ └── logo.png ├── templates │ ├── 404.html │ ├── authors │ │ ├── list.html │ │ └── single.html │ ├── base.html │ ├── blog │ │ ├── page.html │ │ └── section.html │ ├── docs │ │ ├── page.html │ │ └── section.html │ ├── index.html │ ├── macros │ │ ├── docs-edit-page.html │ │ ├── docs-navigation.html │ │ ├── docs-sidebar.html │ │ ├── docs-toc.html │ │ ├── footer.html │ │ ├── head.html │ │ ├── header.html │ │ ├── javascript.html │ │ ├── math.html │ │ ├── page-publish-metadata.html │ │ └── section-navigation.html │ ├── page.html │ ├── robots.txt │ └── section.html └── themes │ └── adidoks │ ├── .gitignore │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── config.toml │ ├── config.toml.example │ ├── content │ ├── _index.fi.md │ ├── _index.md │ ├── authors │ │ ├── _index.md │ │ └── aaran-xu.md │ ├── blog │ │ ├── _index.md │ │ ├── hello-world.md │ │ ├── markdown-syntax.md │ │ ├── math-typesetting.md │ │ ├── placeholder-text.md │ │ └── say-hello-to-zola-doks.md │ ├── docs │ │ ├── _index.md │ │ ├── contributing │ │ │ ├── _index.md │ │ │ ├── code-of-conduct.md │ │ │ └── how-to-contribute.md │ │ ├── getting-started │ │ │ ├── _index.md │ │ │ ├── introduction.md │ │ │ └── quick-start.md │ │ └── help │ │ │ ├── _index.md │ │ │ └── faq.md │ └── privacy-policy │ │ └── _index.md │ ├── netlify.toml │ ├── sass │ ├── _custom.scss │ ├── bootstrap │ │ ├── LICENSE │ │ ├── README.md │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-grid.css │ │ │ │ ├── bootstrap-grid.css.map │ │ │ │ ├── bootstrap-grid.min.css │ │ │ │ ├── bootstrap-grid.min.css.map │ │ │ │ ├── bootstrap-grid.rtl.css │ │ │ │ ├── bootstrap-grid.rtl.css.map │ │ │ │ ├── bootstrap-grid.rtl.min.css │ │ │ │ ├── bootstrap-grid.rtl.min.css.map │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ ├── bootstrap-reboot.css.map │ │ │ │ ├── bootstrap-reboot.min.css │ │ │ │ ├── bootstrap-reboot.min.css.map │ │ │ │ ├── bootstrap-reboot.rtl.css │ │ │ │ ├── bootstrap-reboot.rtl.css.map │ │ │ │ ├── bootstrap-reboot.rtl.min.css │ │ │ │ ├── bootstrap-reboot.rtl.min.css.map │ │ │ │ ├── bootstrap-utilities.css │ │ │ │ ├── bootstrap-utilities.css.map │ │ │ │ ├── bootstrap-utilities.min.css │ │ │ │ ├── bootstrap-utilities.min.css.map │ │ │ │ ├── bootstrap-utilities.rtl.css │ │ │ │ ├── bootstrap-utilities.rtl.css.map │ │ │ │ ├── bootstrap-utilities.rtl.min.css │ │ │ │ ├── bootstrap-utilities.rtl.min.css.map │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── bootstrap.min.css.map │ │ │ │ ├── bootstrap.rtl.css │ │ │ │ ├── bootstrap.rtl.css.map │ │ │ │ ├── bootstrap.rtl.min.css │ │ │ │ └── bootstrap.rtl.min.css.map │ │ │ └── js │ │ │ │ ├── bootstrap.bundle.js │ │ │ │ ├── bootstrap.bundle.js.map │ │ │ │ ├── bootstrap.bundle.min.js │ │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ │ ├── bootstrap.esm.js │ │ │ │ ├── bootstrap.esm.js.map │ │ │ │ ├── bootstrap.esm.min.js │ │ │ │ ├── bootstrap.esm.min.js.map │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.js.map │ │ │ │ ├── bootstrap.min.js │ │ │ │ └── bootstrap.min.js.map │ │ ├── js │ │ │ ├── dist │ │ │ │ ├── alert.js │ │ │ │ ├── alert.js.map │ │ │ │ ├── base-component.js │ │ │ │ ├── base-component.js.map │ │ │ │ ├── button.js │ │ │ │ ├── button.js.map │ │ │ │ ├── carousel.js │ │ │ │ ├── carousel.js.map │ │ │ │ ├── collapse.js │ │ │ │ ├── collapse.js.map │ │ │ │ ├── dom │ │ │ │ │ ├── data.js │ │ │ │ │ ├── data.js.map │ │ │ │ │ ├── event-handler.js │ │ │ │ │ ├── event-handler.js.map │ │ │ │ │ ├── manipulator.js │ │ │ │ │ ├── manipulator.js.map │ │ │ │ │ ├── selector-engine.js │ │ │ │ │ └── selector-engine.js.map │ │ │ │ ├── dropdown.js │ │ │ │ ├── dropdown.js.map │ │ │ │ ├── modal.js │ │ │ │ ├── modal.js.map │ │ │ │ ├── offcanvas.js │ │ │ │ ├── offcanvas.js.map │ │ │ │ ├── popover.js │ │ │ │ ├── popover.js.map │ │ │ │ ├── scrollspy.js │ │ │ │ ├── scrollspy.js.map │ │ │ │ ├── tab.js │ │ │ │ ├── tab.js.map │ │ │ │ ├── toast.js │ │ │ │ ├── toast.js.map │ │ │ │ ├── tooltip.js │ │ │ │ └── tooltip.js.map │ │ │ └── src │ │ │ │ ├── alert.js │ │ │ │ ├── base-component.js │ │ │ │ ├── button.js │ │ │ │ ├── carousel.js │ │ │ │ ├── collapse.js │ │ │ │ ├── dom │ │ │ │ ├── data.js │ │ │ │ ├── event-handler.js │ │ │ │ ├── manipulator.js │ │ │ │ └── selector-engine.js │ │ │ │ ├── dropdown.js │ │ │ │ ├── modal.js │ │ │ │ ├── offcanvas.js │ │ │ │ ├── popover.js │ │ │ │ ├── scrollspy.js │ │ │ │ ├── tab.js │ │ │ │ ├── toast.js │ │ │ │ ├── tooltip.js │ │ │ │ └── util │ │ │ │ ├── index.js │ │ │ │ ├── sanitizer.js │ │ │ │ └── scrollbar.js │ │ ├── package.json │ │ └── scss │ │ │ ├── _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 │ │ │ ├── _mixins.scss │ │ │ ├── _modal.scss │ │ │ ├── _nav.scss │ │ │ ├── _navbar.scss │ │ │ ├── _offcanvas.scss │ │ │ ├── _pagination.scss │ │ │ ├── _popover.scss │ │ │ ├── _progress.scss │ │ │ ├── _reboot.scss │ │ │ ├── _root.scss │ │ │ ├── _spinners.scss │ │ │ ├── _tables.scss │ │ │ ├── _toasts.scss │ │ │ ├── _tooltip.scss │ │ │ ├── _transitions.scss │ │ │ ├── _type.scss │ │ │ ├── _utilities.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 │ │ │ ├── _colored-links.scss │ │ │ ├── _position.scss │ │ │ ├── _ratio.scss │ │ │ ├── _stretched-link.scss │ │ │ ├── _text-truncation.scss │ │ │ └── _visually-hidden.scss │ │ │ ├── mixins │ │ │ ├── _alert.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _box-shadow.scss │ │ │ ├── _breakpoints.scss │ │ │ ├── _buttons.scss │ │ │ ├── _caret.scss │ │ │ ├── _clearfix.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 │ │ │ ├── utilities │ │ │ └── _api.scss │ │ │ └── vendor │ │ │ └── _rfs.scss │ ├── common │ │ ├── _dark.scss │ │ ├── _fonts.scss │ │ ├── _global.scss │ │ └── _variables.scss │ ├── components │ │ ├── _alerts.scss │ │ ├── _buttons.scss │ │ ├── _code.scss │ │ ├── _comments.scss │ │ ├── _doks.scss │ │ ├── _footnote.scss │ │ ├── _forms.scss │ │ ├── _images.scss │ │ ├── _search.scss │ │ ├── _syntax.scss │ │ └── _tables.scss │ ├── layouts │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _pages.scss │ │ ├── _posts.scss │ │ └── _sidebar.scss │ └── main.scss │ ├── screenshot.png │ ├── static │ ├── _headers │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── doks.png │ ├── doks.svg │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── fonts │ │ └── vendor │ │ │ └── jost │ │ │ ├── jost-v4-latin-500.woff │ │ │ ├── jost-v4-latin-500.woff2 │ │ │ ├── jost-v4-latin-500italic.woff │ │ │ ├── jost-v4-latin-500italic.woff2 │ │ │ ├── jost-v4-latin-700.woff │ │ │ ├── jost-v4-latin-700.woff2 │ │ │ ├── jost-v4-latin-700italic.woff │ │ │ ├── jost-v4-latin-700italic.woff2 │ │ │ ├── jost-v4-latin-italic.woff │ │ │ ├── jost-v4-latin-italic.woff2 │ │ │ ├── jost-v4-latin-regular.woff │ │ │ └── jost-v4-latin-regular.woff2 │ ├── index.js │ ├── js │ │ ├── main.js │ │ └── search.js │ ├── logo-doks.png │ ├── plugins │ │ └── elasticlunr.min.js │ └── site.webmanifest │ ├── templates │ ├── 404.html │ ├── authors │ │ ├── list.html │ │ └── single.html │ ├── base.html │ ├── blog │ │ ├── page.html │ │ └── section.html │ ├── docs │ │ ├── page.html │ │ └── section.html │ ├── index.html │ ├── macros │ │ ├── docs-edit-page.html │ │ ├── docs-navigation.html │ │ ├── docs-sidebar.html │ │ ├── docs-toc.html │ │ ├── footer.html │ │ ├── head.html │ │ ├── header.html │ │ ├── javascript.html │ │ ├── math.html │ │ ├── page-publish-metadata.html │ │ └── section-navigation.html │ ├── page.html │ ├── robots.txt │ └── section.html │ └── theme.toml └── user ├── index.html ├── script.js └── style.css /pages/billing/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 𝑿𝑨𝑰 10 | 11 | 12 |
13 | 14 |
15 | 16 |
17 | 18 |

𝑿𝑨𝑰 𝑨𝑷𝑰 𝑼𝒔𝒂𝒈𝒆

19 |
20 |

21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /pages/docs/.gitignore: -------------------------------------------------------------------------------- 1 | public/ 2 | -------------------------------------------------------------------------------- /pages/docs/content/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "𝑷𝒓𝒐𝒙𝒚𝑿𝑨𝑰" 3 | 4 | # The homepage contents 5 | [extra] 6 | lead = "𝑋𝐴𝐼 𝐴𝑃𝐼 𝑃𝑟𝑜𝑥𝑦 𝐸𝑚𝑝𝑜𝑤𝑒𝑟𝑖𝑛𝑔 𝑃𝑖𝑜𝑛𝑒𝑒𝑟𝑠" 7 | url = "/docs/getting-started/tour/" 8 | url_button = "Get started" 9 | 10 | # Menu items 11 | [[extra.menu.main]] 12 | name = "𝑫𝒐𝒄𝒔" 13 | section = "docs" 14 | url = "/docs/getting-started/tour/" 15 | weight = 10 16 | 17 | [[extra.menu.main]] 18 | name = "𝑩𝒍𝒐𝒈" 19 | section = "blog" 20 | url = "/blog/" 21 | weight = 20 22 | 23 | [[extra.list]] 24 | title = "🔋 Seamless Integration" 25 | content = 'Supports a variety of ecosystem projects compatible with OpenAI' 26 | 27 | [[extra.list]] 28 | title = "🪐 Super Stable" 29 | content = 'Shields most of the instability issues with OpenAI services' 30 | 31 | [[extra.list]] 32 | title = "⚖️ Pay-as-you-go" 33 | content = "Pricing aligns with the official rate cards for each model" 34 | 35 | [[extra.list]] 36 | title = "⚡️ High Concurrency" 37 | content = "Capable of handling large-scale requests, the system boasts exceptional concurrent performance" 38 | 39 | [[extra.list]] 40 | title = "🚀️ Rapid Response" 41 | content = "All key service logic is executed in memory, ensuring ultra-fast response" 42 | 43 | [[extra.list]] 44 | title = "🚦 Secure Design" 45 | content = "Zero-trust security design, with core data encrypted and stored" 46 | +++ 47 | -------------------------------------------------------------------------------- /pages/docs/content/authors/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Authors" 3 | description = "The authurs of the blog articles." 4 | date = 2021-04-01T08:00:00+00:00 5 | updated = 2021-04-01T08:00:00+00:00 6 | draft = false 7 | 8 | # If add a new author page in this section, please add a new item, 9 | # and the format is as follows: 10 | # 11 | # "author-name-in-url" = "the-full-path-of-the-author-page" 12 | # 13 | # Note: We use quoted keys here. 14 | [extra.author_pages] 15 | "team-loco" = "authors/team-loco.md" 16 | +++ 17 | 18 | The authors of the blog articles. 19 | -------------------------------------------------------------------------------- /pages/docs/content/authors/team-loco.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Team Loco" 3 | description = "Creators of the Loco framework" 4 | date = 2021-04-01T08:50:45+00:00 5 | updated = 2021-04-01T08:50:45+00:00 6 | draft = false 7 | +++ 8 | 9 | Primary maintainers of the [Loco](https://loco.rs) framework: [Dotan Nahum](https://github.com/jondot), [Elad Kaplan](https://github.com/kaplanelad). 10 | 11 | -------------------------------------------------------------------------------- /pages/docs/content/blog/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Blog" 3 | description = "Blog" 4 | sort_by = "date" 5 | paginate_by = 2 6 | template = "blog/section.html" 7 | +++ 8 | -------------------------------------------------------------------------------- /pages/docs/content/blog/why.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Why is ProxyXAI So Stable?" 3 | description = "Introducing ProxyXAI" 4 | date = 2025-03-17T09:19:42+00:00 5 | updated = 2025-03-18T09:19:42+00:00 6 | draft = false 7 | template = "blog/page.html" 8 | 9 | [taxonomies] 10 | authors = ["Team ProxyXAI"] 11 | 12 | +++ 13 | 14 | **Because of Love** 15 | 16 | love 17 | -------------------------------------------------------------------------------- /pages/docs/content/docs/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Docs" 3 | description = "Docs" 4 | date = 2025-05-01T08:00:00+00:00 5 | updated = 2021-05-01T08:00:00+00:00 6 | sort_by = "weight" 7 | weight = 1 8 | template = "docs/section.html" 9 | +++ 10 | -------------------------------------------------------------------------------- /pages/docs/content/docs/api/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "API Reference" 3 | description = "" 4 | date = 2025-03-01T19:00:00+00:00 5 | updated = 2025-02-27T19:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 18 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/content/docs/contact/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Contact" 3 | description = "联系我们" 4 | template = "docs/section.html" 5 | sort_by = "weight" 6 | weight = 21 7 | draft = true 8 | +++ 9 | -------------------------------------------------------------------------------- /pages/docs/content/docs/contact/contact.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Contact Us" 3 | description = "" 4 | draft = false 5 | weight = 1 6 | sort_by = "weight" 7 | template = "docs/page.html" 8 | 9 | [extra] 10 | lead = "" 11 | toc = true 12 | top = false 13 | +++ 14 | 15 | 16 | 17 | 21 | 25 | 26 |
18 | 19 |

Wechat

20 |
22 | 23 |

Telegram

24 |
27 | -------------------------------------------------------------------------------- /pages/docs/content/docs/features/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Features" 3 | description = "" 4 | date = 2025-05-01T19:00:00+00:00 5 | updated = 2021-05-01T19:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 20 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/content/docs/features/keys.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Features" 3 | description = "" 4 | date = 2021-05-01T18:20:00+00:00 5 | updated = 2021-05-01T18:20:00+00:00 6 | draft = false 7 | weight = 1 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | lead = "" 13 | toc = true 14 | top = false 15 | +++ 16 | 17 | - Fully compatible with the official OpenAI API 18 | - Extremely stable, exclusive solutions to block most OpenAI issues such as errors 429/502/503/522 19 | - Pay-as-you-go pricing, consistent with the official rates for various models 20 | - Zero trust security design, ensuring that even our database administrators cannot access account key information 21 | -------------------------------------------------------------------------------- /pages/docs/content/docs/getting-started/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Getting Started" 3 | description = "" 4 | date = 2025-05-01T08:00:00+00:00 5 | updated = 2021-05-01T08:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 1 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/content/docs/getting-started/changelog.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Update Notes" 3 | date = 2025-03-01T08:00:00+00:00 4 | updated = 2025-03-01T08:00:00+00:00 5 | draft = false 6 | weight = 4 7 | sort_by = "weight" 8 | template = "docs/page.html" 9 | 10 | [extra] 11 | top = false 12 | +++ 13 | 14 | ## 2023-11-12 15 | 16 | Added support for extended Audio models series: whisper-1 (audio to text) and tts-1, tts-1-1106, tts-1-hd, tts-1-hd-1106 (text to audio). 17 | 18 | ## 2023-11-07 19 | 20 | Added support for extended GPT-4-Turbo model series: gpt-4-1106-preview and gpt-4-vision-preview, as well as the IMAGE series model dall-e-3. 21 | -------------------------------------------------------------------------------- /pages/docs/content/docs/getting-started/config.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "User Help" 3 | date = 2021-05-01T08:00:00+00:00 4 | updated = 2021-05-01T08:00:00+00:00 5 | draft = false 6 | weight = 3 7 | sort_by = "weight" 8 | template = "docs/page.html" 9 | 10 | [extra] 11 | toc = true 12 | top = false 13 | +++ 14 | 15 | ## OpenAI API Service Features 16 | 17 | 1. Compatible with all clients or web applications that support "Custom OpenAI Domain". 18 | 2. The server is deployed in regions that support the call of OpenAI SDK, ensuring seamless access for all clients. 19 | 3. Provides account management features, allowing each account to be assigned a unique API Key, facilitating team collaboration. 20 | 4. Implements tracking and statistics of the number of API calls for each account. 21 | 22 | ## Usage Examples 23 | 24 | ### BotGem (All Endpoints) 25 | 26 | Download link [botgem.com](https://botgem.com) 27 | 28 | After downloading, open the settings page, select OpenAI, and enter the API Base and API Key provided by the platform. 29 | 30 | ### OpenCat Client (iOS & Mac) 31 | 32 | Even though OpenCat provides a team version, this feature is still a paid service. The purpose of free use by the team can be achieved through the use of the custom OpenAI domain feature. 33 | 34 | 1. In the OpenCat client, set the API Key to the Key we assigned. 35 | 2. Set the custom OpenAI domain to your own server address, for example: `https://api.proxyxai.com`, and click "Verify" under "Custom API Domain" to complete the setting. 36 | 37 | ### ChatBox (Windows, Mac, Linux) 38 | 39 | Visit [ChatBox GitHub repository](https://github.com/Bin-Huang/chatbox). 40 | 41 | In the settings, select OpenAI API, enter the API address and API Key of this service. 42 | 43 | ### ChatBoost(Android) 44 | 45 | In the settings, configure the custom API address as the API address and API Key of this service. 46 | 47 | ### ChatGPT Box(Browser Plugin) 48 | 49 | Visit [ChatGPT Box Chrome Store page](https://chrome.google.com/webstore/detail/chatgptbox/eobbhoofkanlmddnplfhnmkfbnlhpbbo). 50 | 51 | In "Advanced" settings, modify the "Custom ChatGPT Web API Address" to the API address of this service, and fill in the API Key in the input box after "API Mode". 52 | 53 | ### ChatGPT-Next-web(Web Version) 54 | 55 | Visit [ChatGPT-Next-Web GitHub repository](https://github.com/Yidadaa/ChatGPT-Next-Web). 56 | 57 | Deploy docker using the following command: 58 | 59 | ```markdown 60 | docker run --name=chatgpt -d -p 3000:3000 -e OPENAI_API_KEY="" -e BASE_URL="api.proxyxai.com" -e PROTOCOL="https" yidadaa/chatgpt-next-web:latest 61 | ``` 62 | 63 | Set `BASE_URL` to the API address of this service, and keep `OPENAI_API_KEY` empty. In this way, when accessing the web version, users can directly use their own API Key. 64 | -------------------------------------------------------------------------------- /pages/docs/content/docs/getting-started/guide.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Developer Guide" 3 | date = 2021-05-01T08:00:00+00:00 4 | updated = 2021-05-01T08:00:00+00:00 5 | draft = false 6 | weight = 2 7 | sort_by = "weight" 8 | template = "docs/page.html" 9 | 10 | [extra] 11 | toc = true 12 | top = false 13 | +++ 14 | 15 | ## Origin 16 | 17 | This service is designed to provide a stable way for local developers to use OpenAI related APIs, facilitating AI practitioners and researchers in their work and enabling them to use AI to enhance their daily work and study efficiency. 18 | 19 | ## Key Features 20 | 21 | With the rapid development and popularization of AI technology, the demand for OpenAI services is increasing, and instability in official services is common. Therefore, this service specifically provides developers with the ability to transparently retry without perception when OpenAI side load is too high, covering the vast majority of official service exceptions, ensuring the maximum success of interface requests, and is one of the optimization services provided by the platform. 22 | 23 | 1. Supports querying balance through OpenAI compatible interface 24 | 2. Prompt_token and Completion_tokens are billed separately, consistent with OpenAI official model pricing 25 | 3. Comprehensive cost analysis tools, with all consumption details from overall overview to itemized details 26 | 4. Supports sub-account capabilities for self-determined pricing rates/rates/limit/recharge etc. 27 | 5. Developer API calls and [https://platform.openai.com/docs/api-reference](https://platform.openai.com/docs/api-reference) are consistent 28 | 6. [API](https://api.proxyxai.com) 29 | -------------------------------------------------------------------------------- /pages/docs/content/docs/getting-started/tour/tour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/content/docs/getting-started/tour/tour.png -------------------------------------------------------------------------------- /pages/docs/content/docs/help/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Help" 3 | description = "" 4 | date = 2025-05-01T19:00:00+00:00 5 | updated = 2021-05-01T19:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 30 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/content/docs/help/faq.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Frequently Asked Questions" 3 | description = "Answers to frequently asked questions." 4 | date = 2021-05-01T19:30:00+00:00 5 | updated = 2021-05-01T19:30:00+00:00 6 | draft = false 7 | weight = 30 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | toc = true 13 | top = false 14 | +++ 15 | 16 |
17 | Why do some API calls report a 404 error? 18 | Your domain might be configured incorrectly. Please check if the api_base configuration is correct. Many libraries (such as langchain) require the /v1 suffix to be added to the api_base when configuring it, rather than just a domain. For example, https://api.proxyxai.com/v1 19 |
20 |
21 | 22 |
23 | Error 401: Incorrect API key provided: sk-: You can find your API key at https://platform.openai.com/accour keys 24 | This is because you haven't configured the request's API entry address to the one we provided. The platform works by proxying API requests, so you must configure the API Base and API Key we provide. Change the API to https://api.proxyxai.com + sk-Xvsxxxx 25 |
26 |
27 | 28 |
29 | What if an open source project does not support configuring the api base? 30 | Find the project source code and change the API connection address from api.openai.com to api.proxyxai.com 31 |
32 |
33 | 34 |
35 | Why does calling the sub-account API prompt a 401 error? 36 | In order to successfully call the system's sub-account API, your account balance needs to be more than $20. You will only get the corresponding call permissions when your account balance meets this minimum requirement. Please ensure that your account funds are sufficient to avoid such authorization problems. 37 |
38 |
39 | 40 |
41 | What are the conditions for creating a sub-account? 42 | Creating a sub-account requires meeting two main conditions. First, your parent account balance needs to be more than $20, and second, the newly created sub-account needs to make an initial deposit of at least $2. These rules are mainly to prevent the abuse of sub-accounts. It's worth noting that in the XAI proxy system, each account exists independently. As long as the sub-account balance is more than $20, it can create its own sub-account. 43 |
44 |
45 | 46 |
47 | Why can't I view sub-account information? 48 | Please confirm whether the balance of the parent account has fallen below $20. According to the system settings, to perform sub-account related API operations, there must be more than $20 in the parent account. 49 |
50 |
51 | 52 |
53 | Why does the response return "Insufficient balance" when the account still has a balance? 54 | To prevent asset loss, the system is set to prohibit calls when the balance is less than $1. 55 |
56 |
57 | -------------------------------------------------------------------------------- /pages/docs/content/docs/system/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "System" 3 | description = "" 4 | date = 2025-05-01T19:00:00+00:00 5 | updated = 2021-05-01T19:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 20 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/content/docs/system/system.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Link System" 3 | description = "" 4 | date = 2021-05-01T18:20:00+00:00 5 | updated = 2021-05-01T18:20:00+00:00 6 | draft = false 7 | weight = 1 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | lead = "" 13 | toc = true 14 | top = false 15 | +++ 16 | 17 | ## Internal Services 18 | 19 | - [Assistant](https://chat.proxyxai.com) 20 | 21 | ## Third-party Systems 22 | 23 | - [BotGem](https://botgem.com) 24 | - [ChatBox](https://chatboxai.app) 25 | - [OpenCat](https://opencat.app) 26 | - [ChatGPT Box Chrome Browser Extension](https://chrome.google.com/webstore/detail/chatgptbox/eobbhoofkanlmddnplfhnmkfbnlhpbbo) 27 | -------------------------------------------------------------------------------- /pages/docs/content/docs/xai/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "XAI Reference" 3 | description = "" 4 | date = 2024-11-16T19:00:00+00:00 5 | updated = 2024-11-16T19:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 19 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/content/privacy-policy/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Privacy Policy" 3 | description = "We do not use cookies and we do not collect any personal data." 4 | date = 2025-03-20T08:00:00+00:00 5 | updated = 2025-03-20T08:00:00+00:00 6 | draft = false 7 | 8 | [extra] 9 | class = "page single" 10 | +++ 11 | 12 | __TLDR__: We do not use cookies and we do not collect any personal data. 13 | 14 | ## Website visitors 15 | 16 | - No personal information is collected. 17 | - No information is stored in the browser. 18 | - No information is shared with, sent to or sold to third-parties. 19 | - No information is shared with advertising companies. 20 | - No information is mined and harvested for personal and behavioral trends. 21 | - No information is monetized. 22 | -------------------------------------------------------------------------------- /pages/docs/static/images/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/static/images/apple-touch-icon.png -------------------------------------------------------------------------------- /pages/docs/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/static/images/favicon.ico -------------------------------------------------------------------------------- /pages/docs/static/images/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /pages/docs/static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/static/images/logo.png -------------------------------------------------------------------------------- /pages/docs/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block seo %} 4 | {{ super() }} 5 | {% set title = "404 Page not found" %} 6 | 7 | {% if config.title %} 8 | {% set title_addition = title_separator ~ config.title %} 9 | {% else %} 10 | {% set title_addition = "" %} 11 | {% endif %} 12 | 13 | {% set description = config.description %} 14 | 15 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description, is_404=true) }} 16 | {% endblock seo %} 17 | 18 | {% block content %} 19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |

Page not found :(

27 |

The page you are looking for doesn't exist or has been moved.

28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | {% endblock content %} 36 | -------------------------------------------------------------------------------- /pages/docs/templates/authors/list.html: -------------------------------------------------------------------------------- 1 | {% extends "section.html" %} 2 | 3 | {% block seo %} 4 | {% set title_addition = "" %} 5 | {% if config.extra.title_separator %} 6 | {% set title_separator = " " ~ config.extra.title_separator ~ " " %} 7 | {% else %} 8 | {% set title_separator = " | " %} 9 | {% endif %} 10 | 11 | {% set_global section = get_section(path="authors/_index.md") %} 12 | {% if section.title and config.title %} 13 | {% set title = section.title %} 14 | {% set title_addition = title_separator ~ config.title %} 15 | {% elif section.title %} 16 | {% set title = section.title %} 17 | {% else %} 18 | {% set title = config.title %} 19 | {% endif %} 20 | 21 | {% if page.description %} 22 | {% set description = section.description %} 23 | {% else %} 24 | {% set description = config.description %} 25 | {% endif %} 26 | 27 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} 28 | {% endblock seo %} 29 | 30 | {% block body %} 31 | {% if section.extra.class %} 32 | {% set page_class = section.extra.class %} 33 | {% else %} 34 | {% set page_class = "contributors list" %} 35 | {% endif %} 36 | {% endblock body %} 37 | 38 | {% block content %} 39 |
40 |
41 |
42 |
43 |
44 |

{{ section.title }}

45 |
{{ section.content | safe }}
46 |
47 | {% for term in terms %} 48 |
49 |
50 |

{{ term.name }}

51 |
52 |
53 | {% endfor %} 54 |
55 |
56 |
57 |
58 |
59 |
60 | {% endblock content %} 61 | 62 | 63 | -------------------------------------------------------------------------------- /pages/docs/templates/authors/single.html: -------------------------------------------------------------------------------- 1 | {% extends "page.html" %} 2 | 3 | {% block seo %} 4 | {% set author_name_in_url = term.permalink | trim_end_matches(pat="/") | split(pat="/") | last %} 5 | {% set section = get_section(path="authors/_index.md") %} 6 | 7 | {% if section.extra.author_pages[author_name_in_url] %} 8 | {% set_global author_page = get_page(path=section.extra.author_pages[author_name_in_url])%} 9 | {% endif %} 10 | {% if author_page and author_page.title %} 11 | {% set_global title = author_page.title %} 12 | {% else %} 13 | {% set_global title = term.name %} 14 | {% endif %} 15 | 16 | {% set title_addition = "" %} 17 | {% if config.extra.title_separator %} 18 | {% set title_separator = " " ~ config.extra.title_separator ~ " " %} 19 | {% else %} 20 | {% set title_separator = " | " %} 21 | {% endif %} 22 | 23 | {% if config.title %} 24 | {% set title_addition = title_separator ~ config.title %} 25 | {% else %} 26 | {% set title_addition = "" %} 27 | {% endif %} 28 | 29 | {% if author_page and author_page.description %} 30 | {% set description = author_page.description %} 31 | {% else %} 32 | {% set description = config.description %} 33 | {% endif %} 34 | 35 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} 36 | {% endblock seo %} 37 | 38 | {% block body %} 39 | {% if page.extra.class %} 40 | {% set page_class = page.extra.class %} 41 | {% else %} 42 | {% set page_class = "contributors list" %} 43 | {% endif %} 44 | {% endblock body %} 45 | 46 | {% block content %} 47 |
48 |
49 |
50 |
51 |
52 |

{{ title }}

53 | {% if author_page and author_page.content %}
{{ author_page.content | safe }}
{% endif %} 54 |
55 | {% for page in term.pages %} 56 |
57 |
58 |

{{ page.title }}

59 | {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% elif page.description %}

{{ page.description | safe }}

{% endif %} 60 | {{ macros_publish::page_publish_metadata(page=page) }} 61 |
62 |
63 | {% endfor %} 64 |
65 |
66 |
67 |
68 |
69 |
70 | {% endblock content %} 71 | 72 | 73 | -------------------------------------------------------------------------------- /pages/docs/templates/base.html: -------------------------------------------------------------------------------- 1 | {%- import 'macros/head.html' as macros_head -%} 2 | {% import 'macros/math.html' as macros_math -%} 3 | {% import 'macros/header.html' as macros_header -%} 4 | {% import 'macros/footer.html' as macros_footer -%} 5 | {% import 'macros/javascript.html' as macros_js -%} 6 | {% import 'macros/page-publish-metadata.html' as macros_publish -%} 7 | {% import 'macros/section-navigation.html' as macros_section_nav -%} 8 | {% import 'macros/docs-sidebar.html' as macros_sidebar -%} 9 | {% import 'macros/docs-edit-page.html' as macros_edit_page -%} 10 | {% import 'macros/docs-navigation.html' as macros_navigation -%} 11 | {% import 'macros/docs-toc.html' as macros_toc -%} 12 | 13 | 14 | 15 | 16 | 17 | 18 | {{ macros_head::resource() }} 19 | {{ macros_head::stylesheet() }} 20 | 21 | {% block seo %} 22 | {% if config.extra.title_separator %} 23 | {% set title_separator = " " ~ config.extra.title_separator ~ " " %} 24 | {% else %} 25 | {% set title_separator = " | " %} 26 | {% endif %} 27 | {% endblock seo %} 28 | 29 | {{ macros_head::favicons() }} 30 | {% block math %}{{ macros_math::math() }}{% endblock math %} 31 | 32 | {% block body %}{% set page_class="home" %}{% endblock body %} 33 | 34 | {% block header %} 35 | {{ macros_header::header(current_section="/") }} 36 | {% endblock header %} 37 | 38 | {% block content %}{% endblock content %} 39 | 40 | {% block footer %} 41 | {{ macros_footer::footer() }} 42 | {% endblock footer %} 43 | 44 | {{ macros_js::javascript() }} 45 | 46 | 47 | -------------------------------------------------------------------------------- /pages/docs/templates/blog/page.html: -------------------------------------------------------------------------------- 1 | {# Default page template used for blog contents #} 2 | 3 | {% extends "page.html" %} 4 | 5 | {% block seo %} 6 | {# This value is matched by the config.extra.menu.main->section #} 7 | {% set_global current_section = 'blog' %} 8 | {{ super() }} 9 | {% endblock seo %} 10 | 11 | {% block body %} 12 | {% set page_class = "blog single" %} 13 | {% endblock body %} 14 | 15 | {% block header %} 16 | {{ macros_header::header(current_section=current_section)}} 17 | {% endblock header %} 18 | 19 | {% block content %} 20 |
21 |
22 |
23 |
24 |
25 |
26 |

{{ page.title }}

27 | {{ macros_publish::page_publish_metadata(page=page) }} 28 |
29 | {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} 30 | {{ page.content | safe }} 31 |
32 |
33 |
34 |
35 |
36 | {% endblock content %} 37 | -------------------------------------------------------------------------------- /pages/docs/templates/blog/section.html: -------------------------------------------------------------------------------- 1 | {% extends "section.html" %} 2 | 3 | {% block body %} 4 | {% set page_class = "blog list" %} 5 | {% endblock body %} 6 | 7 | {% block header %} 8 | {# This value is matched by the config.extra.menu.main->section #} 9 | {% set current_section = "blog" %} 10 | {{ macros_header::header(current_section=current_section)}} 11 | {% endblock header %} 12 | 13 | {% block content %} 14 |
15 |
16 |
17 |
18 |
19 |

{{ section.title }}

20 |
21 | {% for page in paginator.pages %} 22 |
23 |
24 |

{{ page.title }}

25 | {% if page.extra.lead %} 26 |

{{ page.extra.lead | safe }}

{% elif page.description %}

{{ page.description | safe }}

{% endif %} 27 | {{ macros_publish::page_publish_metadata(page=page) }} 28 |
29 |
30 | {% endfor %} 31 | {% if paginator.previous or paginator.next %} 32 | {{ macros_section_nav::navigation(paginator=paginator) }} 33 | {% endif %} 34 |
35 |
36 |
37 |
38 |
39 |
40 | {% endblock content %} 41 | -------------------------------------------------------------------------------- /pages/docs/templates/docs/page.html: -------------------------------------------------------------------------------- 1 | {% extends "page.html" %} 2 | 3 | {% block body %} 4 | {% set page_class = "docs single" %} 5 | {% endblock body %} 6 | 7 | {% block header %} 8 | {# This value is matched by the config.extra.menu.main~url #} 9 | {% set current_section = "docs" %} 10 | {{ macros_header::header(current_section=current_section)}} 11 | {% endblock header %} 12 | 13 | {% block content %} 14 |
15 |
16 |
17 | {{ macros_sidebar::docs_sidebar(current_section=current_section) }} 18 | {{ macros_toc::docs_toc(page=page) }} 19 |
20 |

{{ page.title }}

21 | {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} 22 | {{ page.content | safe }} 23 | {% if config.extra.edit_page %} 24 | {{ macros_edit_page::docs_edit_page(current_path=current_path) }} 25 | {% endif %} 26 | {{ macros_navigation::docs_navigation(page=page, current_section=current_section) }} 27 |
28 |
29 |
30 |
31 | {% endblock content %} 32 | -------------------------------------------------------------------------------- /pages/docs/templates/docs/section.html: -------------------------------------------------------------------------------- 1 | {% extends "section.html" %} 2 | 3 | {% block body %} 4 | {% set page_class = "docs list" %} 5 | {% endblock body %} 6 | 7 | {% block header %} 8 | {# This value is matched by the config.extra.menu.main~section #} 9 | {% set current_section = "docs" %} 10 | {{ macros_header::header(current_section=current_section)}} 11 | {% endblock header %} 12 | 13 | {% block content %} 14 |
15 |
16 |
17 |
18 |
19 |

{{ section.title }}

20 |
{{ section.content | safe }}
21 |
22 | {% set index_path = current_path ~ "_index.md" | trim_start_matches(pat="/") %} 23 | {% set index = get_section(path=index_path) %} 24 | {% for page in index.pages %} 25 |
26 | 29 |
30 | {% endfor %} 31 | {% for s in index.subsections %} 32 | {% set subsection = get_section(path=s) %} 33 | {% if subsection.pages %} 34 | {% for page in subsection.pages %} 35 |
36 | 39 |
40 | {% endfor %} 41 | {% endif %} 42 | {% endfor %} 43 |
44 |
45 |
46 |
47 |
48 |
49 | {% endblock content %} 50 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/docs-edit-page.html: -------------------------------------------------------------------------------- 1 | {% macro docs_edit_page(current_path) %} 2 |

Edit this page on GitHub

3 | {% endmacro %} 4 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/docs-sidebar.html: -------------------------------------------------------------------------------- 1 | {% macro docs_sidebar(current_section) %} 2 |
3 | 28 |
29 | {% endmacro %} 30 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/docs-toc.html: -------------------------------------------------------------------------------- 1 | {% macro docs_toc(page) %} 2 | {% if page.extra.toc %} 3 | 21 | {% endif %} 22 | {% endmacro %} 23 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/footer.html: -------------------------------------------------------------------------------- 1 | {% macro footer() %} 2 | 26 | {% endmacro %} 27 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/javascript.html: -------------------------------------------------------------------------------- 1 | {% macro javascript() %} 2 | 3 | {% if config.build_search_index %} 4 | 5 | 6 | 7 | {% endif %} 8 | {% endmacro %} 9 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/math.html: -------------------------------------------------------------------------------- 1 | {% macro math() %} 2 | {% if page.extra.math or section.extra.math or config.extra.math %} 3 | {% if config.extra.library and config.extra.library == "mathjax" %} 4 | 18 | 19 | {% else %} 20 | 21 | 22 | 23 | 24 | {% endif %} 25 | {% endif %} 26 | {% endmacro %} 27 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/page-publish-metadata.html: -------------------------------------------------------------------------------- 1 | {% macro page_publish_metadata(page) %} 2 |

Posted {{ page.date | date(format=config.extra.timeformat | default(value="%Y-%m-%d %H:%M:%S"), timezone=config.extra.timezone | default(value="America/New_York")) }}{% if page.taxonomies.authors and config.taxonomies %} by {% for author in page.taxonomies.authors %}{% if author_flag %} and {% endif %}{{ author }}{% set_global author_flag = true %}{% endfor %}{% endif %} ‐ {{ page.reading_time }} min read

3 | {% endmacro %} 4 | -------------------------------------------------------------------------------- /pages/docs/templates/macros/section-navigation.html: -------------------------------------------------------------------------------- 1 | {% macro navigation(paginator) %} 2 |

3 | {% if paginator.previous %} 4 | 5 |
6 |
7 | ← Newer 8 |
9 |
10 |
11 | {% endif %} 12 | {% if paginator.next %} 13 | 14 |
15 |
16 | Older → 17 |
18 |
19 |
20 | {% endif %} 21 |
22 | {% endmacro %} 23 | -------------------------------------------------------------------------------- /pages/docs/templates/page.html: -------------------------------------------------------------------------------- 1 | {# Default page.html template #} 2 | 3 | {% extends "base.html" %} 4 | 5 | {% block seo %} 6 | {{ super() }} 7 | {% set title_addition = "" %} 8 | {% if page.title and config.title %} 9 | {% set title = page.title %} 10 | {% set title_addition = title_separator ~ config.title %} 11 | {% elif page.title %} 12 | {% set title = page.title %} 13 | {% else %} 14 | {% set title = config.title %} 15 | {% endif %} 16 | 17 | {% if page.description %} 18 | {% set description = page.description %} 19 | {% else %} 20 | {% set description = config.description %} 21 | {% endif %} 22 | {% set created_time = page.date %} 23 | {% set updated_time = page.updated %} 24 | {% if current_section %} 25 | {% set page_section = current_section %} 26 | {% else %} 27 | {% set page_section = "" %} 28 | {% endif %} 29 | 30 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description, type="article", is_page=true, created_time=created_time, updated_time=updated_time, page_section=page_section) }} 31 | {% endblock seo %} 32 | 33 | {% block body %} 34 | {% if section.extra.class %} 35 | {% set page_class = page.extra.class %} 36 | {% else %} 37 | {% set page_class = "page single" %} 38 | {% endif %} 39 | {% endblock body %} 40 | 41 | {% block content %} 42 |
43 |
44 |
45 |
46 |
47 | 50 | {% if page.extra.lead %}

{{ page.extra.lead }}

{% endif %} 51 | {{ page.content | safe }} 52 |
53 |
54 |
55 |
56 |
57 | {% endblock content %} 58 | -------------------------------------------------------------------------------- /pages/docs/templates/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: {{config.base_url}}/sitemap.xml 5 | -------------------------------------------------------------------------------- /pages/docs/templates/section.html: -------------------------------------------------------------------------------- 1 | {# Default section.html template #} 2 | 3 | {% extends "base.html" %} 4 | 5 | {% block seo %} 6 | {{ super() }} 7 | {% set title_addition = "" %} 8 | 9 | {% if section.title and config.title %} 10 | {% set title = section.title %} 11 | {% set title_addition = title_separator ~ config.title %} 12 | {% elif section.title %} 13 | {% set title = section.title %} 14 | {% else %} 15 | {% set title = config.title %} 16 | {% endif %} 17 | 18 | {% if section.description %} 19 | {% set description = section.description %} 20 | {% else %} 21 | {% set description = config.description %} 22 | {% endif %} 23 | 24 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} 25 | {% endblock seo %} 26 | 27 | {% block body %} 28 | {% if section.extra.class %} 29 | {% set page_class = section.extra.class %} 30 | {% else %} 31 | {% set page_class = "page list" %} 32 | {% endif %} 33 | {% endblock body %} 34 | 35 | {% block content %} 36 |
37 |
38 |
39 |
40 |
41 | 44 | {{ section.content | safe }} 45 |
46 |
47 |
48 |
49 |
50 | {% endblock content %} 51 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/.gitignore: -------------------------------------------------------------------------------- 1 | public 2 | .vs 3 | .vscode 4 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | We'd love your help! Thanks for caring about the theme of Zola. 4 | 5 | ## Licensing 6 | 7 | This repository is under the MIT license. You can find the full text of the [license](./LICENSE) in this repository. 8 | 9 | ## Code of Conduct 10 | 11 | The AdiDoks theme has a [code of conduct](./CODE_OF_CONDUCT.md) that governs all sub-projects, including this one. Please respect it! 12 | 13 | ## Contribute to Doks 14 | 15 | - Follow the [GitHub flow](https://guides.github.com/introduction/flow/). 16 | - Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) 17 | 18 | ## Create an issue 19 | 20 | - [Bug report](https://github.com/aaranxu/adidoks/issues/new?template=bug-report---.md) 21 | - [Feature request](https://github.com/aaranxu/adidoks/issues/new?template=feature-request---.md) 22 | 23 | ## Improve documentation 24 | 25 | 👉 The documentation lives in [`./content/docs/`](https://github.com/aaranxu/adidoks/tree/master/content/docs) of the [`adidoks` repository](https://github.com/h-enk/getdoks.org). 26 | 27 | - Follow the [GitHub flow](https://guides.github.com/introduction/flow/). 28 | - Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) 29 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Aaran Xu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/_index.fi.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Nykyaikainen teema dokumentaatiolle" 3 | 4 | 5 | # The homepage contents 6 | [extra] 7 | lead = 'AdiDoks on nykyaikainen teema dokumentaatiosivustoille. Se on portattu Zolalle Hugo-teemasta nimeltä Doks.' 8 | url = "/docs/getting-started/introduction/" 9 | url_button = "Aloita" 10 | repo_version = "GitHub v0.1.0" 11 | repo_license = "Open-source MIT License." 12 | repo_url = "https://github.com/aaranxu/adidoks" 13 | 14 | # Menu items 15 | [[extra.menu.main]] 16 | name = "Dokumentaatio" 17 | section = "docs" 18 | url = "/docs/getting-started/introduction/" 19 | weight = 10 20 | 21 | [[extra.menu.main]] 22 | name = "Blogi" 23 | section = "blog" 24 | url = "/blog/" 25 | weight = 20 26 | 27 | [[extra.list]] 28 | title = "Turvallisuustietoinen" 29 | content = 'Saat A+-arvosanoja Mozilla Observatoryssä suoraan. Voit vaihtaa turvallisuusheadereita tarpeidesi mukaan.' 30 | 31 | [[extra.list]] 32 | title = "Salamannopea ⚡️" 33 | content = 'Saat hyvät pisteet Google Lighthousessa defaultina. Doks poistaa tarpeettomat css:t, esinoutaa linkit, ja lataa kuvat laiskasti.' 34 | 35 | [[extra.list]] 36 | title = "SEO-valmis" 37 | content = "Käytä järkeviä oletusarvoja rakenteiselle datalle, open graphille ja Twitter-korteille. Tai muunna SEO-asetukset mieleisiksesi helposti." 38 | 39 | [[extra.list]] 40 | title = "Fulltext-haku" 41 | content = "Tee hakuja sivuillesi FlexSearchilla. Muuntele indeksointiasetuksia mieleisiksesi helposti." 42 | 43 | [[extra.list]] 44 | title = "Sivujen layoutit" 45 | content = "Rakenna sivuja laskeutumisivun, blogisivun tai dokumentaatiolayoutin mukaan. Lisää osioita ja komponentteja tarpeen mukaan." 46 | 47 | [[extra.list]] 48 | title = "Dark mode" 49 | content = "Vaihda hämärässä käytettävään käyttöliittymäteemaan nappia painamalla. Muuta värit muuttujilla vastaamaan brändiäsi." 50 | 51 | +++ 52 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Modern Documentation Theme" 3 | 4 | 5 | # The homepage contents 6 | [extra] 7 | lead = 'AdiDoks is a modern documentation theme, which is a port of the Hugo theme Doks for Zola.' 8 | url = "/docs/getting-started/introduction/" 9 | url_button = "Get started" 10 | repo_version = "GitHub v0.1.0" 11 | repo_license = "Open-source MIT License." 12 | repo_url = "https://github.com/aaranxu/adidoks" 13 | 14 | # Menu items 15 | [[extra.menu.main]] 16 | name = "Docs" 17 | section = "docs" 18 | url = "/docs/getting-started/introduction/" 19 | weight = 10 20 | 21 | [[extra.menu.main]] 22 | name = "Blog" 23 | section = "blog" 24 | url = "/blog/" 25 | weight = 20 26 | 27 | [[extra.list]] 28 | title = "Security aware" 29 | content = 'Get A+ scores on Mozilla Observatory out of the box. Easily change the default Security Headers to suit your needs.' 30 | 31 | [[extra.list]] 32 | title = "Fast by default ⚡️" 33 | content = 'Get 100 scores on Google Lighthouse by default. Doks removes unused css, prefetches links, and lazy loads images.' 34 | 35 | [[extra.list]] 36 | title = "SEO-ready" 37 | content = "Use sensible defaults for structured data, open graph, and Twitter cards. Or easily change the SEO settings to your liking." 38 | 39 | [[extra.list]] 40 | title = "Full text search" 41 | content = "Search your Doks site with FlexSearch. Easily customize index settings and search options to your liking." 42 | 43 | [[extra.list]] 44 | title = "Page layouts" 45 | content = "Build pages with a landing page, blog, or documentation layout. Add custom sections and components to suit your needs." 46 | 47 | [[extra.list]] 48 | title = "Dark mode" 49 | content = "Switch to a low-light UI with the click of a button. Change colors with variables to match your branding." 50 | 51 | +++ 52 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/authors/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Authors" 3 | description = "The authurs of the blog articles." 4 | date = 2021-04-01T08:00:00+00:00 5 | updated = 2021-04-01T08:00:00+00:00 6 | draft = false 7 | 8 | # If add a new author page in this section, please add a new item, 9 | # and the format is as follows: 10 | # 11 | # "author-name-in-url" = "the-full-path-of-the-author-page" 12 | # 13 | # Note: We use quoted keys here. 14 | [extra.author_pages] 15 | "aaran-xu" = "authors/aaran-xu.md" 16 | +++ 17 | 18 | The authors of the blog articles. 19 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/authors/aaran-xu.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Aaran Xu" 3 | description = "Creator of AdiDoks." 4 | date = 2021-04-01T08:50:45+00:00 5 | updated = 2021-04-01T08:50:45+00:00 6 | draft = false 7 | +++ 8 | 9 | Creator of **AdiDoks**. 10 | 11 | [@aaranxu](https://github.com/aaranxu) 12 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/blog/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Blog" 3 | description = "Blog" 4 | sort_by = "date" 5 | paginate_by = 2 6 | template = "blog/section.html" 7 | +++ 8 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/blog/hello-world.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Hello World" 3 | description = "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." 4 | date = 2021-05-01T09:19:42+00:00 5 | updated = 2021-05-01T09:19:42+00:00 6 | draft = false 7 | template = "blog/page.html" 8 | 9 | [taxonomies] 10 | authors = ["Rustaceans"] 11 | 12 | [extra] 13 | lead = "This is the source code of the traditional Hello World program." 14 | +++ 15 | 16 | ```rust 17 | // This is a comment, and is ignored by the compiler 18 | 19 | // This is the main function 20 | fn main() { 21 | // Statements here are executed when the compiled binary is called 22 | 23 | // Print text to the console 24 | println!("Hello World!"); 25 | } 26 | ``` 27 | 28 | `println!` is a macro that prints text to the console. 29 | 30 | A binary can be generated using the Rust compiler: `rustc`. 31 | 32 | ```bash 33 | $ rustc hello.rs 34 | ``` 35 | 36 | `rustc` will produce a `hello` binary that can be executed. 37 | 38 | ```bash 39 | $ ./hello 40 | Hello World! 41 | ``` 42 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/blog/math-typesetting.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Math Typesetting" 3 | description = "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." 4 | date = 2021-04-08T09:19:42+00:00 5 | updated = 2021-04-08T09:19:42+00:00 6 | draft = false 7 | template = "blog/page.html" 8 | 9 | [taxonomies] 10 | authors = ["Public"] 11 | 12 | [extra] 13 | lead = "Mathematical notation in a project can be enabled by using third party JavaScript libraries." 14 | math = true 15 | +++ 16 | 17 | 18 | In this example we will be using [KaTeX](https://katex.org/) 19 | 20 | - Create a macro under `/template/macros/math.html` with a macro named `math`. 21 | - Within this macro reference the [Auto-render Extension](https://katex.org/docs/autorender.html) or host these scripts locally. 22 | - Import the macro in your templates like so: 23 | 24 | ```bash 25 | {% import 'macros/math.html' as macros %} 26 | {% if page.extra.math or section.extra.math or config.extra.math %} 27 | {{ macros::math() }} 28 | {% endif %} 29 | ``` 30 | 31 | - To enable KaTex globally set the parameter `extra.math` to `true` in a project's configuration 32 | - To enable KaTex on a per page basis include the parameter `extra.math = true` in content files 33 | 34 | **Note:** 35 | 36 | 1. The MathJax library is the other optional choice, and you can set the parameter `extra.library` to `mathjax` in a project's configuration 37 | 2. Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html) 38 | 39 | ### Examples 40 | 41 |

42 | Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\) 43 |

44 | 45 | Block math: 46 | $$ 47 | \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } 48 | $$ 49 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/blog/say-hello-to-zola-doks.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Say hello to AdiDoks 👋" 3 | description = "Introducing AdiDoks, a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola." 4 | date = 2021-04-03T07:00:00+00:00 5 | updated = 2021-04-03T07:00:00+00:00 6 | template = "blog/page.html" 7 | draft = false 8 | 9 | [taxonomies] 10 | authors = ["Aaran Xu"] 11 | 12 | [extra] 13 | lead = 'Introducing AdiDoks, a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola.' 14 | images = [] 15 | +++ 16 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Docs" 3 | description = "The documents of the AdiDoks theme." 4 | date = 2025-05-01T08:00:00+00:00 5 | updated = 2021-05-01T08:00:00+00:00 6 | sort_by = "weight" 7 | weight = 1 8 | template = "docs/section.html" 9 | +++ 10 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/contributing/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Contributing" 3 | description = "Find out how to contribute to AdiDoks." 4 | date = 2025-05-01T18:00:00+00:00 5 | updated = 2021-05-01T18:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 4 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/contributing/how-to-contribute.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "How to Contribute" 3 | description = "Contribute to AdiDoks, improve documentation, or submit to showcase." 4 | date = 2021-05-01T18:10:00+00:00 5 | updated = 2021-05-01T18:10:00+00:00 6 | draft = false 7 | weight = 410 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | lead = "Contribute to AdiDoks, improve documentation, or submit to showcase." 13 | toc = true 14 | top = false 15 | +++ 16 | 17 | 👉 Make sure to read the [Code of Conduct](../code-of-conduct/). 18 | 19 | ## Contribute to Doks 20 | 21 | 👉 The AdiDoks code lives in the [`adidoks` repository](https://github.com/aaranxu/adidoks) 22 | 23 | - Follow the [GitHub flow](https://guides.github.com/introduction/flow/). 24 | - Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) 25 | 26 | ### Create an issue 27 | 28 | - [Bug report](https://github.com/aaranxu/adidoks/issues/new?template=bug-report---.md) 29 | - [Feature request](https://github.com/aaranxu/adidoks/issues/new?template=feature-request---.md) 30 | 31 | ## Improve documentation 32 | 33 | 👉 The documentation lives in [`./content/docs/`](https://github.com/aaranxu/adidoks/tree/master/content/docs) 34 | of the [`adidoks` repository](https://github.com/h-enk/getdoks.org). 35 | 36 | - Follow the [GitHub flow](https://guides.github.com/introduction/flow/). 37 | - Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) 38 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/getting-started/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Getting Started" 3 | description = "Quick start and guides for installing the AdiDoks theme on your preferred operating system." 4 | date = 2025-05-01T08:00:00+00:00 5 | updated = 2021-05-01T08:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 1 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/getting-started/introduction.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Introduction" 3 | description = "AdiDoks is a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola." 4 | date = 2021-05-01T08:00:00+00:00 5 | updated = 2021-05-01T08:00:00+00:00 6 | draft = false 7 | weight = 10 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | lead = 'AdiDoks is a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola.' 13 | toc = true 14 | top = false 15 | +++ 16 | 17 | ## Quick Start 18 | 19 | One page summary of how to start a new AdiDoks project. [Quick Start →](../quick-start/) 20 | 21 | ## Go further 22 | 23 | Contributing and Help. 24 | 25 | ## Contributing 26 | 27 | Find out how to contribute to Doks. [Contributing →](../../contributing/how-to-contribute/) 28 | 29 | ## Help 30 | 31 | Get help on Doks. [Help →](../../help/faq/) 32 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/getting-started/quick-start.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Quick Start" 3 | description = "One page summary of how to start a new AdiDoks project." 4 | date = 2021-05-01T08:20:00+00:00 5 | updated = 2021-05-01T08:20:00+00:00 6 | draft = false 7 | weight = 20 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | lead = "One page summary of how to start a new AdiDoks project." 13 | toc = true 14 | top = false 15 | +++ 16 | 17 | ## Requirements 18 | 19 | Before using the theme, you need to install the [Zola](https://www.getzola.org/documentation/getting-started/installation/) ≥ 0.15.0. 20 | 21 | ## Run the Theme Directly 22 | 23 | ```bash 24 | git clone https://github.com/aaranxu/adidoks.git 25 | cd adidoks 26 | zola serve 27 | ``` 28 | 29 | Visit `http://127.0.0.1:1111/` in the browser. 30 | 31 | ## Installation 32 | 33 | Just earlier we showed you how to run the theme directly. Now we start to 34 | install the theme in an existing site step by step. 35 | 36 | ### Step 1: Create a new zola site 37 | 38 | ```bash 39 | zola init mysite 40 | ``` 41 | 42 | ### Step 2: Install AdiDoks 43 | 44 | Download this theme to your themes directory: 45 | 46 | ```bash 47 | cd mysite/themes 48 | git clone https://github.com/aaranxu/adidoks.git 49 | ``` 50 | 51 | Or install as a submodule: 52 | 53 | ```bash 54 | cd mysite 55 | git init # if your project is a git repository already, ignore this command 56 | git submodule add https://github.com/aaranxu/adidoks.git themes/adidoks 57 | ``` 58 | 59 | ### Step 3: Configuration 60 | 61 | Enable the theme in your `config.toml` in the site derectory: 62 | 63 | ```toml 64 | theme = "adidoks" 65 | ``` 66 | 67 | Or copy the `config.toml.example` from the theme directory to your project's 68 | root directory: 69 | 70 | ```bash 71 | cp themes/adidoks/config.toml.example config.toml 72 | ``` 73 | 74 | ### Step 4: Add new content 75 | 76 | You can copy the content from the theme directory to your project: 77 | 78 | ```bash 79 | cp -r themes/adidoks/content . 80 | ``` 81 | 82 | You can modify or add new posts in the `content/blog`, `content/docs` or other 83 | content directories as needed. 84 | 85 | ### Step 5: Run the project 86 | 87 | Just run `zola serve` in the root path of the project: 88 | 89 | ```bash 90 | zola serve 91 | ``` 92 | 93 | AdiDoks will start the Zola development web server accessible by default at 94 | `http://127.0.0.1:1111`. Saved changes will live reload in the browser. 95 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/help/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Help" 3 | description = "Get help on AdiDoks." 4 | date = 2025-05-01T19:00:00+00:00 5 | updated = 2021-05-01T19:00:00+00:00 6 | template = "docs/section.html" 7 | sort_by = "weight" 8 | weight = 5 9 | draft = false 10 | +++ 11 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/docs/help/faq.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "FAQ" 3 | description = "Answers to frequently asked questions." 4 | date = 2021-05-01T19:30:00+00:00 5 | updated = 2021-05-01T19:30:00+00:00 6 | draft = false 7 | weight = 30 8 | sort_by = "weight" 9 | template = "docs/page.html" 10 | 11 | [extra] 12 | lead = "Answers to frequently asked questions." 13 | toc = true 14 | top = false 15 | +++ 16 | 17 | ## What is the AdiDoks? 18 | 19 | AdiDoks is a Zola theme for Documentation's sites, ported by the Hugo Theme 20 | [Doks](https://getdoks.org), which is a pretty nice theme. Thanks a lot to 21 | [*h-enk*](https://github.com/h-enk), the creator of the [Doks](https://getdoks.org). 22 | 23 | ## Keyboard shortcuts for search? 24 | 25 | - focus: `/` 26 | - select: `↓` and `↑` 27 | - open: `Enter` 28 | - close: `Esc` 29 | 30 | ## Other documentation? 31 | 32 | - [Netlify](https://docs.netlify.com/) 33 | - [Zola](https://www.getzola.org/documentation/getting-started/overview/) 34 | 35 | ## Contact the creator? 36 | 37 | Send *Aaran Xu* an E-mail: 38 | 39 | - 40 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/content/privacy-policy/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Privacy Policy" 3 | description = "We do not use cookies and we do not collect any personal data." 4 | date = 2021-05-01T08:00:00+00:00 5 | updated = 2020-05-01T08:00:00+00:00 6 | draft = false 7 | 8 | [extra] 9 | class = "page single" 10 | +++ 11 | 12 | __TLDR__: We do not use cookies and we do not collect any personal data. 13 | 14 | ## Website visitors 15 | 16 | - No personal information is collected. 17 | - No information is stored in the browser. 18 | - No information is shared with, sent to or sold to third-parties. 19 | - No information is shared with advertising companies. 20 | - No information is mined and harvested for personal and behavioral trends. 21 | - No information is monetized. 22 | 23 | ## Contact us 24 | 25 | [Contact us](https://github.com/aaranxu/adidoks) if you have any questions. 26 | 27 | Effective Date: _1st May 2021_ 28 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "public" 3 | command = "zola build" 4 | 5 | [build.environment] 6 | ZOLA_VERSION = "0.15.0" 7 | 8 | [context.deploy-preview] 9 | command = "zola build --base-url $DEPLOY_PRIME_URL" 10 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/_custom.scss: -------------------------------------------------------------------------------- 1 | .infobox{ 2 | margin: 1em 0; 3 | padding: 1.4em; 4 | border-radius: 4px; 5 | border: 1px solid; 6 | border-color: rgb(195, 228, 205); 7 | background-color: rgb(240,253,244); 8 | color:rgb(22,101,52 ); 9 | } 10 | .infobox a { 11 | color:rgb(4, 52, 22); 12 | text-decoration: underline; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2021 Twitter, Inc. 4 | Copyright (c) 2011-2021 The Bootstrap Authors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/dist/base-component.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap base-component.js v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js')) : 8 | typeof define === 'function' && define.amd ? define(['./dom/data'], factory) : 9 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data)); 10 | }(this, (function (Data) { 'use strict'; 11 | 12 | function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } 13 | 14 | var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); 15 | 16 | /** 17 | * -------------------------------------------------------------------------- 18 | * Bootstrap (v5.0.0-beta3): base-component.js 19 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20 | * -------------------------------------------------------------------------- 21 | */ 22 | /** 23 | * ------------------------------------------------------------------------ 24 | * Constants 25 | * ------------------------------------------------------------------------ 26 | */ 27 | 28 | const VERSION = '5.0.0-beta3'; 29 | 30 | class BaseComponent { 31 | constructor(element) { 32 | element = typeof element === 'string' ? document.querySelector(element) : element; 33 | 34 | if (!element) { 35 | return; 36 | } 37 | 38 | this._element = element; 39 | Data__default['default'].set(this._element, this.constructor.DATA_KEY, this); 40 | } 41 | 42 | dispose() { 43 | Data__default['default'].remove(this._element, this.constructor.DATA_KEY); 44 | this._element = null; 45 | } 46 | /** Static */ 47 | 48 | 49 | static getInstance(element) { 50 | return Data__default['default'].get(element, this.DATA_KEY); 51 | } 52 | 53 | static get VERSION() { 54 | return VERSION; 55 | } 56 | 57 | } 58 | 59 | return BaseComponent; 60 | 61 | }))); 62 | //# sourceMappingURL=base-component.js.map 63 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/dist/base-component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"base-component.js","sources":["../src/base-component.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta3'\n\nclass BaseComponent {\n constructor(element) {\n element = typeof element === 'string' ? document.querySelector(element) : element\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n"],"names":["VERSION","BaseComponent","constructor","element","document","querySelector","_element","Data","set","DATA_KEY","dispose","remove","getInstance","get"],"mappings":";;;;;;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;EACA;;EAEA,MAAMA,OAAO,GAAG,aAAhB;;EAEA,MAAMC,aAAN,CAAoB;EAClBC,EAAAA,WAAW,CAACC,OAAD,EAAU;EACnBA,IAAAA,OAAO,GAAG,OAAOA,OAAP,KAAmB,QAAnB,GAA8BC,QAAQ,CAACC,aAAT,CAAuBF,OAAvB,CAA9B,GAAgEA,OAA1E;;EAEA,QAAI,CAACA,OAAL,EAAc;EACZ;EACD;;EAED,SAAKG,QAAL,GAAgBH,OAAhB;EACAI,IAAAA,wBAAI,CAACC,GAAL,CAAS,KAAKF,QAAd,EAAwB,KAAKJ,WAAL,CAAiBO,QAAzC,EAAmD,IAAnD;EACD;;EAEDC,EAAAA,OAAO,GAAG;EACRH,IAAAA,wBAAI,CAACI,MAAL,CAAY,KAAKL,QAAjB,EAA2B,KAAKJ,WAAL,CAAiBO,QAA5C;EACA,SAAKH,QAAL,GAAgB,IAAhB;EACD;EAED;;;EAEkB,SAAXM,WAAW,CAACT,OAAD,EAAU;EAC1B,WAAOI,wBAAI,CAACM,GAAL,CAASV,OAAT,EAAkB,KAAKM,QAAvB,CAAP;EACD;;EAEiB,aAAPT,OAAO,GAAG;EACnB,WAAOA,OAAP;EACD;;EAzBiB;;;;;;;;"} -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/dist/dom/data.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap data.js v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 | typeof define === 'function' && define.amd ? define(factory) : 9 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory()); 10 | }(this, (function () { 'use strict'; 11 | 12 | /** 13 | * -------------------------------------------------------------------------- 14 | * Bootstrap (v5.0.0-beta3): dom/data.js 15 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 16 | * -------------------------------------------------------------------------- 17 | */ 18 | 19 | /** 20 | * ------------------------------------------------------------------------ 21 | * Constants 22 | * ------------------------------------------------------------------------ 23 | */ 24 | const elementMap = new Map(); 25 | var data = { 26 | set(element, key, instance) { 27 | if (!elementMap.has(element)) { 28 | elementMap.set(element, new Map()); 29 | } 30 | 31 | const instanceMap = elementMap.get(element); // make it clear we only want one instance per element 32 | // can be removed later when multiple key/instances are fine to be used 33 | 34 | if (!instanceMap.has(key) && instanceMap.size !== 0) { 35 | // eslint-disable-next-line no-console 36 | console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 37 | return; 38 | } 39 | 40 | instanceMap.set(key, instance); 41 | }, 42 | 43 | get(element, key) { 44 | if (elementMap.has(element)) { 45 | return elementMap.get(element).get(key) || null; 46 | } 47 | 48 | return null; 49 | }, 50 | 51 | remove(element, key) { 52 | if (!elementMap.has(element)) { 53 | return; 54 | } 55 | 56 | const instanceMap = elementMap.get(element); 57 | instanceMap.delete(key); // free up element references if there are no instances left for an element 58 | 59 | if (instanceMap.size === 0) { 60 | elementMap.delete(element); 61 | } 62 | } 63 | 64 | }; 65 | 66 | return data; 67 | 68 | }))); 69 | //# sourceMappingURL=data.js.map 70 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/dist/dom/data.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"data.js","sources":["../../src/dom/data.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMA,UAAU,GAAG,IAAIC,GAAJ,EAAnB;AAEA,aAAe;EACbC,EAAAA,GAAG,CAACC,OAAD,EAAUC,GAAV,EAAeC,QAAf,EAAyB;EAC1B,QAAI,CAACL,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5BH,MAAAA,UAAU,CAACE,GAAX,CAAeC,OAAf,EAAwB,IAAIF,GAAJ,EAAxB;EACD;;EAED,UAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB,CAL0B;EAQ1B;;EACA,QAAI,CAACI,WAAW,CAACD,GAAZ,CAAgBF,GAAhB,CAAD,IAAyBG,WAAW,CAACE,IAAZ,KAAqB,CAAlD,EAAqD;EACnD;EACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,+EAA8EC,KAAK,CAACC,IAAN,CAAWN,WAAW,CAACO,IAAZ,EAAX,EAA+B,CAA/B,CAAkC,GAA/H;EACA;EACD;;EAEDP,IAAAA,WAAW,CAACL,GAAZ,CAAgBE,GAAhB,EAAqBC,QAArB;EACD,GAjBY;;EAmBbG,EAAAA,GAAG,CAACL,OAAD,EAAUC,GAAV,EAAe;EAChB,QAAIJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAJ,EAA6B;EAC3B,aAAOH,UAAU,CAACQ,GAAX,CAAeL,OAAf,EAAwBK,GAAxB,CAA4BJ,GAA5B,KAAoC,IAA3C;EACD;;EAED,WAAO,IAAP;EACD,GAzBY;;EA2BbW,EAAAA,MAAM,CAACZ,OAAD,EAAUC,GAAV,EAAe;EACnB,QAAI,CAACJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5B;EACD;;EAED,UAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB;EAEAI,IAAAA,WAAW,CAACS,MAAZ,CAAmBZ,GAAnB,EAPmB;;EAUnB,QAAIG,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;EAC1BT,MAAAA,UAAU,CAACgB,MAAX,CAAkBb,OAAlB;EACD;EACF;;EAxCY,CAAf;;;;;;;;"} -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/dist/dom/manipulator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap manipulator.js v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 | typeof define === 'function' && define.amd ? define(factory) : 9 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory()); 10 | }(this, (function () { 'use strict'; 11 | 12 | /** 13 | * -------------------------------------------------------------------------- 14 | * Bootstrap (v5.0.0-beta3): dom/manipulator.js 15 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 16 | * -------------------------------------------------------------------------- 17 | */ 18 | function normalizeData(val) { 19 | if (val === 'true') { 20 | return true; 21 | } 22 | 23 | if (val === 'false') { 24 | return false; 25 | } 26 | 27 | if (val === Number(val).toString()) { 28 | return Number(val); 29 | } 30 | 31 | if (val === '' || val === 'null') { 32 | return null; 33 | } 34 | 35 | return val; 36 | } 37 | 38 | function normalizeDataKey(key) { 39 | return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); 40 | } 41 | 42 | const Manipulator = { 43 | setDataAttribute(element, key, value) { 44 | element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 45 | }, 46 | 47 | removeDataAttribute(element, key) { 48 | element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 49 | }, 50 | 51 | getDataAttributes(element) { 52 | if (!element) { 53 | return {}; 54 | } 55 | 56 | const attributes = {}; 57 | Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => { 58 | let pureKey = key.replace(/^bs/, ''); 59 | pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 60 | attributes[pureKey] = normalizeData(element.dataset[key]); 61 | }); 62 | return attributes; 63 | }, 64 | 65 | getDataAttribute(element, key) { 66 | return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 67 | }, 68 | 69 | offset(element) { 70 | const rect = element.getBoundingClientRect(); 71 | return { 72 | top: rect.top + document.body.scrollTop, 73 | left: rect.left + document.body.scrollLeft 74 | }; 75 | }, 76 | 77 | position(element) { 78 | return { 79 | top: element.offsetTop, 80 | left: element.offsetLeft 81 | }; 82 | } 83 | 84 | }; 85 | 86 | return Manipulator; 87 | 88 | }))); 89 | //# sourceMappingURL=manipulator.js.map 90 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/dist/dom/selector-engine.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap selector-engine.js v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 | typeof define === 'function' && define.amd ? define(factory) : 9 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory()); 10 | }(this, (function () { 'use strict'; 11 | 12 | /** 13 | * -------------------------------------------------------------------------- 14 | * Bootstrap (v5.0.0-beta3): dom/selector-engine.js 15 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 16 | * -------------------------------------------------------------------------- 17 | */ 18 | 19 | /** 20 | * ------------------------------------------------------------------------ 21 | * Constants 22 | * ------------------------------------------------------------------------ 23 | */ 24 | const NODE_TEXT = 3; 25 | const SelectorEngine = { 26 | find(selector, element = document.documentElement) { 27 | return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 28 | }, 29 | 30 | findOne(selector, element = document.documentElement) { 31 | return Element.prototype.querySelector.call(element, selector); 32 | }, 33 | 34 | children(element, selector) { 35 | return [].concat(...element.children).filter(child => child.matches(selector)); 36 | }, 37 | 38 | parents(element, selector) { 39 | const parents = []; 40 | let ancestor = element.parentNode; 41 | 42 | while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { 43 | if (ancestor.matches(selector)) { 44 | parents.push(ancestor); 45 | } 46 | 47 | ancestor = ancestor.parentNode; 48 | } 49 | 50 | return parents; 51 | }, 52 | 53 | prev(element, selector) { 54 | let previous = element.previousElementSibling; 55 | 56 | while (previous) { 57 | if (previous.matches(selector)) { 58 | return [previous]; 59 | } 60 | 61 | previous = previous.previousElementSibling; 62 | } 63 | 64 | return []; 65 | }, 66 | 67 | next(element, selector) { 68 | let next = element.nextElementSibling; 69 | 70 | while (next) { 71 | if (next.matches(selector)) { 72 | return [next]; 73 | } 74 | 75 | next = next.nextElementSibling; 76 | } 77 | 78 | return []; 79 | } 80 | 81 | }; 82 | 83 | return SelectorEngine; 84 | 85 | }))); 86 | //# sourceMappingURL=selector-engine.js.map 87 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/src/base-component.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v5.0.0-beta3): base-component.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | import Data from './dom/data' 9 | 10 | /** 11 | * ------------------------------------------------------------------------ 12 | * Constants 13 | * ------------------------------------------------------------------------ 14 | */ 15 | 16 | const VERSION = '5.0.0-beta3' 17 | 18 | class BaseComponent { 19 | constructor(element) { 20 | element = typeof element === 'string' ? document.querySelector(element) : element 21 | 22 | if (!element) { 23 | return 24 | } 25 | 26 | this._element = element 27 | Data.set(this._element, this.constructor.DATA_KEY, this) 28 | } 29 | 30 | dispose() { 31 | Data.remove(this._element, this.constructor.DATA_KEY) 32 | this._element = null 33 | } 34 | 35 | /** Static */ 36 | 37 | static getInstance(element) { 38 | return Data.get(element, this.DATA_KEY) 39 | } 40 | 41 | static get VERSION() { 42 | return VERSION 43 | } 44 | } 45 | 46 | export default BaseComponent 47 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/src/button.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v5.0.0-beta3): button.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | import { defineJQueryPlugin } from './util/index' 9 | import Data from './dom/data' 10 | import EventHandler from './dom/event-handler' 11 | import BaseComponent from './base-component' 12 | 13 | /** 14 | * ------------------------------------------------------------------------ 15 | * Constants 16 | * ------------------------------------------------------------------------ 17 | */ 18 | 19 | const NAME = 'button' 20 | const DATA_KEY = 'bs.button' 21 | const EVENT_KEY = `.${DATA_KEY}` 22 | const DATA_API_KEY = '.data-api' 23 | 24 | const CLASS_NAME_ACTIVE = 'active' 25 | 26 | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]' 27 | 28 | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` 29 | 30 | /** 31 | * ------------------------------------------------------------------------ 32 | * Class Definition 33 | * ------------------------------------------------------------------------ 34 | */ 35 | 36 | class Button extends BaseComponent { 37 | // Getters 38 | 39 | static get DATA_KEY() { 40 | return DATA_KEY 41 | } 42 | 43 | // Public 44 | 45 | toggle() { 46 | // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method 47 | this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)) 48 | } 49 | 50 | // Static 51 | 52 | static jQueryInterface(config) { 53 | return this.each(function () { 54 | let data = Data.get(this, DATA_KEY) 55 | 56 | if (!data) { 57 | data = new Button(this) 58 | } 59 | 60 | if (config === 'toggle') { 61 | data[config]() 62 | } 63 | }) 64 | } 65 | } 66 | 67 | /** 68 | * ------------------------------------------------------------------------ 69 | * Data Api implementation 70 | * ------------------------------------------------------------------------ 71 | */ 72 | 73 | EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => { 74 | event.preventDefault() 75 | 76 | const button = event.target.closest(SELECTOR_DATA_TOGGLE) 77 | 78 | let data = Data.get(button, DATA_KEY) 79 | if (!data) { 80 | data = new Button(button) 81 | } 82 | 83 | data.toggle() 84 | }) 85 | 86 | /** 87 | * ------------------------------------------------------------------------ 88 | * jQuery 89 | * ------------------------------------------------------------------------ 90 | * add .Button to jQuery only if jQuery is present 91 | */ 92 | 93 | defineJQueryPlugin(NAME, Button) 94 | 95 | export default Button 96 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/src/dom/data.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v5.0.0-beta3): dom/data.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | /** 9 | * ------------------------------------------------------------------------ 10 | * Constants 11 | * ------------------------------------------------------------------------ 12 | */ 13 | 14 | const elementMap = new Map() 15 | 16 | export default { 17 | set(element, key, instance) { 18 | if (!elementMap.has(element)) { 19 | elementMap.set(element, new Map()) 20 | } 21 | 22 | const instanceMap = elementMap.get(element) 23 | 24 | // make it clear we only want one instance per element 25 | // can be removed later when multiple key/instances are fine to be used 26 | if (!instanceMap.has(key) && instanceMap.size !== 0) { 27 | // eslint-disable-next-line no-console 28 | console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`) 29 | return 30 | } 31 | 32 | instanceMap.set(key, instance) 33 | }, 34 | 35 | get(element, key) { 36 | if (elementMap.has(element)) { 37 | return elementMap.get(element).get(key) || null 38 | } 39 | 40 | return null 41 | }, 42 | 43 | remove(element, key) { 44 | if (!elementMap.has(element)) { 45 | return 46 | } 47 | 48 | const instanceMap = elementMap.get(element) 49 | 50 | instanceMap.delete(key) 51 | 52 | // free up element references if there are no instances left for an element 53 | if (instanceMap.size === 0) { 54 | elementMap.delete(element) 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/src/dom/manipulator.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v5.0.0-beta3): dom/manipulator.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | function normalizeData(val) { 9 | if (val === 'true') { 10 | return true 11 | } 12 | 13 | if (val === 'false') { 14 | return false 15 | } 16 | 17 | if (val === Number(val).toString()) { 18 | return Number(val) 19 | } 20 | 21 | if (val === '' || val === 'null') { 22 | return null 23 | } 24 | 25 | return val 26 | } 27 | 28 | function normalizeDataKey(key) { 29 | return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`) 30 | } 31 | 32 | const Manipulator = { 33 | setDataAttribute(element, key, value) { 34 | element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value) 35 | }, 36 | 37 | removeDataAttribute(element, key) { 38 | element.removeAttribute(`data-bs-${normalizeDataKey(key)}`) 39 | }, 40 | 41 | getDataAttributes(element) { 42 | if (!element) { 43 | return {} 44 | } 45 | 46 | const attributes = {} 47 | 48 | Object.keys(element.dataset) 49 | .filter(key => key.startsWith('bs')) 50 | .forEach(key => { 51 | let pureKey = key.replace(/^bs/, '') 52 | pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length) 53 | attributes[pureKey] = normalizeData(element.dataset[key]) 54 | }) 55 | 56 | return attributes 57 | }, 58 | 59 | getDataAttribute(element, key) { 60 | return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)) 61 | }, 62 | 63 | offset(element) { 64 | const rect = element.getBoundingClientRect() 65 | 66 | return { 67 | top: rect.top + document.body.scrollTop, 68 | left: rect.left + document.body.scrollLeft 69 | } 70 | }, 71 | 72 | position(element) { 73 | return { 74 | top: element.offsetTop, 75 | left: element.offsetLeft 76 | } 77 | } 78 | } 79 | 80 | export default Manipulator 81 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/src/dom/selector-engine.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v5.0.0-beta3): dom/selector-engine.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | /** 9 | * ------------------------------------------------------------------------ 10 | * Constants 11 | * ------------------------------------------------------------------------ 12 | */ 13 | 14 | const NODE_TEXT = 3 15 | 16 | const SelectorEngine = { 17 | find(selector, element = document.documentElement) { 18 | return [].concat(...Element.prototype.querySelectorAll.call(element, selector)) 19 | }, 20 | 21 | findOne(selector, element = document.documentElement) { 22 | return Element.prototype.querySelector.call(element, selector) 23 | }, 24 | 25 | children(element, selector) { 26 | return [].concat(...element.children) 27 | .filter(child => child.matches(selector)) 28 | }, 29 | 30 | parents(element, selector) { 31 | const parents = [] 32 | 33 | let ancestor = element.parentNode 34 | 35 | while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { 36 | if (ancestor.matches(selector)) { 37 | parents.push(ancestor) 38 | } 39 | 40 | ancestor = ancestor.parentNode 41 | } 42 | 43 | return parents 44 | }, 45 | 46 | prev(element, selector) { 47 | let previous = element.previousElementSibling 48 | 49 | while (previous) { 50 | if (previous.matches(selector)) { 51 | return [previous] 52 | } 53 | 54 | previous = previous.previousElementSibling 55 | } 56 | 57 | return [] 58 | }, 59 | 60 | next(element, selector) { 61 | let next = element.nextElementSibling 62 | 63 | while (next) { 64 | if (next.matches(selector)) { 65 | return [next] 66 | } 67 | 68 | next = next.nextElementSibling 69 | } 70 | 71 | return [] 72 | } 73 | } 74 | 75 | export default SelectorEngine 76 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/js/src/util/scrollbar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v5.0.0-beta3): util/scrollBar.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | import SelectorEngine from '../dom/selector-engine' 9 | import Manipulator from '../dom/manipulator' 10 | 11 | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed' 12 | const SELECTOR_STICKY_CONTENT = '.sticky-top' 13 | 14 | const getWidth = () => { 15 | // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes 16 | const documentWidth = document.documentElement.clientWidth 17 | return Math.abs(window.innerWidth - documentWidth) 18 | } 19 | 20 | const hide = (width = getWidth()) => { 21 | document.body.style.overflow = 'hidden' 22 | _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width) 23 | _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width) 24 | _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width) 25 | } 26 | 27 | const _setElementAttributes = (selector, styleProp, callback) => { 28 | const scrollbarWidth = getWidth() 29 | SelectorEngine.find(selector) 30 | .forEach(element => { 31 | if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) { 32 | return 33 | } 34 | 35 | const actualValue = element.style[styleProp] 36 | const calculatedValue = window.getComputedStyle(element)[styleProp] 37 | Manipulator.setDataAttribute(element, styleProp, actualValue) 38 | element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px' 39 | }) 40 | } 41 | 42 | const reset = () => { 43 | document.body.style.overflow = 'auto' 44 | _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight') 45 | _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight') 46 | _resetElementAttributes('body', 'paddingRight') 47 | } 48 | 49 | const _resetElementAttributes = (selector, styleProp) => { 50 | SelectorEngine.find(selector).forEach(element => { 51 | const value = Manipulator.getDataAttribute(element, styleProp) 52 | if (typeof value === 'undefined' && element === document.body) { 53 | element.style.removeProperty(styleProp) 54 | } else { 55 | Manipulator.removeDataAttribute(element, styleProp) 56 | element.style[styleProp] = value 57 | } 58 | }) 59 | } 60 | 61 | const isBodyOverflowing = () => { 62 | return getWidth() > 0 63 | } 64 | 65 | export { 66 | getWidth, 67 | hide, 68 | isBodyOverflowing, 69 | reset 70 | } 71 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $alert-dismissible-padding-r; 31 | 32 | // Adjust close link position 33 | .btn-close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | z-index: $stretched-link-z-index + 1; 38 | padding: $alert-padding-y * 1.25 $alert-padding-x; 39 | } 40 | } 41 | 42 | 43 | // scss-docs-start alert-modifiers 44 | // Generate contextual modifier classes for colorizing the alert. 45 | 46 | @each $state, $value in $theme-colors { 47 | $alert-background: shift-color($value, $alert-bg-scale); 48 | $alert-border: shift-color($value, $alert-border-scale); 49 | $alert-color: shift-color($value, $alert-color-scale); 50 | @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) { 51 | $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale)); 52 | } 53 | .alert-#{$state} { 54 | @include alert-variant($alert-background, $alert-border, $alert-color); 55 | } 56 | } 57 | // scss-docs-end alert-modifiers 58 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | color: $badge-color; 13 | text-align: center; 14 | white-space: nowrap; 15 | vertical-align: baseline; 16 | @include border-radius($badge-border-radius); 17 | @include gradient-bg(); 18 | 19 | // Empty badges collapse automatically 20 | &:empty { 21 | display: none; 22 | } 23 | } 24 | 25 | // Quick fix for badges in buttons 26 | .btn .badge { 27 | position: relative; 28 | top: -1px; 29 | } 30 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | @include font-size($breadcrumb-font-size); 7 | list-style: none; 8 | background-color: $breadcrumb-bg; 9 | @include border-radius($breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | // The separator between breadcrumbs (by default, a forward-slash: "/") 14 | + .breadcrumb-item { 15 | padding-left: $breadcrumb-item-padding-x; 16 | 17 | &::before { 18 | float: left; // Suppress inline spacings and underlining of the separator 19 | padding-right: $breadcrumb-item-padding-x; 20 | color: $breadcrumb-divider-color; 21 | content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; 22 | } 23 | } 24 | 25 | &.active { 26 | color: $breadcrumb-active-color; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .btn { 6 | display: inline-block; 7 | font-family: $btn-font-family; 8 | font-weight: $btn-font-weight; 9 | line-height: $btn-line-height; 10 | color: $body-color; 11 | text-align: center; 12 | text-decoration: if($link-decoration == none, null, none); 13 | white-space: $btn-white-space; 14 | vertical-align: middle; 15 | cursor: if($enable-button-pointers, pointer, null); 16 | user-select: none; 17 | background-color: transparent; 18 | border: $btn-border-width solid transparent; 19 | @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius); 20 | @include transition($btn-transition); 21 | 22 | &:hover { 23 | color: $body-color; 24 | text-decoration: if($link-hover-decoration == underline, none, null); 25 | } 26 | 27 | .btn-check:focus + &, 28 | &:focus { 29 | outline: 0; 30 | box-shadow: $btn-focus-box-shadow; 31 | } 32 | 33 | .btn-check:checked + &, 34 | .btn-check:active + &, 35 | &:active, 36 | &.active { 37 | @include box-shadow($btn-active-box-shadow); 38 | 39 | &:focus { 40 | @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow); 41 | } 42 | } 43 | 44 | &:disabled, 45 | &.disabled, 46 | fieldset:disabled & { 47 | pointer-events: none; 48 | opacity: $btn-disabled-opacity; 49 | @include box-shadow(none); 50 | } 51 | } 52 | 53 | 54 | // 55 | // Alternate buttons 56 | // 57 | 58 | // scss-docs-start btn-variant-loops 59 | @each $color, $value in $theme-colors { 60 | .btn-#{$color} { 61 | @include button-variant($value, $value); 62 | } 63 | } 64 | 65 | @each $color, $value in $theme-colors { 66 | .btn-outline-#{$color} { 67 | @include button-outline-variant($value); 68 | } 69 | } 70 | // scss-docs-end btn-variant-loops 71 | 72 | 73 | // 74 | // Link buttons 75 | // 76 | 77 | // Make a button look and behave like a link 78 | .btn-link { 79 | font-weight: $font-weight-normal; 80 | color: $btn-link-color; 81 | text-decoration: $link-decoration; 82 | 83 | &:hover { 84 | color: $btn-link-hover-color; 85 | text-decoration: $link-hover-decoration; 86 | } 87 | 88 | &:focus { 89 | text-decoration: $link-hover-decoration; 90 | } 91 | 92 | &:disabled, 93 | &.disabled { 94 | color: $btn-link-disabled-color; 95 | } 96 | 97 | // No need for an active state here 98 | } 99 | 100 | 101 | // 102 | // Button Sizes 103 | // 104 | 105 | .btn-lg { 106 | @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg); 107 | } 108 | 109 | .btn-sm { 110 | @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm); 111 | } 112 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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 | box-sizing: content-box; 8 | width: $btn-close-width; 9 | height: $btn-close-height; 10 | padding: $btn-close-padding-y $btn-close-padding-x; 11 | color: $btn-close-color; 12 | background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements 13 | border: 0; // for button elements 14 | @include border-radius(); 15 | opacity: $btn-close-opacity; 16 | 17 | // Override 's hover style 18 | &:hover { 19 | color: $btn-close-color; 20 | text-decoration: none; 21 | opacity: $btn-close-hover-opacity; 22 | } 23 | 24 | &:focus { 25 | outline: 0; 26 | box-shadow: $btn-close-focus-shadow; 27 | opacity: $btn-close-focus-opacity; 28 | } 29 | 30 | &:disabled, 31 | &.disabled { 32 | pointer-events: none; 33 | user-select: none; 34 | opacity: $btn-close-disabled-opacity; 35 | } 36 | } 37 | 38 | .btn-close-white { 39 | filter: $btn-close-white-filter; 40 | } 41 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_containers.scss: -------------------------------------------------------------------------------- 1 | // Container widths 2 | // 3 | // Set the container width, and override it for fixed navbars in media queries. 4 | 5 | @if $enable-grid-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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_grid.scss: -------------------------------------------------------------------------------- 1 | // Row 2 | // 3 | // Rows contain your columns. 4 | 5 | @if $enable-grid-classes { 6 | .row { 7 | @include make-row(); 8 | 9 | > * { 10 | @include make-col-ready(); 11 | } 12 | } 13 | } 14 | 15 | 16 | // Columns 17 | // 18 | // Common styles for small and large grid columns 19 | 20 | @if $enable-grid-classes { 21 | @include make-grid-columns(); 22 | } 23 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_helpers.scss: -------------------------------------------------------------------------------- 1 | @import "helpers/clearfix"; 2 | @import "helpers/colored-links"; 3 | @import "helpers/ratio"; 4 | @import "helpers/position"; 5 | @import "helpers/visually-hidden"; 6 | @import "helpers/stretched-link"; 7 | @import "helpers/text-truncation"; 8 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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 / 2; 36 | line-height: 1; 37 | } 38 | 39 | .figure-caption { 40 | @include font-size($figure-caption-font-size); 41 | color: $figure-caption-color; 42 | } 43 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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/image"; 14 | @import "mixins/resize"; 15 | @import "mixins/visually-hidden"; 16 | @import "mixins/reset-text"; 17 | @import "mixins/text-truncate"; 18 | 19 | // Utilities 20 | @import "mixins/utilities"; 21 | 22 | // Components 23 | @import "mixins/alert"; 24 | @import "mixins/buttons"; 25 | @import "mixins/caret"; 26 | @import "mixins/pagination"; 27 | @import "mixins/lists"; 28 | @import "mixins/list-group"; 29 | @import "mixins/forms"; 30 | @import "mixins/table-variants"; 31 | 32 | // Skins 33 | @import "mixins/border-radius"; 34 | @import "mixins/box-shadow"; 35 | @import "mixins/gradients"; 36 | @import "mixins/transition"; 37 | 38 | // Layout 39 | @import "mixins/clearfix"; 40 | @import "mixins/container"; 41 | @import "mixins/grid"; 42 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_offcanvas.scss: -------------------------------------------------------------------------------- 1 | .offcanvas { 2 | position: fixed; 3 | bottom: 0; 4 | z-index: $zindex-offcanvas; 5 | display: flex; 6 | flex-direction: column; 7 | max-width: 100%; 8 | color: $offcanvas-color; 9 | visibility: hidden; 10 | background-color: $offcanvas-bg-color; 11 | background-clip: padding-box; 12 | outline: 0; 13 | @include box-shadow($offcanvas-box-shadow); 14 | @include transition(transform $offcanvas-transition-duration ease-in-out); 15 | } 16 | 17 | .offcanvas-header { 18 | display: flex; 19 | justify-content: space-between; 20 | padding: $offcanvas-padding-y $offcanvas-padding-x; 21 | 22 | .btn-close { 23 | padding: ($offcanvas-padding-y / 2) ($offcanvas-padding-x / 2); 24 | margin: ($offcanvas-padding-y / -2) ($offcanvas-padding-x / -2) ($offcanvas-padding-y / -2) auto; 25 | } 26 | } 27 | 28 | .offcanvas-title { 29 | margin-bottom: 0; 30 | line-height: $offcanvas-title-line-height; 31 | } 32 | 33 | .offcanvas-body { 34 | flex-grow: 1; 35 | padding: $offcanvas-padding-y $offcanvas-padding-x; 36 | overflow-y: auto; 37 | } 38 | 39 | .offcanvas-start { 40 | top: 0; 41 | left: 0; 42 | width: $offcanvas-horizontal-width; 43 | border-right: $offcanvas-border-width solid $offcanvas-border-color; 44 | transform: translateX(-100%); 45 | } 46 | 47 | .offcanvas-end { 48 | top: 0; 49 | right: 0; 50 | width: $offcanvas-horizontal-width; 51 | border-left: $offcanvas-border-width solid $offcanvas-border-color; 52 | transform: translateX(100%); 53 | } 54 | 55 | .offcanvas-bottom { 56 | right: 0; 57 | left: 0; 58 | height: $offcanvas-vertical-height; 59 | max-height: 100%; 60 | border-top: $offcanvas-border-width solid $offcanvas-border-color; 61 | transform: translateY(100%); 62 | } 63 | 64 | .offcanvas.show { 65 | transform: none; 66 | } 67 | 68 | .offcanvas-backdrop::before { 69 | position: fixed; 70 | top: 0; 71 | left: 0; 72 | z-index: $zindex-offcanvas - 1; 73 | width: 100vw; 74 | height: 100vh; 75 | content: ""; 76 | background-color: $offcanvas-body-backdrop-color; 77 | } 78 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_pagination.scss: -------------------------------------------------------------------------------- 1 | .pagination { 2 | display: flex; 3 | @include list-unstyled(); 4 | } 5 | 6 | .page-link { 7 | position: relative; 8 | display: block; 9 | color: $pagination-color; 10 | text-decoration: if($link-decoration == none, null, none); 11 | background-color: $pagination-bg; 12 | border: $pagination-border-width solid $pagination-border-color; 13 | @include transition($pagination-transition); 14 | 15 | &:hover { 16 | z-index: 2; 17 | color: $pagination-hover-color; 18 | text-decoration: if($link-hover-decoration == underline, none, null); 19 | background-color: $pagination-hover-bg; 20 | border-color: $pagination-hover-border-color; 21 | } 22 | 23 | &:focus { 24 | z-index: 3; 25 | color: $pagination-focus-color; 26 | background-color: $pagination-focus-bg; 27 | outline: $pagination-focus-outline; 28 | box-shadow: $pagination-focus-box-shadow; 29 | } 30 | } 31 | 32 | .page-item { 33 | &:not(:first-child) .page-link { 34 | margin-left: $pagination-margin-start; 35 | } 36 | 37 | &.active .page-link { 38 | z-index: 3; 39 | color: $pagination-active-color; 40 | @include gradient-bg($pagination-active-bg); 41 | border-color: $pagination-active-border-color; 42 | } 43 | 44 | &.disabled .page-link { 45 | color: $pagination-disabled-color; 46 | pointer-events: none; 47 | background-color: $pagination-disabled-bg; 48 | border-color: $pagination-disabled-border-color; 49 | } 50 | } 51 | 52 | 53 | // 54 | // Sizing 55 | // 56 | @include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius); 57 | 58 | .pagination-lg { 59 | @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg); 60 | } 61 | 62 | .pagination-sm { 63 | @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm); 64 | } 65 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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 | display: flex; 13 | height: $progress-height; 14 | overflow: hidden; // force rounded corners by cropping it 15 | @include font-size($progress-font-size); 16 | background-color: $progress-bg; 17 | @include border-radius($progress-border-radius); 18 | @include box-shadow($progress-box-shadow); 19 | } 20 | 21 | .progress-bar { 22 | display: flex; 23 | flex-direction: column; 24 | justify-content: center; 25 | overflow: hidden; 26 | color: $progress-bar-color; 27 | text-align: center; 28 | white-space: nowrap; 29 | background-color: $progress-bar-bg; 30 | @include transition($progress-bar-transition); 31 | } 32 | 33 | .progress-bar-striped { 34 | @include gradient-striped(); 35 | background-size: $progress-height $progress-height; 36 | } 37 | 38 | @if $enable-transitions { 39 | .progress-bar-animated { 40 | animation: $progress-bar-animation-timing progress-bar-stripes; 41 | 42 | @if $enable-reduced-motion { 43 | @media (prefers-reduced-motion: reduce) { 44 | animation: none; 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_root.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | // Custom variable values only support SassScript inside `#{}`. 3 | @each $color, $value in $colors { 4 | --#{$variable-prefix}#{$color}: #{$value}; 5 | } 6 | 7 | @each $color, $value in $theme-colors { 8 | --#{$variable-prefix}#{$color}: #{$value}; 9 | } 10 | 11 | // Use `inspect` for lists so that quoted items keep the quotes. 12 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172 13 | --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)}; 14 | --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)}; 15 | --#{$variable-prefix}gradient: #{$gradient}; 16 | } 17 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_spinners.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Rotating border 3 | // 4 | 5 | // scss-docs-start spinner-border-keyframes 6 | @keyframes spinner-border { 7 | to { transform: rotate(360deg) #{"/* rtl:ignore */"}; } 8 | } 9 | // scss-docs-end spinner-border-keyframes 10 | 11 | .spinner-border { 12 | display: inline-block; 13 | width: $spinner-width; 14 | height: $spinner-height; 15 | vertical-align: text-bottom; 16 | border: $spinner-border-width solid currentColor; 17 | border-right-color: transparent; 18 | // stylelint-disable-next-line property-disallowed-list 19 | border-radius: 50%; 20 | animation: $spinner-animation-speed linear infinite spinner-border; 21 | } 22 | 23 | .spinner-border-sm { 24 | width: $spinner-width-sm; 25 | height: $spinner-height-sm; 26 | border-width: $spinner-border-width-sm; 27 | } 28 | 29 | // 30 | // Growing circle 31 | // 32 | 33 | // scss-docs-start spinner-grow-keyframes 34 | @keyframes spinner-grow { 35 | 0% { 36 | transform: scale(0); 37 | } 38 | 50% { 39 | opacity: 1; 40 | transform: none; 41 | } 42 | } 43 | // scss-docs-end spinner-grow-keyframes 44 | 45 | .spinner-grow { 46 | display: inline-block; 47 | width: $spinner-width; 48 | height: $spinner-height; 49 | vertical-align: text-bottom; 50 | background-color: currentColor; 51 | // stylelint-disable-next-line property-disallowed-list 52 | border-radius: 50%; 53 | opacity: 0; 54 | animation: $spinner-animation-speed linear infinite spinner-grow; 55 | } 56 | 57 | .spinner-grow-sm { 58 | width: $spinner-width-sm; 59 | height: $spinner-height-sm; 60 | } 61 | 62 | @if $enable-reduced-motion { 63 | @media (prefers-reduced-motion: reduce) { 64 | .spinner-border, 65 | .spinner-grow { 66 | animation-duration: $spinner-animation-speed * 2; 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_toasts.scss: -------------------------------------------------------------------------------- 1 | .toast { 2 | width: $toast-max-width; 3 | max-width: 100%; 4 | @include font-size($toast-font-size); 5 | color: $toast-color; 6 | pointer-events: auto; 7 | background-color: $toast-background-color; 8 | background-clip: padding-box; 9 | border: $toast-border-width solid $toast-border-color; 10 | box-shadow: $toast-box-shadow; 11 | @include border-radius($toast-border-radius); 12 | 13 | &:not(.showing):not(.show) { 14 | opacity: 0; 15 | } 16 | 17 | &.hide { 18 | display: none; 19 | } 20 | } 21 | 22 | .toast-container { 23 | width: max-content; 24 | max-width: 100%; 25 | pointer-events: none; 26 | 27 | > :not(:last-child) { 28 | margin-bottom: $toast-spacing; 29 | } 30 | } 31 | 32 | .toast-header { 33 | display: flex; 34 | align-items: center; 35 | padding: $toast-padding-y $toast-padding-x; 36 | color: $toast-header-color; 37 | background-color: $toast-header-background-color; 38 | background-clip: padding-box; 39 | border-bottom: $toast-border-width solid $toast-header-border-color; 40 | @include border-top-radius(subtract($toast-border-radius, $toast-border-width)); 41 | 42 | .btn-close { 43 | margin-right: $toast-padding-x / -2; 44 | margin-left: $toast-padding-x; 45 | } 46 | } 47 | 48 | .toast-body { 49 | padding: $toast-padding-x; // apply to both vertical and horizontal 50 | word-wrap: break-word; 51 | } 52 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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 | // scss-docs-end collapse-classes 22 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/_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-weight: $display-font-weight; 39 | line-height: $display-line-height; 40 | } 41 | } 42 | 43 | // 44 | // Emphasis 45 | // 46 | .small { 47 | @extend small; 48 | } 49 | 50 | .mark { 51 | @extend mark; 52 | } 53 | 54 | // 55 | // Lists 56 | // 57 | 58 | .list-unstyled { 59 | @include list-unstyled(); 60 | } 61 | 62 | // Inline turns list items into inline-block 63 | .list-inline { 64 | @include list-unstyled(); 65 | } 66 | .list-inline-item { 67 | display: inline-block; 68 | 69 | &:not(:last-child) { 70 | margin-right: $list-inline-padding; 71 | } 72 | } 73 | 74 | 75 | // 76 | // Misc 77 | // 78 | 79 | // Builds on `abbr` 80 | .initialism { 81 | @include font-size($initialism-font-size); 82 | text-transform: uppercase; 83 | } 84 | 85 | // Blockquotes 86 | .blockquote { 87 | margin-bottom: $blockquote-margin-y; 88 | @include font-size($blockquote-font-size); 89 | 90 | > :last-child { 91 | margin-bottom: 0; 92 | } 93 | } 94 | 95 | .blockquote-footer { 96 | margin-top: -$blockquote-margin-y; 97 | margin-bottom: $blockquote-margin-y; 98 | @include font-size($blockquote-footer-font-size); 99 | color: $blockquote-footer-color; 100 | 101 | &::before { 102 | content: "\2014\00A0"; // em dash, nbsp 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-grid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | $include-column-box-sizing: true !default; 9 | 10 | @import "functions"; 11 | @import "variables"; 12 | 13 | @import "mixins/lists"; 14 | @import "mixins/breakpoints"; 15 | @import "mixins/container"; 16 | @import "mixins/grid"; 17 | @import "mixins/utilities"; 18 | 19 | @import "vendor/rfs"; 20 | 21 | @import "containers"; 22 | @import "grid"; 23 | 24 | @import "utilities"; 25 | // Only use the utilities we need 26 | // stylelint-disable-next-line scss/dollar-variable-default 27 | $utilities: map-get-multiple( 28 | $utilities, 29 | ( 30 | "display", 31 | "order", 32 | "flex", 33 | "flex-direction", 34 | "flex-grow", 35 | "flex-shrink", 36 | "flex-wrap", 37 | "justify-content", 38 | "align-items", 39 | "align-content", 40 | "align-self", 41 | "margin", 42 | "margin-x", 43 | "margin-y", 44 | "margin-top", 45 | "margin-end", 46 | "margin-bottom", 47 | "margin-start", 48 | "negative-margin", 49 | "negative-margin-x", 50 | "negative-margin-y", 51 | "negative-margin-top", 52 | "negative-margin-end", 53 | "negative-margin-bottom", 54 | "negative-margin-start", 55 | "padding", 56 | "padding-x", 57 | "padding-y", 58 | "padding-top", 59 | "padding-end", 60 | "padding-bottom", 61 | "padding-start", 62 | ) 63 | ); 64 | 65 | @import "utilities/api"; 66 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | // Prevent the usage of custom properties since we don't add them to `:root` in reboot 12 | $font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default 13 | $font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default 14 | @import "mixins"; 15 | @import "reboot"; 16 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-utilities.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Utilities v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | // Configuration 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "utilities"; 13 | 14 | // Helpers 15 | @import "helpers"; 16 | 17 | // Utilities 18 | @import "utilities/api"; 19 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | // scss-docs-start import-stack 9 | // Configuration 10 | @import "functions"; 11 | @import "variables"; 12 | @import "mixins"; 13 | @import "utilities"; 14 | 15 | // Layout & components 16 | @import "root"; 17 | @import "reboot"; 18 | @import "type"; 19 | @import "images"; 20 | @import "containers"; 21 | @import "grid"; 22 | @import "tables"; 23 | @import "forms"; 24 | @import "buttons"; 25 | @import "transitions"; 26 | @import "dropdown"; 27 | @import "button-group"; 28 | @import "nav"; 29 | @import "navbar"; 30 | @import "card"; 31 | @import "accordion"; 32 | @import "breadcrumb"; 33 | @import "pagination"; 34 | @import "badge"; 35 | @import "alert"; 36 | @import "progress"; 37 | @import "list-group"; 38 | @import "close"; 39 | @import "toasts"; 40 | @import "modal"; 41 | @import "tooltip"; 42 | @import "popover"; 43 | @import "carousel"; 44 | @import "spinners"; 45 | @import "offcanvas"; 46 | 47 | // Helpers 48 | @import "helpers"; 49 | 50 | // Utilities 51 | @import "utilities/api"; 52 | // scss-docs-end import-stack 53 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/forms/_floating-labels.scss: -------------------------------------------------------------------------------- 1 | .form-floating { 2 | position: relative; 3 | 4 | > .form-control, 5 | > .form-select { 6 | height: $form-floating-height; 7 | padding: $form-floating-padding-y $form-floating-padding-x; 8 | } 9 | 10 | > label { 11 | position: absolute; 12 | top: 0; 13 | left: 0; 14 | height: 100%; // allow textareas 15 | padding: $form-floating-padding-y $form-floating-padding-x; 16 | pointer-events: none; 17 | border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model 18 | transform-origin: 0 0; 19 | @include transition($form-floating-transition); 20 | } 21 | 22 | // stylelint-disable no-duplicate-selectors 23 | > .form-control { 24 | &::placeholder { 25 | color: transparent; 26 | } 27 | 28 | &:focus, 29 | &:not(:placeholder-shown) { 30 | padding-top: $form-floating-input-padding-t; 31 | padding-bottom: $form-floating-input-padding-b; 32 | } 33 | // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped 34 | &:-webkit-autofill { 35 | padding-top: $form-floating-input-padding-t; 36 | padding-bottom: $form-floating-input-padding-b; 37 | } 38 | } 39 | 40 | > .form-select { 41 | padding-top: $form-floating-input-padding-t; 42 | padding-bottom: $form-floating-input-padding-b; 43 | } 44 | 45 | > .form-control:focus, 46 | > .form-control:not(:placeholder-shown), 47 | > .form-select { 48 | ~ label { 49 | opacity: $form-floating-label-opacity; 50 | transform: $form-floating-label-transform; 51 | } 52 | } 53 | // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped 54 | > .form-control:-webkit-autofill { 55 | ~ label { 56 | opacity: $form-floating-label-opacity; 57 | transform: $form-floating-label-transform; 58 | } 59 | } 60 | // stylelint-enable no-duplicate-selectors 61 | } 62 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-range.scss: -------------------------------------------------------------------------------- 1 | // Range 2 | // 3 | // Style range inputs the same across browsers. Vendor-specific rules for pseudo 4 | // elements cannot be mixed. As such, there are no shared styles for focus or 5 | // active states on prefixed selectors. 6 | 7 | .form-range { 8 | width: 100%; 9 | height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2); 10 | padding: 0; // Need to reset padding 11 | background-color: transparent; 12 | appearance: none; 13 | 14 | &:focus { 15 | outline: 0; 16 | 17 | // Pseudo-elements must be split across multiple rulesets to have an effect. 18 | // No box-shadow() mixin for focus accessibility. 19 | &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; } 20 | &::-moz-range-thumb { box-shadow: $form-range-thumb-focus-box-shadow; } 21 | } 22 | 23 | &::-moz-focus-outer { 24 | border: 0; 25 | } 26 | 27 | &::-webkit-slider-thumb { 28 | width: $form-range-thumb-width; 29 | height: $form-range-thumb-height; 30 | margin-top: ($form-range-track-height - $form-range-thumb-height) / 2; // Webkit specific 31 | @include gradient-bg($form-range-thumb-bg); 32 | border: $form-range-thumb-border; 33 | @include border-radius($form-range-thumb-border-radius); 34 | @include box-shadow($form-range-thumb-box-shadow); 35 | @include transition($form-range-thumb-transition); 36 | appearance: none; 37 | 38 | &:active { 39 | @include gradient-bg($form-range-thumb-active-bg); 40 | } 41 | } 42 | 43 | &::-webkit-slider-runnable-track { 44 | width: $form-range-track-width; 45 | height: $form-range-track-height; 46 | color: transparent; // Why? 47 | cursor: $form-range-track-cursor; 48 | background-color: $form-range-track-bg; 49 | border-color: transparent; 50 | @include border-radius($form-range-track-border-radius); 51 | @include box-shadow($form-range-track-box-shadow); 52 | } 53 | 54 | &::-moz-range-thumb { 55 | width: $form-range-thumb-width; 56 | height: $form-range-thumb-height; 57 | @include gradient-bg($form-range-thumb-bg); 58 | border: $form-range-thumb-border; 59 | @include border-radius($form-range-thumb-border-radius); 60 | @include box-shadow($form-range-thumb-box-shadow); 61 | @include transition($form-range-thumb-transition); 62 | appearance: none; 63 | 64 | &:active { 65 | @include gradient-bg($form-range-thumb-active-bg); 66 | } 67 | } 68 | 69 | &::-moz-range-track { 70 | width: $form-range-track-width; 71 | height: $form-range-track-height; 72 | color: transparent; 73 | cursor: $form-range-track-cursor; 74 | background-color: $form-range-track-bg; 75 | border-color: transparent; // Firefox specific? 76 | @include border-radius($form-range-track-border-radius); 77 | @include box-shadow($form-range-track-box-shadow); 78 | } 79 | 80 | &:disabled { 81 | pointer-events: none; 82 | 83 | &::-webkit-slider-thumb { 84 | background-color: $form-range-thumb-disabled-bg; 85 | } 86 | 87 | &::-moz-range-thumb { 88 | background-color: $form-range-thumb-disabled-bg; 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-select.scss: -------------------------------------------------------------------------------- 1 | // Select 2 | // 3 | // Replaces the browser default select with a custom one, mostly pulled from 4 | // https://primer.github.io/. 5 | 6 | .form-select { 7 | display: block; 8 | width: 100%; 9 | padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x; 10 | font-family: $form-select-font-family; 11 | @include font-size($form-select-font-size); 12 | font-weight: $form-select-font-weight; 13 | line-height: $form-select-line-height; 14 | color: $form-select-color; 15 | background-color: $form-select-bg; 16 | background-image: escape-svg($form-select-indicator); 17 | background-repeat: no-repeat; 18 | background-position: $form-select-bg-position; 19 | background-size: $form-select-bg-size; 20 | border: $form-select-border-width solid $form-select-border-color; 21 | @include border-radius($form-select-border-radius, 0); 22 | @include box-shadow($form-select-box-shadow); 23 | appearance: none; 24 | 25 | &:focus { 26 | border-color: $form-select-focus-border-color; 27 | outline: 0; 28 | @if $enable-shadows { 29 | @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow); 30 | } @else { 31 | // Avoid using mixin so we can pass custom focus shadow properly 32 | box-shadow: $form-select-focus-box-shadow; 33 | } 34 | } 35 | 36 | &[multiple], 37 | &[size]:not([size="1"]) { 38 | padding-right: $form-select-padding-x; 39 | background-image: none; 40 | } 41 | 42 | &:disabled { 43 | color: $form-select-disabled-color; 44 | background-color: $form-select-disabled-bg; 45 | border-color: $form-select-disabled-border-color; 46 | } 47 | 48 | // Remove outline from select box in FF 49 | &:-moz-focusring { 50 | color: transparent; 51 | text-shadow: 0 0 0 $form-select-color; 52 | } 53 | } 54 | 55 | .form-select-sm { 56 | padding-top: $form-select-padding-y-sm; 57 | padding-bottom: $form-select-padding-y-sm; 58 | padding-left: $form-select-padding-x-sm; 59 | @include font-size($form-select-font-size-sm); 60 | } 61 | 62 | .form-select-lg { 63 | padding-top: $form-select-padding-y-lg; 64 | padding-bottom: $form-select-padding-y-lg; 65 | padding-left: $form-select-padding-x-lg; 66 | @include font-size($form-select-font-size-lg); 67 | } 68 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/helpers/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/helpers/_colored-links.scss: -------------------------------------------------------------------------------- 1 | @each $color, $value in $theme-colors { 2 | .link-#{$color} { 3 | color: $value; 4 | 5 | @if $link-shade-percentage != 0 { 6 | &:hover, 7 | &:focus { 8 | color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage)); 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 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 | } 31 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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(--#{$variable-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 | --#{$variable-prefix}aspect-ratio: #{$ratio}; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/helpers/_text-truncation.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Text truncation 3 | // 4 | 5 | .text-truncate { 6 | @include text-truncate(); 7 | } 8 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start alert-variant-mixin 2 | @mixin alert-variant($background, $border, $color) { 3 | color: $color; 4 | @include gradient-bg($background); 5 | border-color: $border; 6 | 7 | .alert-link { 8 | color: shade-color($color, 20%); 9 | } 10 | } 11 | // scss-docs-end alert-variant-mixin 12 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/mixins/_caret.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start caret-mixins 2 | @mixin caret-down { 3 | border-top: $caret-width solid; 4 | border-right: $caret-width solid transparent; 5 | border-bottom: 0; 6 | border-left: $caret-width solid transparent; 7 | } 8 | 9 | @mixin caret-up { 10 | border-top: 0; 11 | border-right: $caret-width solid transparent; 12 | border-bottom: $caret-width solid; 13 | border-left: $caret-width solid transparent; 14 | } 15 | 16 | @mixin caret-end { 17 | border-top: $caret-width solid transparent; 18 | border-right: 0; 19 | border-bottom: $caret-width solid transparent; 20 | border-left: $caret-width solid; 21 | } 22 | 23 | @mixin caret-start { 24 | border-top: $caret-width solid transparent; 25 | border-right: $caret-width solid; 26 | border-bottom: $caret-width solid transparent; 27 | } 28 | 29 | @mixin caret($direction: down) { 30 | @if $enable-caret { 31 | &::after { 32 | display: inline-block; 33 | margin-left: $caret-spacing; 34 | vertical-align: $caret-vertical-align; 35 | content: ""; 36 | @if $direction == down { 37 | @include caret-down(); 38 | } @else if $direction == up { 39 | @include caret-up(); 40 | } @else if $direction == end { 41 | @include caret-end(); 42 | } 43 | } 44 | 45 | @if $direction == start { 46 | &::after { 47 | display: none; 48 | } 49 | 50 | &::before { 51 | display: inline-block; 52 | margin-right: $caret-spacing; 53 | vertical-align: $caret-vertical-align; 54 | content: ""; 55 | @include caret-start(); 56 | } 57 | } 58 | 59 | &:empty::after { 60 | margin-left: 0; 61 | } 62 | } 63 | } 64 | // scss-docs-end caret-mixins 65 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/mixins/_container.scss: -------------------------------------------------------------------------------- 1 | // Container mixins 2 | 3 | @mixin make-container($gutter: $container-padding-x) { 4 | width: 100%; 5 | padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter}); 6 | padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter}); 7 | margin-right: auto; 8 | margin-left: auto; 9 | } 10 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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(--#{$variable-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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | // scss-docs-start list-group-mixin 4 | @mixin list-group-item-variant($state, $background, $color) { 5 | .list-group-item-#{$state} { 6 | color: $color; 7 | background-color: $background; 8 | 9 | &.list-group-item-action { 10 | &:hover, 11 | &:focus { 12 | color: $color; 13 | background-color: shade-color($background, 10%); 14 | } 15 | 16 | &.active { 17 | color: $white; 18 | background-color: $color; 19 | border-color: $color; 20 | } 21 | } 22 | } 23 | } 24 | // scss-docs-end list-group-mixin 25 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | .page-link { 6 | padding: $padding-y $padding-x; 7 | @include font-size($font-size); 8 | } 9 | 10 | .page-item { 11 | @if $pagination-margin-start == (-$pagination-border-width) { 12 | &:first-child { 13 | .page-link { 14 | @include border-start-radius($border-radius); 15 | } 16 | } 17 | 18 | &:last-child { 19 | .page-link { 20 | @include border-end-radius($border-radius); 21 | } 22 | } 23 | } @else { 24 | //Add border-radius to all pageLinks in case they have left margin 25 | .page-link { 26 | @include border-radius($border-radius); 27 | } 28 | } 29 | } 30 | } 31 | // scss-docs-end pagination-mixin 32 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | 9 | --#{$variable-prefix}table-bg: #{$background}; 10 | --#{$variable-prefix}table-striped-bg: #{$striped-bg}; 11 | --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)}; 12 | --#{$variable-prefix}table-active-bg: #{$active-bg}; 13 | --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)}; 14 | --#{$variable-prefix}table-hover-bg: #{$hover-bg}; 15 | --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)}; 16 | 17 | color: $color; 18 | border-color: mix($color, $background, percentage($table-border-factor)); 19 | } 20 | } 21 | // scss-docs-end table-variant 22 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/mixins/_utilities.scss: -------------------------------------------------------------------------------- 1 | // Utility generator 2 | // Used to generate utilities & print utilities 3 | @mixin generate-utility($utility, $infix, $is-rfs-media-query: false) { 4 | $values: map-get($utility, values); 5 | 6 | // If the values are a list or string, convert it into a map 7 | @if type-of($values) == "string" or type-of(nth($values, 1)) != "list" { 8 | $values: zip($values, $values); 9 | } 10 | 11 | @each $key, $value in $values { 12 | $properties: map-get($utility, property); 13 | 14 | // Multiple properties are possible, for example with vertical or horizontal margins or paddings 15 | @if type-of($properties) == "string" { 16 | $properties: append((), $properties); 17 | } 18 | 19 | // Use custom class if present 20 | $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1)); 21 | $property-class: if($property-class == null, "", $property-class); 22 | 23 | // State params to generate pseudo-classes 24 | $state: if(map-has-key($utility, state), map-get($utility, state), ()); 25 | 26 | $infix: if($property-class == "" and str-slice($infix, 1, 1) == "-", str-slice($infix, 2), $infix); 27 | 28 | // Don't prefix if value key is null (eg. with shadow class) 29 | $property-class-modifier: if($key, if($property-class == "" and $infix == "", "", "-") + $key, ""); 30 | 31 | @if map-get($utility, rfs) { 32 | // Inside the media query 33 | @if $is-rfs-media-query { 34 | $val: rfs-value($value); 35 | 36 | // Do not render anything if fluid and non fluid values are the same 37 | $value: if($val == rfs-fluid-value($value), null, $val); 38 | } 39 | @else { 40 | $value: rfs-fluid-value($value); 41 | } 42 | } 43 | 44 | $is-rtl: map-get($utility, rtl); 45 | 46 | @if $value != null { 47 | @if $is-rtl == false { 48 | /* rtl:begin:remove */ 49 | } 50 | .#{$property-class + $infix + $property-class-modifier} { 51 | @each $property in $properties { 52 | #{$property}: $value if($enable-important-utilities, !important, null); 53 | } 54 | } 55 | 56 | @each $pseudo in $state { 57 | .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} { 58 | @each $property in $properties { 59 | #{$property}: $value if($enable-important-utilities, !important, null); 60 | } 61 | } 62 | } 63 | @if $is-rtl == false { 64 | /* rtl:end:remove */ 65 | } 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 7 | 8 | @mixin visually-hidden() { 9 | position: absolute !important; 10 | width: 1px !important; 11 | height: 1px !important; 12 | padding: 0 !important; 13 | margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686 14 | overflow: hidden !important; 15 | clip: rect(0, 0, 0, 0) !important; 16 | white-space: nowrap !important; 17 | border: 0 !important; 18 | } 19 | 20 | // Use to only display content when it's focused, or one of its child elements is focused 21 | // (i.e. when focus is within the element/container that the class was applied to) 22 | // 23 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 24 | 25 | @mixin visually-hidden-focusable() { 26 | &:not(:focus):not(:focus-within) { 27 | @include visually-hidden(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/bootstrap/scss/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 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/common/_fonts.scss: -------------------------------------------------------------------------------- 1 | /* jost-regular - latin */ 2 | @font-face { 3 | font-family: "Jost"; 4 | font-style: normal; 5 | font-weight: 400; 6 | font-display: swap; 7 | src: 8 | local("Jost"), 9 | url("fonts/vendor/jost/jost-v4-latin-regular.woff2") format("woff2"), 10 | url("fonts/vendor/jost/jost-v4-latin-regular.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 11 | } 12 | 13 | /* jost-500 - latin */ 14 | @font-face { 15 | font-family: "Jost"; 16 | font-style: normal; 17 | font-weight: 500; 18 | font-display: swap; 19 | src: 20 | local("Jost"), 21 | url("fonts/vendor/jost/jost-v4-latin-500.woff2") format("woff2"), 22 | url("fonts/vendor/jost/jost-v4-latin-500.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 23 | } 24 | 25 | /* jost-700 - latin */ 26 | @font-face { 27 | font-family: "Jost"; 28 | font-style: normal; 29 | font-weight: 700; 30 | font-display: swap; 31 | src: 32 | local("Jost"), 33 | url("fonts/vendor/jost/jost-v4-latin-700.woff2") format("woff2"), 34 | url("fonts/vendor/jost/jost-v4-latin-700.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 35 | } 36 | 37 | /* jost-italic - latin */ 38 | @font-face { 39 | font-family: "Jost"; 40 | font-style: italic; 41 | font-weight: 400; 42 | font-display: swap; 43 | src: 44 | local("Jost"), 45 | url("fonts/vendor/jost/jost-v4-latin-italic.woff2") format("woff2"), 46 | url("fonts/vendor/jost/jost-v4-latin-italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 47 | } 48 | 49 | /* jost-500italic - latin */ 50 | @font-face { 51 | font-family: "Jost"; 52 | font-style: italic; 53 | font-weight: 500; 54 | font-display: swap; 55 | src: 56 | local("Jost"), 57 | url("fonts/vendor/jost/jost-v4-latin-500italic.woff2") format("woff2"), 58 | url("fonts/vendor/jost/jost-v4-latin-500italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 59 | } 60 | 61 | /* jost-700italic - latin */ 62 | @font-face { 63 | font-family: "Jost"; 64 | font-style: italic; 65 | font-weight: 700; 66 | font-display: swap; 67 | src: 68 | local("Jost"), 69 | url("fonts/vendor/jost/jost-v4-latin-700italic.woff2") format("woff2"), 70 | url("fonts/vendor/jost/jost-v4-latin-700italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 71 | } 72 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_alerts.scss: -------------------------------------------------------------------------------- 1 | .alert { 2 | font-family: $font-family-monospace; 3 | font-size: $font-size-sm; 4 | } 5 | 6 | .alert-icon { 7 | margin-right: 0.75rem; 8 | } 9 | 10 | .docs .alert { 11 | margin: 2rem -1.5rem; 12 | } 13 | 14 | .alert .alert-link { 15 | text-decoration: underline; 16 | } 17 | 18 | .alert-dark { 19 | color: $white; 20 | background-color: $black; 21 | } 22 | 23 | .alert-dark .alert-link { 24 | color: $white; 25 | } 26 | 27 | .alert-light { 28 | color: $black; 29 | } 30 | 31 | .alert-warning { 32 | background: $beige; 33 | color: $black; 34 | } 35 | 36 | /* 37 | .alert-light { 38 | color: #215888; 39 | background: linear-gradient(-45deg, rgb(212, 245, 255), rgb(234, 250, 255), rgb(234, 250, 255), #d3f6ef); 40 | } 41 | 42 | .alert-light .alert-link { 43 | color: #215888; 44 | } 45 | */ 46 | 47 | .alert-white { 48 | background-color: rgba(255, 255, 255, 0.95); 49 | } 50 | 51 | .alert-primary { 52 | color: $white; 53 | background-color: $primary; 54 | } 55 | 56 | .alert-primary .alert-link { 57 | color: $white; 58 | } 59 | 60 | .alert .alert-link:hover, 61 | .alert .alert-link:focus { 62 | text-decoration: none; 63 | } 64 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | .navbar .btn-link { 2 | color: $navbar-light-color; 3 | padding: 0.4375rem 0; 4 | } 5 | 6 | #mode { 7 | margin-right: 1.25rem; 8 | } 9 | 10 | .btn-link:focus { 11 | outline: 0; 12 | box-shadow: none; 13 | } 14 | 15 | #navigation { 16 | margin-left: 1.25rem; 17 | } 18 | 19 | @include media-breakpoint-up(md) { 20 | #mode { 21 | margin-right: 0.5rem; 22 | } 23 | 24 | .navbar .btn-link { 25 | padding: 0.5625em 0.25rem 0.5rem 0.125rem; 26 | } 27 | } 28 | 29 | .navbar .btn-link:hover { 30 | color: $navbar-light-hover-color; 31 | } 32 | 33 | .navbar .btn-link:active { 34 | color: $navbar-light-active-color; 35 | } 36 | 37 | body .toggle-dark { 38 | display: block; 39 | } 40 | 41 | body .toggle-light { 42 | display: none; 43 | } 44 | 45 | body.dark .toggle-light { 46 | display: block; 47 | } 48 | 49 | body.dark .toggle-dark { 50 | display: none; 51 | } 52 | 53 | .btn-clipboard { 54 | display: none; 55 | } 56 | 57 | @include media-breakpoint-up(md) { 58 | .doks-clipboard { 59 | position: relative; 60 | float: right; 61 | } 62 | 63 | .btn-clipboard { 64 | position: absolute; 65 | top: 1rem; 66 | right: 0.25rem; 67 | z-index: 10; 68 | display: block; 69 | padding: 0.25rem 0.5rem; 70 | font-size: $font-size-sm; 71 | } 72 | } 73 | 74 | .copy-status::after { 75 | content: "Copy"; 76 | display: block; 77 | color: $body-color; 78 | } 79 | 80 | .copy-status:hover::after { 81 | content: "Copy"; 82 | display: block; 83 | color: $pink-500; 84 | } 85 | 86 | .copy-status:focus::after, 87 | .copy-status:active::after { 88 | content: "Copied"; 89 | display: block; 90 | color: $pink-500; 91 | } 92 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_code.scss: -------------------------------------------------------------------------------- 1 | pre, 2 | code, 3 | kbd, 4 | samp { 5 | font-family: $font-family-monospace; 6 | font-size: $font-size-sm; 7 | border-radius: $border-radius; 8 | } 9 | 10 | code { 11 | padding: 0.25rem 0.5rem; 12 | } 13 | 14 | pre { 15 | background: $beige; 16 | color: $black; 17 | margin: 2rem 0; 18 | } 19 | 20 | pre code { 21 | display: block; 22 | overflow-x: auto; 23 | line-height: $line-height-base; 24 | padding: 1.25rem 1.5rem; 25 | tab-size: 4; 26 | scrollbar-width: thin; 27 | scrollbar-color: transparent transparent; 28 | } 29 | 30 | .hljs { 31 | padding: 1.25rem 1.5rem; 32 | } 33 | 34 | @include media-breakpoint-down(sm) { 35 | pre, 36 | code, 37 | kbd, 38 | samp { 39 | border-radius: 0; 40 | } 41 | 42 | pre { 43 | margin: 2rem -1.5rem; 44 | } 45 | } 46 | 47 | pre code::-webkit-scrollbar { 48 | height: 5px; 49 | } 50 | 51 | pre code::-webkit-scrollbar-thumb { 52 | background: $gray-200; 53 | } 54 | 55 | pre code:hover { 56 | scrollbar-width: thin; 57 | scrollbar-color: $gray-200 transparent; 58 | } 59 | 60 | pre code::-webkit-scrollbar-thumb:hover { 61 | background: $gray-200; 62 | } 63 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_comments.scss: -------------------------------------------------------------------------------- 1 | .comment-list { 2 | @extend .list-unstyled; 3 | } 4 | 5 | .comment-list ol { 6 | list-style: none; 7 | } 8 | 9 | .comment-form p { 10 | @extend .form-group !optional; 11 | } 12 | 13 | .comment-form input[type="text"], 14 | .comment-form input[type="email"], 15 | .comment-form input[type="url"], 16 | .comment-form textarea { 17 | @extend .form-control; 18 | } 19 | 20 | .comment-form input[type="submit"] { 21 | @extend .btn; 22 | @extend .btn-secondary; 23 | } 24 | 25 | blockquote { 26 | margin-bottom: 1rem; 27 | font-size: 1.25rem; 28 | border-left: 3px solid $gray-300; 29 | padding-left: 1rem; 30 | } 31 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_doks.scss: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Doks — based on Ascetic by (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: $beige; 12 | color: $body-color; 13 | } 14 | 15 | .hljs-string, 16 | .hljs-variable, 17 | .hljs-template-variable, 18 | .hljs-symbol, 19 | .hljs-bullet, 20 | .hljs-section, 21 | .hljs-addition, 22 | .hljs-attribute, 23 | .hljs-link { 24 | color: $pink-500; 25 | } 26 | 27 | .hljs-comment, 28 | .hljs-quote, 29 | .hljs-meta, 30 | .hljs-deletion { 31 | color: #888; 32 | } 33 | 34 | .hljs-keyword, 35 | .hljs-selector-tag, 36 | .hljs-section, 37 | .hljs-name, 38 | .hljs-type, 39 | .hljs-strong { 40 | font-weight: bold; 41 | } 42 | 43 | .hljs-emphasis { 44 | font-style: italic; 45 | } 46 | 47 | body.dark .hljs { 48 | background: $body-overlay-dark; 49 | color: $body-color-dark; 50 | } 51 | 52 | body.dark .hljs-string, 53 | body.dark .hljs-variable, 54 | body.dark .hljs-template-variable, 55 | body.dark .hljs-symbol, 56 | body.dark .hljs-bullet, 57 | body.dark .hljs-section, 58 | body.dark .hljs-addition, 59 | body.dark .hljs-attribute, 60 | body.dark .hljs-link { 61 | color: $blue-300; 62 | } 63 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_footnote.scss: -------------------------------------------------------------------------------- 1 | .footnote-definition { 2 | sup { 3 | top: -.2.5em; 4 | font-size: 0.75em; 5 | display: inline; 6 | } 7 | p { 8 | display: inline; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_forms.scss: -------------------------------------------------------------------------------- 1 | /** Search form */ 2 | .search-form { 3 | @extend .form-inline !optional; 4 | } 5 | 6 | .search-form label { 7 | @extend .form-group; 8 | 9 | font-weight: normal; 10 | } 11 | 12 | .search-form .search-field { 13 | @extend .form-control; 14 | } 15 | 16 | .search-form .search-submit { 17 | @extend .btn; 18 | @extend .btn-secondary; 19 | } 20 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_images.scss: -------------------------------------------------------------------------------- 1 | figure { 2 | margin: 2rem 0; 3 | } 4 | 5 | .figure-caption { 6 | margin: 0.25rem 0 0.75rem; 7 | } 8 | 9 | figure.wide { 10 | margin: 2rem -1.5rem; 11 | } 12 | 13 | figure.wide .figure-caption { 14 | margin: 0.25rem 1.5rem 0.75rem; 15 | } 16 | 17 | @include media-breakpoint-up(md) { 18 | figure.wide { 19 | margin: 2rem -2.5rem; 20 | } 21 | 22 | figure.wide .figure-caption { 23 | margin: 0.25rem 2.5rem 0.75rem; 24 | } 25 | } 26 | 27 | @include media-breakpoint-up(lg) { 28 | figure.wide { 29 | margin: 2rem -5rem; 30 | } 31 | 32 | figure.wide .figure-caption { 33 | margin: 0.25rem 5rem 0.75rem; 34 | } 35 | } 36 | 37 | .blur-up { 38 | filter: blur(5px); 39 | } 40 | 41 | .blur-up.lazyloaded { 42 | filter: unset; 43 | } 44 | 45 | .img-simple { 46 | margin-top: 0.375rem; 47 | margin-bottom: 1.25rem; 48 | } 49 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_search.scss: -------------------------------------------------------------------------------- 1 | .navbar-form { 2 | position: relative; 3 | } 4 | 5 | #suggestions { 6 | position: absolute; 7 | right: 0; 8 | margin-top: 0.5rem; 9 | width: calc(100vw - 3rem); 10 | max-height: 500px; 11 | overflow: auto; 12 | } 13 | 14 | #suggestions a { 15 | display: block; 16 | text-decoration: none; 17 | padding: 0.75rem; 18 | margin: 0 0.5rem; 19 | } 20 | 21 | #suggestions a:focus { 22 | background: $gray-100; 23 | outline: 0; 24 | } 25 | 26 | #suggestions div:not(:first-child) { 27 | border-top: 1px dashed $gray-200; 28 | } 29 | 30 | #suggestions div:first-child { 31 | margin-top: 0.5rem; 32 | } 33 | 34 | #suggestions div:last-child { 35 | margin-bottom: 0.5rem; 36 | } 37 | 38 | #suggestions a:hover { 39 | background: $gray-100; 40 | } 41 | 42 | #suggestions span { 43 | // display: flex; 44 | font-size: $font-size-base; 45 | } 46 | 47 | #suggestions span:first-child { 48 | font-weight: $headings-font-weight; 49 | color: $black; 50 | } 51 | 52 | #suggestions span:nth-child(2) { 53 | color: $gray-700; 54 | } 55 | 56 | @include media-breakpoint-up(sm) { 57 | #suggestions { 58 | width: 30rem; 59 | } 60 | 61 | #suggestions a { 62 | display: flex; 63 | } 64 | 65 | #suggestions span:first-child { 66 | width: 9rem; 67 | padding-right: 1rem; 68 | border-right: 1px solid $gray-200; 69 | display: inline-block; 70 | text-align: right; 71 | } 72 | 73 | #suggestions span:nth-child(2) { 74 | width: 19rem; 75 | padding-left: 1rem; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/components/_tables.scss: -------------------------------------------------------------------------------- 1 | table { 2 | @extend .table; 3 | 4 | margin: 3rem 0; 5 | } 6 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/layouts/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | border-top: 1px solid $gray-200; 3 | padding-top: 1.125rem; 4 | padding-bottom: 1.125rem; 5 | } 6 | 7 | .footer ul { 8 | margin-bottom: 0; 9 | } 10 | 11 | .footer li { 12 | font-size: $font-size-sm; 13 | margin-bottom: 0; 14 | } 15 | 16 | @include media-breakpoint-up(md) { 17 | .footer li { 18 | font-size: $font-size-base; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/layouts/_pages.scss: -------------------------------------------------------------------------------- 1 | .lead-hero { 2 | font-size: $font-size-md; 3 | margin-bottom: 2em; 4 | } 5 | 6 | .docs-content > h2[id]::before, 7 | .docs-content > h3[id]::before, 8 | .docs-content > h4[id]::before { 9 | display: block; 10 | height: 6rem; 11 | margin-top: -6rem; 12 | content: ""; 13 | } 14 | 15 | .anchor { 16 | visibility: hidden; 17 | padding-left: 0.5rem; 18 | } 19 | 20 | h1:hover a, 21 | h2:hover a, 22 | h3:hover a, 23 | h4:hover a { 24 | visibility: visible; 25 | text-decoration: none; 26 | } 27 | 28 | .card-list { 29 | margin-top: 2.25rem; 30 | } 31 | 32 | .edit-page { 33 | margin-top: 3rem; 34 | font-size: $font-size-base; 35 | } 36 | 37 | .edit-page svg { 38 | margin-right: 0.5rem; 39 | margin-bottom: 0.25rem; 40 | } 41 | 42 | p.meta { 43 | margin-top: 0.5rem; 44 | font-size: $font-size-base; 45 | } 46 | 47 | .breadcrumb { 48 | margin-top: 2.25rem; 49 | font-size: $font-size-base; 50 | } 51 | 52 | .page-header { 53 | text-align: center; 54 | margin-bottom: 2rem; 55 | } 56 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/layouts/_posts.scss: -------------------------------------------------------------------------------- 1 | .home .card, 2 | .contributors.list .card, 3 | .blog.list .card { 4 | margin-top: 2rem; 5 | margin-bottom: 2rem; 6 | transition: transform 0.3s; 7 | } 8 | 9 | .home .card:hover, 10 | .contributors.list .card:hover, 11 | .blog.list .card:hover { 12 | transform: scale(1.025); 13 | } 14 | 15 | .home .card-body, 16 | .contributors.list .card-body, 17 | .blog.list .card-body { 18 | padding: 0 2rem 1rem; 19 | } 20 | 21 | .blog-header { 22 | text-align: center; 23 | margin-bottom: 2rem; 24 | } 25 | 26 | .blog-footer { 27 | text-align: center; 28 | } 29 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/layouts/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .docs-links, 2 | .docs-toc { 3 | scrollbar-width: thin; 4 | scrollbar-color: $white $white; 5 | } 6 | 7 | .docs-links::-webkit-scrollbar, 8 | .docs-toc::-webkit-scrollbar { 9 | width: 5px; 10 | } 11 | 12 | .docs-links::-webkit-scrollbar-track, 13 | .docs-toc::-webkit-scrollbar-track { 14 | background: $white; 15 | } 16 | 17 | .docs-links::-webkit-scrollbar-thumb, 18 | .docs-toc::-webkit-scrollbar-thumb { 19 | background: $white; 20 | } 21 | 22 | .docs-links:hover, 23 | .docs-toc:hover { 24 | scrollbar-width: thin; 25 | scrollbar-color: $gray-200 $white; 26 | } 27 | 28 | .docs-links:hover::-webkit-scrollbar-thumb, 29 | .docs-toc:hover::-webkit-scrollbar-thumb { 30 | background: $gray-200; 31 | } 32 | 33 | .docs-links::-webkit-scrollbar-thumb:hover, 34 | .docs-toc::-webkit-scrollbar-thumb:hover { 35 | background: $gray-200; 36 | } 37 | 38 | .docs-links h3, 39 | .page-links h3 { 40 | font-size: $font-size-base; 41 | margin: 1.25rem 0 0.5rem 0; 42 | padding: 1.5rem 0 0 0; 43 | letter-spacing: -0.03em; 44 | } 45 | 46 | @include media-breakpoint-up(lg) { 47 | .docs-links h3, 48 | .page-links h3 { 49 | margin: 1.125rem 1.5rem 0.75rem 0; 50 | padding: 1.375rem 0 0 0; 51 | } 52 | } 53 | 54 | .docs-links h3:not(:first-child) { 55 | border-top: 1px solid $gray-200; 56 | } 57 | 58 | a.docs-link { 59 | color: $body-color; 60 | display: block; 61 | padding: 0.125rem 0; 62 | font-size: $font-size-sm; 63 | } 64 | 65 | .page-links li { 66 | margin-top: 0.375rem; 67 | padding-top: 0.375rem; 68 | } 69 | 70 | .page-links ul ul li { 71 | border-top: none; 72 | padding-left: 1rem; 73 | margin-top: 0.125rem; 74 | padding-top: 0.125rem; 75 | } 76 | 77 | .page-links li:not(:first-child) { 78 | border-top: 1px dashed $gray-200; 79 | } 80 | 81 | .page-links a { 82 | color: $body-color; 83 | display: block; 84 | padding: 0.125rem 0; 85 | font-size: $font-size-base * 0.9375; 86 | } 87 | 88 | .docs-link:hover, 89 | .docs-link.active, 90 | .page-links a:hover { 91 | text-decoration: none; 92 | color: $link-color; 93 | } 94 | 95 | .docs-links h3.sidebar-link, 96 | .page-links h3.sidebar-link { 97 | text-transform: none; 98 | font-size: $font-size-md; 99 | font-weight: normal; 100 | } 101 | 102 | .docs-links h3.sidebar-link a, 103 | .page-links h3.sidebar-link a { 104 | color: $body-color; 105 | } 106 | 107 | .docs-links h3.sidebar-link a:hover, 108 | .page-links h3.sidebar-link a:hover { 109 | text-decoration: underline; 110 | } 111 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/sass/main.scss: -------------------------------------------------------------------------------- 1 | /** Import Bootstrap functions */ 2 | @import "bootstrap/scss/functions"; 3 | 4 | /** Import theme variables */ 5 | @import "common/variables"; 6 | 7 | /** Import Bootstrap */ 8 | @import "bootstrap/scss/bootstrap"; 9 | 10 | /** Import theme styles */ 11 | @import "common/fonts"; 12 | @import "common/global"; 13 | @import "common/dark"; 14 | @import "components/doks"; 15 | 16 | // @import "components/syntax"; 17 | @import "components/code"; 18 | @import "components/alerts"; 19 | @import "components/buttons"; 20 | @import "components/comments"; 21 | @import "components/footnote"; 22 | @import "components/forms"; 23 | @import "components/images"; 24 | @import "components/search"; 25 | @import "components/tables"; 26 | @import "layouts/footer"; 27 | @import "layouts/header"; 28 | @import "layouts/pages"; 29 | @import "layouts/posts"; 30 | @import "layouts/sidebar"; 31 | 32 | /* @import custom styles */ 33 | @import "custom.scss"; 34 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/screenshot.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/_headers: -------------------------------------------------------------------------------- 1 | /* 2 | Access-Control-Allow-Origin: * -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/android-chrome-512x512.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/apple-touch-icon.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/doks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/doks.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/doks.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/favicon-16x16.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/favicon-32x32.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/favicon.ico -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff2 -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff2 -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff2 -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff2 -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff2 -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff2 -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/js/main.js: -------------------------------------------------------------------------------- 1 | // Set darkmode 2 | document.getElementById('mode').addEventListener('click', () => { 3 | 4 | document.body.classList.toggle('dark'); 5 | localStorage.setItem('theme', document.body.classList.contains('dark') ? 'dark' : 'light'); 6 | 7 | }); 8 | 9 | // enforce local storage setting but also fallback to user-agent preferences 10 | if (localStorage.getItem('theme') === 'dark' || (!localStorage.getItem('theme') && window.matchMedia("(prefers-color-scheme: dark)").matches)) { 11 | 12 | document.body.classList.add('dark'); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/logo-doks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxyxai/xai/5cc81868abf63431bce199eb74cda4d1c88651a4/pages/docs/themes/adidoks/static/logo-doks.png -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/static/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"Zola Theme AdiDoks","short_name":"AdiDoks","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#fff","background_color":"#fff","display":"standalone"} -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block seo %} 4 | {{ super() }} 5 | {% set title = "404 Page not found" %} 6 | 7 | {% if config.title %} 8 | {% set title_addition = title_separator ~ config.title %} 9 | {% else %} 10 | {% set title_addition = "" %} 11 | {% endif %} 12 | 13 | {% set description = config.description %} 14 | 15 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description, is_404=true) }} 16 | {% endblock seo %} 17 | 18 | {% block content %} 19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |

Page not found :(

27 |

The page you are looking for doesn't exist or has been moved.

28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | {% endblock content %} 36 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/authors/list.html: -------------------------------------------------------------------------------- 1 | {% extends "section.html" %} 2 | 3 | {% block seo %} 4 | {% set title_addition = "" %} 5 | {% if config.extra.title_separator %} 6 | {% set title_separator = " " ~ config.extra.title_separator ~ " " %} 7 | {% else %} 8 | {% set title_separator = " | " %} 9 | {% endif %} 10 | 11 | {% set_global section = get_section(path="authors/_index.md") %} 12 | {% if section.title and config.title %} 13 | {% set title = section.title %} 14 | {% set title_addition = title_separator ~ config.title %} 15 | {% elif section.title %} 16 | {% set title = section.title %} 17 | {% else %} 18 | {% set title = config.title %} 19 | {% endif %} 20 | 21 | {% if page.description %} 22 | {% set description = section.description %} 23 | {% else %} 24 | {% set description = config.description %} 25 | {% endif %} 26 | 27 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} 28 | {% endblock seo %} 29 | 30 | {% block body %} 31 | {% if section.extra.class %} 32 | {% set page_class = section.extra.class %} 33 | {% else %} 34 | {% set page_class = "contributors list" %} 35 | {% endif %} 36 | {% endblock body %} 37 | 38 | {% block content %} 39 |
40 | 59 |
60 | {% endblock content %} 61 | 62 | 63 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/authors/single.html: -------------------------------------------------------------------------------- 1 | {% extends "page.html" %} 2 | 3 | {% block seo %} 4 | {% set author_name_in_url = term.permalink | trim_end_matches(pat="/") | split(pat="/") | last %} 5 | {% set section = get_section(path="authors/_index.md") %} 6 | 7 | {% if section.extra.author_pages[author_name_in_url] %} 8 | {% set_global author_page = get_page(path=section.extra.author_pages[author_name_in_url])%} 9 | {% endif %} 10 | {% if author_page and author_page.title %} 11 | {% set_global title = author_page.title %} 12 | {% else %} 13 | {% set_global title = term.name %} 14 | {% endif %} 15 | 16 | {% set title_addition = "" %} 17 | {% if config.extra.title_separator %} 18 | {% set title_separator = " " ~ config.extra.title_separator ~ " " %} 19 | {% else %} 20 | {% set title_separator = " | " %} 21 | {% endif %} 22 | 23 | {% if config.title %} 24 | {% set title_addition = title_separator ~ config.title %} 25 | {% else %} 26 | {% set title_addition = "" %} 27 | {% endif %} 28 | 29 | {% if author_page and author_page.description %} 30 | {% set description = author_page.description %} 31 | {% else %} 32 | {% set description = config.description %} 33 | {% endif %} 34 | 35 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} 36 | {% endblock seo %} 37 | 38 | {% block body %} 39 | {% if page.extra.class %} 40 | {% set page_class = page.extra.class %} 41 | {% else %} 42 | {% set page_class = "contributors list" %} 43 | {% endif %} 44 | {% endblock body %} 45 | 46 | {% block content %} 47 |
48 | 69 |
70 | {% endblock content %} 71 | 72 | 73 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/base.html: -------------------------------------------------------------------------------- 1 | {%- import 'macros/head.html' as macros_head -%} 2 | {% import 'macros/math.html' as macros_math -%} 3 | {% import 'macros/header.html' as macros_header -%} 4 | {% import 'macros/footer.html' as macros_footer -%} 5 | {% import 'macros/javascript.html' as macros_js -%} 6 | {% import 'macros/page-publish-metadata.html' as macros_publish -%} 7 | {% import 'macros/section-navigation.html' as macros_section_nav -%} 8 | {% import 'macros/docs-sidebar.html' as macros_sidebar -%} 9 | {% import 'macros/docs-edit-page.html' as macros_edit_page -%} 10 | {% import 'macros/docs-navigation.html' as macros_navigation -%} 11 | {% import 'macros/docs-toc.html' as macros_toc -%} 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {{ macros_head::resource() }} 20 | {{ macros_head::stylesheet() }} 21 | 22 | {% block seo %} 23 | {% if config.extra.title_separator %} 24 | {% set title_separator = " " ~ config.extra.title_separator ~ " " %} 25 | {% else %} 26 | {% set title_separator = " | " %} 27 | {% endif %} 28 | {% endblock seo %} 29 | 30 | {{ macros_head::favicons() }} 31 | {% block math %}{{ macros_math::math() }}{% endblock math %} 32 | 33 | {% block body %}{% set page_class="home" %}{% endblock body %} 34 | 35 | {% block header %} 36 | {{ macros_header::header(current_section="/") }} 37 | {% endblock header %} 38 | 39 | {% block content %}{% endblock content %} 40 | 41 | {{ macros_js::javascript() }} 42 | 43 | 44 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/blog/page.html: -------------------------------------------------------------------------------- 1 | {# Default page template used for blog contents #} 2 | 3 | {% extends "page.html" %} 4 | 5 | {% block seo %} 6 | {# This value is matched by the config.extra.menu.main->section #} 7 | {% set_global current_section = 'blog' %} 8 | {{ super() }} 9 | {% endblock seo %} 10 | 11 | {% block body %} 12 | {% set page_class = "blog single" %} 13 | {% endblock body %} 14 | 15 | {% block header %} 16 | {{ macros_header::header(current_section=current_section)}} 17 | {% endblock header %} 18 | 19 | {% block content %} 20 |
21 |
22 |
23 |
24 |
25 |
26 |

{{ page.title }}

27 | {{ macros_publish::page_publish_metadata(page=page) }} 28 |
29 | {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} 30 | {{ page.content | safe }} 31 |
32 |
33 |
34 |
35 |
36 | {% endblock content %} 37 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/blog/section.html: -------------------------------------------------------------------------------- 1 | {% extends "section.html" %} 2 | 3 | {% block body %} 4 | {% set page_class = "blog list" %} 5 | {% endblock body %} 6 | 7 | {% block header %} 8 | {# This value is matched by the config.extra.menu.main->section #} 9 | {% set current_section = "blog" %} 10 | {{ macros_header::header(current_section=current_section)}} 11 | {% endblock header %} 12 | 13 | {% block content %} 14 |
15 | 39 |
40 | {% endblock content %} 41 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/docs/page.html: -------------------------------------------------------------------------------- 1 | {% extends "page.html" %} 2 | 3 | {% block body %} 4 | {% set page_class = "docs single" %} 5 | {% endblock body %} 6 | 7 | {% block header %} 8 | {# This value is matched by the config.extra.menu.main~url #} 9 | {% set current_section = "docs" %} 10 | {{ macros_header::header(current_section=current_section)}} 11 | {% endblock header %} 12 | 13 | {% block content %} 14 |
15 |
16 |
17 | {{ macros_sidebar::docs_sidebar(current_section=current_section) }} 18 | {{ macros_toc::docs_toc(page=page) }} 19 |
20 |

{{ page.title }}

21 | {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} 22 | {{ page.content | safe }} 23 | {% if config.extra.edit_page %} 24 | {{ macros_edit_page::docs_edit_page(current_path=current_path) }} 25 | {% endif %} 26 | {{ macros_navigation::docs_navigation(page=page, current_section=current_section) }} 27 |
28 |
29 |
30 |
31 | {% endblock content %} 32 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/docs/section.html: -------------------------------------------------------------------------------- 1 | {% extends "section.html" %} 2 | 3 | {% block body %} 4 | {% set page_class = "docs list" %} 5 | {% endblock body %} 6 | 7 | {% block header %} 8 | {# This value is matched by the config.extra.menu.main~section #} 9 | {% set current_section = "docs" %} 10 | {{ macros_header::header(current_section=current_section)}} 11 | {% endblock header %} 12 | 13 | {% block content %} 14 |
15 | 48 |
49 | {% endblock content %} 50 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/docs-edit-page.html: -------------------------------------------------------------------------------- 1 | {% macro docs_edit_page(current_path) %} 2 |

Edit this page on GitHub

3 | {% endmacro %} 4 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/docs-sidebar.html: -------------------------------------------------------------------------------- 1 | {% macro docs_sidebar(current_section) %} 2 |
3 | 28 |
29 | {% endmacro %} 30 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/docs-toc.html: -------------------------------------------------------------------------------- 1 | {% macro docs_toc(page) %} 2 | {% if page.extra.toc %} 3 | 22 | {% endif %} 23 | {% endmacro %} 24 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/footer.html: -------------------------------------------------------------------------------- 1 | {% macro footer() %} 2 | 26 | {% endmacro %} 27 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/javascript.html: -------------------------------------------------------------------------------- 1 | {% macro javascript() %} 2 | 3 | {% if config.build_search_index %} 4 | 5 | 6 | 7 | {% endif %} 8 | {% endmacro %} 9 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/math.html: -------------------------------------------------------------------------------- 1 | {% macro math() %} 2 | {% if page.extra.math or section.extra.math or config.extra.math %} 3 | {% if config.extra.library and config.extra.library == "mathjax" %} 4 | 18 | 19 | {% else %} 20 | 21 | 22 | 23 | 24 | {% endif %} 25 | {% endif %} 26 | {% endmacro %} 27 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/page-publish-metadata.html: -------------------------------------------------------------------------------- 1 | {% macro page_publish_metadata(page) %} 2 |

Posted {{ page.date | date(format=config.extra.timeformat | default(value="%Y-%m-%d %H:%M:%S"), timezone=config.extra.timezone | default(value="America/New_York")) }}{% if page.taxonomies.authors and config.taxonomies %} by {% for author in page.taxonomies.authors %}{% if author_flag %} and {% endif %}{{ author }}{% set_global author_flag = true %}{% endfor %}{% endif %} ‐ {{ page.reading_time }} min read

3 | {% endmacro %} 4 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/macros/section-navigation.html: -------------------------------------------------------------------------------- 1 | {% macro navigation(paginator) %} 2 |

3 | {% if paginator.previous %} 4 | 5 |
6 |
7 | ← Newer 8 |
9 |
10 |
11 | {% endif %} 12 | {% if paginator.next %} 13 | 14 |
15 |
16 | Older → 17 |
18 |
19 |
20 | {% endif %} 21 |
22 | {% endmacro %} 23 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/page.html: -------------------------------------------------------------------------------- 1 | {# Default page.html template #} 2 | 3 | {% extends "base.html" %} 4 | 5 | {% block seo %} 6 | {{ super() }} 7 | {% set title_addition = "" %} 8 | {% if page.title and config.title %} 9 | {% set title = page.title %} 10 | {% set title_addition = title_separator ~ config.title %} 11 | {% elif page.title %} 12 | {% set title = page.title %} 13 | {% else %} 14 | {% set title = config.title %} 15 | {% endif %} 16 | 17 | {% if page.description %} 18 | {% set description = page.description %} 19 | {% else %} 20 | {% set description = config.description %} 21 | {% endif %} 22 | {% set created_time = page.date %} 23 | {% set updated_time = page.updated %} 24 | {% if current_section %} 25 | {% set page_section = current_section %} 26 | {% else %} 27 | {% set page_section = "" %} 28 | {% endif %} 29 | 30 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description, type="article", is_page=true, created_time=created_time, updated_time=updated_time, page_section=page_section) }} 31 | {% endblock seo %} 32 | 33 | {% block body %} 34 | {% if section.extra.class %} 35 | {% set page_class = page.extra.class %} 36 | {% else %} 37 | {% set page_class = "page single" %} 38 | {% endif %} 39 | {% endblock body %} 40 | 41 | {% block content %} 42 |
43 |
44 |
45 |
46 |
47 | 50 | {% if page.extra.lead %}

{{ page.extra.lead }}

{% endif %} 51 | {{ page.content | safe }} 52 |
53 |
54 |
55 |
56 |
57 | {% endblock content %} 58 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: {{config.base_url}}/sitemap.xml 5 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/templates/section.html: -------------------------------------------------------------------------------- 1 | {# Default section.html template #} 2 | 3 | {% extends "base.html" %} 4 | 5 | {% block seo %} 6 | {{ super() }} 7 | {% set title_addition = "" %} 8 | 9 | {% if section.title and config.title %} 10 | {% set title = section.title %} 11 | {% set title_addition = title_separator ~ config.title %} 12 | {% elif section.title %} 13 | {% set title = section.title %} 14 | {% else %} 15 | {% set title = config.title %} 16 | {% endif %} 17 | 18 | {% if section.description %} 19 | {% set description = section.description %} 20 | {% else %} 21 | {% set description = config.description %} 22 | {% endif %} 23 | 24 | {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} 25 | {% endblock seo %} 26 | 27 | {% block body %} 28 | {% if section.extra.class %} 29 | {% set page_class = section.extra.class %} 30 | {% else %} 31 | {% set page_class = "page list" %} 32 | {% endif %} 33 | {% endblock body %} 34 | 35 | {% block content %} 36 |
37 |
38 |
39 |
40 |
41 | 44 | {{ section.content | safe }} 45 |
46 |
47 |
48 |
49 |
50 | {% endblock content %} 51 | -------------------------------------------------------------------------------- /pages/docs/themes/adidoks/theme.toml: -------------------------------------------------------------------------------- 1 | name = "adidoks" 2 | description = "AdiDoks is a Zola theme helping you build modern documentation." 3 | license = "MIT" 4 | homepage = "https://github.com/aaranxu/adidoks" 5 | min_version = "0.15.0" 6 | demo = "https://adidoks.netlify.app/" 7 | 8 | [extra] 9 | 10 | [author] 11 | name = "Aaran Xu" 12 | homepage = "https://github.com/aaranxu" 13 | 14 | [original] 15 | author = "h-enk" 16 | homepage = "https://getdoks.org/" 17 | repo = "https://github.com/h-enk/doks" 18 | -------------------------------------------------------------------------------- /pages/user/style.css: -------------------------------------------------------------------------------- 1 | #myModal { 2 | display: none; 3 | position: fixed; 4 | z-index: 1; 5 | padding-top: 100px; 6 | left: 0; 7 | top: 0; 8 | width: 100%; 9 | height: 100%; 10 | overflow: auto; 11 | background-color: rgba(0,0,0,0.4); 12 | } 13 | #modalContent { 14 | background-color: #fefefe; 15 | margin: auto; 16 | padding: 20px; 17 | border: 1px solid #888; 18 | width: 80%; 19 | } 20 | #secretKeyContainer { 21 | background-color: #e6ffed; /* 亮绿色背景 */ 22 | padding: 10px; 23 | margin-top: 10px; 24 | border-radius: 4px; 25 | display: flex; 26 | justify-content: space-between; 27 | align-items: center; 28 | } 29 | #secretKeyValue { 30 | color: #25a55f; /* 深绿色文本 */ 31 | font-weight: bold; 32 | margin-right: 10px; 33 | } 34 | .copy-btn { 35 | padding: 10px 20px; 36 | background-color: #4CAF50; /* 绿色背景 */ 37 | color: white; 38 | border: none; 39 | border-radius: 4px; 40 | cursor: pointer; 41 | transition: background-color 0.3s ease; 42 | } 43 | .copy-btn:hover { 44 | background-color: #45a049; /* 深绿色背景 */ 45 | } 46 | #notificationContainer { 47 | position: fixed; 48 | top: 20px; 49 | right: 20px; 50 | z-index: 1000; 51 | display: flex; 52 | flex-direction: column; 53 | align-items: flex-end; 54 | gap: 10px; 55 | } 56 | .notification { 57 | display: flex; 58 | align-items: center; 59 | background-color: rgba(76, 175, 80, 0.9); /* 半透明绿色背景 */ 60 | color: white; 61 | padding: 10px 20px; 62 | border-radius: 4px; 63 | box-shadow: 0 2px 10px rgba(0,0,0,0.2); 64 | opacity: 0; 65 | transform: translateX(100%); 66 | transition: opacity 0.5s, transform 0.5s; 67 | } 68 | .notification.show { 69 | opacity: 1; 70 | transform: translateX(0); 71 | } 72 | .notification.hide { 73 | opacity: 0; 74 | transform: translateX(100%); 75 | } 76 | .dollar-sign { 77 | font-style: italic; 78 | font-weight: bold; 79 | color: #4caf50; 80 | } 81 | --------------------------------------------------------------------------------